信息收集實戰(zhàn):從系統(tǒng)命令到自動化工具鏈)
1. 項目概述為什么內網(wǎng)信息收集是攻防的基石在網(wǎng)絡安全領域尤其是滲透測試和紅隊評估中內網(wǎng)信息收集是一個無法繞開的起點。你可以把它想象成一場戰(zhàn)役前的偵察行動。當攻擊者通過某種方式比如一個釣魚郵件、一個暴露在公網(wǎng)的脆弱服務成功進入內網(wǎng)的一臺主機后他面對的是一個龐大而未知的內部網(wǎng)絡。這臺主機通常被稱為“跳板機”或“立足點”就像深入敵后的偵察兵。如果偵察兵不摸清地形、兵力部署和重要目標后續(xù)的所有進攻都將是盲目的效率極低且容易被發(fā)現(xiàn)?!皟染W(wǎng)信息收集Windows系統(tǒng)”這個標題精準地指向了這個偵察階段的核心任務以一臺已被控制的Windows主機為起點系統(tǒng)地、隱蔽地收集整個內網(wǎng)環(huán)境中的所有有價值信息。這不僅僅是獲取幾個IP地址那么簡單而是要對網(wǎng)絡結構、用戶身份、計算機資產、共享資源、信任關系、安全策略乃至業(yè)務系統(tǒng)進行全方位的“測繪”。這些信息是后續(xù)橫向移動、權限提升、數(shù)據(jù)竊取乃至最終控制整個內網(wǎng)域環(huán)境的關鍵“地圖”。對于安全從業(yè)者而言無論是進行授權的滲透測試以評估企業(yè)防御能力還是作為藍隊成員了解攻擊者的視角以加固防御深入掌握Windows內網(wǎng)信息收集的技術、工具和思路都至關重要。這能讓你理解攻擊鏈的初始環(huán)節(jié)從而在日志中識別異常行為在策略上封堵信息泄露的途徑。接下來我將以一個實戰(zhàn)者的角度拆解在Windows內網(wǎng)中我們具體要收集什么、用什么工具收集、以及如何高效、隱蔽地完成這項任務。2. 信息收集的核心目標與分類在開始敲命令之前我們必須明確目標到底要收集什么雜亂無章地運行工具只會產生噪音。我將內網(wǎng)信息收集的目標分為幾個層次從基礎到深入像剝洋蔥一樣層層遞進。2.1 基礎系統(tǒng)與網(wǎng)絡信息這是最直接的一層目的是了解你當前所在的“偵察兵”自身狀況及其直接可見的周邊環(huán)境。當前主機信息包括操作系統(tǒng)版本、補丁情況、主機名、當前登錄用戶及權限級別是否是本地管理員、系統(tǒng)架構x64/x86、安裝的軟件列表、進程列表、服務列表、計劃任務、網(wǎng)絡共享等。這些信息能幫助你判斷這臺機器的價值是否重要權限是否夠高并尋找本地提權的可能。網(wǎng)絡配置信息包括IP地址、子網(wǎng)掩碼、默認網(wǎng)關、DNS服務器、ARP緩存表、路由表、活躍的網(wǎng)絡連接ESTABLISHED狀態(tài)的連接尤其重要可能指向內網(wǎng)其他服務器。這幫你勾勒出當前主機所在的網(wǎng)段拓撲。用戶與組信息本地用戶賬戶、本地組成員關系。特別是要關注哪些用戶屬于“Administrators”組。2.2 內網(wǎng)資產與拓撲發(fā)現(xiàn)這一層開始向外探索目標是繪制內網(wǎng)“地圖”。存活主機發(fā)現(xiàn)在同一網(wǎng)段或跨網(wǎng)段中有哪些IP地址是活躍的這是所有后續(xù)動作的基礎。我們常使用ICMP Ping掃描、ARP掃描同網(wǎng)段效率極高、TCP/UDP端口掃描等技術。端口與服務探測發(fā)現(xiàn)存活主機后需要探測它們開放了哪些端口運行著什么服務。例如445端口SMB文件共享、135端口RPC、139端口NetBIOS、389/636端口LDAP、3389端口RDP等都是Windows內網(wǎng)中的關鍵服務端口。操作系統(tǒng)與設備指紋識別通過TTL、TCP/IP協(xié)議棧差異、特定服務的banner信息判斷目標主機是Windows、Linux還是網(wǎng)絡設備以及大致的版本。2.3 域環(huán)境信息深度挖掘如果內網(wǎng)采用了Active DirectoryAD域環(huán)境那么信息收集的“寶藏”就真正打開了。域是Windows內網(wǎng)管理的核心控制了域就幾乎等于控制了整個網(wǎng)絡。域基礎信息確認當前主機是否已加入域。如果已加入獲取域名、域控制器DC的主機名和IP地址、域的功能級別等。域內用戶與組枚舉獲取域內所有用戶賬戶、計算機賬戶、組尤其是特權組如Domain Admins、Enterprise Admins的列表。了解用戶的全名、描述、上次登錄時間、是否啟用、密碼策略等。域內關系與信任分析查找域內的組策略對象GPO、組織單位OU結構了解計算機和用戶的分布與管理策略。探查域與域之間是否存在信任關系。共享資源與敏感數(shù)據(jù)定位枚舉域內或工作組的網(wǎng)絡共享SMB共享尋找可能包含敏感文件如配置文件、數(shù)據(jù)庫備份、代碼倉庫的共享文件夾。使用關鍵詞搜索文件內容。2.4 憑據(jù)與令牌信息獲取這是信息收集的“皇冠”目的是獲取能夠用于身份驗證的“鑰匙”。內存中的憑據(jù)利用工具從Lsass進程內存中提取登錄過的用戶明文密碼、哈希NTLM Hash或Kerberos票據(jù)。存儲的憑據(jù)查找瀏覽器保存的密碼、Wi-Fi密碼、RDP連接憑據(jù)、PuTTY會話密碼、各類管理工具和客戶端配置文件中的密碼。Windows憑據(jù)管理器查看當前用戶或系統(tǒng)存儲的Windows憑據(jù)。Kerberos票據(jù)在域環(huán)境中獲取當前用戶的TGT票據(jù)授予票據(jù)或服務票據(jù)可用于票據(jù)傳遞攻擊。注意憑據(jù)提取行為在防護嚴格的網(wǎng)絡中極易觸發(fā)告警如Windows Defender Credential Guard、ATP對Lsass的防護。在實際滲透測試中需根據(jù)規(guī)則和目的謹慎使用并優(yōu)先考慮不接觸Lsass的替代方法。3. 手動命令與內置工具實戰(zhàn)在實戰(zhàn)中尤其是在環(huán)境受限無法上傳或運行外部工具的情況下熟練使用Windows系統(tǒng)自帶的命令和工具是必備技能。它們低調、有效是“無文件攻擊”或“Living off the Land”戰(zhàn)術的體現(xiàn)。3.1 系統(tǒng)與用戶信息收集打開命令提示符cmd或PowerShell一系列命令可以讓你快速了解立足點。查看系統(tǒng)信息systeminfo這個命令會輸出一長串信息重點關注“OS 名稱”、“OS 版本”判斷Win10/WinServer 2016等、“系統(tǒng)類型”64位/32位、“補丁程序”列表。補丁列表可以幫助你快速尋找缺失的漏洞補丁評估提權可能性。查看當前用戶和權限whoami whoami /priv net user net localgroup administratorswhoami簡單直接。whoami /priv列出當前用戶的所有特權例如SeDebugPrivilege調試權限對后續(xù)進程注入、憑據(jù)提取至關重要。net user和net localgroup administrators用于查看本地用戶和管理員組。查看網(wǎng)絡配置ipconfig /all arp -a route print netstat -anoipconfig /all獲取完整的IP、網(wǎng)關、DNS信息。arp -a查看ARP緩存它能揭示近期與本機通信過的內網(wǎng)IP和MAC地址是發(fā)現(xiàn)同網(wǎng)段主機的“被動”方法。route print看路由表判斷是否存在多網(wǎng)卡或復雜路由。netstat -ano查看所有網(wǎng)絡連接和監(jiān)聽端口-a顯示所有-n以數(shù)字形式顯示地址和端口-o顯示關聯(lián)的進程ID。結合任務管理器可以找出可疑的外連或內連。3.2 內網(wǎng)主機與端口發(fā)現(xiàn)無外部工具在沒有Nmap、Masscan等專業(yè)掃描器時我們可以用系統(tǒng)命令進行基礎的探測。同網(wǎng)段存活主機發(fā)現(xiàn)ARP由于ARP協(xié)議工作在鏈路層同網(wǎng)段內使用ARP探測速度快且相對隱蔽。# 一種簡單的循環(huán)Ping但可能觸發(fā)ICMP日志 for /l %i in (1,1,254) do ping -n 1 -w 50 192.168.1.%i | findstr TTL # 更推薦使用arp命令先Ping一個廣播地址或已知IP更新緩存再查看arp緩存 ping 192.168.1.255 -n 1 nul arp -a | findstr “動態(tài)”第二種方法更巧妙先ping一個廣播地址或一個已知存在的主機這會促使本機發(fā)送ARP請求更新ARP緩存表。然后查看ARP緩存中“動態(tài)”類型的條目這些就是當前活躍的同網(wǎng)段主機。這種方法沒有主動發(fā)送大量探測包更隱蔽。端口連接測試Telnet或PowerShellWindows默認可能未安裝Telnet客戶端但PowerShell是更強大的選擇。# 使用Telnet如果可用 telnet 192.168.1.10 445 # 使用PowerShell Test-NetConnection (Windows 8/2012及以上) Test-NetConnection 192.168.1.10 -Port 445如果端口開放Telnet會顯示一個空白窗口或連接成功PowerShell命令則會明確返回TcpTestSucceeded : True。你可以寫一個簡單的PowerShell或批處理腳本來循環(huán)測試一批主機的關鍵端口。3.3 域環(huán)境信息枚舉如果systeminfo中的“域”字段顯示了你所在的域名或者net config workstation命令輸出中有“工作站域”信息那么恭喜你進入了一個更有趣的環(huán)境。發(fā)現(xiàn)域控制器和域名nltest /dsgetdc:域名 # 或者 net group Domain Controllers /domain如果不知道完整域名可以嘗試set命令查看環(huán)境變量USERDOMAIN或LOGONSERVER后者通常指向為你提供登錄服務的域控制器。枚舉域用戶和計算機net user /domain net group /domain net group Domain Admins /domain net group Enterprise Admins /domain net localgroup /domainnet user /domain會列出域內所有用戶賬戶信息量巨大。net group /domain列出所有域組。重點查看Domain Admins域管理員和Enterprise Admins企業(yè)管理員權限更高的成員這些是你的終極目標。查詢域內計算機列表net group Domain Computers /domain或者使用更強大的dsquery命令需要安裝RSAT工具或直接在域控制器上dsquery computer查找共享資源net view /domain:域名 # 查看某臺主機的共享例如域控 net view \\DC01 /all實操心得在真實的滲透測試中直接使用net命令進行大量枚舉如net user /domain可能會在域控的安全日志事件ID 4661、4662中留下大量“目錄服務訪問”審計記錄容易被藍隊發(fā)現(xiàn)。因此在需要隱蔽的行動中我會優(yōu)先使用基于LDAP查詢的、更低調的工具或者控制查詢的頻率和范圍。4. 專業(yè)工具鏈的自動化收集當手動命令無法滿足效率需求或者我們需要更全面、更結構化的信息時就需要借助專業(yè)的工具。這些工具通常需要上傳到目標機器執(zhí)行。4.1 綜合信息收集工具這類工具是“瑞士軍刀”一鍵運行就能獲取大量信息。PowerSploit 的 PowerView這不是一個獨立的exe而是一系列PowerShell腳本。它通過.NET與AD交互功能極其強大且靈活。# 導入模塊后可以執(zhí)行諸如 Get-NetDomain # 獲取域信息 Get-NetUser # 獲取域用戶 Get-NetComputer # 獲取域計算機 Get-NetShare # 枚舉共享 Find-LocalAdminAccess # 尋找當前用戶具有本地管理員權限的機器PowerView的優(yōu)勢在于它是純PowerShell可以繞過一些應用白名單策略并且能進行非常復雜的查詢和過濾。缺點是需要在內存中加載腳本可能被AMSI反惡意軟件掃描接口攔截。BloodHound 的采集器 SharpHound / IngestorBloodHound是域滲透的“核武器”而SharpHound是它的數(shù)據(jù)采集器。它不直接用于攻擊而是通過LDAP查詢、本地API調用、會話枚舉等方式收集域內用戶、組、計算機、權限、會話等所有關系數(shù)據(jù)生成一個JSON文件。然后你可以在自己的攻擊機上用BloodHound圖形界面導入這個JSON它會自動分析出通往域管理員的最短路徑例如哪些用戶對哪些機器有本地管理員權限、哪些用戶是敏感組的成員等。SharpHound.exe -c All運行后它會生成一個壓縮包。這個工具非常高效但采集行為本身大量的LDAP查詢和網(wǎng)絡會話枚舉在開啟詳細審計的域中會非常明顯。Empire / Covenant 等C2框架的信息收集模塊如果你已經通過C2命令與控制框架建立了會話那么框架內部通常集成了完善的信息收集模塊。例如在Empire中你可以使用shell whoami執(zhí)行系統(tǒng)命令也可以使用專門的模塊如powershell/situational_awareness/network/portscan進行端口掃描powershell/situational_awareness/host/winenum進行主機枚舉。這些模塊的輸出會直接回傳到C2服務器便于集中管理。4.2 網(wǎng)絡掃描與資產發(fā)現(xiàn)工具Nmap雖然是Linux下的神器但在Windows上同樣有編譯好的版本。它功能全面從主機發(fā)現(xiàn)、端口掃描到服務版本探測、操作系統(tǒng)識別、甚至漏洞腳本掃描。nmap -sn 192.168.1.0/24 # 主機發(fā)現(xiàn)掃描 nmap -sS -sV -O 192.168.1.10 # SYN掃描服務版本探測操作系統(tǒng)識別 nmap -p 445,3389,135,139 --script smb-os-discovery,smb-enum-shares 192.168.1.0/24 # 針對SMB的腳本掃描在內網(wǎng)使用Nmap需要注意掃描速度過快的全端口掃描可能觸發(fā)IPS/IDS告警。Masscan號稱“世界上最快的端口掃描器”采用異步傳輸速度極快適合在擁有高帶寬權限時快速掃描大網(wǎng)段。masscan 10.0.0.0/8 -p445 --rate10000但它的準確性有時不如Nmap且攻擊特征明顯通常用于初步的廣撒網(wǎng)式探測。Advanced IP Scanner / Angry IP Scanner這類是帶有圖形界面的輕量級掃描工具易于使用能快速發(fā)現(xiàn)網(wǎng)絡中的設備并嘗試識別設備類型和主機名。在需要快速進行可視化偵察時很有用。4.3 憑據(jù)提取工具這是最敏感的一類工具務必在授權測試中謹慎使用。Mimikatz憑據(jù)提取的“王者”。最著名的功能是從Lsass進程內存中提取明文密碼、NTLM哈希、Kerberos票據(jù)。privilege::debug # 嘗試提升到Debug權限 sekurlsa::logonpasswords full # 提取內存中的憑據(jù)在Windows 10/2012 R2之后由于LSASS保護機制直接運行sekurlsa::logonpasswords可能失敗或無法提取明文。需要配合其他技術繞過如使用Mimidrv驅動、利用SspiCli.dll等。Procdump 本地解析一種更隱蔽的方式。先用微軟官方的調試工具Procdump將Lsass進程的內存轉儲到磁盤。procdump.exe -accepteula -ma lsass.exe lsass.dmp然后將dump文件下載到你的攻擊機在本地用Mimikatz讀取。mimikatz # sekurlsa::minidump lsass.dmp mimikatz # sekurlsa::logonpasswords這種方式避免了在目標機器上直接加載Mimikatz可能繞過一些內存掃描。LaZagne / Windows Credential Editor (WCE)這些工具專注于提取系統(tǒng)中存儲的各種憑據(jù)如瀏覽器密碼、Wi-Fi密碼、RDP憑據(jù)、VNC密碼等。LaZagne是跨平臺的模塊化設計可以針對特定應用進行提取。重要警告憑據(jù)提取行為是安全防護的重點監(jiān)控對象。現(xiàn)代EDR終端檢測與響應產品對進程注入、對Lsass的訪問、調用特定API如LsaEnumerateLogonSessions有高度敏感的檢測規(guī)則。在對抗性強的環(huán)境中需要采用更高級的繞過技術或者優(yōu)先尋找其他途徑如竊取令牌、濫用Kerberos協(xié)議缺陷而非直接提取密碼哈希。5. 隱蔽與規(guī)避技巧實錄在真實的攻防對抗中粗暴的信息收集會迅速暴露你的行蹤。藍隊的安全運營中心SOC盯著各種日志和告警。因此隱蔽性和規(guī)避能力至關重要。5.1 降低掃描與枚舉的噪音慢速掃描避免使用Nmap的-T5瘋狂模式或Masscan的極高發(fā)包速率。使用-T2禮貌模式或-T1猥瑣模式并添加隨機延遲--scan-delay、--max-rate限制速率。分散掃描源如果控制了多臺跳板機可以將掃描任務分散到不同主機、不同時間段進行避免單一IP產生大量可疑流量。使用合法協(xié)議和端口將掃描流量偽裝成正常的業(yè)務流量。例如使用基于DNS協(xié)議的信息滲出工具如DNS隧道進行數(shù)據(jù)傳輸或者將掃描命令嵌入到正常的HTTP/HTTPS請求中。利用信任關系如果域內存在管理通道如WinRM、PSRemoting可以優(yōu)先在這些通道內執(zhí)行命令其產生的日志可能不同于普通的網(wǎng)絡掃描日志。5.2 繞過日志與審計清除事件日志在獲取足夠權限后可以使用wevtutil命令清除Windows事件日志但這是一個非常明顯的入侵指標不到萬不得已不應使用。wevtutil cl System wevtutil cl Security wevtutil cl Application使用無文件技術盡可能在內存中執(zhí)行操作不向磁盤寫入文件。使用PowerShell的IEX (New-Object Net.WebClient).DownloadString()方式從遠程加載腳本到內存執(zhí)行或者使用C2框架的純內存模塊?;煜钆c流量對執(zhí)行的命令進行編碼如Base64、混淆避免在命令行日志中出現(xiàn)敏感關鍵詞。使用加密的C2通道。5.3 針對AV/EDR的繞過工具免殺對常用的信息收集工具如Mimikatz、PowerView的ps1腳本進行代碼混淆、加殼、修改特征碼或者自己用C#/Go/Python重寫核心功能編譯成白名單程序簽名的樣子。Living off the Land最大化利用系統(tǒng)自帶組件。除了前面提到的net、dsquery還有wmic、sc、reg等。PowerShell本身就是一個極其強大的“合法”工具通過加載僅存在于內存中的腳本片段如AMSI繞過腳本來執(zhí)行惡意功能。進程注入與父進程欺騙將惡意代碼注入到explorer.exe、svchost.exe等可信進程的內存空間中執(zhí)行并偽造其父進程為services.exe等系統(tǒng)進程以繞過基于進程鏈的檢測。直接系統(tǒng)調用Syscall高級攻擊者會直接調用操作系統(tǒng)底層函數(shù)如NtReadVirtualMemory而不是通過高級API如ReadProcessMemory因為許多EDR通過Hook這些高級API來監(jiān)控行為而直接系統(tǒng)調用可以繞過這些Hook。6. 信息整理與后續(xù)攻擊路徑規(guī)劃收集到海量信息后如何整理并轉化為攻擊路線圖是關鍵。雜亂的數(shù)據(jù)沒有價值。1. 建立資產清單創(chuàng)建一個表格或數(shù)據(jù)庫記錄所有發(fā)現(xiàn)的IP、主機名、開放端口、操作系統(tǒng)、發(fā)現(xiàn)的用戶特別是高權限用戶、共享資源、憑據(jù)片段等。推薦使用OneNote、CherryTree或專門的滲透測試管理平臺如Dradis, Serpico。2. 繪制網(wǎng)絡拓撲圖根據(jù)路由信息、ARP表、掃描結果嘗試繪制內網(wǎng)的網(wǎng)絡拓撲。識別出核心網(wǎng)段如服務器區(qū)、管理區(qū)、隔離區(qū)DMZ、辦公網(wǎng)段等。這有助于理解數(shù)據(jù)流向和信任邊界。3. 標識高價值目標權限目標域控制器、備份服務器、安全管理系統(tǒng)如SIEM、防病毒控制臺、數(shù)據(jù)庫服務器。數(shù)據(jù)目標文件服務器、代碼倉庫Git/SVN、郵件服務器、 confluence/Wiki知識庫。用戶目標域管理員、企業(yè)管理員、IT運維人員、高管賬戶。4. 規(guī)劃橫向移動路徑結合BloodHound的分析結果或手動分析規(guī)劃從當前立足點到高價值目標的路徑。例如當前用戶 - 對某臺服務器有本地管理員權限通過Find-LocalAdminAccess發(fā)現(xiàn)- 在該服務器上獲取新憑據(jù) - 新憑據(jù)是某個域組的成員 - 該組對域控制器有某些權限...或者發(fā)現(xiàn)一個弱口令或通用口令的域用戶 - 該用戶在多臺機器上有RDP登錄權限 - 通過RDP登錄其中一臺再次進行信息收集...5. 制定憑證利用策略明文密碼可以直接用于遠程登錄如RDP, WinRM、運行runas命令、訪問共享等。NTLM哈??捎糜诠鬟f攻擊Pass-the-Hash, PtH在不需要明文密碼的情況下向支持NTLM認證的服務如SMB, RPC進行身份驗證。工具如Mimikatz的sekurlsa::pth或Impacket套件中的psexec.py、smbexec.py。Kerberos票據(jù)可用于票據(jù)傳遞攻擊Pass-the-Ticket, PtT或黃金票據(jù)/白銀票據(jù)攻擊直接獲取對特定服務的訪問權限。信息收集絕非一次性任務而是一個貫穿整個內網(wǎng)滲透測試周期的持續(xù)性活動。每當你獲得新的立足點、新的權限都需要重新進行一次局部或全局的信息收集更新你的“地圖”因為新的位置可能讓你看到之前看不到的網(wǎng)絡區(qū)域和資產。這個過程是循環(huán)往復、不斷迭代的直到你達成最終的攻擊目標。真正的挑戰(zhàn)不僅在于收集更在于如何在海量信息中快速找到那條通往勝利的、最隱蔽的路徑。