cobalt strick 4.0 系列教程(6)Payload Artifact 和反病毒規避

0x01 哲學

Strategic Cyber 責任有限公司會定期回答有關規避的問題。Cobalt Strike 是否能夠繞過 AV 產品?它能繞過哪些 AV 產品?它多久檢查一次?

Cobalt Strike 默認的 Artifact 可能會被大多數終端安全解決方案攔截。規避不是 Cobalt Strike 默認產品的目的。但是 Cobalt Strike 確實提供了靈活性。

你作為操作員可以改變 Cobalt Strike 在它的工作流中使用的可執行文件、DLL、applet 和腳本模板。你也可以以多種不同的格式導出 Cobalt Strike 的 Beacon payload,這樣可以與用于幫助規避的第三方工具一起工作。

本章將重點介紹 Cobalt Strike 提供靈活性的的功能。

0x02 Artifact 工件集

Cobalt Strike 使用 Artifact 工件集來生成它的可執行文件和 DLL。這個 Artifact 工件集是一個源碼框架、用于建立(build)可以規避一些反病毒產品的可執行文件和 DLL。

Artifact 工件集理論

傳統的反病毒產品使用簽名來識別已知的惡意程序。如果我們把一些被標記的惡意 shellcode 注入一個可執行文件,那么反病毒產品會識別 shellcode 并把此可執行文件標為惡意。

為了打敗這種檢測,攻擊者通常會以某種方式混淆 shellcode 并將其放入二進制文件中。這種混淆過程會打敗使用簡單的字符串搜索來識別惡意代碼的反病毒產品。

很多反病毒產品會進行更嚴苛的檢測。這些反病毒產品模擬一個可執行程序在一個虛擬沙盒中的執行。在執行的每個模擬步驟中,這個反病毒產品會檢測在模擬的進程空間中的已知的惡意部分。如果已知的惡意部分出現,反病毒產品會把這個可執行文件或 DLL 標記為惡意的。這項技術打敗了許多編碼器和程序包,它們試圖去從基于簽名的反 AV 產品中隱藏已知的惡意部分。

Cobalt Strike 對此的應對策略是很簡單的。這個反病毒沙盒有一些限制。這不是完整的虛擬機。有一些反病毒沙盒不會模擬的系統行為。這個 Artifact 工件集是一些可執行文件和 DLL 模板的合,這些可執行文件和 DLL 模板依賴于一些反病毒產品不會模擬來還原二進制中的 shellcode 的行為。

一些技術[請參閱:Artifact 工件集中的 src-common/bypass-pipe.c ]生成可執行文件和 DLL,這些可執行文件和 DLL 通過命名管道為 shellcode 服務,通過命名管道傳輸 shellcode。如果反病毒沙箱不模擬命名管道,就發現不了那些已知的惡意 shellcode。

Artifact 工件集失效的地方

當然,反病毒產品可能擊敗 Artifact 工件集中的特定的實現。如果一個反病毒的供應商為你使用的Artifact 工件集技術編寫了簽名,那么它創建的可執行文件和 DLL 將被捕獲。殺軟的追蹤始于 CobaltStrike 2.5 甚至更低的版本。隨著時間的推移,Cobalt Strike 中默認的繞過技術會逐漸失效。如果你想最大化利用 Artifact 工件集,你可以使用這些 Artifact 工件集中的某項技術作為基礎來構建你自己的Artifact 工件集實現。

但是哪怕是這樣也還遠遠不夠。一些反病毒產品會回連廠商的服務器。這些廠商來決定該可執行文件或DLL 是否是非惡意的或者是之前從未見過的未知可執行文件或 DLL。一些這些產品會自動的把未知的可執行文件或 DLL 發送到廠商用于進一步的研究和提醒用戶。其他的一些產品會把未知的可執行文件或DLL 視為惡意的。這取決于反病毒產品及其設置。

關鍵是,在這種情況下,再怎么樣“混淆”也幫不了你。你要面對的是不同的防御方式,需要針對性的解決方案。你應該像處理應用白名單一樣處理這些情況。嘗試找到一個已知的好的程序(比如powershell),利用它來把你的 payload stager 注入進內存中。

如何使用 Artifact 工件集

通過 Help → Arsenal (武器庫),填入 Cobalt Strike 的注冊碼來下載 Artifact 工件集。你也可以通過這個地址來直接訪問武器庫網頁:https://www.cobaltstrike.com/scripts
在這里插入圖片描述
Strategic Cyber 有限責任公司將 Artifact 工件集以 .tgz 的格式分發。使用 tar 命令對其進行解壓。此 Artifact 工件集包含一個 build.sh 腳本。在 Kali Linux 系統上運行此腳本,無需任何參數,使用最小化 GNU 來為 Windows 交叉編譯器構建默認的 Artifact 工件集。
在這里插入圖片描述
Artifact 工件集構建腳本會為每一項 Artifact 工件集中的技術創建一個包含模板 Artifact 的文件夾。要通過 Cobalt Strike 來使用某項技術,通過 Cobalt Strike → Script Manager (腳本管理器),并從該技術的文件夾加載 artifact.cna 腳本。

建議你定制化修改 Artifact 工件集及其技術,使其滿足你的需求。盡管熟練的 C 程序員可以使用Artifact 工件集做更多事情,那些不是程序員但是樂于探索的人也可以使用 Artifact 工件集。比如,每當新版本發布時,主流的反病毒產品喜歡為 Cobalt Strike 的試用版中的可執行文件編寫簽名。直到Cobalt Strike 2.5版本,Cobalt Strike 的試用版和授權版都在其可執行文件和 DLL 中使用了命名管道技術。反病毒廠商就需要為可執行文件使用的命名管道字符串編寫簽名。擊敗它們的簽名,一次又一次的發布,就像在管道技術的源代碼中更改管道名稱一樣簡單。

0x03 Veil 規避框架

Veil 是一個流行的框架,用于生成可以通過某些防病毒產品的可執行文件。你可以使用 Veil 來為Cobalt Strike 的 payload 生成可執行文件。通過 Attacks → Packages → Payload Generator 。選擇你想要為其生成可執行文件的監聽器。選擇 Veil 作為輸出類型,按 Generate 按鈕來保存輸出文件。

啟動 Veil 規避框架并選擇你想要使用的技術。Veil 最終會詢問關于 shellcode 的生成選項。選擇 Veil的“使用自定義 shellcode”的選項,把 shellcode 粘貼在 Cobalt Strike 的 payload 生成器使用的文件內容中。按 Enter 鍵然后你就會獲得一個新鮮出爐的 Veil 制作的可執行文件。

在這里插入圖片描述

0x04 Java 小程序攻擊

Strategic Cyber 有限責任公司以小程序集的形式為 Cobalt Strike 的小程序攻擊發布源碼。這部分也可以在 Cobalt Strike 的武器庫中。通過 Help → Arsenal (武器庫)并下載小程序集。

使用包含的 build.sh 腳本來在 Kali Linux 上構建小程序集。很多 Cobalt Strike 的客戶使用這種靈活性來使用一個他們購買的代碼簽名的證書為 Cobalt Strike 的 Java 小程序攻擊簽名。我們也強烈推薦這種做法。

要使 Cobalt Strike 使用你的小程序集而不是內置的那個,加載包含在小程序集里面的 applet.cna 腳本。

在 Cobalt Strike 武器庫頁面上你會注意到 Power Applet (Powershell 小程序)。這是 Cobalt Strike的 Java 小程序攻擊使用 PowerShell 的替代實現,用于將 payload 注入內存。Power Applet 展示了你有使用完全不同的方法重建 Cobalt Strike 的標準攻擊并把它門用于 Cobalt Strike 的工作流中的靈活性。

通過加載小程序集中包含的 applet.cna 腳本,可以使 Cobalt Strike 使用你的小程序集而不是內置的那個。

0x05 資源集

資源集是 Cobalt Strike 改變其在工作流中使用的 HTA,Powershell,Python,VBA 和 VBA 腳本模板的方法。同樣,資源集在 Cobalt Strike 的武器庫中,可以被有注冊碼的用戶獲取。通過 Help →Arsenal 來下載資源集。

資源集的 README.txt 文檔記錄了包含的腳本和哪些功能使用它們。要規避一個產品,考慮這些腳本中的改變字符串或行為。

要使 Cobalt Strike 使用你的腳本模板而不是內置的腳本模板,加載資源集中的 resources.cna 腳本。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/380067.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/380067.shtml
英文地址,請注明出處:http://en.pswp.cn/news/380067.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【轉】企業開發的困境與變局

原文:企業開發的困境與變局 文 / 劉江 算起來,《程序員》已經有幾年時間沒有大篇幅討論企業軟件開發這個話題了。這其實挺奇怪的。要知道,按類別來分,國內從事企業軟件開發的技術人員是最多的,從CSDN和《程序員》聯合舉…

c# 類對象和實例對象_C#類和對象能力問題 套裝4

c# 類對象和實例對象1) What are the correct statements about given code snippets? using System;public class Example{virtual private int X;private int Y;static void Main(string[] args){Console.WriteLine("Hello World");}}Hello WorldHelloWorldSyntax…

linkBar組件學習--設置linkBar子項的豎直間距.

效果&#xff1a;代碼&#xff1a; <?xml version"1.0" encoding"utf-8"?><!--http://blog.flexexamples.com/2008/04/20/setting-the-vertical-spacing-between-items-in-a-linkbar-control-in-flex/ --><mx:Application xmlns:mx"…

AES算法

算法簡介 AES本質是一種對稱分組密碼體制&#xff0c;采用代替/置換網絡。每輪由三層組成&#xff1a;線性混合層確保多輪之上的高度擴散&#xff0c;非線性層由16個S盒并置起到混淆的作用&#xff0c;秘鑰加密層將子秘鑰異或到中間狀態。 AES加密數據塊和秘鑰長度可以是128比…

C——結構體

例題1&#xff1a;(使用結構體) 輸入兩個學生的學號、姓名和成績&#xff0c;輸出成績較高的學生的學號、姓名和成績 解題思路&#xff1a; (1)定義連個結構相同的結構體變量student1,student2; (2)分別輸入兩個學生的學號、姓名、和成績&#xff1b; (3)比較兩個學生的成…

web.config配置文件詳解

<?xml version"1.0"?> <!--注意: 除了手動編輯此文件以外&#xff0c;您還可以使用 Web 管理工具來配置應用程序的設置。可以使用 Visual Studio 中的“網站”->“Asp.Net 配置”選項。 設置和注釋的完整列表在 machine.config.comments 中&#xff0c…

離散數學群論_離散數學中的群論及其類型

離散數學群論半群 (Semigroup) An algebraic structure (G, *) is said to be a semigroup. If the binary operation * is associated in G i.e. if (a*b) *c a *(b*c) a,b,c e G. For example, the set of N of all natural number is semigroup with respect to the operat…

IDA使用方法-----1

0x01 啟動IDA new&#xff1a;反匯編一個新文件go&#xff1a;運行&#xff0c;直接進入IDAPrevious&#xff1a;載入一個我們以前編譯過的程序 如果不想每次都看到這個對話框&#xff0c;可以取消該對話框底部的Display at startup&#xff08;啟動時顯示&#xff09;&#x…

郵箱驗證JS代碼

方法一,用JSfunction finish_onclick() { var username document.getElementById("username");var pwhidden document.getElementById("pwhidden");if(username.value"") { alert("請填寫您的企業郵箱地址&#xff01;");username.f…

objdump命令詳解

objdump命令是用查看目標文件或者可執行的目標文件的構成的gcc工具。 選項 --archive-headers -a 顯示檔案庫的成員信息,類似ls -l將lib*.a的信息列出。 -b bfdname --targetbfdname 指定目標碼格式。這不是必須的&#xff0c;objdump能自動識別許多格式&#xff0c;比如…

Java——異常(try...catch...finally)

public class Demo5_Throwable {public static void main(String[] args) {try{System.out.println(1/0);}catch(Exception e){System.out.println(e.getMessage());//獲取異常信息,返回字符串&#xff1b;System.out.println(e.toString());//獲取異常類名和異常信息&#xff…

Python程序反轉給定數字(2種不同方式)

Take input number from the user and print its reverse. 從用戶處獲取輸入號碼并打印其反面。 Example: 例&#xff1a; Input:12345Output:54321Here, we are implementing program to reversing a given number using 2 different ways. 在這里&#xff0c;我們正在實施程…

外匯期貨學習專帖(轉)

一篇好文,值得深思! (轉) 我的一些所看所想,和大家聊聊 ; d: R ^6 c* A2 e X" y8 y4 Bhttp://www.fx998.cn 說來慚愧,很久以前,俺在期貨公司混事,95年以前國內期貨公司從外盤棉花到咖啡....,外匯期指到原油.都能*作.是一派欣欣向榮之景.95年之后,按國家規定都轉了內…

《Pro ASP.NET MVC 3 Framework》學習筆記之四【領域模型介紹】

主題&#xff1a;應用領域驅動開發(Applying Domain-Driven Development) Domain Model是MVC程序的"心臟"&#xff0c;其他的一切&#xff0c;包括Controllers和Views僅僅是用來跟Domain Model交互的一種方式&#xff0c;ASP.NET MVC并沒有限制使用在Domain Model上面…

Java——集合框架(List)

集合框架&#xff08;List的三個子類的特點&#xff09; A&#xff1a;List的三個子類的特點 ArrayList&#xff1a; 底層數據結構是數組&#xff0c;查詢快&#xff0c;增刪慢。 線程不安全&#xff0c;效率高。 Vector&#xff1a; 底層數據結構是數組&#xff0c;查詢…

一步一步學pwntools(適合新手)

序 pwntools是一個二進制利用框架。官方文檔提供了詳細的api規范。然而目前并沒有一個很好的新手教程。因此我用了我過去的幾篇writeup。由于本文只是用來介紹pwntools使用方法&#xff0c;我不會過于詳細的講解各種二進制漏洞攻擊技術。 Pwntools的“Hello World” 棧溢出無…

關于J2EE中死鎖問題的研究(1)

大多數重要的應用程序都涉及高度并發性和多個抽象層。并發性與資源爭用有關&#xff0c;并且是導致死鎖問題增多的因素之一。多個抽象層使隔離并修復死鎖環境的工作變得更加困難。 通常&#xff0c;當同時執行兩個或兩個以上的線程時&#xff0c;如果每個線程都占有一個資源并請…

python變量分配內存_Python | 聲明任何變量而不分配任何值

python變量分配內存Since, Python is a dynamic programming language so there is no need to declare such type of variable, it automatically declares when first time value assign in it. 由于Python是一種動態編程語言&#xff0c;因此無需聲明此類變量&#xff0c;它…

UVA 10004 - Bicoloring

模擬染色&#xff0c;因為只有兩種顏色&#xff0c;所以分別用 0、 1 代表這兩種顏色&#xff0c;然后從0開始深搜&#xff0c;如果 每個點都能染上色&#xff0c;且相鄰兩點的顏色不同&#xff0c;則符合要求。 #include<stdio.h>#include<string.h>#define MAXN …

標志寄存器:CF、PF、AF、ZF、SF、TF、DF、OF

注&#xff1a;下面說到的標志寄存器都是縮寫&#xff0c;C就是CF&#xff0c;其他也一樣 標志寄存器&#xff1a;C、P、A、Z、S、T、D、O的內容只會是0或1&#xff0c;0表示假&#xff0c;1表示真 O&#xff1a;溢出標志 一個寄存器如果存放的值超過所能表示的范圍&#xf…