NanSh0u背景
本文主要从漏洞的角度针对样本CVE-2014-4113漏洞提权操作进行分析。
具体的分析流程如下:
详细分析
1、 初始加载Windbg
在系统启动之前利用Windbg工具加载整个操作系统,为样本运行后期内核调试做准备。然后让系统正常启动,并通过IDA加载运行样本。
2、 获取内核PsLookupByProcessId函数
样本运行后,首先获取内核导出函数PsLookupByProcessId的内存地址,PsLookupByProcessId是一个内核函数,它的作用是通过进程ID号获取该进程的EPROCESS结构,获得了EPROCESS也就获得了整个进程最重要的数据结构。
在后面的章节中我们可以看到shellcode使用PsLookupByProcessId函数来获取SYSTEM进程的EPROCESS结构,从而达到提权的目的。
首先获取未公开的函数ZwQuerySystemInfomation。
获取ZwAllocateVirtualMemory内存函数地址,为后面提权操作分配tagWnd内存提供函数支持。
通过call函数获取当前运行环境的kernel的路径和名称, 并利用LoadLibrary函数加载内核库ntoskrnl.exe,成功加载内核库后获取到PsLookupByProcessId函数的内存地址。
3、 CVE漏洞提权
样本通过创建线程的方式,实现完整的CVE漏洞提权,线程截图如下:
进入CVE漏洞提权线程后,首先创建一个Windows窗口。(CVE-2014-4113是一个内核漏洞,因为内核在处理窗口菜单消息时,使用了不正确的窗口句柄,调用了固定内存地址的代码,从而造成了系统的漏洞)
因为调用的是固定内存地址位置的代码,所以我们需要在固定的内存地址位置分配内存页,在这个内存区域里准备tagWnd数据结构,并将shellcode写入到tagWnd数据结构中,初始化tagWnd结构数据。
创建两级菜单,设置窗口HOOK函数,以便窗口在收到消息的时候可以执行pfnFilterProc替换默认的消息处理函数。
在HOOK回调函数中,更改该窗口的默认消息函数为dwNewLong。
更改后的消息处理函数会销毁菜单,并且将消息处理函数返回值设置为-5(FFFFFFFB,这个数字是造成漏洞的重要原因,后面可以看到)
调用TrackPopupMenu模拟菜单事件,触发系统漏洞。在运行TrackPopupMenu之前,我们需要在Windbg工具界面针对内核态函数win32k!xxxMNFindWindowFromPoint下断点,win32k!xxxMNFindWindowFromPoint函数成功中断。
通过下图可以看到整个的函数调用栈,从TrackPopupMenu函数进入内核,然后看到xxxMNFindWindowFromPoint的整个调用过程。
Win32k!xxxMNFindWindowFromPoint函数执行完毕,返回值为-5。
TrackPopupMenu产生的消息交给了窗口的默认消息函数,即回调函数dwNewLong。
接下来代码返回到win32k!xxxHandleMenuMessages中,我们可以很清楚的看到,xxxMNFindWindowFromPoint的合法的返回值(tagWnd结构指针)为非0值,-1和-5。现在-5被当成了合法的tagWnd句柄,我们可以继续往下执行了。在Win32k!xxxSendMessageTimeout函数中,shellcode得以成功执行。
此样本shellcode主要用于提权,通过上文中的PsLookupByProcessId内存函数获取SYSTEM进程的令牌,并修改当前进程的令牌,从而获取到SYSTEM权限。
4、 创建具有SYSTEM权限的进程
样本通过SYSTEM权限创建子进程,以SYSTEM的权限从C&C端下载挖矿程序,在后台运行并进行挖矿行为操作。
NanSh0u组织活动IOCs
Hash
685f1cbd4af30a1d0c25f252d399a666
c5c99988728c550282ae76270b649ea1
70857e02d60c66e27a173f8f292774f1
68862438fae4c937107999ff9d8ff709
3ccb047b631ed6cab34ef11ccf43e47f
1f9007fbf6a37781f7880c10fc57a277
5899fde33dc7cf35477b998c714454eb
1ad8d0594f9baffe332ccfefb25475df
1873944ee02b9e68af2d4997da5e5426
e6b9054759e4d2d10fcf42d47d9e9221
1770c9bf4a41c5115425d76df052b6a2
2d740789efd7f16bff42651ae69b0893
876e504b8ddb231d8eeaefa2b9e38093
e27490ae6debe3be25794b4dcbaa8e24
1f0606c722693c9307ebf524c53f3375
19594b72fc16539a5122217e6e3bb116
6dd0276e1f66f672e8c426c53b3125a5
82e55177fa37a34dca1375d542c06ac0
7c4b1ebba507bc2d0085278d28a899b2
c06c3a79f70bfd5474bab8a13acdb87e
8ca92722641c73758e5a762033e09b11
9887d95973ac89c802571c2bbd346cbf
252d1721335108cdc643d36c40d4eaf6
b9161d07b4954d071ae0f26c81e56807
3425fc4d60a7401c934c73a12a30742b
93610bed2e15e2167a67c0e18fee7e08
b79f7a7947cb7e9ea1f0d7648e765cee
df4bacb064a4668e444fd67585ea1d82
域名
lokiturtle.herominers.com
trtl.cnpool.cc
turtle.miner.rocks
trtl.pool.mine2gether.com
IP
102.165.51.80
102.165.51.106
111.67.206.87
112.85.42.158
114.115.164.211
119.131.209.186
107.173.21.146
107.173.21.239
防护措施
1、不要轻易打开可疑文件,如电子邮件、可疑链接、可疑文档等等。
2、及时安装系统补丁,使用最新版本的软件。
3、安装杀毒软件,及时更新病毒库。
来源:freebuf.com 2019-07-04 17:02:07 by: 东巽科技2046Lab
请登录后发表评论
注册