前段时间爆发的利用永恒之蓝进行勒索及xshell等事件,各大厂家都站在不同的角度分析了相应的事件及程序,对于对逆向不了解看着的确很吃力。上段时间看到宫总及袁哥都在讲DNS对于分析这种攻击的可行性。
永恒之蓝和xshell事件有如下的特征:
1. 永恒之蓝中黑客预留了一个没有注册的域名,用于防护事件不受控制时,启用该域名可以抑制事件的扩大
2. Xshell事件中黑客通过DNS的txt字段进行传输数据与指令
两起事件都有一个共同特征就是利用DNS来进行事件的抑制与数据与指令的下发,这样的话,针对这种类型的黑客攻击与安全事件,我们可以站在底层网络来分析这事件。
利用永恒之蓝进行勒索事件中黑客预留的域名是DGA域名,在某些条件下探测该DGA域名是否可以正常解析,若解析成功则不进行加密,若解析成功则不加密。
DGA一般都是通过硬编码写入到程序中,在没有能力对其逆向的情况下,我们可以分析网络流量来分析DNS请求的DGA域名。这样就需要了解哪些域名是DGA域名,这里面有多种方法与思路:
1. 利用开放平台里的DGA库,目前个人所了解的国内360在开放相应的数据,这个也是个人首推的选择
2. DGA域名有个特征,很多DGA并没有注册,黑客前期会生成大量的DGA域名,但是在某些情况下,如传输数据与命令或抑制事件时,会选择性的注册少量域名,这样的话可以对DNS解析不成功的域名进行记录,并将这些域名进行进行,若其没有注册,且域名很随机可以判断为疑似DGA域名。这里面有大牛介绍过http://www.freebuf.com/geek/144459.html
3. 深度学习检测DGA域名,可参考http://www.freebuf.com/articles/network/139697.html
由于上面的方法二和方法三都有人实现了,这里面我主要介绍方法一的实现。这个思路是这样:通过监测网络流量(有条件的同学可以在大网环境下测试下),分析DNS的请求,一旦请求的DNS和DGA库中的匹配,输出相应的IP、端口,当然后期也可以做相应的统计与告警。
DGA库网上找了有一些,个人了解的国内推荐360的开放DGA的数据,100W+的DGA数据,并且每天都有更新。有需要的同学可直接下载,http://data.netlab.360.com/feeds/dga/dga.txt
DNS检测DGA实现的代码如下:
在代码实现过程中,本个DGA正常解析成功的IP地址也记录了下来,DGA都有问题,那么解析的IP基本上也不正常。在大网环境下可以记录下相应的IP地址,在做Passive DNS时可以利用这些数据完善相应的库。
考虑到DGA的文件每天都会更新,可以进行定时下载该文件。
测试后,效果如下:
这样的话就实现了监测异常DGA记录,内网环境下可以分析机器被黑或者中马,大网环境下可以通过DNS侧重了解区域安全态势。
完整实现的代码如下:
#coding:utf-8 import time from scapy.all import * from requests import *
conf.iface='Intel(R) Dual Band Wireless-AC 8260' list=[]
dgalist = open('dga.txt','r')
dgalist = (dgalist.readlines())[18:] for dga in dgalist :
list.append(dga.split('\t')[1])
data = set(list) #Capture and Filter DGA def capture(packet): if packet:
i =0 for p in packet:
src = p[i][IP].src
dst = p[i][IP].dst
sport = p[i][UDP].sport
dport = p[i][UDP].dport
qr = str(p[i][DNS].qr)
rcode = str(p[i][DNS].rcode) if '0' in qr:
qr = 'Query' qname = p[i][DNS].qd.qname if type(qname) == bytes:
qname = (qname.decode('utf-8'))[:-1] if qname in data:
print("[*] Found DGA Request:-->",src,sport,qr,qname) if '1' in qr: if '0' in rcode: for j in range(10): try:
qr = 'Response' rrname = p[j][DNS].an[j].rrname
rdata = p[j][DNS].an[j].rdata if type(rrname) == bytes:
rrname = (rrname.decode('utf-8'))[:-1] if type(rdata) == bytes:
rdata = (rdata.decode('utf-8'))[:-1] if rrname in data: print ("[*] Found DGA Response:-->",src,dst,qr,rrname,rdata,"\n") except Exception as e: pass i = i + 1 #update dgafile def dgafileupdate(): url = 'http://data.netlab.360.com/feeds/dga/dga.txt' dgafile = get(url) with open('./dga.txt','w') as f:
f.write(dgafile.text)
print('Download DGAFile Finished') if __name__ == '__main__':
sniff(prn=capture,filter='udp port 53') while True:
dgafileupdate()
time.sleep(86400)
猜你还喜欢
- 随机文章
-
- burpsuite_pro_v1.7.11破解版(含下载地址)
- Winmail最新直达webshell 0day漏洞挖掘实录
- 韩顺平PHP新手入门149讲完整
- 批量S2-045漏洞检测及利用
- Docker出漏洞:端口2375【附案例】
- 渗透Hacking Team过程
- 浅谈高级组合技打造“完美” 捆绑后门
- 某司SSL-VPN沙盒逃逸之旅
- Mimikatz 非官方指南和命令参考_Part1
- Microsoft Outlook 漏洞:可允许远程代码执行
- 从TCL某漏洞看内网渗透教学分享之内网信息探测和后渗透准备
- 域渗透的金之钥匙
- 巧用DSRM密码同步将域控权限持久化
- Hash传递攻击Windows2012远程桌面
- 为指定用户添加Windows特权的代码
- 别以为有vpn我找不到你(网警抓人全过程)
- 内网渗透:利用WMI代替psexec(WMIEXEC.vbs)
- 域科普文:使用powershell管理域用户
- 详解Filezilla提权
- 适用于PHP初学者的学习线路和建议
- 热门文章
-
- 八年专业安全团队承接渗透入侵维护服务
- Emlog黑客站模板“Milw0rm”发布
- Stuxnet纪录片-零日 Zero.Days (2016)【中文字幕】
- SQLMAP的注入命令以及使用方法
- 白帽故事汇:网络安全战士从来不是「男生」的专利
- 编辑器漏洞手册
- web安全之如何全面发现系统后台
- 常见Web源码泄露总结
- 渗透测试培训(第五期)
- 深入理解JAVA反序列化漏洞
- cmseasy前台无需登录直接获取敏感数据的SQL注入(有POC证明)
- 网站后台登陆万能密码
- 黑麒麟2016渗透培训系列教程
- 破解emlog收费模板“Begin”
- 那些强悍的PHP一句话后门
- Android平台渗透测试套件zANTI v2.5发布(含详细说明)
- 渗透工具BackTrack与KaliLinux全套视频教程
- Python列为黑客应该学的四种编程语言之一 初学者该怎么学
- CVE-2017-11882漏洞复现和利用
- 恶意程序报告在线查询工具
文章存档
- 2021年3月(4)
- 2020年12月(4)
- 2020年11月(5)
- 2020年10月(8)
- 2020年9月(8)
- 2020年8月(20)
- 2020年7月(47)
- 2020年6月(70)
- 2020年5月(41)
- 2020年4月(21)
- 2020年3月(120)
- 2020年2月(26)
- 2019年12月(12)
- 2019年11月(13)
- 2019年10月(17)
- 2019年9月(15)
- 2019年8月(13)
- 2019年7月(15)
- 2019年6月(15)
- 2019年5月(19)
- 2019年4月(23)
- 2019年3月(19)
- 2019年2月(11)
- 2019年1月(29)
- 2018年12月(24)
- 2018年11月(56)
- 2018年10月(79)
- 2018年9月(20)
- 2018年8月(17)
- 2018年7月(16)
- 2018年6月(7)
- 2018年5月(10)
- 2018年3月(6)
- 2018年2月(2)
- 2018年1月(11)
- 2017年11月(18)
- 2017年10月(6)
- 2017年9月(8)
- 2017年8月(7)
- 2017年7月(7)
- 2017年6月(15)
- 2017年5月(30)
- 2017年4月(7)
- 2017年3月(1)
- 2017年2月(4)
- 2017年1月(1)
- 2016年12月(3)
- 2016年11月(7)
- 2016年10月(6)
- 2016年9月(6)
- 2016年8月(102)
- 2016年7月(24)
- 2013年7月(1)
- 文章标签
-