## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-TRG-1999-DETECTPACKET-CVE-2017-8464
**构建检测CVE-2017-8464漏洞的应用**
### 源码(点击此处)
**内容:**
**第一部分:CVE-2017-8464 概述**
1. LNK文件概念
2. 搭建存在CVE-2017-8464漏洞的系统
3. CVE-2017-8464漏洞的攻击工具
**第二部分:使用Metasploit工具利用CVE-2017-8464**
2.1. CVE-2017-8464利用模型
2.2. 实施CVE-2017-8464利用
**第三部分:基于Python语言构建CVE-2017-8464检测工具**
3.1. 基于捕获网络数据包的CVE-2017-8464签名分析
3.2. 基于网络数据包签名分析的CVE-2017-8464利用检测处理函数
**结论**
**
**第一部分:CVE-2017-8464 概述**
1. **LNK文件概念**
LNK是系统文件 - Windows快捷方式,采用由微软开发的二进制格式。

_图1:Windows上的快捷方式图标_
LNK文件是一个快捷方式或“链接”,Windows将其用作对原始文件、文件夹或应用程序的引用,类似于Macintosh平台上的别名。它包含快捷方式的目标类型、位置和文件名,以及打开目标文件的程序和可选快捷键。在Windows中,可以通过右键单击文件、文件夹或可执行程序,然后选择“创建快捷方式”来创建这些文件。
利用此漏洞(存在于Microsoft Windows中),攻击者可以在特制快捷方式的图标被显示时远程执行代码。

_图2:手动创建快捷方式,通过.LNK文件加载并执行恶意代码_
易受攻击的组件与网络栈相关联。此类漏洞通常被称为“可远程利用”,并且可以被视为在协议层面或跨多个网络跃点(例如,通过一个或多个路由器)的可利用攻击。
1. **搭建存在CVE-2017-8464漏洞的系统**
受CVE-2017-8464漏洞影响的系统包括Microsoft Windows Server 2008 SP2和R2 SP1、Windows 7 SP1、Windows 8、Windows 8.1、Windows Server 2012 Gold和R2、Windows RT 8.1、Windows 10 Gold、1511、1607、1703以及Windows Server 2016中的Windows Shell。该漏洞允许本地用户或远程攻击者通过手动创建的.LNK文件执行任意代码,该文件在Windows资源管理器或任何其他解析快捷方式图标的应用程序中显示图标时未正确处理。也称为“LNK远程代码执行漏洞”。
安全更新通过修正对快捷方式图标引用的正确验证来修补漏洞。微软已于2017年6月发布了针对此漏洞的更新。该漏洞不影响Windows XP及更早版本的Windows。
1. **CVE-2017-8464漏洞的攻击工具**
**Metasploit**
Metasploit Framework是一个用于测试、攻击和利用服务漏洞的环境,基于命令行界面。此工具在Kali Linux(VMware版本)中可用。

_图3:Metasploit工具_
**Armitage**
一个基于Metasploit项目的图形界面工具。

_图4:Armitage工具_
**第二部分:使用Metasploit工具利用CVE-2017-8464**
**2.1. CVE-2017-8464利用模型**
攻击目标机 – Windows 7 Pro

_图5:目标机操作系统版本_

_图6:目标机IP地址_
攻击机 – Kali Linux – 使用Metasploit工具。

_图7:攻击机IP地址_
网络层为VMnet8子网192.168.169.0
**2.2. 实施CVE-2017-8464利用**
* 创建reverse_tcp载荷并监听来自Kali主机的TCP连接。
* LHOST为攻击机监听的地址。

_图8:创建载荷并监听来自攻击机的TCP连接_
* 创建包含CVE-2017-8464漏洞的快捷方式文件,以自动启动嵌入的reverse_tcp载荷。

_图9:创建自动运行恶意代码的.lnk文件_

_图10:载荷设置信息_
* 运行exploit命令以初始化指向载荷文件的漏洞快捷方式。
* 具体而言,如上描述,将生成载荷文件FlashPlayerCPApp.cpl和一个自动运行载荷文件的漏洞快捷方式。
* 初始化所有必要的文件后,它们会保存在攻击机上的/root/.msf4/local/文件夹中,然后攻击者将该文件夹中的所有文件复制到任意USB中。

_图11:初始化.lnk文件并附带恶意代码_

_图12:将所有恶意代码复制到USB_
* 诱使目标将USB插入其计算机后,目标无需点击USB中的任何应用程序,但.lnk文件(快捷方式文件)的漏洞会自动启动恶意载荷,执行远程代码执行漏洞。

_图13:目标插入包含恶意.lnk文件的USB_
* 在攻击机上观察,可以看到目标机已连接到攻击机,此时攻击者已成功利用CVE-2017-8464漏洞,并在目标机上远程执行了恶意代码。

_图14:攻击者已成功利用漏洞并入侵目标机_
**
**第三部分:基于Python语言构建CVE-2017-8464检测工具**
**3.1. 基于捕获网络数据包的CVE-2017-8464签名分析**
* 在执行带数据包捕获的攻击时,我们发现当.lnk文件自动运行时,目标机会发起TCP连接到攻击机在载荷中设置的地址。

_图15:捕获到的针对CVE-2017-8464漏洞的攻击数据包_
* 带有PSH标志的数据包允许直接发送给目标机,而不是放入缓冲区。

_图16:TCP成功连接到攻击机后带有PSH标志的数据包_
* 接下来,带有可疑标识“MZ”的数据包表明这很可能是一个恶意PE文件,正在被传送到目标机。

_图17:攻击者发送给受害者的捕获数据包中的可疑迹象_
PE文件格式(Portable Executable File Format):是Win32特有的文件格式。所有可在Win32上执行的文件如*.EXE、*.DLL(32位)、*.COM、*.NET、*.CPL等均为PE格式;但VxD文件和*.DLL(16位)除外。

_图18:PE文件结构_
DOS MZ头
所有PE文件都以一个简单的DOS MZ头开始。它占用前64字节。该区域用于程序在DOS环境下运行的情况。
**e_magic:** PE文件的签名,值为:4Dh, 5Ah(字符“MZ”,MS-DOS创始人Mark Zbikowsky的名字)。该值标记一个有效的DOS头,并允许继续执行。

_图19:捕获数据包中的PE文件签名_
**e_lfanew:** 是DOS头末尾的一个DWORD,包含PE头相对于文件起始位置的偏移量。
DOS Stub
DOS Stub只是一个小的DOS EXE程序,显示一条错误消息,用于与16位Windows兼容。

_图20:攻击者发送给受害者的DOS Stub数据包信息_
PE头
PE头实际上是IMAGE_NT_HEADERS结构,包含加载程序将文件加载到内存所需的信息。
**Signature:** 是一个DWORD,位于PE头起始处,包含PE签名:50h, 45h, 00h, 00

_图21:e_lfanew指出的PE头签名信息_
节表
节表是PE头之后的部分,包含一个IMAGE_SECTION_HEADER结构数组。

_图22:捕获数据包中的节表内容_
* 后续数据包将是PE文件节的数据部分。
* 因此,我们只提取该恶意PE文件结构中的HEADER部分,使用MD5函数进行哈希,作为检测该恶意文件的签名。具体来说,我们从检测到的数据包中提取1024字节数据(包含HEADER),并将相关已知恶意信息保存到CSV文件中,作为检测恶意文件的数据集。

_图23:将签名和恶意文件相关信息保存到CSV文件中_
**3.2. 基于网络数据包签名分析的CVE-2017-8464利用检测处理函数**
* 函数将从frame_info中获取相关协议的信息,如果有数据字段,则继续获取靠近数据字段的协议。

_图24:获取数据包协议信息的函数_
* Get_info 将获取与Wireshark中info字段相似的重要信息。

_图25:获取数据包info字段信息的函数_
* 在将pcap文件转换为csv文件的函数中,首先使用pyshark加载捕获的数据包临时文件(temp.pcap)。然后获取与Wireshark中信息字段类似的信息,写入临时CSV文件。此函数仅提取具有IP&IPV6层及以上的数据包。
* 转换为临时CSV文件后,它将创建一份副本到packet文件夹(如果需要,作为后续资料)。

_图26:将数据包从Pcap转换为CSV文件的函数_
* 首先,detectRemoteCode函数会查看包含先前收集和分析的签名(md5)的样本文件。这些签名汇总存储在样本文件中。然后,打开存储从网络流量中捕获的临时数据的CSV文件,提取TCP协议中的数据字段(1024字节,相当于2048个十六进制字符),解码后检查是否以字符“MZ”开头。如果是,则对其进行哈希,并与我们已验证的签名进行比较。如果匹配,则发出警报,并将此事件记录到日志中,类似于杀毒软件常用的静态分析方法。

_图27:检测网络流量中恶意代码的函数_
* 在主要函数之后,从第88行到第109行(程序末尾)是监控网络流量的代码段。
* 第一行检查目录,如果不存在则创建。
* 接下来是一个无限循环,直到用户通过Ctrl+C组合键中断程序。
* 在循环中,首先使用pyshark捕获数据包,接口是我们想要收听的网卡,输出文件为temp.pcap。
* 它捕获数据包6秒,然后运行从pcap转换为csv的函数。
* 获得csv文件后,运行CVE-2017-8464漏洞检测函数。这些操作定期重复执行,直到用户停止程序。

_图28:捕获流量并检测恶意代码的循环_
***通过实际利用测试程序运行情况。**
* 在Windows 10(真实机)上运行监控程序,监控我们将再次执行上述第二部分的攻击的网络区域。

_图29:在真实机上启动监控程序_
* 切换回两台虚拟机,再次执行第二部分的攻击操作。我们可以看到,捕获到的网络流量已被分析,并检测到攻击者正在执行LNK远程代码执行,如下图所示。
* 最后,要结束网络端口扫描过程,只需按下Ctrl+C组合键即可停止程序运行。

_图30:监听网络流量时的检测与警告_
* 扫描出威胁后,在监控程序的文件夹中会生成packet文件夹,其中包含通过pyshark捕获并转换为csv的文件,以及log.txt文件,记录程序运行期间检测到的活动。
* 此外,还会生成两个临时文件(程序用于读取和分析转换),这两个文件会频繁更改,而转换后的数据包会保存在packet文件夹中。
* 至于sample-detect.csv文件,如前所述,它存储了我们分析过的签名,用于通过静态分析方法检测威胁,这是杀毒工具常用的方法。

_图31:CVE-2017-8464监控程序文件夹_

_图32:packet文件夹,包含每次捕获并转换后的数据包文件_
* 然后检查log.txt文件,回顾之前是否有检测到的活动。基于CVE-2017-8464的攻击检测也已记录在日志中,包含具体时间和IP,与程序运行时的提示一致。

_图33:所有警告被保存到日志中_
**结论**
通过对CVE-2017-8464漏洞的利用和检测程序的构建,学生能够理解如何利用一个漏洞,并据此分析出签名以及恶意代码在漏洞上的行为模式。通过分析行为和签名,学生将有能力自行编写程序,自动收集、分析和处理网络安全监控信息,从而发出恶意代码检测警报。