简介
- APT攻击(Advanced Persistent Threat,高级持续性威胁)是利用先进的攻击手段对特定目标进行长期持续性网络攻击的攻击形式。APT攻击的原理相对于其他攻击形式更为高级和先进,其高级性主要体现在精确的信息收集、高度的隐蔽性、以及使用各种复杂的目标系统/应用程序漏洞等方面。
- 方程式一类的顶尖APT组织的攻击技术:主要是通过底层植入,攻击核心路由/防火墙等网络基础设施,攻击网络服务器等来实现定点精确打击。
- 其它APT组织:通过钓鱼类攻击配合客户端漏洞来实施APT攻击。
APT常用漏洞
1、CVE-2019-0708(蠕虫)
背景
- Windows 远程桌面服务的远程代码执行高危漏洞
- 当未经身份验证的攻击者使用 RDP 连接到目标系统并发送经特殊设计的请求时,远程桌面服务(以前称为“终端服务”)中存在远程执行代码漏洞。此漏洞是预身份验证,无需用户交互。成功利用此漏洞的攻击者可以在目标系统上执行任意代码。攻击者可随后安装程序;查看、更改或删除数据;或者创建拥有完全用户权限的新帐户。
- 端口3389
影响范围
- Windows 7
- Windows Server 2008
- Windows Server 2008 R2
- Windows 2003
- Windows XP
RDP协议
- RDP,远程显示协议(Remote Display Protocol ), 是微软终端服务应用的协议,服务端基于 Windows 操作系统,Windows 从 NT 开始提供终端服务。RDP 协议基于 T.128(T.120 协议族)提供多通道通信,并进行了拓展。
- 通道连接的阶段
- 连接初始化
- 客户端通过向服务器发送
Class 0 X.224 ConnectionRequest PDU
启动连接请求。服务器使用Class 0 X.224 ConnectionConfirm PDU
进行响应。之后,客户端和服务器之间发送的所有后续数据都被包裹在X.224
数据协议数据单元(PDU)中。
- 客户端通过向服务器发送
- 交换基本设置
- 通过使用
MCS Connect Initial PDU
和MCS Connect Response PDU
在客户端和服务器之间交换基本设置。GCC 的全称是 Generic Conference Control,GCC 作为 T.124 的标准协议,用于连续传输大量数据时,将数据整理分块传输
- 通过使用
- 虚拟通道连接
- 客户端通过发送
multiple MCS Channel Join Request PDUs
加入用户信道,输入/输出通道及所有的静态虚拟通道(IO 和静态虚拟通道 ID信息在 GCC 数据包中)。服务器通过MCS Channel Join Confirm PDU
回复每个通道。
- 客户端通过发送
- 连接初始化
漏洞分析
- 在客户端
MCS Connect Initial
数据封包中,增加一个名为MS_T120
的通道
- 接下来,我们释放这个 Channel 。我们向
MS_T120
通道发送构造的数据,但由于这个通道已经被绑定到内置的MS_T120
通道,所以数据最终会派发到相应的处理函数rdpwsx!MCSProtData
中,然后调用MCSChannelClose
函数关闭通道。 - 此后,我们向系统的
MS_T120
通道发送数据,再次引用被关闭的通道,从而导致 UAF 漏洞。 - 因为MS_T120这个channel是内部Channel,MS_T120 Channel被绑定两次(内部绑定一次,然后我们又绑定一次——id不是31)。由于绑定的时候没有限制,所以绑定在两个不同的ID下,因此MS_T120 Channel就有两个引用,假如我们关闭channel,就触发一次free,而我们断开连接系统默认也会free,那就变成了Double Free了(其实Double Free是UAF的特殊情况,因为这个USE是free而已)。
漏洞利用
- metasploit
# ./mfsconsole
# use exploit/windows/rdp/cve_2019_0708_bluekeep_rce
2、永恒之蓝(MS17-010)
背景
- EternalBlue(在微软的MS17-010中被修复)是在Windows的SMB服务处理SMB v1请求时发生的漏洞,这个漏洞导致攻击者在目标系统上可以执行任意代码。
- SMB:SMB(全称是Server Message Block)是一个协议服务器信息块,它是一种客户机/服务器、请求/响应协议,通过SMB协议可以在计算机间共享文件、打印机、命名管道等**资源,电脑上的网上邻居就是靠SMB实现的;SMB协议工作在应用层和会话层**,可以用在TCP/IP协议之上,SMB使用
- TCP139端口和TCP445端口。
- 缓冲区溢出漏洞
漏洞分析
- 漏洞出现在Windows SMB v1中的内核态函数srv!SrvOs2FeaListToNt在处理FEA(File Extended Attributes)转换时,在大非分页池(内核的数据结构,Large Non-Paged Kernel Pool)上存在缓冲区溢出。函数srv!SrvOs2FeaListToNt在将FEA list转换成NTFEA(Windows NT FEA) list前会调用srv!SrvOs2FeaListSizeToNt去计算转换后的FEA lsit的大小。然后会进行如下操作:
1.srv!SrvOs2FeaListSizeToNt会计算FEA list的大小并更新待转换的FEA list的大小
2.因为错误的使用WORD强制类型转换,导致计算出来的待转换的FEA list的大小比真正的FEA list大
3.因为原先的总大小计算错误,导致当FEA list被转化为NTFEA list时,会在非分页池导致缓冲区溢出
漏洞利用
# msfconsole
# nmap -sV -p 445 192.168.232.128
# search ms17-010
# use auxiliary/scanner/smb/smb_ms17_010
3、防火墙设备漏洞(CVE-2016-6366)
- CVE-2016-6366(基于Cisco防火墙SNMP服务模块的一处缓冲区溢出漏洞),目标设备必须配置并启用SNMP协议,同时必须知道SNMP的通信码,漏洞执行之后可关闭防火墙对Telnet/SSH的认证,从而允许攻击者进行未授权的操作。如下所示sub_817A5A0为对应固件中自实现的copy函数,函数内部没有检测长度,函数的调用方同样也没有对拷贝的长度进行检测,从而导致溢出。
4、Office OLE2Link逻辑漏洞(CVE-2017-0199)
**
- Office OLE2Link是微软办公软件(Office)中的一个重要特性,它允许Office文档通过对象链接技术在文档中插入远程对象,在文档打开时自动加载处理。由于设计不当,在这个处理过程中出现了严重的逻辑漏洞。
- 攻击者可以向受害人发送一个带有OLE2link对象附件的恶意文档,诱骗用户打开。当用户打开恶意文档时,Office OLE2Link机制在处理目标对象上没有考虑相应的安全风险,从而下载并执行恶意HTML应用文件(HTA)。
5、Office公式编辑器漏洞(CVE-2017-11882)
- EQNEDT32.EXE(Microsoft公式编辑器),没有任何安全机制(ASLR,DEP,GS cookies…)。并且由于EQNEDT32.EXE进程使用DCOM方式启动而独立于Office进程,从而不受Office高版本的沙盒保护,所以该类漏洞具有天生“绕过”沙盒保护的属性,危害巨大。
- 为公式Font Name字段解析时的缓冲区溢出漏洞,通过构造带有非法公式的Doc/RTF文档,可导致代码执行
- CVE-2017-11882为一处栈溢出漏洞,返回地址被覆盖为00430c12,该地址指向WinExe函数,父函数第一个参数正好指向构造字符,从而导致WinExe执行构造字符中的命令。
6、OOXML类型混淆漏洞(CVE-2015-1641)
- Office Word在解析Docx文档displacedByCustomXML属性时未对customXML对象进行验证,造成类型混淆,导致任意内存写,最终经过精心构造的标签以及对应的属性值可以造成远程任意代码执行。
- CVE-2015-1641中,由于Office Word没有对传入的customXML对象进行严格的校验,导致可以传入比如smartTag之类的对象,然而smartTag对象的处理流程和customXML并不相同,如果customXML标签被smartTag标签通过某种方法混淆解析,那么smartTag标签中的element属性值会被当作是一个地址,随后经过简单的计算得到另一个地址。最后处理流程会将moveFromRangeEnd的id值覆盖到之前计算出来的地址中,导致任意内存写入。然后通过写入可控的函数指针,以及通过Heap Spray精心构造内存布局,最终导致代码执行。
7、WinRAR Ace漏洞(CVE-2018-20250)
- WinRAR 为支持 ACE 压缩文件的解压缩功能,集成了一个具有 19 年历史的动态共享库 unacev2.dll。 而此共享库自 2006 年以来再未更新过,也未开启任何漏洞利用缓解技术。Nadav Grossman 在 unacev2.dll 中发现了一个目录穿越漏洞,成功利用此漏洞可导致远程代码执行或 Net-NTLM hash 泄露。
- unacev2.dll 对解压缩路径进行验证时,未能正确过滤压缩文件中的“相对路径”,导致攻击者结合一些技巧可以绕过安全检查,使压缩文件中恶意构造的“相对路径”被直接用作了解压路径使用。从而可以将恶意代码静默释放到系统启动目录中,最终实现远程代码执行或 Net-NTLM hash 泄露。
- unacev2.dll 模块在解压 ACE 文件时,将对解压缩路径进行验证。它从压缩文件中提取待解压文件的相对路径 file_relative_path,使用 GetDevicePathLen(file_relative_path) 对其进行校验,根据返回结果进行最终解压路径的拼接。当 GetDevicePathLen(file_relative_path) 返回 0 时,将使用 WinRAR 提供的解压路径与压缩文件中的相对路径拼接,得到最终的解压路径;而当 GetDevicePathLen(file_relative_path) 返回非 0 时,仅使用压缩文件中的“相对路径”作为最终的解压路径。若攻击者能够构造恶意的相对路径,在绕过 WinRAR 回调函数 StateCallbackProc() ,unacev2.dll!CleanPath() 等一系列路径检测和过滤函数的前提下,使 unacev2.dll!GetDevicePathLen(file_relative_path) 返回非0值,便可以使得使用恶意构造的相对路径作为最终解压路径,将恶意文件解压至指定目录中。
编号 | 恶意的相对路径 | 最终的解压路径 |
---|---|---|
1 | C:\C:\some_folder\some_file.ext | C:\some_folder\some_file.ext |
2 | C:\\10.10.10.10\smb_folder_name\some_folder\some_file.ext | \10.10.10.10\smb_folder_name\some_folder\some_file.ext |
攻击路径 1 的危害:攻击者可以使用漏洞,将恶意文件静默释放至可能造成危害的路径中实现攻击。
攻击路径 2 的危害: 攻击者可以获取受害者的Net-NTLM hash,从而使用NTLM Relay的方式攻击受害者。
APT组织来源地区
组织名称 | 来源 | 攻击方式 | 备注 |
---|---|---|---|
DarkHotel(APT-C-06) | 东亚 | 下发恶意插件:Meterpreter、键盘记录插件、窃取数据库文件、内网渗透插件、屏幕监控、远程控制 | |
海莲花(APT-C-00) | 东南亚 | 攻击诱饵:白加黑、lnk、chm、漏洞利用office文件、WinRAR ACE漏洞文件、文档图标的exe等 | APT32 |
摩诃草(APT-C-09) | 南亚地区的境外APT组织 | 白象 CVE-2017-8570 |
|
人面狮(APT-C-15) | 中东地区 | ||
Lazarus组织 | 朝鲜 | Wanacry勒索蠕虫 | |
Group123 | 朝鲜 | 木马捆绑和伪装 横向移动 常使用dropbox等公共网络资源作为C2 |
APT37 |
穷奇(毒云藤) | |||
BITTER(蔓灵花) | 南亚 | ||
SideWinder(响尾蛇) | 印度 | VB编写,后门功能包括收集用户信息、记录键盘和鼠标的操作等。并且使用白加黑的手段来进行加载。 | |
MuddyWater(污水) | 伊朗 | 采用模糊显示以及宏代码加载的诱饵文件 |