來源:https://resources.infosecinstitute.com/topic/advance-persistent-threat-lateral-movement-detection-windows-infrastructure-part/
https://media.cert.europa.eu/static/WhitePapers/CERT-EU_SWP_17-002_Lateral_Movements.pdf
https://www.manageengine.com/products/active-directory-audit/kb/windows-security-log-event-id-4625.html
(1)相關攻擊工具整理:https://jpcertcc.github.io/ToolAnalysisResultSheet/(產生攻擊)
(2)Sysmon的安裝和審計策略的配置:https://www.jpcert.or.jp/english/pub/sr/DetectingLateralMovementThroughTrackingEventLogs_version2.pdf(收集數據)
https://baijiahao.baidu.com/s?id=1672182836305846957&wfr=spider&for=pc
https://github.com/SwiftOnSecurity/sysmon-config
(3)導出事件:https://www.cnblogs.com/0day-li/p/14675584.html,可以使用wevtutil工具導出日志文件。(收集數據)
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/wevtutil
(4)APT-Hunter:https://github.com/ahmedkhlief/APT-Hunter(APT-Hunter是windows事件日志的威脅搜索工具,它由purple team mindset制作,提供隱藏在windows事件日志海洋中的APT運動,以減少發現可疑活動的時間)(檢測攻擊)
注意:本文中圖,是增補的圖,原文圖缺失
對手從一個系統跳轉到另一個系統,他們經常試圖獲取諸如當前與哪個用戶一起運行、擁有什么級別的訪問權、系統上運行什么服務以及周圍的其他系統是什么等信息。為了實現這一點,他們通常使用合法的windows二進制文件;這些工具可能因攻擊而異,但策略是相同的。
考慮到以上的橫向運動策略,我們可以說,會發生以下情況:
(1)衍生進程Spawned Processes
(2)認證和特權用戶帳戶
它也被證明,工具將通過網絡移動,以促進偵察,特權升級,數據打包,和外泄recon, privilege escalation, data packaging, and exfiltration。
一、衍生進程:
按照維基百科的說法,進程衍生:計算中的衍生指的是一個加載并執行新子進程的函數。當前進程可以等待子進程終止,也可以繼續執行并發計算。創建新的子進程需要足夠的內存,子進程和當前程序都可以在其中執行。
a)進程執行(.exe)
正如我們在本文前面討論的,從一臺機器移動到另一臺機器時,威脅行為者收集情報,他們通常通過使用合法的windows二進制文件來確定這一點。
下面是對手可能使用的一些標準程序
net.exe
ipconfig.exe
whoami.exe
nbtstat.exe
powershell.exe
wmic.exe
為了利用這些windows程序,威脅行為者從他們已經利用并可以控制的另一個應用程序啟動這些程序,如Internet Explorer、宏加載的word文檔。不管他們是使用腳本還是在命令行上輸入命令,他們通常會在幾分鐘或幾小時內完成這項工作。
所以,問題是我們如何檢測這些活動?這里有Windows事件日志來拯救組織從這些高級持續威脅。
1、Event ID – 4688:已創建新進程
Event 4688記錄了程序作為其運行時所執行的每個程序以及啟動該進程的進程。默認情況下,進程跟蹤的審計策略在窗口中是禁用的;我們必須從Windows本地安全策略中啟用它,以充分利用這個過程跟蹤審計,同時檢測跨網絡的橫向移動。(https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/manage/component-updates/command-line-process-auditing)描述了啟用審計過程跟蹤的本地安全策略。
通過查看事件描述,我們可以收集相當多的信息,下面列出的是事件ID 4688的一些關鍵字段。
安全ID Security ID:帳戶的SID。
帳號名 Account Name:帳號登錄名。
新進程ID New Process ID:標識進程的半唯一數字。進程ID (PID)允許您關聯同一進程中記錄的其他事件。要確定程序何時結束,請查找具有相同進程ID的后續事件4689。
新進程名 New Process Name:可執行文件的完整路徑
令牌提升類型 Token Elevation Type:這對于檢測用戶是否在用戶帳戶控制下運行具有管理權限的程序非常有用——查找Type 2。
創建者進程ID Creator Process ID:標識啟動該進程的進程。查找前面的事件4688,其新進程ID與這個Creator進程PID相匹配。
Creator Process Name:這是一個有用的字段,記錄了啟動這個新進程的程序的名稱。
Process Command Line:如果啟用該字段,則記錄進程啟動時傳入EXE的命令行參數(包括任何密碼)。
微軟在其最新的Windows系統中發布了事件ID 4688的附加字段,即“創建者進程名”“Creator Process Name”,它顯示父進程名。這使得研究人員在識別父進程時很容易,因為我們必須手動將4688事件id中的pid關聯起來。
在windows事件日志和事件ID 4688的幫助下,我們可以查看進程信息并分析下面的數據任務,例如
(1)是否運行的進程是合法的和可執行文件的路徑
(2)是否進程的所有者看起來是真實的并且應該執行該進程
(3)進程在其上執行的機器的角色
(4)是否父進程/創建者進程名是合法的并且應該執行子進程
(5)同樣的進程會產生這些嗎
(6)是否所有派生進程和父進程都屬于同一用戶
我們可以利用它,識別以下內容,幫助我們在攻擊生命周期的早期檢測到威脅行為者:
(1)Net.exe、ipconfig.exe、whoami.exe、nbtstat.exe、pwershell.exe、wmic.exe、Cscript.exe等。
(2)堆棧x在一個時間窗口內執行的進程數。
為了演示這一點,我創建了一個示例excel宏文件(你可以從這里得到它),它打開命令提示符并點擊命令net.exe用戶。運行此excel宏之后,windows安全審計將生成下面的事件。
Sample Excel Macro to validate windows Event ID - 4688
Sub RunAndGetCmd()
Shell "cmd.exe /c net users"
End Sub
在上面的例子中,我們可以清楚地看到,名為“C:WindowsSystem32cmd.exe”的新進程已經被創建,所有者帳戶名為“Suresh Khutale”,創建者進程名為“C:Program FilesMicrosoft OfficerootOffice16EXCEL.EXE”。
新創建的進程輪流調用另一個進程“C:WindowsSystem32net.exe”,這是我們在命令net.exe用戶中使用的。同樣,看看創建的PID,我們可以關聯這些東西。
從上面的插圖中,它證實了在Windows安全事件的幫助下,我們可以觀察生成的進程的真實性,調查它們并追蹤在系統上執行的活動是由合法用戶或威脅參與者完成的。
b)本地賬戶和組:
此外,在最常見的橫向移動技術中,威脅參與者經常查看系統上的本地組是什么,以枚舉成員,所有其他用戶都在那里,以及他們在系統上屬于哪些組,他們首先妥協。普通用戶通常不會查看或嘗試枚舉這類信息。正如我們所知,每個windows系統或服務器都有本地組,我們可以使用下面截圖所示的計算機管理查看這些組和組中的成員。
如上面的截圖所示,通過查看本地組和用戶帳戶,我們可以收集關于組成員的大量信息,他們擁有的特權以及哪些組是重要的,這有助于威脅行動者進一步移動。在這里,我們使用計算機管理(也就是微軟管理控制臺)來查看這些信息,但在真實的攻擊場景中,威脅參與者可能使用腳本、PowerShell命令或窗口api來收集這些信息。
Windows已經發布了一些新的事件,并在最新版本中添加了一些新的字段,這些字段有助于識別攻擊生命周期早期威脅行動者正在執行的活動。如果有人試圖枚舉本地組信息,Windows通常會生成安全事件,無論是使用Microsoft管理控制臺(MMC)還是使用命令行PowerShell腳本。
2、Event ID - 4798:用戶的本地組成員枚舉
這與我們在上述場景中看到的情況相反;在這里,威脅行動者將查看用戶的本地組成員身份,并試圖找出該用戶所屬的所有組。讓我們看看下面的插圖并理解。
正如我們在上圖中看到的,當有人試圖訪問用戶的屬性(如成員資格)時 someone tries to access the user’s properties such as membership,窗口會生成安全事件ID 4798。第二張截圖顯示登錄用戶“Suresh Khutale”已經枚舉了用戶名“Administrators”的組成員,使用進程mmc.exe。
我們可以說生成的這些活動或事件是合法的,因為用來枚舉本地組信息的進程是mmc.exe。在一個真實的場景中,威脅行動者使用遠程訪問木馬(RAT),它利用windows實用程序或工具來收集這種情報,如PowerShell腳本。因此,如果我們發現任何事件ID 4798或4799與進程名看起來可疑,如“C:WindowsSystem32WindowsPowerShellv1.0powershell.exe”,然后我們需要提高警報和進一步調查。
這就是本文的內容,在下一篇文章中,我們將研究第二種技術,即分析身份驗證和特權用戶帳戶活動窗口中的安全事件日志,以檢測橫向移動。我們還將報道威脅行為者在目標網絡中傳播所使用的標準工具。
二、身份驗證和特權用戶帳戶活動
在這里,我們需要記住,在穿越網絡時,網絡攻擊者永遠不會試圖識別和利用每個系統中的漏洞來獲得shell訪問權限。相反,他們利用合法憑證登錄這些系統。他們使用各種技術和工具來提取或轉儲特權帳戶的憑證。
在攻擊生命周期的早期檢測可疑的身份驗證活動對于阻止目標攻擊的橫向移動非常重要。我們可以跟蹤使用特權用戶帳戶(域或本地管理員帳戶)進行的未經授權的活動。
網絡攻擊者傾向于以域帳戶而不是本地特權用戶帳戶為目標,因為他們可以訪問整個網絡來執行特權活動。網絡攻擊者通過使用下列技術之一訪問這些帳戶:
(1)域控制器或活動目錄中的漏洞;
(2)本地系統的密碼散列。
那么,我們如何識別對手是否已獲得訪問權或試圖連接網絡中的任何系統?在這里,再次使用windows安全事件日志,因為它們跟蹤所有與身份驗證相關的活動。
對于活動目錄基礎結構,您可能需要在域控制器級別配置審計策略。以下是一些我們可以監控的重要事件id:
4624:賬號登錄成功;
?登錄類型Logon Type:該字段顯示發生的登錄類型。換句話說,它指出用戶是如何登錄的。總共有9種不同的登錄類型,最常見的登錄類型是:登錄類型2(交互式)和登錄類型3(網絡)。除了5(表示服務啟動)之外的任何登錄類型都是一個危險標志。
?新登錄New Logon:此部分顯示為其創建新登錄的用戶的帳戶名和登錄ID,一個有助于將此事件與其他事件關聯起來的十六進制值。
4625:賬號登錄失敗;
?登錄類型:該字段顯示嘗試登錄的類型。換句話說,它指出用戶嘗試登錄的方式。總共有9種不同類型的登錄。最常見的登錄類型是:登錄類型2(交互式)和登錄類型3(網絡)。除了5(表示服務啟動)之外的任何登錄類型都是一個危險標志。有關不同登錄類型的說明,請參見事件ID 4624。
?登錄失敗的帳號:此部分顯示試圖登錄的用戶的帳號名。
?失敗信息:登錄失敗的原因。失敗原因字段包括一個簡短的解釋,而狀態和子狀態字段列出了十六進制代碼,下面將對最常見的代碼進行解釋。
4627:組成員信息;
4648:試圖使用顯式憑據登錄;
4672:分配給新登錄的特權。
跨各種windows版本的附加事件id
529:未知的用戶名或密碼
530:登錄失敗-賬戶登錄時間限制違反
531:當前禁用的帳戶
532:用戶帳號已過期
533:用戶不允許登錄到計算機
534:沒有授予所請求的用戶登錄類型
535:賬號密碼已經過期
536: NetLogon組件未激活
537:登錄嘗試失敗的其他原因
539:帳戶鎖定
4768: Kerberos身份驗證
4776: Kerberos服務票據
1102:清除審計日志
這不是一個全面的列表,而是您可以在監視和分析中包含的關鍵事件。我們將重點關注上面列出的一些重要事件id,用于橫向移動檢測分析中使用的身份驗證活動。其中一些事件在windows系統中默認是禁用的,所以我們必須從審計策略中啟用這些事件.
1、登錄類型
在轉到事件ID之前,我們需要檢查針對身份驗證活動生成的每個事件ID中遇到的登錄類型。這是一個方便的信息,因為它告訴您用戶是如何登錄或試圖登錄到系統的。https://www.ultimatewindowssecurity.com/securitylog/encyclopedia/event.aspx?eventID=4624
2、Event ID 4624:賬號登錄成功
當使用前面描述的登錄類型之一成功登錄到系統時,將出現Windows日志事件ID 4624。Windows根據此事件ID跟蹤每個成功的登錄活動,而不管帳戶類型、位置或登錄類型。下圖顯示了在這個事件ID下記錄的信息:
本事件的主題部分沒有提供任何重要信息,因此可以忽略。以下是幫助我們分析認證活動的一些重要字段:
登錄類型Logon type:該字段提供有關用戶如何登錄到系統的信息,這在識別異常時非常有用。在上面的示例中,我們可以看到登錄類型為2,這意味著用戶已經在本地登錄到系統。
安全ID Security ID:這是登錄到系統的帳戶的SID。
賬號名 Account Name:這是用戶登錄系統時的賬號名,我們可以在上面的截圖中看到,賬號名為“Suresh Khutale”。
帳戶域 Account Domain:這是帳戶所屬的域名,對于域系統,它將是相應的域名。
登錄GUID Logon GUID: GUID幫助將計算機上的身份驗證與域控制器上的相應身份驗證事件關聯起來。
工作站名 Workstation Name:這是用戶登錄的工作站名。
源網絡地址Source Network Address:這是用戶登錄到目標系統的系統的IP地址。如果登錄是在本地初始化的,有時IP地址將是127.0.0.1而不是實際的IP地址。
通過查看上面截圖中的字段,我們可以開發場景并微調規則集,以監控可疑活動。重要的是:
查找多個用戶在相對較短的時間內同時登錄到終端用戶工作站的實例;
同一用戶帳戶登錄到多個主機;
其中,網絡登錄引用目標系統上的無域帳戶。
重要的是要跟蹤管理嘗試的總數,并分析這些活動,以尋找任何偏差,如:
嘗試的總數;
涉及這些企圖的賬戶或發生這些企圖的電腦。
正如我們之前討論過的提供重要信息的登錄類型,我們可以在這些事件的幫助下追蹤任何異常,并檢測整個網絡的橫向移動。
3、Event? ID 4625:賬號登錄失敗
Windows在事件ID 4625下跟蹤失敗活動的帳戶日志。它提供關于系統上發生的每次失敗登錄嘗試的有用信息。下圖顯示了Event ID 4625中的重要字段:
上面截圖中的一些字段與事件ID 4624的字段相同。失敗信息部分提供了關于帳戶登錄失敗事件的重要信息。下表給出了故障狀態的描述,https://www.ultimatewindowssecurity.com/securitylog/encyclopedia/event.aspx?eventid=4625其來源如下:
我們現在可以查找連續失敗的登錄失敗的嘗試事件ID 4625,然后是成功登錄到系統事件ID 4624。這將提供對遠程系統上發生的任何惡意活動的洞察。
4、Event? ID 4627:組成員信息
這是微軟在最新版本的windows系統中引入的新的事件ID。它記錄了用戶所屬的所有嵌套組的組成員關系。該事件ID在windows中默認是禁用的。因此,我們必須在windows審計策略中啟用“審計組策略”和“審計登錄”特性。
下圖顯示了在這個事件ID下記錄的信息:
我們可以看到,除了Group Membership部分之外,所有其他字段對于前面描述的其他安全事件都是通用的。帳戶名account name 是用戶最近登錄的帳戶名,對應于Event ID 4624。
組成員Group Membership:本節記錄用戶登錄時所屬的所有組,具體如下:
用戶所屬的Local和Domain組;
具有特殊權利的用戶;
所有組和嵌套的組成員關系。
在這里,帳戶名account name“Suresh Khutale”已用于登錄系統,是各種組的成員,如上面截圖突出顯示的“Administrators”。
我們知道,當網絡攻擊者發起憑據偽攻擊credential artifact attacks時,他們通常會使用特權帳戶登錄。通過將事件ID 4627與事件ID 4624關聯起來,我們可能會看到一些有趣的事實,比如使用特權帳戶登錄到正常系統。
在Event ID 4627的幫助下,我們現在可以微調規則集并可視化可疑活動。例如,如果登錄的帳戶屬于一個特權組,如Domain_Administators或Administrators,這將引起嚴重的關注。
5、4648:試圖使用顯式憑據登錄
這是一個非常有用的事件,通過顯式地提供一組單獨的憑據來跟蹤幾個特權活動。每當用戶嘗試使用替代憑據在本地運行程序時,Windows都會記錄此事件ID。事件ID 4648的一個典型示例是,當用戶通過指定其他人的憑證映射遠程服務器的共享驅動器時。
為了演示這一點,我創建了一個具有管理員組權限的本地用戶“test”。我將啟動一個名為Chrome.exe的程序,以不同的用戶運行。如下面的截圖所示:
在上述憑據成功登錄后,windows將記錄事件ID 4648。下面的截圖顯示了在事件ID 4648下為上述顯式登錄活動記錄的信息。
正如我們在上面的截圖中看到的,名為“test”的帳戶 account被用于顯式登錄。進程名DpHostW.exe是與HP ProtectTools安全管理器關聯的文件。https://frsecure.com/blog/rdp-connection-event-logs/
此外,通過查看事件ID 4638,我們可以收集更多信息,如發起該活動的個人信息。
每當記錄事件ID 4648時,它后面都跟著事件ID 4624和4627。下面的截圖顯示了針對用戶“test”的4648事件ID記錄的這些事件的詳細信息。
現在,我們將查找使用顯式憑證啟動的確切流程。這是Chrome.exe。我們將看到事件ID 4688后面跟著事件ID 4648,如下面的截圖所示:
現在我們將簡要回顧一些網絡攻擊者使用的常用工具。他們經常將這些工具轉移到管理共享中,比如(ADMIN$, IPC$, C$)。要查看它們,我們可以使用事件ID 5145。
PsExec.exe:這是由Sysinternals開發的。它能夠執行管理活動,如上傳、執行和與遠程主機上的可執行文件交互。這個程序可以從命令行腳本使用,殺毒軟件不會標記它。網絡攻擊者專門使用這個程序來避免被發現。
我們還可以通過探測事件日志來查找PsExec.exe執行的實例,并根據事件ID 5145堆疊審計日志。
PowerShell.exe:這是微軟的面向對象腳本程序;所有最新版本的Windows都有這個功能。它是一個非常強大的工具,Cyber攻擊者經常使用它來捕獲內存中的憑證、修改配置和從一個系統橫向移動到下一個系統。
通過查看Event ID 4688(在第1部分中討論),可以識別生成的進程安全日志并分析PowerShell調用的合法性。PowerShell審計是檢測惡意PowerShell活動的另一種方法。
WMI和WinRM: Windows Management Instrumentation也是Windows中的一個內置程序。它是WMI的一個衍生進程,可以用于:
啟動遠程進程;
查詢系統信息;
存儲在傳統意義上不接觸磁盤的持久惡意軟件。
網絡攻擊者利用WinRM枚舉系統情報來識別要攻擊的目標。
At Jobs:與WMI類似,At作業用于調度和啟動具有本地管理權限的遠程系統上的進程。網絡攻擊者使用此程序通過任務調度程序遠程執行腳本、啟動工具、刪除已執行的工具等。
這還伴隨著TaskScheduler/Operational事件日志特性,可以用于遠程檢測可疑的At作業。
遠程桌面(RDP):
遠程桌面用于在不中斷用戶會話的情況下連接到遠程系統。RDP連接很容易被網絡攻擊者檢測到。
常用密碼散列轉儲工具:
以下是Cyber攻擊者用來轉儲密碼哈希值、授權令牌等的一些知名工具和腳本:
Mimikatz (steal password hash/pass the hash method)
Mimikatz (steal ticket/pass the ticket method)
Windows Credentials Editor (WCE)
PWDump7
PWDumpX
Quarks PwDump