溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

發(fā)布時(shí)間:2022-01-15 10:24:28 來(lái)源:億速云 閱讀:288 作者:柒染 欄目:網(wǎng)絡(luò)安全

本篇文章給大家分享的是有關(guān)如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn),小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。


TAG安全部門披露了一起利用推特等社交媒體針對(duì)不同公司和組織從事漏洞研究和開發(fā)的安全研究人員的社會(huì)工程學(xué)攻擊事件,經(jīng)綠盟科技伏影實(shí)驗(yàn)室分析,確認(rèn)此次事件為L(zhǎng)azarus組織針對(duì)網(wǎng)絡(luò)安全行業(yè)的一次針對(duì)性網(wǎng)絡(luò)攻擊,并猜測(cè)其可能有更深層次的攻擊意圖和行動(dòng)。綠盟科技攻擊對(duì)抗技術(shù)研究團(tuán)隊(duì)M01N
Team也針對(duì)此次事件展開了全面的分析研判,認(rèn)定本次事件是一個(gè)典型的“明修棧道、暗渡陳倉(cāng)”社會(huì)工程學(xué)攻擊事件,也將在文中揭秘該事件中Lazarus組織使用的一種新型間接命令執(zhí)行攻擊技術(shù)。

Lazarus組織是一支來(lái)自朝鮮半島的APT組織。該組織自2007年就開始活躍,長(zhǎng)期對(duì)韓國(guó)、中國(guó)、美國(guó)、印度等國(guó)家進(jìn)行攻擊活動(dòng)。據(jù)國(guó)外安全公司的調(diào)查顯示,Lazarus組織與2014年索尼影業(yè)遭黑客攻擊事件,2016
年孟加拉國(guó)銀行數(shù)據(jù)泄露事件,2017年美國(guó)國(guó)防承包商、美國(guó)能源部門及英國(guó)、韓國(guó)等比特幣交易所被攻擊等事件有關(guān)。2017年席卷全球的最臭名昭著的安全事件“Wannacry”勒索病毒也被懷疑是該組織所為。

具體的攻擊手法是”養(yǎng)號(hào)“,然后誘騙安全研究人員下載他們帶有惡意代碼的POC,在編譯的時(shí)候會(huì)觸發(fā)的惡意命令和代碼。

Lazarus組織的攻擊者偽裝成安全研究人員建立了一個(gè)研究博客和多個(gè)Twitter賬號(hào),這些偽裝賬號(hào)大都打上了Web開發(fā)、瀏覽器漏洞挖掘、Windows內(nèi)核安全甚至CTF選手等一些身份標(biāo)簽,并會(huì)發(fā)布一些安全研究動(dòng)態(tài),同時(shí)相互評(píng)論轉(zhuǎn)發(fā)來(lái)擴(kuò)大影響力。

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

另外他們的博客(https://blog.br0vvnn[.]
io)發(fā)表了多個(gè)已公開披露的漏洞分析文章,還包含一些不知情安全研究人員的來(lái)訪評(píng)論,以圖在安全研究人員中建立更高的信任度。
如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

在建立了一定的研究影響力后,攻擊者會(huì)主動(dòng)尋找目標(biāo)安全研究人員進(jìn)行交流,并表達(dá)希望在漏洞研究方面進(jìn)行更深入合作和交流的想法。此后攻擊者便會(huì)向安全研究人員分享了一個(gè)Visual
Studio的項(xiàng)目工程文件,該項(xiàng)目文件明為一些漏洞的POC代碼,暗則是包含了等待目標(biāo)研究員編譯執(zhí)行來(lái)觸發(fā)的惡意命令和代碼。

綠盟科技
https://mp.weixin.qq.com/s/7RwH5_h2rGn3MxGIngal6A

從綠盟科技的文章中我們可以知道事件的背景和一些信息。

我們從公開的報(bào)告中可以知道Lazarus組織的利用編譯事件(Build Events)的攻擊方法,接下來(lái)我們一起復(fù)現(xiàn)一下這個(gè)手法吧。

我們先來(lái)查看一下在微軟文檔中關(guān)于編譯事件(Build Events)的資料

By specifying a custom build event, you can automatically run commands
before a build starts or after it finishes. For example, you can run a
.bat file before a build starts or copy new files to a folder after
the build is complete. Build events run only if the build successfully
reaches those points in the build process.

https://docs.microsoft.com/en-us/visualstudio/ide/specifying-custom-build-events-in-visual-studio?view=vs-2019

微軟文檔中說(shuō)“通過指定自定義構(gòu)建事件,我們可以在構(gòu)建開始之前或構(gòu)建完成之后自動(dòng)運(yùn)行命令,僅當(dāng)構(gòu)建成功達(dá)到構(gòu)建過程中的那些點(diǎn)時(shí),構(gòu)建事件才會(huì)運(yùn)行”,例如:

可以在構(gòu)建開始之前運(yùn)行.bat文件,或者在構(gòu)建完成后將新文件復(fù)制到文件夾中。

這個(gè)不難理解。

我們繼續(xù)看微軟文檔中的資料可以知道Build Events具有3種事件,分別為:

1.Pre-build event command line 預(yù)先生成事件;在編譯前執(zhí)行自定義任務(wù)

指定在構(gòu)建開始之前要執(zhí)行的所有命令,如果項(xiàng)目是最新的并且未觸發(fā)任何構(gòu)建,則預(yù)構(gòu)建事件不會(huì)運(yùn)行。

2.Post-build event command line 預(yù)鏈接事件;在鏈接前執(zhí)行自定義任務(wù)

指定在構(gòu)建結(jié)束后要執(zhí)行的所有命令

3.Run the post-build event 后期生成事件;在編譯完成后執(zhí)行自定義任務(wù)

在這個(gè)中具有以下參數(shù):
選項(xiàng)                                結(jié)果
總是                            無(wú)論構(gòu)建是否成功,都會(huì)運(yùn)行構(gòu)建后事件。
成功構(gòu)建                            如果構(gòu)建成功,則將運(yùn)行構(gòu)建后事件。因此,只要構(gòu)建成功,該事件甚至將針對(duì)最新的項(xiàng)目運(yùn)行。
當(dāng)構(gòu)建更新項(xiàng)目輸出時(shí)     僅當(dāng)編譯器的輸出文件(.exe或.dll)不同于先前的編譯器輸出文件時(shí),才會(huì)運(yùn)行構(gòu)建后事件。因此,如果項(xiàng)目是最新的,則不會(huì)運(yùn)行構(gòu)建后事件。
https://docs.microsoft.com/en-us/visualstudio/ide/reference/build-events-page-project-designer-csharp?view=vs-2019

其中在微軟文檔中也給出了對(duì)應(yīng)的XML 元素,有興趣的同學(xué)可以自行看看

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

在Lazarus組織中是利用Visual Studio進(jìn)行利用的,那么我們來(lái)復(fù)現(xiàn)一下利用手法:

1.打開Visual Studio
2.新建一個(gè)項(xiàng)目
3.進(jìn)入項(xiàng)目的屬性

就可以看到了,正如上面看到的具有3種事件

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

我們來(lái)利用一下第一種事件看看

第一種可以直接執(zhí)行命令行也可以執(zhí)行宏代碼:

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

這里簡(jiǎn)單復(fù)現(xiàn)一下,就不討論宏代碼的一個(gè)情況了。

在cobalt strike種直接生成powershell的惡意腳本。

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

把命令放在visual studio中

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

應(yīng)用然后編譯

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

可以看到直接上線。

然后是第2種,電腦比較卡,所以我就不上線cobalt strike了,我們使用彈計(jì)算器來(lái)證明可利用吧

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

編譯

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

同理,第3種也是

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

我們也可以在項(xiàng)目文件中直接添加我們需要執(zhí)行的命令

打開項(xiàng)目目錄可以看到

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

其中以.vcxproj結(jié)尾的文件就是我們需要利用的文件。

*.vcxproj:VS2010以及VS2010之后版本的VS工程文件

這里使用notepad++打開,這個(gè)文件其實(shí)也是一個(gè)xml文件。

ok 我們直接查找PreBuildEvent,PreLinkEvent,PostBuildEvent這3個(gè)xml元素

這里以PreBuildEvent進(jìn)行利用

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

可以看到在PreBuildEvent 具有參數(shù),這里就是可以執(zhí)行命令的地方,

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

保存一下然后導(dǎo)進(jìn)vs中進(jìn)行編譯

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

這里再分享一個(gè)手法吧 我看到網(wǎng)上的分析文章都是說(shuō)PreBuildEvent,PreLinkEvent,PostBuildEvent這三個(gè)利用點(diǎn),都是其實(shí)還有一個(gè)的地方可以給我們利用

我們可以回看到.vcxproj文件,然后全局查找一下Command可以發(fā)現(xiàn)具有4個(gè)Command參數(shù),

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

除了3個(gè)我們說(shuō)過的之外,還有一個(gè)在中

添加我們需要執(zhí)行的命令

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

保存然后編譯一下,但是發(fā)現(xiàn)并不能成功利用,通過查看微軟文檔知道我們還需要構(gòu)建一個(gè)輸出叁數(shù)。

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

然后編譯,彈出計(jì)算機(jī)

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

圖形化的利用在

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

理論上所有的IDE都能這樣利用,我們可以看一下在Microsoft Visual中的利用過程吧

打開vc然后新建一個(gè)工程,在上面的工具欄找到工程然后是設(shè)置

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

在命令中填入我們需要執(zhí)行的命令

我這里就彈計(jì)算機(jī)吧 然后編譯成exe

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

在編譯的時(shí)就會(huì)執(zhí)行我們的命令。

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

當(dāng)然這個(gè)也有3種:

1.自定義構(gòu)建
2.pre-link步驟
3.Post-bulid步驟

在自定義步驟中的參數(shù)有2個(gè)
分別是命令和輸出

命令可以放我們的shellcode 輸出的話都可以的

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

同樣也是可以執(zhí)行我們的命令的

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

同理 post-bulid也是可以執(zhí)行命令的
如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

在后面翻資料的時(shí)候發(fā)現(xiàn)了一個(gè)有意思的文章

在前面的Visual Studio中我復(fù)現(xiàn)了這個(gè)APT的手法,我們可以再一次看微軟文檔發(fā)現(xiàn)在Visual Studio存在一個(gè)引擎--Microsoft Build Engine

The Microsoft Build Engine is a platform for building applications.
This engine, which is also known as MSBuild, provides an XML schema
for a project file that controls how the build platform processes and
builds software. Visual Studio uses MSBuild, but MSBuild doesn't
depend on Visual Studio. By invoking msbuild.exe on your project or
solution file, you can orchestrate and build products in environments
where Visual Studio isn't installed.

Visual Studio uses MSBuild to load and build managed projects. The
project files in Visual Studio (.csproj, .vbproj, .vcxproj, and
others) contain MSBuild XML code that executes when you build a
project by using the IDE. Visual Studio projects import all the
necessary settings and build processes to do typical development work,
but you can extend or modify them from within Visual Studio or by
using an XML editor.

不難理解,MSBuild可以在未安裝Visual Studio的環(huán)境中編排和構(gòu)建產(chǎn)品(可以簡(jiǎn)單理解為執(zhí)行可以代碼),而且Visual Studio使用MSBuild加載和生成托管項(xiàng)目。例如:Visual Studio中的項(xiàng)目文件.csproj,.vbproj,.vcxproj等,

在.NET Framework 4.0中支持了一項(xiàng)新功能”Inline Tasks”,被包含在元素UsingTask中,可用來(lái)在xml文件中執(zhí)行c#代碼

這里是不是看著很眼熟?哈哈哈

沒錯(cuò),前面我們?cè)趶?fù)現(xiàn)這個(gè)APT組織的手法中知道了我們那個(gè)利用點(diǎn)就是.vcxproj文件,那么我們可以脫離VS來(lái)進(jìn)行利用。

我們?nèi)ノ④浿邢螺dmsbuild.exe 當(dāng)然在.net中我們也能查找到

如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn)

利用起來(lái)也不難 在MSF中可以直接生成利用代碼

我們使用Microsoft
VisualStudio創(chuàng)建以MSBuild格式保存的、帶有*.csproj后綴的C#代碼,以便可以使用MSBuild平臺(tái)將其編譯為可執(zhí)行程序。借助于一個(gè)惡意的構(gòu)建的過程,我們可以獲得受害者計(jì)算機(jī)的反向shell。接下來(lái),我們要生成file.csproj文件,為此,首先需要通過msfvenom生成一個(gè)基于C#的shellcode。之后,將該shellcode放入我們的file.csproj中,具體如下所示。

具體的利用手法前輩們總結(jié)好了

https://www.cnblogs.com/backlion/p/10490573.html

這里補(bǔ)充一些利用手法吧

執(zhí)行powershell命令

這里參考3gstudent和Casey的手法,但是Casey給出的POC掛了,所以我們可以使用3gstudent的POC來(lái)進(jìn)行利用

https://github.com/3gstudent/msbuild-inline-task/blob/master/executes%20PowerShellCommands.xml

以上就是如何利用Build Events特性執(zhí)行代碼復(fù)現(xiàn),小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI