逆向CS生成的exe馬

2021-10-20 17:59:20 字數 2564 閱讀 8315

cobalt strike(以下簡稱cs)是紅隊在滲透攻擊中的一款神器,使用穩定,功能全面。本文是對cs生成的exe檔案進行分析,看看cs生成的木馬有什麼高明之處。

工具準備:cobalt strike

idax32dbg

exeinfope

cs能生成的木馬有很多種,如下圖所示:

這裡我不一一介紹,有興趣的同學自行去研究。我們這裡先選擇windows executable

注:windows executable     生成可執行的分段payload

windows executable(s) 生成可執行的不分段payload

生成之後我們會得到乙個exe檔案,這是我們今天進行逆向的主角。

cs生成的exe其實是乙個loder,也就是載入器,載入器載入裡面的shellcode來執行主要功能,所以我們進行逆向分析的時候也分成兩個步驟:外層loder分析和內層shellcode分析。

我們先用exeinfope對檔案進行簡單了解

無殼。接下來扔進ida進行靜態分析。

main函式這裡呼叫了兩個函式之後呼叫了乙個sleep,跟進27f0發現沒什麼東西,我們直接看1840

pipe是關鍵字,呼叫sprintf函式,拼接乙個管道名。接下來建立了乙個執行緒,進入建立的執行緒1713裡看看

帶著兩個引數進入1648,接著看

這就是乙個標準的建立管道的乙個過程,重點我們關注一下writefile那裡,向管道寫入,寫的就是我們的傳參,這應該就是加密之前的shellcode。

接下來返回到1840

返回時進入了17e2

先分配乙個空間,然後進入1732

標準的從管道讀,讀的東西就是我們剛才寫進的東西。再看158e

先開闢空間,然後將我們剛才讀出來的東西與4個迴圈數進行異或(經過多次除錯,發現這四個數每次都是不一樣的),最後得到一串解密後的資料,我們有理由猜測,這解密後的資料就應該是執行的shellcode,最後開啟執行緒執行shellcode。當然,光猜是不行的,我們要進行動態除錯到記憶體裡去抓抓看。接下來開啟x32dbg進行動態除錯。

我們跟進到40158e裡

異或之後的資料儲存到了ds:[edi+ecx],我們到記憶體裡跟一下

我們可以這是乙個非常典型的pe檔案,也就是外層載入器載入了乙個dll檔案,這個dll檔案應該是cs馬實現功能的主要地方。

至此,我們外層的載入器分析告一段落。

進入到startaddress函式裡,有乙個jmp eax,會直接跳到我們剛才讀出來的dll,它裡面的函式是這樣的

第乙個call不用太看,call ebx大概看了一下,開闢了一段空間,把這一段的資料寫進去,然後下乙個call eax轉到另乙個地方開始執行,這個地方就是我們dll的入口點了。

一點點往裡跟蹤,看看我們能不能找到有什麼有用的資訊

網路請求行為:

設定休眠:

這裡跟了一下,發現有個sleep函式,應該是與預設心跳有關那裡。

操作相關:

注意這裡,我們有乙個internetreadfile,把返回值讀到eax裡,這個地方就是判斷你輸入了什麼指令,對應這幾種情況

程式的大體邏輯就是這樣。

至此,我們已經對cs馬的執行邏輯有了基本的了解。

當然,我們只是分析了一種的情況,分段的馬外層是一樣的,但內層有區別,我們簡單看一下,

首先看一下解密後的shellcode

很明顯和之前不一樣了

迴圈的在獲取api

發起請求,用virtualalloc開闢一段空間,然後不斷的用internetreadfile讀取檔案,最後得到的dll就和上面的差不多了。

經過分析我們發現,cs的馬主要的乙個載入方式是用載入器解密shellcode,然後執行dll,所有主要功能都在dll裡面,理論上載入器我們可以隨意更換的。

生成python程式的exe檔案

pyinstaller f py生成單個exe檔案。閃過一堆提示後,程式放在dist資料夾下面,然後我使用cmd控制台切換到dist路徑,執行exe檔案,提示缺少package,比如six。我開啟python命令列,輸入import six,一切正常。然後我輸入 pyinstaller f py w...

縮小vs生成的exe檔案

在做讓mcu程式顯示自身crc值的同時,也要做乙個校驗碼軟體,用來計算其crc值。在用vs2012中的mfc製作這個小工具的時候,生成的檔案非常大 3 4mb 明明裡面沒啥大型的東西,怎麼會占用那麼多尺寸呢?用壓縮軟體開啟生成的exe檔案,發現裡面嵌入了大量的png資源。解決方法 步驟1 開啟 st...

mybatis逆向工程生成的Example類的使用

在example 除了這有的以外 and or,還有聯表查詢,批量增刪改?這些怎麼寫?通過criteria構造查詢條件 userexample userexample new userexample userexample.setorderbyclause username asc asc公升序,d...