真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

從剖析CS木馬生成到開發(fā)免殺工具的過程是怎樣的

這篇文章將為大家詳細(xì)講解有關(guān)從剖析CS木馬生成到開發(fā)免殺工具的過程是怎樣的,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

創(chuàng)新互聯(lián)公司基于成都重慶香港及美國等地區(qū)分布式IDC機(jī)房數(shù)據(jù)中心構(gòu)建的電信大帶寬,聯(lián)通大帶寬,移動(dòng)大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)成都服務(wù)器托管報(bào)價(jià),主機(jī)托管價(jià)格性價(jià)比高,為金融證券行業(yè)服務(wù)器托管,ai人工智能服務(wù)器托管提供bgp線路100M獨(dú)享,G口帶寬及機(jī)柜租用的專業(yè)成都idc公司。

木馬是黑客實(shí)施網(wǎng)絡(luò)攻擊的常用兵器之一,有些木馬可以通過免殺技術(shù)的加持躲過殺毒軟件的查殺。本文旨在通過剖析CS木馬生成過程以及開發(fā)免殺工具,幫助大家更好地理解CS木馬的Artifact生成機(jī)制。

Cobaltstrike是用于紅隊(duì)行動(dòng)、APT攻擊模擬的軟件,它具備很強(qiáng)大的協(xié)同能力和難以置信的可擴(kuò)展性。

從剖析CS木馬生成到開發(fā)免殺工具的過程是怎樣的

無論是編寫 shellcode,創(chuàng)建自定義的 C2二進(jìn)制可執(zhí)行文件,還是修改代碼來隱藏惡意程序,它們都是紅隊(duì)日常工作的一部分,閱讀和理解成熟的C2框架代碼也是理所當(dāng)然的事情。

CobaltStrike是如何生成ShellCode的

CS是使用Swing進(jìn)行UI開發(fā)的,代碼中直接找對(duì)話框?qū)?yīng)操作類。

+ `aggressor\dialogs\WindowsExecutableDialog.class`

從剖析CS木馬生成到開發(fā)免殺工具的過程是怎樣的

可以看到很清晰的生成邏輯。

protected byte[] stager;

@Override
public void dialogAction(final ActionEvent actionEvent, final Map options) {
    this.options = options;
    this.stager = DialogUtils.getStager(options);
    if (this.stager.length == 0) {
        return;
    }
    final String string = options.get("output") + "";
    String s = "";
        if (string.indexOf("EXE") > -1) {
            s = "artifact.exe";
        }
        else if (string.indexOf("DLL") > -1) {
            s = "artifact.dll";
        }
        SafeDialogs.saveFile(null, s, this);
    }

通過 DialogUtils.getStager() 獲得生成的 stager 然后通過 saveFile 保存文件。

getStager() 方法調(diào)用了 aggressor\DataUtils.shellcode() ,而這里其實(shí)是Stagers的接口。

return Stagers.shellcode(s, "x86", b);

最終在 stagers\Stagers.shellcode() 根據(jù)監(jiān)聽器類型,

實(shí)例化了繼承自的 GenericStager 的 stagers\GenericHTTPStager 類,并由 generate() 生成shellcode

從剖析CS木馬生成到開發(fā)免殺工具的過程是怎樣的

shellcode生成時(shí),讀取了resources/httpstager.bin,并根據(jù)監(jiān)聽器的host和port等值組合為Packer

最終替換到多個(gè)X、Y占位的bin文件中,最后返回bytes[] 類型的shellcode

Patch Artifact

shellcode生成完成后,回到原點(diǎn),可以看到根據(jù)用戶的選擇,對(duì)不同的 artifact 模板進(jìn)行 patch ,以 x86 的模板為例,
繼續(xù)跟進(jìn) patchArtifact

new ArtifactUtils(this.client).patchArtifact(this.stager, "artifact32.exe", s);

+ `common\BaseArtifactUtils.class`

public byte[] patchArtifact(final byte[] array, final String s) {
    final Stack stack = new Stack();
    stack.push(SleepUtils.getScalar(array));
    stack.push(SleepUtils.getScalar(s));
    final String format = this.client.getScriptEngine().format("EXECUTABLE_ARTIFACT_GENERATOR", stack);
    if (format == null) {
        return this.fixChecksum(this._patchArtifact(array, s));
    }
    return this.fixChecksum(CommonUtils.toBytes(format));
}

稍微看一下 fixChecksum ,是通過 PE 編輯器修復(fù)了校驗(yàn)碼。

這里不贅述了,對(duì)編輯器實(shí)現(xiàn)感興趣的可以去看看 pe\PEEditor.class

final PEEditor peEditor = new PEEditor(array);
peEditor.updateChecksum();
return peEditor.getImage();

注意看這里 this._patchArtifact(array, s) ,調(diào)用了同名方法,PS:差點(diǎn)以為在看Python

從剖析CS木馬生成到開發(fā)免殺工具的過程是怎樣的

讀取了 resources 文件夾下的 artifact32.exe 作為模板文件,根據(jù)重復(fù)的1024個(gè) A 來定位shellcode 位置。

與生成shellcode時(shí)類似,使用common/CommonUtils.replaceAt()對(duì)bytes流轉(zhuǎn)為的字符串進(jìn)行編輯替換。

public static String replaceAt(final String s, final String s2, final int n) {
    final StringBuffer sb = new StringBuffer(s);
    sb.delete(n, n + s2.length());
    sb.insert(n, s2);
    return sb.toString();
}

使用16進(jìn)制編輯器可以直接看到用于標(biāo)志存放 shellcode 的位置。

從剖析CS木馬生成到開發(fā)免殺工具的過程是怎樣的

值得一提的是,替換shellcode之后的pe文件,因?yàn)閟hellcode長度沒有完全覆蓋到標(biāo)識(shí)的1024個(gè)A,一般生成的exe都會(huì)殘留部分字符,當(dāng)然這并不會(huì)影響shellcode的執(zhí)行。從剖析CS木馬生成到開發(fā)免殺工具的過程是怎樣的

Shellcode Launcher

利用加載器遠(yuǎn)程回連獲取下一階段 payload 加載到內(nèi)存中執(zhí)行以規(guī)避殺軟的探測(cè),這種 VirtualAlloc到 WriteProcessMemory 的分配內(nèi)存模式早已被眾多遠(yuǎn)控木馬軟件廣泛利用。

CS開發(fā)者在其最新的介紹視頻中披露了部分 artifact 的源碼,并演示了如何通過修改加載器繞過了Defender 的查殺。

他通過用 HeapAlloc 來代替 VitualAlloc ,躲避了大部分的殺軟。

從剖析CS木馬生成到開發(fā)免殺工具的過程是怎樣的

在這個(gè)基礎(chǔ)上,我們添加了對(duì)shellcode進(jìn)行異或加密的功能,顯然一個(gè)非常精簡的基于c++的shellcode加載器就成形了。

然后參考CS的方式,在本應(yīng)放置shellcode的buf中,置入大量重復(fù)的占位符作為定位。

python -c "print(1024*'A')"

用VisualStudio或MingW將其編譯為 template.exe

開發(fā)免殺小工具

然后新建一個(gè) JavaFx 的項(xiàng)目,樣式與部分代碼參考某chaos免殺小助手。

捋下流程,首先需要對(duì)CS或MSF的shellcode進(jìn)行預(yù)處理,然后進(jìn)行異或加密,讀取模板文件,定位到shellcode位置,進(jìn)行覆蓋,最后保存。

從剖析CS木馬生成到開發(fā)免殺工具的過程是怎樣的

有很多類直接可以從CS復(fù)制過來就能用。

從剖析CS木馬生成到開發(fā)免殺工具的過程是怎樣的

從剖析CS木馬生成到開發(fā)免殺工具的過程是怎樣的

重點(diǎn)看下xor,為了跟launcher解密一致,需要先轉(zhuǎn)換為int類型進(jìn)行異或,然后再轉(zhuǎn)回hex,最終打包為 jar

從剖析CS木馬生成到開發(fā)免殺工具的過程是怎樣的

生成veil類型的payload,復(fù)制粘貼,生成, 保存。從剖析CS木馬生成到開發(fā)免殺工具的過程是怎樣的從剖析CS木馬生成到開發(fā)免殺工具的過程是怎樣的

最終免殺效果取決于Launcher模板,作為一個(gè)非常精簡、沒什么改動(dòng)的模板,效果已經(jīng)出乎意料了。

畢竟目的并非追求免殺效果,而應(yīng)注重于理解CS木馬的Artifact生成機(jī)制。

關(guān)于從剖析CS木馬生成到開發(fā)免殺工具的過程是怎樣的就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。


當(dāng)前標(biāo)題:從剖析CS木馬生成到開發(fā)免殺工具的過程是怎樣的
網(wǎng)頁地址:http://weahome.cn/article/jesoig.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部