急響應(yīng)實(shí)戰(zhàn)指南:從進(jìn)程排查到日志溯源與加固)
晚上十一點(diǎn)接到電話說服務(wù)器CPU飆升到100%遠(yuǎn)程連接卡到無法操作。這是我最熟悉的開場白——要么是業(yè)務(wù)流量異常要么是主機(jī)已經(jīng)被拿下、攻擊者正在里面跑挖礦程序。等到了現(xiàn)場一看一個名為svchost.exe的進(jìn)程占滿了CPU路徑指向C:\Users\Public\Windows應(yīng)急響應(yīng)就這樣開始了。這不是電影里那種拖著防火墻追黑客的橋段。真實(shí)情況是你要在一臺可能已經(jīng)被入侵的Windows主機(jī)上搞清楚三個問題攻擊者是怎么進(jìn)來的他在里面做了什么現(xiàn)在系統(tǒng)是否還在他的控制之下職業(yè)院校技能大賽里的Windows應(yīng)急響應(yīng)考點(diǎn)、CTF里的應(yīng)急響應(yīng)題目以及企業(yè)真實(shí)安全事件中的排查底層邏輯都是同一套通過系統(tǒng)痕跡還原攻擊路徑找到入侵證據(jù)完成處置與加固。這篇文章我盡量把Windows應(yīng)急響應(yīng)的方法論一次性說透。從接警判斷、現(xiàn)場隔離、信息收集、逐層排查到工具選型和報告輸出著條線講清楚每個環(huán)節(jié)該怎么操作、為什么這么做、常見坑在哪里。無論你是剛?cè)腴T的安全萌新還是被臨時抓去救火的運(yùn)維同學(xué)這套思路都可以直接用。1. 應(yīng)急響應(yīng)的核心目標(biāo)與執(zhí)行順序先想清楚再動手很多人接到告警后的第一反應(yīng)是直接上去殺進(jìn)程、刪文件、改密碼這是應(yīng)急響應(yīng)里最忌諱的操作。Windows主機(jī)一旦被入侵內(nèi)存里的惡意進(jìn)程、網(wǎng)絡(luò)連接、登錄會話這些都是易失證據(jù)你要是先重啟機(jī)器或者結(jié)束進(jìn)程有價值的信息就被你自己毀掉了。所以應(yīng)急響應(yīng)第一步不是治而是保。1.1 應(yīng)急響應(yīng)的三個核心目標(biāo)一次完整的Windows應(yīng)急響應(yīng)最終要回答三件事入侵途徑攻擊者利用了哪個漏洞、哪組弱口令、哪個暴露的服務(wù)這個答案決定了你的封堵措施往哪里打。攻擊行為攻擊者在系統(tǒng)里執(zhí)行了哪些命令、上傳了哪些文件、創(chuàng)建了哪些賬戶、和哪些IP通信過這個答案決定了你的清除范圍。影響范圍是單臺主機(jī)被控還是已經(jīng)被用作跳板橫向移動有沒有數(shù)據(jù)被加密或竊取這個答案決定了你要不要啟動更高層級的應(yīng)急。三個目標(biāo)之間有嚴(yán)格的優(yōu)先級。第一優(yōu)先永遠(yuǎn)是止血也就是讓攻擊者無法繼續(xù)控制主機(jī)、阻斷外聯(lián)和橫向擴(kuò)散。第二才是取證分析最大程度保留證據(jù)。實(shí)際項(xiàng)目中這兩件事經(jīng)常沖突——拔網(wǎng)線可以徹底斷掉攻擊者的連接但也可能驚動對方銷毀痕跡同時讓遠(yuǎn)程排查變得困難。怎么取舍我的做法是先做快照和內(nèi)存轉(zhuǎn)儲再斷網(wǎng)再分析。有虛擬化環(huán)境就直接打快照物理機(jī)就用工具抓內(nèi)存鏡像和關(guān)鍵日志副本然后才封堵網(wǎng)絡(luò)。1.2 為什么時間線是應(yīng)急響應(yīng)的生命線Windows本身有非常強(qiáng)大的日志體系安全日志、系統(tǒng)日志、PowerShell日志、應(yīng)用程序日志都把主機(jī)上發(fā)生過的動作記錄得清清楚楚。應(yīng)急響應(yīng)的分析主線就是圍繞時間線展開的什么時候開始出現(xiàn)異常告警比如CPU飆高、文件被加密、賬戶被鎖定這個時間點(diǎn)之前有哪些登錄記錄是來自內(nèi)網(wǎng)IP還是外網(wǎng)IP攻擊者登錄后執(zhí)行了哪些進(jìn)程創(chuàng)建操作文件和注冊表在什么時間被修改把這些信息按時間順序排列出來整個入侵過程就變成了一條可以閱讀的故事線。我在分析時會畫一張粗糙的時間線表格記錄每個事件的時間戳、事件源、描述。后面定位惡意行為和寫報告全靠它。1.3 一個反面案例順序錯了會怎樣給你講個真實(shí)場景。某企業(yè)一臺Windows Server被勒索軟件加密運(yùn)維同學(xué)情急之下直接重啟了服務(wù)器然后聯(lián)系我?guī)兔謴?fù)。我到了現(xiàn)場發(fā)現(xiàn)內(nèi)存鏡像沒抓、網(wǎng)絡(luò)連接狀態(tài)已經(jīng)丟失、大量進(jìn)程被終止。最致命的是勒索軟件運(yùn)行時的內(nèi)存密鑰——如果有的話——也都隨重啟一起消失了。最后只能從磁盤殘留文件里做部分恢復(fù)取證效果打?qū)φ?。這個教訓(xùn)說明兩件事第一應(yīng)急響應(yīng)的操作順序本身就是技術(shù)的一部分順序錯了結(jié)果天差地別第二平時就要把應(yīng)急流程寫成預(yù)案讓運(yùn)維知道第一步做什么、第二步做什么而不是等事件發(fā)生了再來問。2. 現(xiàn)場先做這輪信息收集30分鐘摸清主機(jī)底細(xì)現(xiàn)場處置階段時間非常寶貴。攻擊者可能還在線業(yè)務(wù)也不能長時間停機(jī)。所以第一輪信息收集要快、準(zhǔn)、全優(yōu)先拿最易失真的數(shù)據(jù)。我的習(xí)慣是30分鐘內(nèi)完成以下所有操作用管理員權(quán)限打開PowerShell執(zhí)行一套固定的命令序列把輸出結(jié)果保存到外部介質(zhì)上。2.1 系統(tǒng)信息與運(yùn)行時長先確認(rèn)系統(tǒng)版本、補(bǔ)丁級別、開機(jī)時間這能幫你判斷系統(tǒng)是否存在已知漏洞被利用的可能。systeminfo net statistics workstationnet statistics workstation顯示的統(tǒng)計信息自時間就是系統(tǒng)最近一次啟動時間。如果系統(tǒng)開機(jī)時間很短可能意味著有人重啟過系統(tǒng)來規(guī)避某些檢測。補(bǔ)丁級別也可以從systeminfo里看到如果系統(tǒng)KB補(bǔ)丁停留在很久以前說明漏洞利用的門檻很低。2.2 網(wǎng)絡(luò)連接與開放端口網(wǎng)絡(luò)連接是分析C2回連的重要證據(jù)。運(yùn)行以下命令重點(diǎn)看ESTABLISHED和LISTENING狀態(tài)并記錄PIDnetstat -ano arp -a route printnetstat -ano里的外網(wǎng)IP和端口是重點(diǎn)關(guān)注對象特別是443、80、8080、8443這類常見C2端口。注意很多惡意程序會使用正常的HTTPS端口做加密通信來躲避檢測所以不能只看端口要結(jié)合進(jìn)程路徑來判斷。需要特別警惕的是如果看到大量SYN_SENT狀態(tài)說明這臺機(jī)器可能在主動向外掃描橫向擴(kuò)散的特征。如果看到TIME_WAIT的連接特別多說明近期有大量外部連接進(jìn)來過。2.3 進(jìn)程快照進(jìn)程是惡意代碼最直接的載體。用以下命令獲取完整進(jìn)程列表包括進(jìn)程路徑、PID、父進(jìn)程PIDtasklist /v /fo csv wmic process get ProcessId,ParentProcessId,Name,ExecutablePath,CommandLine /format:listwmic在較新版本的Windows 11中可能被移除所以更推薦用PowerShellGet-Process | Select-Object Id,ProcessName,Path,StartTime | Sort-Object StartTime Get-CimInstance Win32_Process | Select-Object ProcessId,ParentProcessId,Name,ExecutablePath,CommandLine | Format-List收集進(jìn)程信息時有幾個加分項(xiàng)關(guān)注啟動時間早的進(jìn)程系統(tǒng)啟動后立刻運(yùn)行的進(jìn)程比后來啟動的更可疑。關(guān)注路徑異常的進(jìn)程合法進(jìn)程通常在C:\Windows\System32下出現(xiàn)在Temp、Public、ProgramData等目錄下的進(jìn)程需要重點(diǎn)核驗(yàn)。關(guān)注明顯偽裝命名的進(jìn)程正常系統(tǒng)里有svchost.exe、conhost.exe、lsass.exe這些但攻擊者經(jīng)常用相似名稱如svch0st.exe、1sass.exe來混淆視線。2.4 用戶賬戶與登錄會話攻擊者獲取權(quán)限后最常見的持久化操作就是創(chuàng)建新賬戶。檢查當(dāng)前系統(tǒng)上的所有用戶、管理員組成員、最近登錄記錄net user net localgroup administrators query user whoami /privquery user可以看到當(dāng)前登錄的會話如果有一個你不知道的用戶名處在活動狀態(tài)那基本就可以認(rèn)定是入侵。另外whoami /priv可以查看當(dāng)前賬戶的權(quán)限判斷自己手里的操作能力有多大。2.5 計劃任務(wù)與啟動項(xiàng)快照計劃任務(wù)和啟動項(xiàng)是持久化最常落地的位置先快速抓一份全量記錄schtasks /query /fo list /v reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Run reg query HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce reg query HKLM\Software\Wow6433Node\Microsoft\Windows\CurrentVersion\Runsysinternals工具包里的autorunsc.exe也可以一步到位導(dǎo)出所有啟動項(xiàng)信息后面工具部分我會細(xì)說。這里先用系統(tǒng)自帶命令拿一個baseline確保在工具來不及部署的情況下也有基本數(shù)據(jù)。2.6 文件時間線線索最后快速掃描一下系統(tǒng)里最近被修改的可疑文件特別是腳本文件和可執(zhí)行文件Get-ChildItem C:\Users\ -Recurse -Include *.ps1,*.bat,*.cmd,*.exe,*.dll -ErrorAction SilentlyContinue | Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-30)} | Select-Object FullName,LastWriteTime,Length | Sort-Object LastWriteTime -Descending這個命令在用戶目錄下范圍比較大跑起來需要時間可以只掃描Downloads、Desktop、Temp等敏感目錄。同時別忽略C:\Users\Public和C:\Windows\Temp這兩個目錄存放了很多惡意程序的釋放文件。以上6項(xiàng)數(shù)據(jù)全部保存后再去做斷網(wǎng)、進(jìn)程處置等動作。記住先記錄現(xiàn)象后采取行動。3. 賬戶與登錄維度排查揪出藏在合法身份背后的攻擊者賬戶類排查是我在應(yīng)急響應(yīng)中見到次數(shù)最多的問題。企業(yè)Windows環(huán)境大量使用弱口令和共享管理員賬戶攻擊者拿下一臺之后第一件事就是建立自己的賬戶并加入管理員組。3.1 仔細(xì)核對每一個管理員賬戶net localgroup administrators會列出管理員組成員但注意這個命令默認(rèn)只顯示組內(nèi)用戶不顯示通過其他嵌套組獲得管理員權(quán)限的賬戶。更嚴(yán)謹(jǐn)?shù)姆绞绞荊et-LocalGroupMember -Group Administrators同時檢查HKLM\SAM中是否有異常賬戶。SAM注冊表項(xiàng)默認(rèn)不可讀普通環(huán)境下用上面的命令就夠。重點(diǎn)核對賬戶創(chuàng)建時間是否在入侵時間窗內(nèi)。賬戶名是否有明顯異常風(fēng)格如support、admin、temp這類。是否有以$結(jié)尾的機(jī)器賬戶混進(jìn)來正常情況下機(jī)器賬戶是自動生成的但攻擊者也會手動添加。發(fā)現(xiàn)可疑賬戶后先別急著刪用net user 用戶名 /times查看允許登錄時間用net user 用戶名 /logoncount查看登錄次數(shù)然后把信息存檔最后再做刪除操作。3.2 深入分析登錄日志中的每一個登錄事件Windows安全日志中登錄相關(guān)的事件ID主要有這些事件ID含義分析價值4624登錄成功核心分析對象核對登錄類型、來源IP、賬戶4625登錄失敗暴力破解的直觀證據(jù)4634賬戶被注銷配合4624判斷會話時長4648顯式憑據(jù)登錄攻擊者常通過runas方式橫向移動4672授予特殊權(quán)限管理員賬戶登錄時必出現(xiàn)異常時留意4720創(chuàng)建用戶賬戶直接對應(yīng)賬戶持久化行為4728/4732用戶加入安全組/本地組判斷攻擊者是否提權(quán)4738用戶賬戶被修改攻擊者改動賬戶屬性、密碼等查看這些日志的命令wevtutil qe Security /q:*[System[(EventID4624)]] /c:50 /rd:true /f:text或者用PowerShell的FilterHashtable更靈活Get-WinEvent -FilterHashtable {LogNameSecurity; Id4624} -MaxEvents 100 | Format-List TimeCreated,Message3.3 登錄類型決定攻擊場景4624日志里有個關(guān)鍵字段叫Logon Type不同值代表不同的登錄方式這直接幫你判斷攻擊途徑Logon Type登錄方式潛在異常含義2交互式登錄本機(jī)鍵盤有人物理接觸或通過某種控制臺會話操作3網(wǎng)絡(luò)登錄SMB共享等橫向移動的重要特征8網(wǎng)絡(luò)明文登錄IIS等攻擊者可能抓取到明文口令10遠(yuǎn)程交互式登錄RDP最常見的遠(yuǎn)程入侵入口我遇到過一起典型的RDP暴力破解事件安全日志里幾千條4625事件來源IP集中在103.x.x.x一段時間跨度兩天最終在某個凌晨出現(xiàn)一條4624登錄成功的記錄緊接著就有進(jìn)程創(chuàng)建事件和文件下載事件。這一整條線下來入侵途徑和時間點(diǎn)全都清楚了。3.4 警惕NTLM哈希傳遞攻擊如果攻擊者已經(jīng)控制了管理員賬戶他不會傻乎乎去猜密碼而是直接抓取系統(tǒng)內(nèi)存中的NTLM哈?;蛘咄ㄟ^哈希傳遞技術(shù)在內(nèi)網(wǎng)橫向移動。這種情況下你看到的登錄源IP可能是內(nèi)網(wǎng)其他主機(jī)時間上成對出現(xiàn)。排查時要特別關(guān)注同一賬戶同時從多個IP登錄的情況以及來源IP之后登錄成功又立刻有進(jìn)程創(chuàng)建的情況。4. 進(jìn)程與服務(wù)深度排查惡意代碼在系統(tǒng)里留下的運(yùn)行痕跡登錄日志能告訴你誰進(jìn)來過但要搞清楚攻擊者進(jìn)來之后跑了什么全靠進(jìn)程和服務(wù)維度的分析。這塊也是CTF應(yīng)急響應(yīng)題目里最容易出考點(diǎn)的地方——給你一個Windows系統(tǒng)讓你找出隱藏的惡意進(jìn)程。4.1 先學(xué)會看懂正常進(jìn)程的長相很多新手在進(jìn)程排查時一頭霧水因?yàn)閟vchost.exe就有幾十個看得眼花繚亂。正常Windows系統(tǒng)里進(jìn)程分布在幾個固定目錄C:\Windows\System32系統(tǒng)核心進(jìn)程所在地這里的svchost.exe、lsass.exe、services.exe都是合法家在。C:\Windows\SysWOW6432位系統(tǒng)文件的駐地。C:\Windows\System32\drivers驅(qū)動文件所在地一般不會直接出現(xiàn)進(jìn)程。svchost.exe雖然多但每個都有對應(yīng)的服務(wù)標(biāo)識??梢酝ㄟ^以下命令查看每個svchost到底承載了哪些服務(wù)Get-WmiObject win32_service | Select-Object Name,DisplayName,State,PathName,StartName正常情況下svchost.exe的窗口標(biāo)題為空沒有明顯的GUI界面。如果看到某個svchost.exe路徑不在System32下或者它的CPU占用和內(nèi)存占用明顯異常那就十有八九是借殼運(yùn)行的惡意程序。4.2 可疑進(jìn)程的六個致命信號排查進(jìn)程時我會給每個可疑進(jìn)程打一個危險評分滿足的條件越多危險系數(shù)越高路徑異常不在System32、SysWOW64、Program Files這幾個常規(guī)目錄下而是在Temp、Public、AppData、PerfLogs等目錄。命名偽裝與系統(tǒng)進(jìn)程只有一字之差比如svchost.exe變成svhost.exeexplorer.exe變成exp1orer.exe甚至有些直接用看起來完全隨機(jī)的名字。簽名異常微軟簽名的進(jìn)程基本可以放心數(shù)字簽名無效或沒有簽名且出現(xiàn)在用戶目錄下需要高度懷疑。父進(jìn)程異常例如powershell.exe或cmd.exe的父進(jìn)程是Word、Excel、Outlook說明可能是通過Office宏執(zhí)行命令。網(wǎng)絡(luò)行為異常該進(jìn)程建立的外部連接地址可疑或持續(xù)向外發(fā)包。檢測對抗行為運(yùn)行了taskkill、sc stop來結(jié)束安全軟件或者創(chuàng)建了互斥體名包含已知惡意家族特征的進(jìn)程。4.3 用Sysinternals工具做深度進(jìn)程驗(yàn)證系統(tǒng)內(nèi)置命令能提供基本信息但分析更深層的內(nèi)容還是推薦用Sysinternals工具包。其中三個工具我在應(yīng)急中幾乎必用Process Explorer比任務(wù)管理器強(qiáng)大得多可以查看每個進(jìn)程的簽名、路徑、父進(jìn)程關(guān)系、打開句柄、加載的DLL、網(wǎng)絡(luò)連接??吹揭粋€可疑進(jìn)程時右鍵→Properties→Image標(biāo)簽里的路徑和簽名是最快判斷方式。再配合VirusTotal在線掃描直接把文件hash提交上去查已知威脅。Handle.exe查看進(jìn)程打開了哪些文件、注冊表鍵、事件對象等。惡意程序往往通過打開某個文件來鎖定它典型如勒索軟件鎖定要加密的文件或者通過命名互斥體來防止多實(shí)例運(yùn)行。ProcmonProcess Monitor實(shí)時監(jiān)控文件、注冊表、進(jìn)程、網(wǎng)絡(luò)全維度行為。如果惡意進(jìn)程還在運(yùn)行用Procmon掛上后觸發(fā)它的行為能記錄下它釋放了哪些文件、修改了哪些注冊表項(xiàng)、訪問了哪些網(wǎng)絡(luò)地址。這在分析未知惡意樣本時價值非常高。4.4 服務(wù)排查隱藏很深的持久化手段services.msc可以看到系統(tǒng)服務(wù)的基本狀態(tài)但攻擊者創(chuàng)建的服務(wù)常常故意把名稱改成和系統(tǒng)服務(wù)相似靠肉眼很難分辨。更有效的方式是直接在注冊表里對照Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Services\* | Select-Object PSChildName,ImagePath,Start | Format-Table -AutoSize重點(diǎn)關(guān)注ImagePath字段指向非System32目錄的服務(wù)或者Type類型為Own Process/Interactive的異常服務(wù)。攻擊者還經(jīng)常設(shè)置服務(wù)開機(jī)自啟Start值為2自動。遇到可疑服務(wù)sc qc 服務(wù)名可以進(jìn)一步查看詳細(xì)配置sc delete 服務(wù)名在確認(rèn)后清理。4.5 別忘了WMI事件訂閱和COM劫持稍微高級一點(diǎn)的攻擊者不會把持久化放在Run鍵和服務(wù)里而是用WMI事件訂閱、COM對象劫持這類無文件手段。WMI事件訂閱在系統(tǒng)里沒有對應(yīng)的文件落盤查詢方式Get-WmiObject -Namespace root\Subscription -Class __EventConsumer Get-WmiObject -Namespace root\Subscription -Class __EventFilter Get-WmiObject -Namespace root\Subscription -Class __FilterToConsumerBinding如果__EventFilter里出現(xiàn)SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA Win32_PerfFormattedData_PerfOS_System這類查詢語句且__EventConsumer里指向了Cmd或PowerShell命令那就是WMI持久化。這種排查項(xiàng)在標(biāo)準(zhǔn)CTF題目里也算高階考點(diǎn)但在真實(shí)事件中確實(shí)遇到過。5. 持久化與惡意文件定位攻擊者藏木馬常用的坑位賬戶、進(jìn)程、服務(wù)排查完之后攻擊者的入口和運(yùn)行中行為基本都有了眉目。但入侵處置不能只看正在跑的進(jìn)程攻擊者可能在任何時候通過某個隱蔽的啟動項(xiàng)復(fù)活。持久化排查的本質(zhì)是把系統(tǒng)里所有開機(jī)自啟和周期性觸發(fā)的機(jī)關(guān)全部列出來。5.1 啟動位置全盤點(diǎn)我總結(jié)了一張持久化位置清單應(yīng)急時按優(yōu)先級排查優(yōu)先級位置排查要點(diǎn)高Run/RunOnce注冊表項(xiàng)HKCU和HKLM下的CurrentVersion\Run高啟動文件夾shell:startup和shell:common startup高計劃任務(wù)schtasks里隱藏的任務(wù)中服務(wù)ImagePath指向異常目錄中WMI事件訂閱root\Subscription命名空間中登錄腳本GPEdit.msc里的腳本設(shè)置中映像劫持Image File Execution Options低引導(dǎo)配置BCD里的惡意驅(qū)動低DLL劫持應(yīng)用程序目錄下的同名惡意DLL其中映像劫持Image File Execution Options很容易被忽略。它本來用于調(diào)試程序可以把任意exe啟動時重定向到另一個程序。攻擊者在這個位置寫入一個debugger值指向自己的惡意程序受害者每次打開想運(yùn)行的程序時實(shí)際跑起來的卻是木馬。排查命令reg query HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options5.2 計劃任務(wù)的排查技巧計劃任務(wù)是企業(yè)環(huán)境里被濫用最多的持久化機(jī)制之一因?yàn)楹芏噙\(yùn)維人員自己也在用計劃任務(wù)做自動化惡意任務(wù)混在里面不容易被一眼識別。打開taskschd.msc查看圖形界面時尤其注意觸發(fā)器是否設(shè)置為啟動時或登錄時操作里執(zhí)行的是powershell.exe -enc ...這類編碼命令任務(wù)的創(chuàng)建者是否來源不明任務(wù)是否指向網(wǎng)絡(luò)路徑或Temp目錄下的文件命令行方式同樣能查schtasks /query /fo csv /v | Out-File tasks.csv然后從CSV里篩選操作命令含powershell、wscript、cscript、rundll32等特征的任務(wù)。5.3 惡意文件的清除邏輯找到惡意文件后不要只想著刪了就行。你應(yīng)該先用copy命令把文件復(fù)制到取證目錄或者先計算hash再操作。文件若是正在運(yùn)行先taskkill結(jié)束進(jìn)程結(jié)束不了的話用Process Explorer看是不是有進(jìn)程保護(hù)。刪除后立即用reg query確認(rèn)對應(yīng)的啟動項(xiàng)已清除。刪除不代表完事還需檢查文件創(chuàng)建時間以這個時間為線索繼續(xù)回溯——攻擊者的下載器是誰放進(jìn)去的、何時執(zhí)行過。刪除惡意文件時有個反直覺的操作不要一上來就刪。歸檔一份、留個案底萬一后面要配合溯源或者進(jìn)入司法流程原始證據(jù)不能少。我一般建議客戶先做鏡像備份磁盤鏡像或者虛擬機(jī)快照再開始清理動作。5.4 時間戳偽造與ADS隱藏攻擊者進(jìn)階玩法里有兩個最常見的反取證手段時間戳偽造用timestomp類工具把文件的創(chuàng)建時間、修改時間改成和系統(tǒng)文件一致讓你按時間線排查時漏掉它。判斷方法是看文件批注時間戳$STANDARD_INFORMATION和$FILE_NAME時間戳不一致往往是偽造痕跡或者看文件版本信息里的編譯時間與實(shí)際時間是否矛盾。NTFS ADS隱藏惡意代碼可以藏在正常文件的分支流里比如letter.docx:evil.exe正常瀏覽目錄完全看不到。檢測方法是dir /r Get-Item .\letter.docx -Stream * # 查看文件的所有ADS流6. 日志與時間線關(guān)聯(lián)分析把碎片化線索拼成完整故事前面每一步排查都是在收集點(diǎn)日志分析則負(fù)責(zé)把點(diǎn)連成線。Windows日志分析做得好不好決定了你能不能把誰進(jìn)來了、做了什么、去了哪里這條鏈路講清楚。6.1 Windows日志的核心體系很多初學(xué)者只關(guān)注安全日志其實(shí)Windows有多個日志通道每個通道都有自己的價值日志說明應(yīng)急分析價值Security登錄/注銷、權(quán)限使用、賬戶管理還原入侵入口、賬戶行為System服務(wù)啟動失敗、驅(qū)動加載、關(guān)機(jī)重啟發(fā)現(xiàn)異常服務(wù)、異常關(guān)機(jī)Application應(yīng)用層錯誤、崩潰信息惡意程序運(yùn)行異常、安裝痕跡PowerShellPowerShell腳本塊日志4104捕獲惡意PowerShell命令Sysmon進(jìn)程創(chuàng)建、網(wǎng)絡(luò)連接、文件變化需自行安裝最強(qiáng)大的溯源數(shù)據(jù)源PowerShell日志是個寶礦。從PowerShell 5.0開始系統(tǒng)默認(rèn)開啟了Script Block Logging和Modules Logging攻擊者如果使用了PowerShell那么他執(zhí)行的命令即使被混淆過也可能在4104事件里留下記錄。查看方式Get-WinEvent -FilterHashtable {LogNameMicrosoft-Windows-PowerShell/Operational; Id4104} -MaxEvents 100 | Format-List Message6.2 事件日志被清空怎么辦攻擊者為了掩蓋行蹤常常會清日志。事件日志被清空后日志文件里會留下清除的痕跡安全日志中的1102事件表示安全日志被清除。系統(tǒng)日志中的104事件表示事件日志日志文件已清除。這些事件本身雖然不包含被清除的內(nèi)容但它們的存在說明攻擊者或某個人主動清除了日志這個行為本身就是一個重要線索。遇到日志被清空快速檢查wevtutil gl Security | findstr lastWriteTime同時從備用數(shù)據(jù)源找補(bǔ)——比如Endpoint Detection and ResponseEDR平臺的云端記錄、防火墻或交換機(jī)的上層網(wǎng)絡(luò)日志、DNS服務(wù)器日志這些往往不在Windows主機(jī)本地攻擊者清不到。6.3 用Sysmon補(bǔ)齊行為鏈系統(tǒng)自帶日志有一個短板默認(rèn)不記錄詳細(xì)的進(jìn)程創(chuàng)建命令行和網(wǎng)絡(luò)連接。SysmonSystem Monitor就是解決這個問題的它屬于Sysinternals套件裝上后能記錄進(jìn)程創(chuàng)建和命令行參數(shù)事件ID 1網(wǎng)絡(luò)連接事件ID 3文件創(chuàng)建時間變更事件ID 2驅(qū)動加載事件ID 6進(jìn)程訪問事件ID 10注冊表操作事件ID 12/13/14惡意腳本執(zhí)行事件ID 15如果在應(yīng)急現(xiàn)場發(fā)現(xiàn)目標(biāo)機(jī)器已經(jīng)裝了Sysmon那排查難度會大幅下降。直接查詢Get-WinEvent -FilterHashtable {LogNameMicrosoft-Windows-Sysmon/Operational; Id1} | Where-Object {$_.Message -like *powershell*} | Format-List6.4 時間線關(guān)聯(lián)分析實(shí)操現(xiàn)在假設(shè)你手里有了三個數(shù)據(jù)源安全日志登錄事件、PowerShell日志命令執(zhí)行、Sysmon或Process Explorer的歷史快照進(jìn)程行為。怎么把它們串起來實(shí)際項(xiàng)目中我常用的路徑是先確立可疑登錄事件4624登錄類型10來源IP外網(wǎng)。以該登錄時間為起點(diǎn)往后查找10分鐘內(nèi)的4688進(jìn)程創(chuàng)建事件如果開啟了進(jìn)程命令行審計每個進(jìn)程的命令行都能看到。如果在進(jìn)程創(chuàng)建事件中發(fā)現(xiàn)了powershell.exe -enc ...、cmd.exe /c ...這類命令行特征立刻去PowerShell日志里找對應(yīng)的4104事件拿到完整的解碼后命令。再以命令里出現(xiàn)的文件名為線索回到文件系統(tǒng)里找樣本解析樣本的網(wǎng)絡(luò)通信目標(biāo)。把整個時間線整理出來登錄→執(zhí)行下載命令→下載惡意文件→設(shè)置自啟動→外連C2。這套打法的核心是以日志找進(jìn)程以進(jìn)程找命令以命令找文件以文件找網(wǎng)絡(luò)以網(wǎng)絡(luò)拓視野。五個節(jié)點(diǎn)環(huán)環(huán)相扣每一步都能指向下一步。7. 工具鏈組合與實(shí)戰(zhàn)建議不同階段用不同的工具組合應(yīng)急響應(yīng)工具的選型核心原則是可靠、快速、不引入二次風(fēng)險。下面我把常用工具按使用階段分類并標(biāo)出每類工具在應(yīng)急鏈路里承擔(dān)的角色。7.1 現(xiàn)場信息采集階段目標(biāo)是快速拿到系統(tǒng)全貌工具一定是要能在命令行下導(dǎo)出結(jié)構(gòu)化結(jié)果、方便歸檔的sysinternals套件autorunsc.exe -a -h -c autorun.csv導(dǎo)出啟動項(xiàng)procexp導(dǎo)出進(jìn)程樹。PowerShell內(nèi)置CmdletGet-WinEvent查日志Get-CimInstance查對象Get-ChildItem掃文件。NirSoft工具集LastActivityView、WifiHistoryView這些小工具在某些場景下非常好用。7.2 深度分析和取證階段如果現(xiàn)場條件允許比如已經(jīng)拿到磁盤鏡像或內(nèi)存轉(zhuǎn)儲推薦用專業(yè)取證工具工具用途說明Volatility內(nèi)存取證分析可以從內(nèi)存鏡像里提取進(jìn)程、網(wǎng)絡(luò)連接、注冊表、HashdumpKAPE快速采集和取證處理一條命令收取大量關(guān)鍵證據(jù)然后生成時間線火眼/取證大師全盤掃描、恢復(fù)數(shù)據(jù)國產(chǎn)工具中文支持好輸出報告方便HayabusaWindows事件日志快速掃描基于Sigma規(guī)則的日志快速檢測適合大批量分析內(nèi)存取證在只做現(xiàn)場排查時可以跳過但如果受害主機(jī)上的惡意代碼像幽靈一樣找不到落盤文件內(nèi)存鏡像分析可能是最后手段。實(shí)際操作上在內(nèi)存里運(yùn)行的進(jìn)程、解碼后的命令、明文憑據(jù)都在鏡像里但抓取鏡像本身需要comae工具或者DumpIt并且要在斷網(wǎng)前操作。7.3 自動化檢測用規(guī)則跑一遍減少遺漏人工排查有一個弱點(diǎn)——容易遺漏自己沒見過的手法。用Sigma規(guī)則配合Hayabusa或者ChainSmith快速掃描日志能發(fā)現(xiàn)很多約定俗成的已知攻擊特征。比如檢測rundll32加載可疑DLL、檢測powershell編碼命令、檢測管理員組新增成員等。規(guī)則掃描不能替代人工分析但它能幫你快速鎖定可疑時間點(diǎn)縮小排查范圍。7.4 工具使用的三條實(shí)戰(zhàn)紀(jì)律紀(jì)律一不要在受害主機(jī)上安裝不可信工具。從外網(wǎng)下載的、沒有官方簽名的工具可能會被攻擊者預(yù)埋木馬。至少用微軟官方、Sysinternals官方來源的工具或者從你準(zhǔn)備的應(yīng)急U盤拷貝。紀(jì)律二工具輸出的數(shù)據(jù)立即歸檔到外部介質(zhì)。U盤或遠(yuǎn)程共享目錄都行不能在受害主機(jī)本地停留。因?yàn)楣粽呖赡苓€有控制通道他會在你取證時插一手刪證據(jù)。紀(jì)律三遠(yuǎn)程排查時使用活動目錄上的特權(quán)賬戶不要復(fù)用被攻陷的管理員密碼。攻擊者很可能已經(jīng)掌握了密碼哈希你在受害主機(jī)上使用了管理員密碼等于把新密碼白送給他。8. 復(fù)盤報告與加固清單處置完不等于結(jié)束很多人的應(yīng)急響應(yīng)做完清除惡意文件、刪除惡意賬戶就宣布結(jié)束這是不對的。如果加固不到位攻擊者很快又會回來——他有幾個include固定的入口路徑你封了一個他就換另一個。這一步我要求所有應(yīng)急項(xiàng)目必須輸出兩個東西復(fù)盤報告和加固整改清單。8.1 復(fù)盤報告應(yīng)該寫什么一份合格的應(yīng)急響應(yīng)報告至少包含以下內(nèi)容事件概況發(fā)現(xiàn)時間、被動或主動發(fā)現(xiàn)、影響主機(jī)范圍。入侵路徑分析攻擊者從哪里進(jìn)來的利用了什么漏洞或弱口令。攻擊行為還原執(zhí)行了哪些命令、釋放了哪些文件、創(chuàng)建了哪些賬戶或服務(wù)、外聯(lián)了哪些IP。影響評估是否有數(shù)據(jù)被竊取/加密業(yè)務(wù)受影響時長。處置措施記錄何時斷網(wǎng)、何時清除、刪了哪些東西。加固建議按緊急程度分級的整改措施。寫報告時不光寫給技術(shù)人看也要讓領(lǐng)導(dǎo)看得懂。入侵路徑部分最好配一張簡潔的流程圖比如外網(wǎng)→RDP暴力破解→獲取本地管理員→創(chuàng)建后門賬戶→下載挖礦程序→外聯(lián)礦池IP用一兩句話概括出來。純技術(shù)細(xì)節(jié)放附錄別讓非技術(shù)讀者在正文里面對著事件ID傷腦筋。8.2 加固清單的優(yōu)先級加固不是把所有安全措施都上一遍而是先止血再補(bǔ)強(qiáng)。按優(yōu)先級排列一級立即做修改所有本地賬戶密碼特別是管理員賬戶。關(guān)閉不必要的RDP暴露或者限制來源IP白名單。清查所有管理員組成員和可疑計劃任務(wù)、服務(wù)。部署防火墻規(guī)則阻斷已知惡意IP的外聯(lián)方向。二級一周內(nèi)做補(bǔ)丁更新重點(diǎn)修復(fù)已知可利用的漏洞比如導(dǎo)致RDP攻擊面擴(kuò)大的舊版本問題。開啟Windows事件日志策略、PowerShell日志審計、Sysmon。配置日志外發(fā)保證日志清除了也能在SIEM里找到備份。對全網(wǎng)主機(jī)做一次相同手法的排查防止橫向擴(kuò)散遺漏。三級持續(xù)做特權(quán)賬戶管理Tier模型、LAPS本地管理員密碼管理。最小權(quán)限原則落地日常運(yùn)維不再長期使用高權(quán)限賬戶。建立主機(jī)資產(chǎn)清單和軟件白名單機(jī)制。定期做攻防演練讓應(yīng)急響應(yīng)的流程跑成肌肉記憶。8.3 日常的應(yīng)急準(zhǔn)備比應(yīng)急本身更重要我想強(qiáng)調(diào)一件事真正讓你在應(yīng)急響應(yīng)中不慌亂的不是你現(xiàn)場反應(yīng)有多快而是你平時在系統(tǒng)里埋了多少眼線。日志已經(jīng)外發(fā)、Sysmon已部署、賬戶權(quán)限做了最小化、應(yīng)急工具U盤放在手邊——這些東西都準(zhǔn)備好了真的出了事你只需要按流程做排查和定位。反之如果平時沒有準(zhǔn)備你到了現(xiàn)場要從一堆沒有開啟審計的日志里找線索難度成倍增加。我個人做項(xiàng)目時的習(xí)慣是每到一個新的客戶環(huán)境第一件事就是幫他檢查日志策略和安全基線。先把看得見的能力建立起來日常的安全運(yùn)營才能落地。這算是經(jīng)驗(yàn)之談。寫在最后Windows應(yīng)急響應(yīng)說到底是一門痕跡學(xué)——攻擊者的每一個動作都會在系統(tǒng)某些位置留下或明或暗的痕跡你要做的就是比對手更懂這些痕跡藏在哪、長什么樣、怎么串聯(lián)。文章里這套方法論從信息收集、賬戶排查、進(jìn)程分析、持久化定位到日志關(guān)聯(lián)和工具搭配是我在多次真實(shí)事件和CTF賽題中反復(fù)驗(yàn)證過的流程。你可以照著它形成自己的checklist。第一次做不熟悉沒關(guān)系多復(fù)盤幾遍就會形成肌肉記憶。最后再分享一個小技巧準(zhǔn)備一個專門的應(yīng)急響應(yīng)U盤放進(jìn)Sysinternals全家桶、常用腳本、日志分析工具、靜態(tài)分析工具再用BitLocker加密。真出事的時候你不會還有心情去聯(lián)網(wǎng)下載工具U盤里所有的東西就是你全部的戰(zhàn)斗武器。