您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)如何使用ScareCrow框架實(shí)現(xiàn)EDR繞過,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
ScareCrow是一款功能強(qiáng)大的Payload創(chuàng)建框架,可以幫助廣大研究人員生成用于向合法Windows金冊灰姑娘中注入內(nèi)容的加載器,以繞過應(yīng)用程序白名單控制。當(dāng)DLL加載器加載進(jìn)內(nèi)存中之后,將會使用一種技術(shù)來將EDR鉤子從正在進(jìn)程內(nèi)存中運(yùn)行的系統(tǒng)DLL中清理掉,這是因?yàn)槲覀冎繣DR的鉤子是在這些進(jìn)程被生成時(shí)設(shè)置的。ScareCrow可以通過使用API函數(shù)VirtualProtect來在內(nèi)存中對這些DLL進(jìn)行操作,該函數(shù)可以將進(jìn)程的內(nèi)存權(quán)限的一部分更改為不同的值,特別是將Execute-Read修改為Read-Write-Execute。
在執(zhí)行過程中,ScareCrow將會復(fù)制存儲在C:\Windows\System32\磁盤上的系統(tǒng)DLL的字節(jié)數(shù)據(jù)。這些DLL存儲在EDR掛鉤的“干凈”磁盤上,因?yàn)橄到y(tǒng)使用它們在生成新進(jìn)程時(shí)會將未更改的副本加載到新進(jìn)程中。由于EDR只在內(nèi)存中設(shè)置這些進(jìn)程鉤子,所以這部分?jǐn)?shù)據(jù)將保持不變。ScareCrow不會復(fù)制整個(gè)DLL文件,而是只關(guān)注DLL的.text部分。DLL的這一部分包含可執(zhí)行程序集,這樣做有助于降低檢測的可能性,因?yàn)橹匦伦x取整個(gè)文件會導(dǎo)致EDR檢測到系統(tǒng)資源有修改。然后使用每個(gè)函數(shù)的偏移量將數(shù)據(jù)復(fù)制到內(nèi)存的正確區(qū)域。每個(gè)函數(shù)都有一個(gè)偏移量,該偏移量表示它們所在的基址的確切字節(jié)數(shù),提供函數(shù)在堆棧上的位置。為了做到這一點(diǎn),ScareCrow選擇使用VirtualProtect更改內(nèi)存中.text區(qū)域的權(quán)限。盡管這是一個(gè)系統(tǒng)DLL,但由于它已加載到我們的進(jìn)程(由我們控制)中,因此我們可以更改內(nèi)存權(quán)限,而無需提升權(quán)限。
一旦這些鉤子被移除,ScareCrow就會利用定制的系統(tǒng)調(diào)用在內(nèi)存中加載和運(yùn)行shellcode。ScareCrow甚至在移除EDR鉤子之后也會這樣做,以幫助避免被基于非用戶鉤子的遙測收集工具(如Event Tracing for Windows(ETW))或其他事件日志機(jī)制檢測到。這些自定義系統(tǒng)調(diào)用還用于執(zhí)行VirtualProtect調(diào)用,以移除由EDR放置的鉤子(如上所述),從而避免被任何EDR的防篡改控件檢測到。這是通過調(diào)用VirtualProtect系統(tǒng)調(diào)用的自定義版本NtProtectVirtualMemory來完成的。ScareCrow可以利用Golang來生成這些加載程序,然后對這些定制的系統(tǒng)調(diào)用函數(shù)進(jìn)行編譯。
ScareCrow首先會解密shellcode并將其加載進(jìn)內(nèi)存中,默認(rèn)情況下,shellcode會使用AES加密和解密初始化向量密鑰進(jìn)行加密。一旦解密并加載成功,shellcode將會被執(zhí)行。根據(jù)指定的加載程序選項(xiàng),ScareCrow會為DLL設(shè)置不同的導(dǎo)出函數(shù)。加載的DLL也不包含所有DLL通常需要操作的標(biāo)準(zhǔn)DLLmain函數(shù),不過我們不需要擔(dān)心DLL的執(zhí)行會出現(xiàn)問題。
在加載器的創(chuàng)建過程中,ScareCrow會使用到一個(gè)代碼庫,這個(gè)庫會做兩件事情:
代碼對加載器進(jìn)行簽名:使用代碼簽名證書簽名的文件通常受到較少的審查,這樣就更容易執(zhí)行而不會受到質(zhì)疑,因?yàn)槭褂檬苄湃蚊Q簽名的文件通常比其他文件更不可疑。大多數(shù)反惡意軟件產(chǎn)品沒有時(shí)間去驗(yàn)證這些證書。ScareCrow通過使用Go版本的工具limelighter來創(chuàng)建一個(gè)pfx12文件來創(chuàng)建這些證書。這個(gè)包可以使用用戶指定的輸入域名來為該域創(chuàng)建代碼簽名證書。如果需要,還可以通過有效的命令行選項(xiàng)來使用自己的代碼簽名證書。
偽造加載器的屬性:這是通過使用syso文件來完成的,syso文件是嵌入資源文件的一種形式,當(dāng)與我們的加載程序一起編譯時(shí),它將修改我們編譯代碼的屬性部分。在生成syso文件之前,ScareCrow將生成一個(gè)隨機(jī)文件名(基于加載程序類型)以供使用。選擇此文件名后,將映射到該文件名的關(guān)聯(lián)屬性,確保分配了正確的值。
有了這些文件和go代碼,ScareCrow將使用c-shared庫選項(xiàng)將它們交叉編譯成DLL文件。一旦DLL被編譯,它就會被混淆成一個(gè)斷開的Base64字符串,這個(gè)字符串將被嵌入到一個(gè)文件中。這將允許我們遠(yuǎn)程獲取、訪問或以編程方式執(zhí)行目標(biāo)文件。
第一步我們首先要將該項(xiàng)目源碼克隆至本地:
git clone https://github.com/optiv/ScareCrow.git
在編譯ScareCrow之前,我們還需要安裝響應(yīng)的依賴組件:
go get github.com/fatih/color go get github.com/yeka/zip go get github.com/josephspurrier/goversioninfo
確保下列組件已經(jīng)在你的操作系統(tǒng)上安裝好了:
openssl osslsigncode mingw-w64
接下來,運(yùn)行下列命令完成工具構(gòu)建:
go build ScareCrow.go
./ScareCrow -h _________ _________ / _____/ ____ _____ _______ ____ \_ ___ \_______ ______ _ __ \_____ \_/ ___\\__ \\_ __ \_/ __ \/ \ \/\_ __ \/ _ \ \/ \/ / / \ \___ / __ \| | \/\ ___/\ \____| | \( <_> ) / /_______ /\___ >____ /__| \___ >\______ /|__| \____/ \/\_/ \/ \/ \/ \/ \/ (@Tyl0us) “Fear, you must understand is more than a mere obstacle. Fear is a TEACHER. the first one you ever had.” Usage of ./ScareCrow: -I string Path to the raw 64-bit shellcode. -Loader string Sets the type of process that will sideload the malicious payload: [*] binary - Generates a binary based payload. (This type does not benfit from any sideloading) [*] control - Loads a hidden control applet - the process name would be rundll32. [*] dll - Generates just a DLL file. Can executed with commands such as rundll32 or regsvr32 with DllRegisterServer, DllGetClassObject as export functions. [*] excel - Loads into a hidden Excel process. [*] wscript - Loads into WScript process. (default "dll") -O string Name of output file (e.g. loader.js or loader.hta). If Loader is set to dll or binary this option is not required. -console Only for Binary Payloads - Generates verbose console information when the payload is executed. This will disable the hidden window feature. -delivery string Generates a one-liner command to download and execute the payload remotely: [*] bits - Generates a Bitsadmin one liner command to download, execute and remove the loader. [*] hta - Generates a blank hta file containing the loader along with a MSHTA command to execute the loader remotely in the background. [*] macro - Generates an Office macro that will download and execute the loader remotely. -domain string The domain name to use for creating a fake code signing cert. (e.g. Acme.com) -password string The password for code signing cert. Required when -valid is used. -sandbox string Enables sandbox evasion using IsDomainedJoined calls. -url string URL associated with the Delivery option to retrieve the payload. (e.g. https://acme.com/) -valid string The path to a valid code signing cert. Used instead of -domain if a valid code signing cert is desired.
看完上述內(nèi)容,你們對如何使用ScareCrow框架實(shí)現(xiàn)EDR繞過有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。