渗透技巧——利用PDF文件获取Net-NTLM hash
今年4月,来自CheckPoint的Assaf Baharav公开了一个 *** ,利用PDF文件的正常功能够窃取Windows系统的NTLM Hash。
具体的说,当用户使用PDF阅读器打开一份恶意的PDF文档,该PDF会向远程 *** B服务器发出请求,如果该远程 *** B服务器对数据包进行抓取,就能够获得用户Windows系统的Net NTLM Hash,通过进一步破解就有可能获得用户系统的明文密码。
然而Microsoft、Adobe和FoxIT对此没有进行针对性的修复。
这个利用 *** 成功的条件有哪些?没有修复的原因又是什么呢?
本文将要站在技术研究的角度进行介绍
本文将要介绍以下内容:
原理和利用思路
测试POC,生成一个恶意PDF文件
分析PDF文件格式
编写脚本实现修改正常PDF文件
开源代码
参考资料:
https://research.checkpoint.com/ntlm-credentials-theft-via-pdf-files/
PDF规范允许为GoTobe和GoToR条目加载远程内容
直观的理解:
PDF文件可以添加一项功能,请求远程 *** B服务器的文件
而我们知道,Windows系统下 *** B协议有一个特性:客户端在连接 *** B服务器时,默认先使用本机的用户名和密码hash尝试登录,通信协议默认为Net-NTLMv1或者Net-NTLMv2
工具Hashcat提供了字典和暴力破解两种 *** 来还原Net-NTLMv1和Net-NTLMv2协议中的明文密码
只要在 *** B服务器上进行抓包,提取关键数据,就能够获得Hashcat需要的参数,尝试破解
抓包可选择WireShark,对获得的pcap包进行解析,提取关键数据。如果使用Responder可自动提取出关键数据。
之前写过的相关文章:
《Windows下的密码hash——NTLM hash和Net-NTLM hash介绍》
《渗透技巧——利用netsh抓取连接文件服务器的NTLMv2 Hash》
《渗透技巧——利用图标文件获取连接文件服务器的NTLMv2 Hash》
《Windows下的密码hash——Net-NTLMv1介绍》
类似的利用思路:
可参考以下文章:
https://osandamalith.com/2017/03/24/places-of-interest-in-stealing-netntlm-hashes/
介绍了多种文件格式的利用 *** https://www.secpulse.com/archives/71359.html
构造一份特殊的PDF文档,请求 *** B服务器的一份文件
在 *** B服务器上抓包
用户使用PDF阅读器打开PDF文档时,Windows系统将当前用户的Net NTLM Hash发送到 *** B服务器
*** B服务器提取出Net NTLM Hash,使用Hashcat进行破解
还原出用户的明文密码
根据用户的明文密码尝试进一步利用
Assaf Baharav在他的文章中已经公开了POC,如下图
注:
图片引用自https://research.checkpoint.com/ntlm-credentials-theft-via-pdf-files/
如果想要直接进行测试,可参考Deepu TV的POC,地址如下:
https://github.com/deepzec/Bad-Pdf
Client:
IP: 192.168.62.135
OS: Win7 x86
*** B Server:
IP: 192.168.62.139
OS: Win8 x86
开放共享文件夹: test
1、使用Bad-Pdf生成PDF文件
本次测试对Bad-Pdf.py做部分修改,不执行Responder
设置host IP:
协议选择
如下图
生成测试PDF文件
2、 *** BServer进行抓包
开启Wireshark
3、Clinet使用Adobe Reader打开badpdf.pdf
4、查看Wireshark,成功获得Net NTLM Hash的数据包
如下图
参考代码:
https://github.com/deepzec/Bad-Pdf/blob/master/badpdf.py
Assaf Baharav的POC是在脚本中写好了PDF文件的模板
下面对其中的关键代码进行说明:
(1)
2 0 obj
endobj
表示对象的类型为页码
表示页的对象是3
表示页码数量为1
(2)
3 0 obj
endobj
表示父对象是2,同(1)中对应
表示页面的显示大小(以象素为单位)
(3)
xref
0 4
0000000000 65535 f
0000000015 00000 n
0000000060 00000 n
0000000111 00000 n
表示这部分为交叉引用表
表示下面各行所描述的对象号是从0开始,并且有4个对象
固定格式,可看作文件头
对应之一个对象,表示偏移地址(十进制);为5位产生号(更大为65535),0表明该对象未被修改过; n表示该对象在使用,如果为f,表示该对象为free
(4)
trailer
startxref
190
...中间省略的代码...
trailer
%%EOF
表示文件尾trailer对象的开始
表示该PDF文件的对象数目为4
表示根对象的对象号为1
表示交叉引用表的偏移地址为190
表示文件结束标志
(5)
3 0 obj
>
endobj
此处为关键代码,实现远程访问
表示页面内容对象的对象号为4
表示父对象是2
在和直接为实现远程访问的代码
对于PDF文件格式,不需要换行符,所以这段代码去掉换行符和空格,填入ServerIP后为
接下来,尝试修改正常的文件,添加代码,实现远程访问功能
使用工具生成的PDF文件一般都很大,分析格式不是很方便,这里提供一个python生成PDF的参考代码,地址如下:
http://code.activestate.com/recipes/189858/
输入txt文件,输出pdf文件
1.txt的内容为:
1234567
cmd:
recipe-189858-1.py 1.txt
生成的pdf文件,文件大小1213 bytes
查看1.txt.pdf的文件格式,如下图 https://www.secpulse.com/archives/71359.html
在和直接添加代码
注:
需要十六进制编辑,使用文本编辑会导致PDF文件出错
对PDF文件添加上述代码后,交叉引用表中对象的偏移位置会出现偏差,需要重新计算,修正偏移位置
使用Adobe Reader打开修改后的文件, *** B服务器成功抓到Net NTLM Hash,修改成功
经实际测试,不修正交叉引用表中对象的偏移位置,不会影响PDF文件的正常访问
所以脚本编写上只需要定位后,添加访问远程文件的代码即可
值得注意的是PDF文件的读取和写入需要以二进制格式
实现代码已开源,可参考:
https://github.com/3gstudent/Worse-PDF
成功利用需要满足以下条件:
用户使用PDF阅读器打开,如果使用IE或是Chrome打开PDF文件,并不会执行
对于Windows系统,通过Net NTLM Hash破解出明文有一定难度
即使破解出了明文,利用的效果也有限(例如普通用户的Windows系统很少开启远程登录功能)
虽然微软并未针对这个利用 *** 进行针对性的修复,但在之前已经提供了一个防御的 *** ,参考地址:
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV170014
但只支持Win10和Server2016
本文测试了利用PDF文件获取Net-NTLM hash的 *** ,分析原理,根据PDF的文件格式尝试编写脚本实现修改正常的PDF文件,开源代码,总结利用条件。
最后,个人也认为Microsoft没有必要对此进行针对性的修复。
渗透技巧——利用PDF文件获取Net-NTLM hash
许多加盟商在选择加盟项目标时候城市想到一个问题,那就是零食港湾加盟多久能回本?快来看看。现如今零食港湾加盟项目在市场上的成长长短常不错的,产物深受宽大消费者的喜爱与追捧。品牌形象也很是的有影响力。选择...
楼上完全是扯淡,你看看体坛被抓的那位老板是什么时候被抓的?早就换BOSS了,体坛的电子版暂时停了,过段时间会在wap站和体坛周报客户端上更新,不过需要等。 体坛官网点击体坛传媒,就可以看体坛电子版。或...
我们在上网聊天的情况下,摄像头给大家产生了非常大的便捷,根据摄像头我们可以与朋友们视频通话,倘若摄像头坏掉你了解大家该如何处理吗?我梳理一篇文章来给大伙儿表明一下,假如拍摄坏掉怎样亲自动手处理这个问题...
《大秦赋》中的华阳夫人 最近《大秦赋》热播,剧中和弟弟阳泉君一道被称作秦廷的楚系代表人物的华阳夫人芈姓熊氏,在秦孝文王即位后成为秦廷三股势力之一的楚系首领,这不免让人想起了《芈月传》中的芈月。同样是芈...
需要破解QQ的什么,不过说起来现在的腾讯安全系统越来越厉害。破解什么的,都不太可能。一般这种软件肯定坑钱的。 随便点个好友,在QQ对话框中,输入"我是"两字,不要发送.再按住ALT键,然后顺序按小键...
本文目录一览: 1、黑客智商很高么? 2、黑客,你们是不是都是高学历、高智商啊?不要鄙视我这个小白 - - 3、黑客是什么样的人? 4、想做一个黑客普通的不能再普通的智力可以不?至少要什么...