模拟企业流量入侵溯源分析
小编:动力软件园 时间:2018-07-05 10:44:15
背景介绍:
公司检测到异常流量,及多名员工收到钓鱼邮件,发现某邮件系统存在漏洞, 黑客通过该漏洞获取大量信息,所以抽取当天网络流量进行分析,数量有5.3G,大概一千三百万个数据包。
分析目标:
1.攻击者使用的伪造邮箱地址是多少
2.攻击者发送钓鱼邮件的ip是多少
3.邮件中的恶意url是多少
4.攻击者发送成功的钓鱼邮件是什么
5.服务器的漏洞是什么
6.黑客对系统进行了什么攻击
前期准备:
Wireshark(流量分析工具)
Python(pyshark数据包处理模块)
面对一千三百万个数据包不放弃的精神
0x01: 流量清洗
在等量分解的数据包中,取样抽查,每个分包大概有66万个包左右
再看看数据包协议分层
协议分层中看到smtp协议(邮件服务协议) #SMTP协议详解请见附录4
根据背景描述,公司检测到异常流量,及多名员工收到钓鱼邮件,初步猜测,攻击者对网站攻击引发异常流量并且使用邮件服务协议发送的钓鱼邮件。
所以暂且先看smtp协议和http协议的数据包
进行流量清洗
Wireshark自带工具:
mergecap(合并流量包)
tshark(流量包过滤)
editcap(流量包分解)
(用法参考附录:流量包分解合并(wireshark自带))
清洗思路(合并流量包→筛选smtp、http协议→得出流量包)
第一步将所有流量包合并:
mergecap-w total.pcap a.pcap b.pcap //(文件名太长简写成a和b)
得到total.pcap,对它经行流量清洗,目标是过滤出,smtp,http流量
清洗:tshark-r total.pcap -Y pop||smtp||http -w result.pcap(total.pcap为上一步合并的数据包)
(过滤参数可以参考附录:Tshark使用参数详解)
得出:result.pcap2万个数据包左右,以下过程都基于这个数据包
0x02:流量分层
接下来先看smtp数据包,wireshark过滤条件为:smtp
选择统计→对话,查看流量走向情况
发现两个ip地址存在。分别查看他们ip的流量
1).过滤条件为smtpand ip.addr==101.36.79.67
发现一个邮箱发到多个邮箱相同的邮件,
邮件内容为:Anew system of IT is online, please click on the link below, to assistto test the running state of system,thank you! http://211341.vhost328.cloudvhost.cn
邮件内容有诱导性点击链接并带有url地址
http://211341.vhost328.cloudvhost.cn,比较可疑
尝试过滤条件为smtpand ip.addr==112.90.83.115
从该ip邮件中内容上看未发现异常
相比之下101.36.79.67比较可疑,需再一步证实
再回到筛选条件为smtp的数据包,遍历所有的数据包,统计邮箱出现最多的次数(附件在附录解释下,先看图)
遍历所有stmp邮件发现it@t3sec.cc这个邮箱出现次数异常,比其他邮箱出现次数多10倍,由此综合上面先前推测可疑邮件发送ip地址,和发送这个邮件的ip地址101.36.79.67地址相吻合,所以推断:
攻击者ip为101.36.79.67
攻击者使用的伪造邮箱地址是it@t3sec.cc
可疑钓鱼链接为: http://211341.vhost328.cloudvhost.cn
发现基本只有172.16.60.200在使用邮件服务器172.16.6陆邮为
0x03: 入侵流量追踪
根据发现攻击者的ip
去重新筛选数据包,条件为源ip为101.36.79.67的数据包
尝试搜索木马及注入或xss关键字
ip.addr== 101.36.79.67 && http matches"upload|alert|script|eval|select"
最终在条件为POST请求,内容包含eval筛选出木马流量
0x04: 漏洞溯源分析
根据url路径和页面名称,推出该网站漏洞是任意文件上传漏洞
(该post数据包有upload关键字→推测试上传页面)
(该post数据包访问文件为hack.php→推测为webshell)
总体推测:上传页面上传了webshell
查看该上传源码,发现的确存在没有任何安全防护,存在任意文件上传漏洞。
Up.php没有任何文件后缀等过滤
证实:任意文件上传漏洞
攻击者上传木马后,执行命令
命令进行了base64加密,相关命令如下
V2hvYW1p
SWZjb25maWc=
Q2F0IC9ldGMvcGFzc3dk
解密后为Whoami、Ifconfig、Cat/etc/passwd等等
但此次分析目标到此已达成
1.攻击者使用的伪造邮箱地址是多少
it@t3sec.cc
2.攻击者发送钓鱼邮件的ip是多少
101.36.79.67
3.邮件中的恶意url是多少
http://211341.vhost328.cloudvhost.cn
4.攻击者发送成功的钓鱼邮件是什么
Hiall
A new system of IT is online, please clickon the link below, to assist to test the running state ofsystem,thank you! http://211341.vhost328.cloudvhost.cn
5.服务器的漏洞是什么
任意文件上传漏洞
6.黑客对系统进行了什么攻击
服务器远程代码执行;针对公司的apt攻击(钓鱼)
参加过铁三的前辈大哥可能比较熟悉这些,数据包来源铁三比赛,小弟想更多人认识到这个流量分析,网上搜了下好像关于使用流量分析的文章比较少,使用python进行分析流量包的更少之又少了,总结了一下特此一码。
由于尽量使大家简单明白分析的过程的原理,此次使用wireshark给大家分析过程
其实实际过程中所有的分析过程都可以用python写的脚本来进行分析
Python的pyshark模块
上述文章分析过程中有错误的话请大家指点一下,谢谢大家
附上简单的pyshark入门代码
(python2.7)
importsys
importpyshark
frompyshark.capture.captureimportCapture
reload(sys)
sys.setdefaultencoding('utf-8')(环境初始化)
defmain():
pass
path='C:\Users\Desktop\result.pcap'#读取pcap文件路径
cap= pyshark.FileCapture(path,display_filter='http')#定义对象并筛选过滤条件为http
forpincap:#遍历所有数据包
try:
printp.http.file_data#提取数据包中的http内容
exceptExceptionase:#报错显示
printe
if__name__== '__main__':
main()
pass
初衷是想读者了解除了手工打开pcap一个一个看并分析,原来还可以用python读取自动分析。
上面只是打开一个pcap文件读取数据包的入门方法。直接贴代码只能告诉大家可能只学到一个知识点,告诉大家入门方法去探索,就有学到无限知识的可能
而本次流量分分析用到的关键思路只是用正则匹配邮箱,然后做一次统计而已,比较简单,下面追加关键代码。
关键代码如下
patten=re.compile(r'\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\b')#正则爬邮箱
path='C:\Users\Desktop\\result.pcap'#文件路径
cap= pyshark.FileCapture(path,display_filter='imf')#过滤文件smtp邮件内容imf
forpincap:#遍历数据包
p=str(p)#转str格式
try:
printp
#a=a+re.findall(re.compile(patten),p)#数组中加入邮箱方便统计
exceptExceptionase:
printe
printa
pyshark参数条件参考附录3