中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Shellcode中怎么躲避安全檢測

發布時間:2021-08-13 13:47:09 來源:億速云 閱讀:214 作者:Leah 欄目:編程語言

Shellcode中怎么躲避安全檢測,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

CreateThread工作流程

1、為當前進程分配內存;

2、將Shellcode拷貝到分配的內存中;

3、修改新分配內存的保護機制,以允許Shellcode在內存空間中運行;

4、使用已分配內存段的基地址創建線程;

5、等待返回線程句柄;

CreateRemoteThread

1、獲取目標注入進程的進程ID;

2、打開目標進程;

3、在目標內存中分配可執行內存;

4、將Shellcode寫入到已分配內存中;

5、使用已分配內存段的起始地址在遠程進程中創建一個線程;

Shellcode中怎么躲避安全檢測

QueueUserAPC

1、獲取目標注入進程的進程ID;

2、打開目標進程;

3、為目標進程分配內存;

4、向已分配內存中寫入Shellcode;

5、修改新分配內存的保護機制,以允許Shellcode在內存空間中運行;

6、使用已分配內存段的起始地址在遠程進程中創建一個線程;

7、當線程進入“預警”狀態時,將線程提交至執行隊列;

8、將線程恢復至“預警”狀態;

Shellcode中怎么躲避安全檢測

命令執行

大家先停一下,我們整理一下:

1、惡意代碼就是我們的Shellcode - stage 0或stage 1代碼是真正執行惡意操作的代碼。

2、標準的“Shellcode運行程序”會通過注入或直接執行的方式來運行惡意代碼。

接下來,我們還需要一種執行已編譯代碼的方法,一般來說,我們可以通過可執行程序(exe)或動態鏈接庫(DLL)來實現,不過紅隊研究人員更愿意使用lolbins命令來執行。

信息整合

我們將開發一個Shellcode運行工具(DLL),它可以利用lolbins實現,并且可以在不需要更新代碼庫的情況下實現注入式或非注入式的Shellcode,以此來保證靈活性。完成之后,我們將得到一個名叫DueDlligence的C# Shellcode運行程序,源代碼可以點擊【這里】獲取。

DueDlligence項目可以快速地在之前提到的技術之間進行切換,我們只需要修改下圖中的全局變量值即可:

Shellcode中怎么躲避安全檢測

DueDLLigence DLL包含三個非托管的導出函數,這三個導出函數使用了Rasautou,Control,和Coregen這三個原生的Windows命令(本文所使用的Shellcode樣本只會彈出calc.exe):

Shellcode中怎么躲避安全檢測

打開源代碼之后,你會發現樣本使用了下列導出函數:

Shellcode中怎么躲避安全檢測

首先,我們要生成我們的Shellcode,下圖中,我們使用了Cobalt Strike來生成“rev_dns”監聽器的原始Shellcode。完成之后,我們需要在Linux中運行下列命令來生成base64編碼版本的Shellcode:

base64 -w0 payload.bin > [outputFileName]

Shellcode中怎么躲避安全檢測

Shellcode中怎么躲避安全檢測

接下來,我們需要用base64編碼的我們自己的x86或x64 Payload替換第58行的base64編碼的Shellcode,上圖中我們生成了一個x86 Payload,有需要的話你可以修改“use x64 Payload”來生成一個x64 Payload。

此時,我們需要重新安裝DueDLLigence(Visual Studio項目)中的未托管導出庫,,因為有時當你使用不同的項目時,可能會導致DueDLLigence項目出現問題。你可以打開NuGet包管理終端,然后運行下列命令:

Install-Package UnmanagedExports -Version 1.2.7 command

Shellcode中怎么躲避安全檢測

完成上述所有操作之后,需要構建源碼和DLL。Visual Studio Pro自帶的Dumpbin.exe可以幫助我們運行和測試生成的DLL,并查看導出函數:

Shellcode中怎么躲避安全檢測

我們可以使用其他的lolbin技術來擴展上圖中的導出函數列表,不過大家盡量把不需要使用的移除掉以減小Payload的體積。

Shellcode注入技術的現代檢測方法

盡管Shellcode可以幫助我們規避檢測,但還是有可能被檢測到的,下面我們來分析幾種進程注入技術。

在我們的Shellcode運行程序中,Shellcode注入技術(CreateRemoteThread和QueueUserAPC)會以掛起狀態生成一個進程,然后向目標進程中注入Shellcode。比如說,我們選擇explorer.exe來作為注入目標,我們的Payload將通過MSIExec來運行。之后會生成一個進程樹,cmd.exe將生成msiexec.exe,并最終生成explorer.exe。

Shellcode中怎么躲避安全檢測

在企業環境中,可以使用SIEM來收集遙測數據,以檢測cmd.exe -> msiexec.exe -> explorer.exe進程樹的執行情況。根據父-子進程的關系,防御端可以通過異常檢測來識別潛在的惡意軟件。

API鉤子是EDR和反病毒產品常用的惡意軟件檢測技術,很多攻擊者會使用類似PsSetCreateProcessNotifyRoutine(Ex)和PsSetCreateThreadNotifyRoutine(Ex)這樣的內核程序來實現攻擊。當進程注入發生時,一個進程會修改另一個進程地址空間中的內存保護機制,通過檢測類似API的調用情況,隨著紅隊和惡意攻擊者繼續開發新的進程注入技術,網絡防御人員以及安全軟件需要繼續適應不斷變化的環境。監視諸如virtualAllocex、virtualProtectEx、createRemoteThread和ntQueueAPCThread之類的Windows API函數調用可以為識別潛在惡意軟件提供有價值的數據。除此之外,監視create process與create_suspended和create_hidden標志的使用可能有助于檢測攻擊者要注入的掛起或隱藏的進程。

Shellcode中怎么躲避安全檢測

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

保山市| 绿春县| 垫江县| 宣汉县| 菏泽市| 博兴县| 中阳县| 独山县| 东阳市| 奉新县| 朝阳区| 策勒县| 松原市| 延长县| 盘山县| 蓬溪县| 正蓝旗| 平度市| 南充市| 遵义市| 乌鲁木齐县| 通山县| 合江县| 米易县| 邻水| 合川市| 永胜县| 礼泉县| 和平县| 琼海市| 鄄城县| 台州市| 清河县| 永川市| 济宁市| 南昌市| 福海县| 镇巴县| 晋城| 南召县| 合水县|