Metasploit滲透測試實驗報告

一、實驗目的:

1.瞭解Metasploit框架的概念、組成,掌握Metasploit框架的基本使用,能夠利用Metasploit對已知漏洞進行滲透攻擊;模擬灰盒測試對DVSSC(定V)公司的網絡進行滲透,最終得到系統權限,並有效開展後滲透攻擊。

2.在滲透過程中逐漸掌握科學的滲透測試方法,即 PTES標準滲透測試方法七個階段:

(1)前期交互階段(跳過)
(2)情報蒐集階段
(3)威脅建模階段
(4)漏洞分析階段
(5)滲透攻擊階段
(6)後滲透攻擊階段
(7)報告階段;

3.在滲透測試過程中逐漸清晰滲透所要求掌握的技能,有針對有目的的進行初步學習,爲將來進一步學習奠定一定的基礎。

二、執行摘要

1.背景:

    《Metasploit滲透測試魔鬼訓練營》一書採用獨特的讓讀者成爲虛擬滲透測試的主角的方式,經歷一次對DVSSC公司網絡的滲透測試任務。滲透測試的目標爲DVSSC公司DMZ網段以及內網客戶端主機。四個主機均存在嚴重漏洞缺陷,可執行不同方式的攻擊方式。

2.整體情況:

    信息蒐集階段獲得了dvscc的域名註冊信息、地理位置,以及DMZ網段操作系統版本、開放端口及其服務版本等信息,但域名註冊信息存有疑問。

    漏洞掃描階段獲得DMZ網段主機大量漏洞信息,可採取不同方式的攻擊方式,如口令猜測、網絡服務滲透攻擊、瀏覽器滲透攻擊等。

    滲透攻擊階段對DMZ網站主機部分漏洞進行利用,但有部分漏洞沒有利用成功。對getshell的主機進行了有效的後滲透攻擊。

三、具體報告

1.實驗環境

1)網絡環境拓撲



2)滲透測試實驗環境搭建

①硬件升級:爲能夠同時開啓2~5臺虛擬機,將原本硬件(CPU:core i5-4210U @1.70GHz 2.40GHz;內存4G;硬盤500G機械硬盤)升級到內存8G,500G機械硬盤+ 240G固態硬盤,虛擬機全部放置在固態硬盤。

②虛擬機軟件安裝與網絡環境配置:

安裝VMware Workstation軟件(VMware Workstation Pro 12.0.0 build-2985596版本)

③虛擬網絡配置:

Windows8.1環境下需要以管理員身份運行VMwareWorkstation Pro 12。如圖所示進行設置,將VMnet1子網IP地址段設爲192.168.10.0,VMnet8子網IP地址段設爲10.10.10.0。


一旦在VMware中添加這些虛擬網絡,則在實體計算機上的“網絡”會生成相應的虛擬網卡(橋接類型的虛擬網絡除外)


爲弄清虛擬機網絡配置如何形成的定V公司網絡拓撲,另外學習了VMware中虛擬網絡(VMnet)的三種連接模式:

a)橋接:該虛擬網絡和實體計算機的網卡以網橋方式連接。虛擬網絡和實體計算機上的物理網卡進行橋接,這樣使用該虛擬網絡的虛擬計算機就能夠借用實體計算機的物理網卡和實體網絡進行通信了。當然虛擬計算機上的網卡需要配置和實體計算機同一IP網段的IP地址。


b)NAT:實體計算機上啓用了NAT,連接到該虛擬網絡的虛擬計算機通過NAT和物理網絡進行連接


c)僅主機:則虛擬網絡和實體計算機沒有任何網絡連接,僅和連接到同一虛擬網絡的虛擬計算機之間可以通信。


在VMware中編輯好虛擬網絡後,可以在“虛擬機設置”中配置虛擬機網卡和哪個虛擬網絡進行連接。選擇“橋接”時,則該虛擬機的網卡和VMnet0虛擬網絡進行連接;選擇“NAT”時,則該虛擬機的網卡和VMnet8虛擬網絡進行連接;選擇“僅主機”時,則該虛擬機的網卡和VMnet1虛擬網絡進行連接。還可以把網卡連接到自定義的虛擬網絡中。


④虛擬機鏡像配置

a)OWASP BWA、Win2K3Metasploitable、Kali2.0網絡適配器設置爲NAT模式,開啓DHCP服務,先前BT5已分配10.10.10.128,以及學習過程中其他靶機的安裝,故三臺主機ip自動分配爲10.10.10.129、10.10.10.130、10.10.10.141;

b)Linux Metasploitable啓用兩個網絡適配器,一個設置爲Host-Only,一個爲NAT,故有eth0及eth1兩個網卡,ip地址爲10.10.10.254(NAT,連接DMZ的VMnet8網段)和192.168.10.254(Host-Only模式,連接企業內網VMnet1網段);

c)WinXP Metasploitable網絡適配器,設置Host-only模式,自動分配到192.168.10.128地址,網關被設置爲192.168.10.254。

爲進一步學習網卡配置,手動自己配置了一遍Linux Metasploit的網絡配置,如下:

1)LinuxMetasploitable修改/etc/network/interfaces網卡配置文件如下所示:

root@bt:~# sudo vim /etc/network/interfaces
auto lo
  iface lo inet loopback
auto eth0
  iface eth0 inet static
  address 10.10.10.254
netmask 255.255.255.0
network 10.10.10.0
broadcast 10.10.10.255
auto eth1
  iface eth1 inet static
  address 192.168.10.254
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255


之後輸入

sudo/etc/init.d/networking restar

t命令重啓網卡,IP地址就設置完成了。

2)接下來是配置路由功能的過程。修改/etc下的sysctl.conf文件,打開數據包路由轉發功能:

root@metasploitable:/etc# vim sysctl.conf
……
net.ipv4.ip_forward = 1                 #將這行註釋取消掉
……

3)然後設置轉發規則:root@metasploitable:~# /sbin/iptables -t nat-A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE


實驗最初就是確保攻擊機與靶機是否處於同一網段,互相執行Ping命令檢測網絡暢通。對於VMnet1網卡,在開啓除攻擊機以外的其他主機的情況下,用WinXP Metasploitable主機訪問http://www.dvssc.com,進入登錄頁面,說明VMnet1、VMnet8下主機均正常。

2.信息蒐集階段

該階段要完成兩項任務:

i.通過信息蒐集工作,確定滲透測試目標的範圍。

ii.通過情報信息蒐集,發現滲透目標的安全漏洞與脆弱點,爲以後滲透攻擊提供基礎。

 

1)對定V公司網絡進行外圍信息蒐集

外圍信息蒐集能夠瞭解到網站域名、IP地址、服務器操作系統類型版本,並進一步針對門戶網站搜索到一些關於定V公司業務、人員與網站服務的細節信息。從而確定滲透測試目標的範圍,有必要的話可以實施社會工程學攻擊。

①被動信息蒐集

DNS和IP地址:Whois域名註冊信息查詢(whois[域名]);Nslookup和dig域名查詢(nslookupset type=A;Dig @ [域名]);www.netcraft.com




發現由CYANDOMAINS,INC.註冊,IP地址是137.175.78.85,在網絡區段發現4臺主機分別Win2K3和linux下運行。同時發現似乎並不是定V公司。暫且放在一邊。

另外還有其他信息蒐集方式,如i.P2Location(www.cz88.com)地理位置查詢;ii.IP2Domain反查域名;iii.Traceroute路由追蹤()。

特別實踐了一下搜索引擎蒐集,Google hacking技術

操作符+ 、- 、~ 、. 、* 、""

intext:把網頁中的正文內容中的某個字符做爲搜索條件.

intitle:搜索網頁標題中是否有所要找的字符.

cache:搜索google裏關於某些內容的緩存.

define:搜索某個詞語的定義.

filetype:搜索指定類型的文件

info:查找指定站點的一些基本信息.

inurl:搜索我們指定的字符是否存在於URL中.

link:搜索:inurl:www.4ngel.net所有和www.4ngel.net做了鏈接的URL.

site:例如:site:www.4ngel.net.將返回所有和4ngel.net這個站有關的URL.

②主機探測端口及服務掃描

活躍主機掃描使用ICMP Ping自然能夠做到,但爲了更加隱祕

a)主機發現模塊:

可以使用metasploit的這些模塊位於Metasploit源碼路徑的modules/auxiliary/scanner/discovery/目錄中,主要有以下幾個:arp_sweep、ipv6_multicast_ping、ipv6_neighbor、ipv6_neighbor_router_advertisement、udp_probe、udp_sweep。

b)nmap主機探測

使用nmap -sV -Pn -O[目標主機]可以獲取目標主機開放端口號及其詳細的服務版本信息,同時對操作系統進行識別,Pn參數在掃描前不發送ICMP進行主機活躍檢測,強制掃描,能夠避免ICMP不通導致主機存活性誤判而不進行掃描。

在Metasploit中可以使用網絡數據庫共享滲透測試信息數據庫。開啓PostgerSQL數據庫/etc/init.d/postgersqlstart

用db_status命令檢測是否連接正常。(爲搞清數據庫用戶名口令,可以查看database.yml)


將nmap輸出結果以xml格式導入Metasploit並查看

msf > nmap-sV -Pn -oX Subnet130.xml 10.10.10.0/24
msf > db_importSubnet1.xml
msf > services


表2 定V公司網絡探測與掃描結果


③針對性掃描

當然除了掃描外,還可以用Metasploit的Scanner輔助模塊等進行服務查點。

爲了學習Ruby腳本,嘗試編寫自己的掃描器,


這個簡單的掃描器使用Msf::Exploit::Remote::Tcp mixin處理TCP通信,使用Msf::Auxiliary::Scanner  mixin繼承掃描器所需的各個參數與方法。默認12345端口,一旦連接將發送一個消息,接受來自服務器的響應後,將響應消息和服務器信息輸出。

對發現的系統與文件管理類網絡服務,例如telnet、ssh、ftp等,可以進行弱口令猜測或是嗅探。爲簡單測試口令嗅探,我根據書本提示構造words.txt,對ssh進行口令試探攻擊。完成攻擊後,在網上下載了若干不同類別的口令字典。同樣使用psnuffle對DMZ網段監聽,獲得用戶名和口令爲msfadmin/msfadmin。得到了ssh和ftp訪問權限。

a)ssh口令猜測

msf > use auxiliary/scanner/ssh/ssh_login
msf auxiliary(ssh_login) > set RHOSTS10.10.10.254
msf auxiliary(ssh_login) > set USERNAMEroot
msf auxiliary(ssh_login) > set PASS_FILE/root/pass.txt
msf auxiliary(ssh_login) > set THREADS 50
msf auxiliary(ssh_login) > run


b)psnuffle監聽

msf > use auxiliary/sniffer/psnuffle 
msf auxiliary(psnuffle) > run

3.漏洞評估

由於BT5的OpenVAS按照書本配置啓動不能正常訪問GSA,詢問他人和參考網上資料都沒有解決,故放棄OpenVAS掃描器。使用Nessus。

在tenable官方主頁下載Nessus home版本安裝包(選擇 kali linux64位)使用命令dpkg -i Nessus-6.5.4-debian6_amd64.deb進行安裝,使用命令 /etc/init.d/nessusdstart 進行啓動,選擇使用Nessus的B/S架構,在瀏覽器中輸入https://127.0.0.1:8834打開Nessus主頁,啓動後設置本地用戶名和密碼(admin/admin),輸入Active code(激活碼)纔可以進行插件的更新安裝。

訪問http://www.tenable.com/products/nessus/nessus-homefeed 進行註冊,填寫正確郵箱(QQMail失敗,使用gmail成功),註冊完成會收到有Active code郵件。輸入Active code之後就可以開始下載安裝插件了。卻收到Download Fail頁面。參考網上解決方法使用root@kali:/opt/nessus/sbin# ./nessuscli update命令,依然提示安裝失敗(第二次安裝Kali系統後成功)。故採用另一種離線更新方式,登錄https://plugins.nessus.org/v2/offline.php,要求需要輸入兩個信息,一個是challengecode,另一個是activation code 。challengecode獲得由/opt/nessus/sbin下的./nessuscli fetch --challenge命令。Activation code由郵件重新獲得,之前一個已經被使用過而失效。

提交信息獲得離線的plugin以及license下載url。統統下載放置到/opt/nessus/sbin下。之後

①首先導入license。到/opt/nessus/sbin下,執行./nessuscli fetch --register-offlinenessus.license。


②加載nessus plugins,將all-2.0.tar.gz放到目錄下,然後通過nessuscli update all-2.0.tar.gz進行升級


③啓動nessus,在次目錄下,使用nessusd啓動


④插件更新安裝完畢後,即可輸入之前的賬號和密碼登陸操作頁面。


對DMZ網段靶機以及內網客戶機靶機進行漏洞掃描,由於使用家用版,掃描插件比較基本,得到初步漏洞信息。漏洞信息與書本所提到到漏洞略有出入。


表3 nessus漏洞掃描結果




4.威脅建模階段

現只考慮最基本的攻擊計劃,對後臺服務器Win2K3 Metasploitable(10.10.10.130)可採用口令猜測攻擊獲取口令,觸發ms08_067或ms03_026漏洞,進行網絡服務滲透攻擊。對於網關服務器Linux Metasploitable(10.10.10.254),同樣可以進行口令猜測,觸發Samba漏洞,用sessions命令將shell升級爲Meterperter shell進行後滲透攻擊。內網客戶機主機WinXp Metasploitable,可以觸發ms08_067漏洞,或者ms11_050漏洞,獲得系統權限。

5.滲透攻擊階段

網絡滲透攻擊

1)①目標主機:Win2K3Metasploitabel

②利用漏洞:ms03_026 Microsoft RPC Interface Buffer Overrun

③攻擊過程

加載msfconsole,利用exploit/windows/dcerpc/ms03_026_dcomMetasploit模塊,加載windows/meterperter/reverse_tcp攻擊載荷,設置RHOST、LHOST、LPORT後執行exploit命令。此攻擊載荷返回一個session。


④ms03_026機理分析

Microsoft RPC InterfaceBuffer Overrun Ms03_026漏洞是由於不正常處理畸形消息所致,影響使用RPC的DCOM接口,而此接口處理由客戶端發給服務器的DCOM對象激活請求。攻擊者可以成功利用此漏洞以本地系統權限執行任意命令。 Flashsky的分析指出MS03-026修復兩個漏洞,一個是當地的堆棧溢出,另一個是遠程棧溢出。兩個漏洞均來自一個API。

HRESULTCoGetInstanceFromFile( 
  COSERVERINFO* pServerInfo, 
  CLSID * pclsid, 
  IUnknown * punkOuter, 
  DWORD dwClsCtx, 
  DWORD grfMode, 
  OLECHAR * szName, //IPersistFile::Load初始化,該參數導致緩存器溢出
  ULONG CMQ, 
  MULTI_QI * rgmqResults 
); 
hr= CoGetInstanceFromFile(pServerInfo,NULL,0,CLSCTX_REMOTE_SERVER,STGM_READWRITE,L"C:\\1234561111111111111111111111111.doc",1,&qi);

當文件名太長時將產生緩存器溢出,因爲RPCSS的GetPathForServer函數只有0x220空間,然而API的檢查使得不能利用API進行滲透。但能夠利用用LPC構造數據包的方式進行利用。用lstrcpyw進行拷貝的。 在客戶端給服務器傳遞這個參數的時候,會自動轉化成如下格式:L“\\servername\c$\1234561111111111111111111111111.doc"這樣的形式傳遞給遠程服務器,於是在遠程服務器的處理中會先取出servername名,這裏沒做檢查,給定了0X20(默認NETBIOS名)大小的空間,於是堆棧溢出產生了。當輸入足夠多的字符時候,堆棧發生溢出,並且導致可以直接執行構造的shellcode。

關鍵代碼如下:

GetPathForServer 
text:761543DA push ebp 
text:761543DB mov ebp, esp 
text:761543DD sub esp, 20h <-----只有0x20的長度 
text:761543E0 mov eax, [ebp+arg_4] 
text:761543E3 push ebx 
text:761543E4 push esi 
text:761543E5 mov esi, [ebp+hMem] 
text:761543E8 push edi 
text:761543E9 push 5Ch 
text:761543EB pop ebx 
text:761543EC mov [eax], esi 
text:761543EE cmp [esi], bx 
text:761543F1 mov edi, esi 
text:761543F3 jnz loc_761544BF 
text:761543F9 cmp [esi+2], bx 
text:761543FD jnz loc_761544BF 
text:76154403 lea eax, [ebp+String1] <----servername 只有0X20的長度
text:76154406 push 0 
text:76154408 push eax 
text:76154409 push esi <----------------------壓入文件名參數
text:7615440A call GetMachineName<-------------函數返回則緩存器溢出
GetMachineName: 
text:7614DB6F mov eax, [ebp+arg_0] 
text:7614DB72 mov ecx, [ebp+arg_4] 
text:7614DB75 lea edx, [eax+4] 
text:7614DB78 mov ax, [eax+4] 
text:7614DB7C cmp ax, 5Ch <-----------------控制servername長度是0X5C 
text:7614DB80 jz short loc_7614DB93 
text:7614DB82 sub edx, ecx 
text:7614DB84 
text:7614DB84 loc_7614DB84: ; CODE XREF: sub_7614DA19+178j 
text:7614DB84 mov [ecx], ax <-------將servername寫入地址,長度大於Ox20則溢出
text:7614DB87 inc ecx 
text:7614DB88 inc ecx 
text:7614DB89 mov ax, [ecx+edx] 
text:7614DB8D cmp ax, 5Ch 
text:7614DB91 jnz short loc_7614DB84 
text:7614DB93 

2)  ①目標主機:LinuxMetasploitabel

②利用漏洞:Distcc服務漏洞CVE-2004-2687

        ③漏洞詳情

distcc2.x,用於XCode 1.5和其他人,當不限制訪問服務器端口配置,允許遠程攻擊者執行任意命令通過編譯工作,由服務器沒有執行授權檢查。

④攻擊過程

    加載msf框架,使用exploit/unix/misc/distcc_exec模塊,加載cmd/unix/reverse攻擊載荷,設置LHOST、RHOST後執行exploit -z,sessions -u提升爲Meterpertershell。



5.後滲透攻擊階段

Meterperter是Metasploit框架中通常作爲攻擊載荷所使用能夠返回一個控制通道的模塊。在利用ms03_026漏洞拿到shell後可以對目標系統進行更爲深入的滲透,包括密碼哈希值獲取,特權提升、跳板攻擊、純內存工作模式、反追蹤等等。

進程移植:使用migrate命令可以將Meterperter會話從一個進程移植到另一個進程,首先用ps命令獲得正在運行的進程pid。然後執行migrate pid將進程移植到explorer.exe中。


鍵盤記錄:使用keyscan_start命令開啓鍵盤記錄在用戶登錄系統後用keyscan_dump參看可以得到明文密碼。


哈希值登錄:不使用鍵盤記錄功能可以用Meterperter中的hashdump命令獲取系統本地文件中的用戶名和密碼哈希值。拿到LM,NTLM哈希值後可以在www.onlinecrack.com中在線破解,或者直接用windows/smb/psexec傳遞哈希值進行滲透。


取得SYSTEM 權限:通過net user命令創建限制權限的普通用戶賬號,並提權。


持久控制:Meterperter僅僅是駐留內存中的shellcode,一旦目標主機重啓將失去控制,爲此使用Meterperter中persistence、metsvc、getgui等後滲透攻擊模塊,在目標主機中安裝自啓動和永久服務的方式從而持久控制。




痕跡清除:對目標主機操作完後,用clearev命令對日誌留下的入侵痕跡進行清除。


升級command shell:Metaspliot框架支持使用sessions -u 命令將命令行shell升級爲Meterperter。使用usermap_script對linux主機進行滲透,拿到shell後將其升級爲Meterperter shell。

需要使用setg命令對LHOST以及LPORT進行設置,用exploit -z滲透,session -u命令升級爲Meterperter。



四、實驗總結

    本次實驗,掌握了Metasploit框架下的基本操作,爲更好學習滲透,特別安裝了Kali 2.0虛擬機。在PTES標準滲透測試方法的指導下,對各個滲透環節有了初步的瞭解。信息蒐集階段學會了使用各種信息蒐集方法,但Google Hacking技術仍需靈活掌握。

    在學習實踐滲透時,爲了接下來更有效的學習,對8086彙編語言、ruby等進行了一定的學習。在漏洞機理分析方面的學習,一開始感覺力不從心,另外初步學習了《加密與解密》、《0day安全:軟件漏洞分析技術》,瞭解了OD、IDA、HIEW、Windg等工具的基本使用。但依舊不能熟練的開展分析。對於Poc、exp代碼有一定的閱讀能力。

    滲透實驗僅僅在虛擬機靶機上進行,且只是對內網滲透,對出現的個別問題參閱資料後也不能全部解決。希望將來能夠深入學習相關知識。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章