您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關如何使用ScareCrow框架實現EDR繞過,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
ScareCrow是一款功能強大的Payload創建框架,可以幫助廣大研究人員生成用于向合法Windows金冊灰姑娘中注入內容的加載器,以繞過應用程序白名單控制。當DLL加載器加載進內存中之后,將會使用一種技術來將EDR鉤子從正在進程內存中運行的系統DLL中清理掉,這是因為我們知道EDR的鉤子是在這些進程被生成時設置的。ScareCrow可以通過使用API函數VirtualProtect來在內存中對這些DLL進行操作,該函數可以將進程的內存權限的一部分更改為不同的值,特別是將Execute-Read修改為Read-Write-Execute。
在執行過程中,ScareCrow將會復制存儲在C:\Windows\System32\磁盤上的系統DLL的字節數據。這些DLL存儲在EDR掛鉤的“干凈”磁盤上,因為系統使用它們在生成新進程時會將未更改的副本加載到新進程中。由于EDR只在內存中設置這些進程鉤子,所以這部分數據將保持不變。ScareCrow不會復制整個DLL文件,而是只關注DLL的.text部分。DLL的這一部分包含可執行程序集,這樣做有助于降低檢測的可能性,因為重新讀取整個文件會導致EDR檢測到系統資源有修改。然后使用每個函數的偏移量將數據復制到內存的正確區域。每個函數都有一個偏移量,該偏移量表示它們所在的基址的確切字節數,提供函數在堆棧上的位置。為了做到這一點,ScareCrow選擇使用VirtualProtect更改內存中.text區域的權限。盡管這是一個系統DLL,但由于它已加載到我們的進程(由我們控制)中,因此我們可以更改內存權限,而無需提升權限。
一旦這些鉤子被移除,ScareCrow就會利用定制的系統調用在內存中加載和運行shellcode。ScareCrow甚至在移除EDR鉤子之后也會這樣做,以幫助避免被基于非用戶鉤子的遙測收集工具(如Event Tracing for Windows(ETW))或其他事件日志機制檢測到。這些自定義系統調用還用于執行VirtualProtect調用,以移除由EDR放置的鉤子(如上所述),從而避免被任何EDR的防篡改控件檢測到。這是通過調用VirtualProtect系統調用的自定義版本NtProtectVirtualMemory來完成的。ScareCrow可以利用Golang來生成這些加載程序,然后對這些定制的系統調用函數進行編譯。
ScareCrow首先會解密shellcode并將其加載進內存中,默認情況下,shellcode會使用AES加密和解密初始化向量密鑰進行加密。一旦解密并加載成功,shellcode將會被執行。根據指定的加載程序選項,ScareCrow會為DLL設置不同的導出函數。加載的DLL也不包含所有DLL通常需要操作的標準DLLmain函數,不過我們不需要擔心DLL的執行會出現問題。
在加載器的創建過程中,ScareCrow會使用到一個代碼庫,這個庫會做兩件事情:
代碼對加載器進行簽名:使用代碼簽名證書簽名的文件通常受到較少的審查,這樣就更容易執行而不會受到質疑,因為使用受信任名稱簽名的文件通常比其他文件更不可疑。大多數反惡意軟件產品沒有時間去驗證這些證書。ScareCrow通過使用Go版本的工具limelighter來創建一個pfx12文件來創建這些證書。這個包可以使用用戶指定的輸入域名來為該域創建代碼簽名證書。如果需要,還可以通過有效的命令行選項來使用自己的代碼簽名證書。
偽造加載器的屬性:這是通過使用syso文件來完成的,syso文件是嵌入資源文件的一種形式,當與我們的加載程序一起編譯時,它將修改我們編譯代碼的屬性部分。在生成syso文件之前,ScareCrow將生成一個隨機文件名(基于加載程序類型)以供使用。選擇此文件名后,將映射到該文件名的關聯屬性,確保分配了正確的值。
有了這些文件和go代碼,ScareCrow將使用c-shared庫選項將它們交叉編譯成DLL文件。一旦DLL被編譯,它就會被混淆成一個斷開的Base64字符串,這個字符串將被嵌入到一個文件中。這將允許我們遠程獲取、訪問或以編程方式執行目標文件。
第一步我們首先要將該項目源碼克隆至本地:
git clone https://github.com/optiv/ScareCrow.git
在編譯ScareCrow之前,我們還需要安裝響應的依賴組件:
go get github.com/fatih/color go get github.com/yeka/zip go get github.com/josephspurrier/goversioninfo
確保下列組件已經在你的操作系統上安裝好了:
openssl osslsigncode mingw-w64
接下來,運行下列命令完成工具構建:
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.
看完上述內容,你們對如何使用ScareCrow框架實現EDR繞過有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。