自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

檢測(cè)父PID欺騙?

安全 網(wǎng)站安全
在這篇文章中,我們展示了攻擊者如何利用合法的Windows功能來(lái)欺騙防御者,并可能繞過(guò)基于父子關(guān)系的檢測(cè)技術(shù)。

用來(lái)檢測(cè)異?;顒?dòng)的最有用的技術(shù)之一是對(duì)父子進(jìn)程關(guān)系的分析,然而,技術(shù)更高明更強(qiáng)大的攻擊者可以使用父PID(PPID)欺騙來(lái)繞過(guò)此操作,從而允許從任意父進(jìn)程執(zhí)行惡意進(jìn)程。盡管這項(xiàng)技術(shù)本身并不新鮮,雖然Cobalt Strike和DidierStevens 對(duì)其進(jìn)行了詳細(xì)介紹,但在檢測(cè)此類攻擊方面進(jìn)行的專門研究卻很少。

在本文中,我們將探討該技術(shù)的工作原理以及防御者如何利用Windows事件跟蹤(ETW)來(lái)檢測(cè)該技術(shù)。我們還將發(fā)布概念驗(yàn)證PowerShell腳本以執(zhí)行PPID欺騙和DLL注入,以及一個(gè)Python腳本,該腳本利用pywintrace庫(kù)來(lái)檢測(cè)此活動(dòng)。

為什么首先要進(jìn)行欺騙?

過(guò)去,攻擊者通常能在發(fā)動(dòng)攻擊時(shí)不留下任何痕跡,但是隨著EDR的興起和威脅搜尋的興起,情況就開(kāi)始發(fā)生變化了。特別是使用父子進(jìn)程分析已經(jīng)成為一種有用的技術(shù),用于檢測(cè)在網(wǎng)絡(luò)攻擊殺傷鏈的幾乎每個(gè)階段產(chǎn)生的異常活動(dòng)。

我們?cè)贑ountercept上使用的一些示例:

  • 宏有效載荷傳遞: WinWord生成過(guò)程;
  • JS / VBS C#有效載荷傳遞: cscript生成csc;
  • 橫向移動(dòng):services/wmiprvse產(chǎn)生新流程;

這迫使攻擊者重新評(píng)估他們的方法,并著眼于像PPID欺騙這樣的技術(shù),以繞過(guò)現(xiàn)代的防御策略。

通過(guò)CreateProcessA進(jìn)行欺騙

有許多不同的方法可以欺騙父進(jìn)程,在這篇文章中,我們將關(guān)注一個(gè)最簡(jiǎn)單和最常用的技術(shù),涉及到API調(diào)用CreateProcessA。

毫不奇怪,CreateProcessA允許用戶創(chuàng)建新流程,并且默認(rèn)情況下,將使用繼承的父級(jí)創(chuàng)建流程。但是,此函數(shù)還支持一個(gè)名為“lpStartupInfo”的參數(shù),你可以在其中定義要使用的父進(jìn)程。這個(gè)功能是在Windows Vista中加入U(xiǎn)AC后首次引入的,目的是為了正確設(shè)置父級(jí)。

檢測(cè)父PID欺騙?

在更深層次的技術(shù)水平上,lpStartupInfo參數(shù)指向STARTUPINFOEX結(jié)構(gòu)。此結(jié)構(gòu)包含一個(gè)lpAttributeList,你可以使用UpdateProcThreadAttribute通過(guò)“PROC_THREAD_ATTRIBUTE_PARENT_PROCESS”屬性設(shè)置進(jìn)程的父進(jìn)程。

檢測(cè)父PID欺騙?

順便提一下,這種方法也可以用于特權(quán)升級(jí)。文檔中提到“從指定進(jìn)程繼承的屬性包括句柄、設(shè)備映射、處理器關(guān)聯(lián)、優(yōu)先級(jí)、配額、進(jìn)程令牌和作業(yè)對(duì)象”。“Adam Chester有一個(gè)博客,展示了如何濫用它來(lái)獲得Windows系統(tǒng)。

如何欺騙父進(jìn)程?

在網(wǎng)絡(luò)上立足的最常見(jiàn)方法之一是使用惡意宏文檔,許多有效載荷通常會(huì)啟動(dòng)新進(jìn)程,例如cmd,PowerShell,regsvr32或certutil。圖3顯示了從winword生成rundll32的一個(gè)示例。但是,這種行為是相對(duì)異常的,并且大多數(shù)防御策略都很容易檢測(cè)到。

檢測(cè)父PID欺騙?

為了克服這個(gè)問(wèn)題,攻擊者可以改用CreateProcessA技術(shù)的VBS宏實(shí)現(xiàn)從預(yù)期的父進(jìn)程啟動(dòng)有效載荷(例如Explorer啟動(dòng)cmd)以與環(huán)境融合,下圖概述了如何實(shí)現(xiàn)的過(guò)程。

檢測(cè)父PID欺騙?

我們不會(huì)發(fā)布此VBS代碼,然而,更多信息可以在這里找到。

但是,我們可以采取進(jìn)一步措施來(lái)完全避免使用常見(jiàn)的Windows實(shí)用程序嗎?一種選擇是使用某種形式的DLL或內(nèi)存注入在已經(jīng)運(yùn)行的進(jìn)程中加載有效載荷。

為了說(shuō)明這一點(diǎn),我們基于Didier Stevens]的代碼創(chuàng)建了一個(gè)PowerShell腳本,該腳本可用于創(chuàng)建具有欺騙性父級(jí)的進(jìn)程,然后在其中注入DLL。

檢測(cè)父PID欺騙?
檢測(cè)父PID欺騙?

為了演示如何使用該腳本隱藏活動(dòng),我們查看了Windows 10上常用的進(jìn)程。我們看到的一種非常常見(jiàn)的合法關(guān)系是“ svchost.exe”啟動(dòng)“ RuntimeBroker.exe”。

檢測(cè)父PID欺騙?

使用PowerShell腳本,我們能夠模擬這個(gè)活動(dòng),并通過(guò)“ svchost.exe”強(qiáng)制生成合法的“ RuntimeBroker.exe”,然后注入并執(zhí)行DLL有效載荷。

檢測(cè)父PID欺騙?

此向量顯示了此類技術(shù)如何潛在地繞過(guò)專注于父子關(guān)系的檢測(cè)規(guī)則。

如何查找到攻擊者?

如上所述,我們介紹了CreateProcessA技術(shù)如如何欺騙父級(jí)ID的,并且從安全團(tuán)隊(duì)的角度來(lái)看,如果你使用任務(wù)管理器或進(jìn)程資源管理器查詢正在運(yùn)行的進(jìn)程,則會(huì)看到欺騙性的ID。但是,有什么方法可以找出真實(shí)的ID?

Windows中最好的取證數(shù)據(jù)源之一是Windows事件跟蹤(ETW),ETW提供有關(guān)系統(tǒng)上發(fā)生的事件的實(shí)時(shí)數(shù)據(jù)流,這是我們?cè)贑ountercept的端點(diǎn)代理中使用的東西。

特別是Microsoft-Windows-Kernel-Process提供程序可以為流程創(chuàng)建提供一些有用的見(jiàn)解,并可以幫助我們檢測(cè)流程ID欺騙。在下面的示例中,你將看到如何從“winword.exe”(PID 9224)生成“rundll32.exe”(PID 5180)(圖9)。

檢測(cè)父PID欺騙?

查看收集到的ETW數(shù)據(jù)(圖10),你將看到多個(gè)ProcessId字段,包括EventHeader ProcessId以及實(shí)際事件ProcessID和ParentProcessID。盡管這有些令人困惑,但通讀MSDN文檔,我們發(fā)現(xiàn)EventHeader ProcessId實(shí)際上標(biāo)識(shí)了生成事件的進(jìn)程,即父進(jìn)程。

檢測(cè)父PID欺騙?

在這個(gè)合法的示例中,你會(huì)注意到EventHeader ProcessId和ParentProcessId正確匹配。

在第二個(gè)示例中,我們執(zhí)行了惡意的PowerShell腳本,并通過(guò)“svchost.exe”(PID 4652)生成了“RuntimeBroker.exe”(PID 4976)。

檢測(cè)父PID欺騙?

和以前一樣,我們可以看到ETW生成了一個(gè)流程事件(圖12);但是,這次的EventHeader ProcessId和ParentProcessID是不同的。實(shí)際上,EventHeader ProcessId顯示了真正的父級(jí)關(guān)系,即“ winword.exe”(PID 9224),因?yàn)槲覀儎倓偘l(fā)現(xiàn)有人在執(zhí)行ParentPID欺騙!

檢測(cè)父PID欺騙?

但是,就像在威脅檢測(cè)中一樣,事情并非如此簡(jiǎn)單,如果你嘗試大規(guī)模進(jìn)行此操作,你將發(fā)現(xiàn)合法欺騙會(huì)帶來(lái)誤報(bào)。一個(gè)常見(jiàn)的示例是用戶帳戶控制(UAC),用于提升進(jìn)程特權(quán)。在Windows 10中,當(dāng)UAC執(zhí)行時(shí),應(yīng)用程序信息服務(wù)(通過(guò)svchost)用于啟動(dòng)提升的進(jìn)程,但隨后將欺騙父級(jí)以顯示原始調(diào)用方。下面的示例顯示了提升后的cmd.exe如何將explorer.exe作為父級(jí)顯示,而實(shí)際上它是svchost.exe。

檢測(cè)父PID欺騙?

我們看到的另一個(gè)誤報(bào)與WerFault的崩潰處理有關(guān),在下面的示例中,當(dāng)MicrosoftEdge崩潰時(shí),使用svchost啟動(dòng)WerFault.exe,并且將父級(jí)欺騙為MicrosoftEdge.exe。

檢測(cè)父PID欺騙?

出于測(cè)試的目的,我們創(chuàng)建了一個(gè)簡(jiǎn)單的概念驗(yàn)證Python腳本,該腳本使用pywintrace記錄來(lái)自ETW的事件,比較PID,然后過(guò)濾結(jié)果以消除誤報(bào)(圖15)。

檢測(cè)父PID欺騙?

可以在我們的Github 上找到PowerShell欺騙腳本的代碼以及檢測(cè)腳本。

總結(jié)

在這篇文章中,我們展示了攻擊者如何利用合法的Windows功能來(lái)欺騙防御者,并可能繞過(guò)基于父子關(guān)系的檢測(cè)技術(shù)。

但是,從防御的角度來(lái)看,我們已經(jīng)展示了對(duì)ETW進(jìn)程事件的分析如何輕松地突出顯示異常的父級(jí)欺騙并幫助發(fā)現(xiàn)進(jìn)程的真正來(lái)源。

本文翻譯自:https://blog.f-secure.com/detecting-parent-pid-spoofing/

 

責(zé)任編輯:趙寧寧 來(lái)源: 嘶吼網(wǎng)
相關(guān)推薦

2010-09-16 16:06:37

2018-10-26 10:23:06

網(wǎng)絡(luò)欺騙遏制檢測(cè)

2019-03-11 09:44:09

欺騙勒索軟件攻擊

2009-12-31 15:36:52

2010-08-06 10:38:59

2021-08-30 15:23:03

prometheus局限性cortex

2012-12-13 10:34:35

ARP欺騙

2013-09-17 09:08:07

ARP欺騙IP

2013-09-18 09:27:57

2010-09-16 15:17:33

2013-04-01 10:12:39

2010-09-16 15:39:18

2013-05-13 17:49:26

2010-09-07 12:46:08

2010-09-13 16:24:39

2018-10-29 07:13:45

2021-09-27 10:12:42

欺騙防御rMTD網(wǎng)絡(luò)攻擊

2021-01-16 10:39:11

欺騙攻擊網(wǎng)絡(luò)犯罪網(wǎng)絡(luò)安全

2019-03-20 08:00:00

DNS緩存欺騙惡意軟件

2017-01-12 16:02:18

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)