经过两周左右时间的众测,今天将项目学习的进度推进一下。
一、模拟场景背景:
某公司内网被某组织进行了攻击,简单了解,该组织首先攻击了一台web服务器,破解了后台的账户的密码,随之利用获取到的口令登陆了该公司的mail系统,接着获取到了vpn的申请方式,然后登陆vpn,在内网pwn掉了一台打印机,该公司提供了一份时间周期的流量包供参考,要求对该组织的攻击行为循迹溯源,并进行相应的分析。
二、利用工具以及前置知识:
1、利用工具:Wireshark
Wireshark是一个网络封包分析软件,它的前身也就是Ethereal。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的玩过封包的资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
类似的工具还有很多,因为之前接触并且用过wireshark,所以沿用该工具。
Wireshark基本使用:
主界面如下:选择网卡进行捕获
下面是选择无线网卡进行流量捕获的界面:
从上至下依次为(行为单位):
菜单、常用按钮、过滤器(通过添加过滤规则,过滤出相应的数据包,方便快速定位和分析)、参数标题、数据包的界面、格式化后的单个数据包的具体协议内容、未格式化后的单个数据包的具体协议内容(十六进制)。
下面这行常用按钮从左至右分别为:
开始新的抓包、停止抓包、重新开始抓包、抓包设置、打开已有的数据包文件、保存文件、关闭文件、重新加载文件、查找分组、转到前一分组、转到后一分组、转到特定的分组、转到首个分组、转到最新分组、开始抓包时自动转到最新分组、根据着色规则进行分组等等。
过滤规则的基本使用:
1、过滤ip,例如源ip和目标ip:
ip.src eq xxx.xxx.xxx.xxx or ip.dst==xxx.xxx.xxx.xxx 或者 ip.addr eq xxx.xxx.xxx.xxx
2、过滤端口:
tcp.port == 80 or udp.port == 80 源端口或目的端口为80
tcp.dstport == 80 只显示tcp协议的目标端口为80
tcp.srcport == 80 只显示tcp协议的源端口为80
tcp.port >=1 and tcp.port <=80
3、过滤协议:
tcp/udp/arp/icmp/http/ftp/dns/ip(不在同一层的协议汇总一起说的)
4、过滤MAC地址:
eth.src == xx:xx:xx:xx:xx:xx
eth.dst == xx:xx:xx:xx:xx:xx
eth.addr == xx:xx:xx:xx:xx:xx
5、过滤包长度:
udp.length == 26 这个长度是指udp本身固定长度8加上udp下面那块数据包之和。
tcp.len >=7 指的是ip数据包(tcp下面那块数据),不包括 tcp本身
ip.len == 94 除了以太网头固定长度14,其他都算是ip.len,即从ip本身到最后
frame.len == 119 整个数据包的长度,从eth开始到最后。
6、过滤HTTP
HTTP
HTTP.request.method == "GET"
HTTP.request.method =="POST"
HTTP.request.uri == "/img/logo-edu.gif"
HTTP contains "WVS"————比较常用
7、数据流跟踪:
在关注的http数据包或者tcp数据包中选择追踪流:
在弹出的框中可以看到数据内容:
常见的HTTP流中的关键内容:
(1)、H5中直接包含重要信息
(2)、上传或下载文件内容,通常包含文件名、hash值等关键信息,常用POST请求上传。
(3)一句话,post请求,内容包含eval,内容使用base64加密
8、数据提取
文件->导出对象->HTTP->save
三、实验过程:
一些常见扫描器的指纹:(web漏扫方面)
1、awvs:acunetix
2、netsparker:netsparker
3、appscan:Appscan
4、nessus:nessus
5、sqlmap:sqlmap
一些常见的后台地址:
1、admin
2、manager
3、login
4、system
还有容易忽略掉的robots.txt。
1、导入受害公司所提供的流量包文件
2、找到该组织所使用的扫描器:
http contains "wvs"
发现是用的awvs扫描器。
3、找到他们的切入点登陆后台:
http contains "admin"
http contains "login"
发现存在/admin/login.php?rec=login的登陆站点。
4、找到他们用的什么弱口令登陆的:
http contains "password" && http.request.method=="POST"
从返回的字段长度可以推测,75x的两个数据包存在问题,可能是登陆成功。
查看数据包内容:
可知 用户名:admin,密码:admin!@#pass123 被成功猜解。
5、查看通过哪个接口上传的小马以及文件名:
http.contains "eval" && http.request.method =="POST"
这里其实是存在运气因素的,因为刚才在找后台的时候就已经确定了后台语言是php,所以只要找eval函数就可以,但也不能排除利用其他绕过形式的小马。
由上图可知,小马文件文a.php,上传接口是/images/article。
6、找到被利用的数据库用户及密码:
http contains "dbhost"
找到数据服务器的地址
修改过滤规则:
http contains "10.3.3.101"
右键追踪TCP流:
将action中post的内容显然是base64加密,解密即可:
choraheiheihei为分割符号,提取出用户名为web,密码为e667jUPvJXHvEUv
还有一种方法为搜索dbhost,然后查看数据包:
不过这个方法不太正经。
7、找到被利用mail系统账号:
ip.addr==“192.168.94.59” && http.request.method="POST"
地址是上面的web线索里找到的
这串并不是标准的base64,解密之后还是乱码:
然后因为用户名是admin,所以密码猜测还是上面的密码。
最后答案竟然是:AES的CBC加密,填充格式为ZeroPadding,密钥为字符串1234567812345678的hash值,偏移量为1234567812345678
8、找到该组织获得的vpn.ip是多少
打开vpntwo.pcap,根据流量大小判断,下面是一个大佬的解答:
到此结束
四、参考:
1、安恒网络空间安全学院
2、公众号:lemon-sec(特别感谢公众号支持给我的资料,受益很多!)
3、http://www.manongjc.com/detail/15-iaciotevjmwuuws.html