【技術(shù)分享】如何使用C#加密攻擊載荷來(lái)繞過(guò)殺毒軟件
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
譯者:興趣使然的小胃 一、前言 曾經(jīng)有人問(wèn)過(guò)我,如何繞過(guò)所有的殺毒軟件? 我的回答是:非常簡(jiǎn)單。但這是一種秘密技術(shù),大多數(shù)滲透測(cè)試者或黑客永遠(yuǎn)都不會(huì)與他人共享。他們與我一樣有各種各樣的理由,但最大的原因在于,一旦技術(shù)公開,殺軟公司很快就會(huì)檢測(cè)并封殺這種技術(shù)。在本文中,我想跟大家分享一種C#編程及加密方法,可以繞過(guò)所有殺軟。 在介紹具體細(xì)節(jié)之前,我想先提供一下本文用到的C#源代碼。 http://github.com/DamonMohammadbagher/NativePayloadReversetcp 如果你對(duì)滲透測(cè)試、Kali Linux以及Metasploit后門載荷比較熟悉,你也掌握一定的編程技術(shù),那么閱讀本文后,你可以在互聯(lián)網(wǎng)上找到更多源代碼完成這一任務(wù)。 首先:你需要了解反病毒軟件以及基于特征的應(yīng)用(如反病毒軟件)。 其次:你需要了解基于Linux的系統(tǒng)以及用于滲透測(cè)試的Kali Linux或其他Linux操作系統(tǒng)。 最后:你需要了解Windows編程技術(shù),本文中為C# .Net編程技術(shù)。 在本文中,我主要介紹的是C#編程技術(shù),受篇幅所限,我無(wú)法在一篇文章里面面面俱到。 請(qǐng)記?。合胍@過(guò)安全防御工具(如反病毒軟件或者防火墻)的每個(gè)滲透測(cè)試團(tuán)隊(duì)或者紅隊(duì)都需要了解如何在Layer 7層(即應(yīng)用層)繞過(guò)這些應(yīng)用,這一點(diǎn)在Whitehat或者滲透測(cè)試項(xiàng)目、黑帽攻擊中非常重要,如果你的團(tuán)隊(duì)或者你個(gè)人掌握多種殺軟繞過(guò)技術(shù),顯然就掌握足夠的先機(jī)。另外我想強(qiáng)調(diào)的是,這一點(diǎn)實(shí)現(xiàn)起來(lái)并不困難。 二、技術(shù)細(xì)節(jié) 這一部分我會(huì)向大家介紹如何一步一步使用C#加密載荷繞過(guò)反病毒軟件。 步驟1: 我在Kali Linux里面制作了一個(gè)C類型的后門載荷,其十六進(jìn)制格式如下圖所示。之所以使用“reverse_tcp(反彈型tcp)”載荷,原因在于這種載荷最容易繞過(guò)禁止入站連接的防火墻。
步驟2: 你應(yīng)該使用“異或(XOR)”算法或其他加密算法,至少完成一次載荷加密。 比如,我寫了個(gè)簡(jiǎn)單的C#應(yīng)用,使用加密算法來(lái)完成加密,類似的源碼還有非常多,我們不用擔(dān)心代碼源。 如上圖所示,我使用VS.NET 2015來(lái)開發(fā)C#代碼,但所有版本的VS.NET都支持這一代碼。 上圖中,你會(huì)發(fā)現(xiàn)一個(gè)名為payload.txt的文本文件,這個(gè)文件就是我在步驟1中使用msfvenom工具生成的載荷。 在步驟2中,你應(yīng)該使用payload.txt文件中的內(nèi)容替換代碼中的載荷變量{0xfc , ….}。 步驟3: 程序的輸出如下圖所示,加密后的載荷也會(huì)一同輸出。
如上圖所示,我們的加密載荷開頭為“217,119,88….,82,12,210”?,F(xiàn)在我們手頭上已經(jīng)有一個(gè)加密載荷,你可以在backdoor.exe文件中放心使用這個(gè)載荷,因?yàn)榉床《拒浖o(wú)法檢測(cè)這種載荷,只有你掌握了加密或解密載荷的密鑰。 步驟4: 現(xiàn)在我們需要一段C#代碼來(lái)在目標(biāo)主機(jī)上執(zhí)行這段加密載荷。 如下圖所示,我使用這一段C#代碼來(lái)執(zhí)行加密后的載荷,在源碼中,我們需要將Payload_Encrypted變量替換為步驟3中生成的加密后的載荷,此外,我們需要將KEY值替換為步驟2中使用的那個(gè)密鑰值。 請(qǐng)注意:你在步驟2以及步驟4中使用的KEY值應(yīng)該一致,因?yàn)榧用苊荑€以及解密密鑰是同一個(gè)密鑰。
在這段源碼中,我會(huì)根據(jù)命令行中的參數(shù)來(lái)生成加密載荷,所以我可以在命令行中輸入字符串形式的加密載荷,執(zhí)行這個(gè)exe程序,如下圖所示。 執(zhí)行程序的命令如下: dos C:> backdoor.exe “217,119,88,…….,82,12,210” 此時(shí),加密后的載荷會(huì)解密并在目標(biāo)主機(jī)的內(nèi)存中運(yùn)行,如果上述步驟均順利完成,那么你就可以在攻擊端的Kali Linux系統(tǒng)中收到一個(gè)meterpreter會(huì)話,如下圖所示:
如下圖所示,我的反病毒軟件沒(méi)有檢測(cè)到這個(gè)使用了加密載荷的后門:
事實(shí)上所有的反病毒軟件都無(wú)法檢測(cè)這種后門,檢測(cè)結(jié)果如下圖所示:
其實(shí)我開發(fā)了一個(gè)取證工具,可以實(shí)時(shí)檢測(cè)內(nèi)存中的Meterpreter載荷。使用這種實(shí)時(shí)掃描工具,你可以在內(nèi)存中發(fā)現(xiàn)這個(gè)后門,工具下載鏈接如下: http://github.com/DamonMohammadbagher/MeterpreterPayloadDetection 三、參考資料 [1] 使用DNS傳輸后門繞過(guò)反病毒軟件。http://www.linkedin.com/pulse/bypassing-anti-viruses-transfer-backdoor-payloads-dns-mohammadbagher [2] 反病毒軟件以及基于特征的檢測(cè)方法的不足(使用NativePayloadReversetcp 2.0版再次繞過(guò)反病毒軟件)。http://www.linkedin.com/pulse/antivirus-signature-based-detection-methods-doesnt-mohammadbagher?trk=pulse_spock-articles [3] 如何通過(guò)掃描內(nèi)存發(fā)現(xiàn)無(wú)法檢測(cè)到的Meterpreter載荷。http://www.linkedin.com/pulse/detecting-meterpreter-undetectable-payloads-scanning-mohammadbagher?published=t 本文翻譯自linkedin.com 原文鏈接。如若轉(zhuǎn)載請(qǐng)注明出處。
該文章在 2024/4/17 18:34:00 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |