Metasploit

●漏洞檢查及攻擊框架,可利用模組化方式不斷擴充功能,主要模組為: A.Auxiliary(輔助模組):「探查」、「掃描」、「蒐集」,非直接對弱點進行攻擊或利用的模組。 B.Exploit(弱點利用):選擇適當的Exploit對弱點進行攻擊。 C.Payload(載荷):對受害系統進行作業(如安置後門)。 Shellcode:在受害目標載入或執行Payload所需程式碼,依不同作業系統編制。 提供Metasploit遠端交談,藉以操控Payload功能。 ●專有名詞介紹: job:當執行一個模組即稱為一個job。 session:若job可與其他設備連線(如透過Exploit連線到受害電腦),連線建立就會啟動一組session。 一組job可能有多個session,但同一時間僅能一組session可互動。 Post:meterpreter使用(run)的腳本。詳見armitage。 ●Metasploit操作方式: A.命令列(msfcli):進行批次作業較便利。 B.互動式平臺(msfconsole):支援程度最完整。(此為本組所著重) C.圖形介面(armitage):操作困難度較低。 D.Metasploit Community:Metasploit 的Web 操作介面。

設定Metasploit資料庫(Metasploit使用PostgreSQL做資料管理)

啟動postgresql服務。指令:systemctl start postgresql 查看狀態(確認是否啟動)。指令:systemctl status postgresql 設定開機時自動啟動postgresql服務。指令:systemctl enable postgresql 查看狀態(確認是否成功設定成自動啟動)。systemctl status postgresql

建立資料庫(手動)

Step01.設定PostgreSql的連線密碼,連線帳號預設為postgres。 指令:su postgres -c /usr/bin/psql //Password is a12345 Step02.建立Metasploit資料庫。 (注意:msf=#的指令末端都要加上;才可以執行) 指令:su - postgres createdb msf psql -s msf 指令:create user KinAnn password 'a12345'; 指令:GRANT ALL PRIVILEGES ON DATABASE msf TO KinAnn; \q exit Step03.完成資料庫建立之後,可將資訊寫到database.yml中。 指令:cd /opt/metasploit/apps/pro/ui/config vim database.yml

使用pgadm3管理PostgreSQL

pgadm3管理工具,簡化Postgresql的操作程序。 在Kali Linux中進行安裝,指令:apt-get install pgadmin3 開啟pgAdmin III,路徑:Kali Linux → 應用程式 → 活動概覽 → 輸入pgAdmin III Step01.按左上方插頭,以完成連線屬性,Password的密碼必須與先前步驟設定的一致。 //Password is a12345 Step02.將左列展開,在Login Roles上按右鍵,新增一筆帳號(New Login Role...) 在Databases上按右鍵,新增一組資料庫(New Database...) Step03.設定Metasploit的database.yml。database.yml是Metasploit存取資料庫的設定。(本組認為此步驟可忽略) 指令:vim /opt/metasploit/apps/pro/ui/config/database.yml Step04.在msfconsole上啟動資料庫連線。 開啟msfconsole,路徑: Kali Linux → 應用程式 → 08-漏洞利用工具集 → metasploit framework (由終端機執行su - postgres -c msfconsole) 顯示目前資料庫連線狀態,指令:db_status 顯示postgresql connected to msf3 代表已完成Metasploit的資料庫連線。 若仍出現「postgresql selected, no connection」,則輸入以下指令以完成Metasploit的資料庫連線。 指令:db_connect kinann:a12345@localhost:5432/msf 下db_status指令會顯示 postgresql connected to msf 的結果 指令說明:db_connect USER:PASS@HOST[:PORT]/DB USER:資料庫的連線登入帳號。 PASS:資料庫的連線登入密碼。 HOST:資料庫所在的主機位址(IP或HOSTNAME)。 port:資料庫連線使用的端口,postgresql預設使用端口為5432。 每當重新執行msfconsole時,要先下db_status指令,查看是否已完成連線。

更新Metasploit

指令:msfupdate

Msfconsole指令

Kali Linux → 應用程式 → 08-漏洞利用工具集 → metasploit framework (由終端機執行su - postgres -c msfconsole) 輸入help查詢,上半部為"常用的核心指令",下半部為"常用的資料庫指令"。

Metasploit基本測試流程

1.選擇已知的漏洞(Exploit)。 2.選擇目標(Target)。指定設備的作業系統。 3.選擇攻擊的指令內容(Payload)。 4.設定其他相關參數(Option)。 5.進行測試(Explotation)。 (1)Check:非實際進行攻擊,不會造成被攻擊電腦設備的損害,準確性不高,非所有弱點都可以此方式測試。 (2)Exploit:真正進行攻擊的行為,不會有誤判的問題,但是可能會把電腦設備搞掛。

Msfconsole可支援多樣作業,當發現疑似漏洞,一般會依循下列步驟執行:(註:有色部分視需要執行。)

使用auxiliary模組

msf目前共有18類、852支輔助模組,滲透測試作業較常用到的類型有: 查找與TCP相關的scanner模組。指令:grep tcp search scanner (亦可使用指令:grep tcp show auxiliary) 載入auxiliary/scanner/portscan/tcp模組,並進行掃描。 ●若輔助工具執行時間較長,可將指令:run,改為指令:run -j,讓它在背景執行。 ●有些auxiliary模組可能具多種功能,載入該auxiliary後,可利用指令:show actions,查看可使用的功能, 並用指令:set action ACTION,來指定執行的功能。 ●掃描的輔助模組:ortscan、smb、SMTP、FTP、SSH、資料庫系統。 ●msf的輔助工具,結果會寫到資料庫,方便管理運用。

Exploit攻擊

分為主動式與被動式兩種: ●主動式:使用exploit攻擊對方的弱點,發動時機由攻擊者決定。大多針對已知的漏洞進行爆破。 ●被動式:攻擊者設定陷阱,並啟動接聽模式(listener)等待獵物上門。常用於社交工程引誘獵物上門。

《Exploit主動式攻擊範例》 ◆滲透對象:WindowsXP SP3 (為方便滲透,先關閉目標的防火牆。) ◆利用Meterpreter取得遠端控制權: Meterpreter為msf提供滲透成功後的遠端指令操作環境,就像telnet、SSH或Remote Console的命令解譯器。 Exploit主動式攻擊步驟: Step01.對目標機進行端口掃描,找尋可能存在遠端連線操控的漏洞。 發現開啟埠號135-139或445,代表有提供RPC服務,嘗試透過445對目標主機進行滲透。 Step02.進行攻擊。 選擇「shell」類型的payload。攻擊成功會回傳類似命令提示字元的解釋環境。

      使用DOS指令:Ctrl+C,再輸入Y,可以結束連線。註:msfconsole不支援中文顯示,故中文會變成亂碼。

選擇「meterpreter」類型的payload。攻擊成功會回傳msf的命令環境。功能比shell強很多。

《Exploit被動式攻擊範例》 由於被動攻擊非本組研究之重點,故僅簡述被動式攻擊的流程: 1.利用ani_loadimage_chunksize功能建立一個惡意網站。 2.將發動攻擊的點放在根目錄。 3.選用windows/shell/reverse_tcp做為攻擊載荷。 4.將網址設為惡意IP。 5.執行exploit啟用的惡意網站。 6.等獵物上門。

armitage

以java開發的msf圖形化操作介面,透過選單方式管理各類模組,執行armitage時會檢查是否已啟動postgresql服務。 開啟msfconsole,路徑:Kali Linux → 應用程式 → 08-漏洞利用工具集 → armitage (或由終端機執行armitage) 使用armitage進行滲透: Step01.開啟armitage並連接。(在本機操作,不知道帳號密碼,仍可直接按Connect。) Step02.按「Yes」啟動RPC服務。 Step03.armitage啟動後,會從msf的資料庫載入已有的hosts載到右邊的清單中。 auxiliary、exploit、payload,先前已提及,在此不再贅述。 post:meterpreter使用(run)的腳本。

     若原先右方HOST(s)是空的,則從功能表單中選擇Hosts\Add Hosts。

在跳出的視窗中輸入目標的IP(192.168.0.17),再按Add。

《SCAN》 相當於msfconsole中執行auxiliary\scanner的模組。 Step01.從scanner中選擇要使用的模組。 本組實測:auxiliary/scanner/portscan/tcp Step02.點選右方欲掃描的主機,從功能表單中選擇Hosts\MSF Scans。 跳出指定主機對話框,輸入主機的IP(192.168.0.17)或hostname,按「確定」。 (亦可於右方欲掃描的主機上,按右鍵,選Scan。) armitage就開始進行掃描,相關資訊會顯示於下方終端機頁籤。

《EXPLOIT》 Step01.從功能表單中選擇Attacks\Find Attacks,再按「確定」。 armitage會對所有主機掃描一次,找出適合該主機使用的exploits。 日後僅需在選定的目標主機按右鍵,從pop-menu中選擇適當的Attack之exploit即可。 Step02.選擇目標主機的作業系統:在目標主機按右鍵\Host\Operating System\Windows\XP/2003 Step03.選擇Attack的exploit:在目標主機上按右鍵\Attack\smb\ms08_067_netapi Step04.在彈出的視窗中,Targets選編號33,勾選「Use a reverse connection」,再按「Launch」。 Step05.成功打下目標,則圖形會變成紅框。 再從被打下的目標按右鍵,選擇「Meterpreter1\Interact\Meterpreter Shell」這個載荷。 下方終端機會出現「meterpreter >」,表示已經注入對方電腦,並進入meterpreter交談環境。 Step06.實測抓取目標電腦的畫面。 在終端機「Meterpreter1」中輸入指令:screenshot。畫面會在終端機「Screenshot1」中顯示。

《其他常用功能》 ●自動攻擊:「Attacks\Hail Mary」。 全自動智慧型的攻擊方式,armitage會依照目標主機的型態自動選擇exploit進行攻擊。 ●監聽方式:「Attacks\Listeners」。 設定執行攻擊的模式是採用主動連線(Bind)或待命(Reverse)方式。 ●管理主機清單:armitage直接使用msf資料庫,可與msfconsole共用結果,可透過Hosts功能表管理資料庫內主機。 ●Import:匯入外部工具掃描的結果,即msfconsole的db_import功能。 可從其他掃描工具(如Nmap)匯入已找到資訊的主機。 ◆Add Hosts:手動方式鍵入主機資料。 ◆Nmap Scan:即執行db_nmap掃描。 ◆MSF Scan:自動加載msf的scanner模組進行批次掃描,並將找到的主機加到資料庫中。 ◆Workspaces:可以對主機進行分類管理。 ●切換主機顯示方式:在主機窗格空白處按右鍵,選擇表格式排列。 從功能表單中選擇Armitage\Set Target\View\Table View,將呈現方式改用表格清單。 ●顯示主機間的關係:在主機窗格空白處按右鍵,可進行Zoom In/Zoom Out收放主機圖式大小。 若各主機間存在階層關係,亦可透過Auto-Layout或Layout排列它們的關係圖。