您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關如何利用Build Events特性執行代碼復現,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
TAG安全部門披露了一起利用推特等社交媒體針對不同公司和組織從事漏洞研究和開發的安全研究人員的社會工程學攻擊事件,經綠盟科技伏影實驗室分析,確認此次事件為Lazarus組織針對網絡安全行業的一次針對性網絡攻擊,并猜測其可能有更深層次的攻擊意圖和行動。綠盟科技攻擊對抗技術研究團隊M01N
Team也針對此次事件展開了全面的分析研判,認定本次事件是一個典型的“明修棧道、暗渡陳倉”社會工程學攻擊事件,也將在文中揭秘該事件中Lazarus組織使用的一種新型間接命令執行攻擊技術。Lazarus組織是一支來自朝鮮半島的APT組織。該組織自2007年就開始活躍,長期對韓國、中國、美國、印度等國家進行攻擊活動。據國外安全公司的調查顯示,Lazarus組織與2014年索尼影業遭黑客攻擊事件,2016
年孟加拉國銀行數據泄露事件,2017年美國國防承包商、美國能源部門及英國、韓國等比特幣交易所被攻擊等事件有關。2017年席卷全球的最臭名昭著的安全事件“Wannacry”勒索病毒也被懷疑是該組織所為。
具體的攻擊手法是”養號“,然后誘騙安全研究人員下載他們帶有惡意代碼的POC,在編譯的時候會觸發的惡意命令和代碼。
Lazarus組織的攻擊者偽裝成安全研究人員建立了一個研究博客和多個Twitter賬號,這些偽裝賬號大都打上了Web開發、瀏覽器漏洞挖掘、Windows內核安全甚至CTF選手等一些身份標簽,并會發布一些安全研究動態,同時相互評論轉發來擴大影響力。
另外他們的博客(https://blog.br0vvnn[.]
io)發表了多個已公開披露的漏洞分析文章,還包含一些不知情安全研究人員的來訪評論,以圖在安全研究人員中建立更高的信任度。在建立了一定的研究影響力后,攻擊者會主動尋找目標安全研究人員進行交流,并表達希望在漏洞研究方面進行更深入合作和交流的想法。此后攻擊者便會向安全研究人員分享了一個Visual
Studio的項目工程文件,該項目文件明為一些漏洞的POC代碼,暗則是包含了等待目標研究員編譯執行來觸發的惡意命令和代碼。
綠盟科技
https://mp.weixin.qq.com/s/7RwH5_h2rGn3MxGIngal6A
從綠盟科技的文章中我們可以知道事件的背景和一些信息。
我們從公開的報告中可以知道Lazarus組織的利用編譯事件(Build Events)的攻擊方法,接下來我們一起復現一下這個手法吧。
我們先來查看一下在微軟文檔中關于編譯事件(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
微軟文檔中說“通過指定自定義構建事件,我們可以在構建開始之前或構建完成之后自動運行命令,僅當構建成功達到構建過程中的那些點時,構建事件才會運行”,例如:
可以在構建開始之前運行.bat文件,或者在構建完成后將新文件復制到文件夾中。
這個不難理解。
我們繼續看微軟文檔中的資料可以知道Build Events具有3種事件,分別為:
1.Pre-build event command line 預先生成事件;在編譯前執行自定義任務
指定在構建開始之前要執行的所有命令,如果項目是最新的并且未觸發任何構建,則預構建事件不會運行。
2.Post-build event command line 預鏈接事件;在鏈接前執行自定義任務
指定在構建結束后要執行的所有命令
3.Run the post-build event 后期生成事件;在編譯完成后執行自定義任務
在這個中具有以下參數: 選項 結果 總是 無論構建是否成功,都會運行構建后事件。 成功構建 如果構建成功,則將運行構建后事件。因此,只要構建成功,該事件甚至將針對最新的項目運行。 當構建更新項目輸出時 僅當編譯器的輸出文件(.exe或.dll)不同于先前的編譯器輸出文件時,才會運行構建后事件。因此,如果項目是最新的,則不會運行構建后事件。 https://docs.microsoft.com/en-us/visualstudio/ide/reference/build-events-page-project-designer-csharp?view=vs-2019
其中在微軟文檔中也給出了對應的XML 元素,有興趣的同學可以自行看看
在Lazarus組織中是利用Visual Studio進行利用的,那么我們來復現一下利用手法:
1.打開Visual Studio
2.新建一個項目
3.進入項目的屬性
就可以看到了,正如上面看到的具有3種事件
我們來利用一下第一種事件看看
第一種可以直接執行命令行也可以執行宏代碼:
這里簡單復現一下,就不討論宏代碼的一個情況了。
在cobalt strike種直接生成powershell的惡意腳本。
把命令放在visual studio中
應用然后編譯
可以看到直接上線。
然后是第2種,電腦比較卡,所以我就不上線cobalt strike了,我們使用彈計算器來證明可利用吧
編譯
同理,第3種也是
我們也可以在項目文件中直接添加我們需要執行的命令
打開項目目錄可以看到
其中以.vcxproj結尾的文件就是我們需要利用的文件。
*.vcxproj:VS2010以及VS2010之后版本的VS工程文件
這里使用notepad++打開,這個文件其實也是一個xml文件。
ok 我們直接查找PreBuildEvent,PreLinkEvent,PostBuildEvent這3個xml元素
這里以PreBuildEvent進行利用
可以看到在PreBuildEvent 具有參數,這里就是可以執行命令的地方,
保存一下然后導進vs中進行編譯
這里再分享一個手法吧 我看到網上的分析文章都是說PreBuildEvent,PreLinkEvent,PostBuildEvent這三個利用點,都是其實還有一個的地方可以給我們利用
我們可以回看到.vcxproj文件,然后全局查找一下Command可以發現具有4個Command參數,
除了3個我們說過的之外,還有一個在中
添加我們需要執行的命令
保存然后編譯一下,但是發現并不能成功利用,通過查看微軟文檔知道我們還需要構建一個輸出叁數。
然后編譯,彈出計算機
圖形化的利用在
理論上所有的IDE都能這樣利用,我們可以看一下在Microsoft Visual中的利用過程吧
打開vc然后新建一個工程,在上面的工具欄找到工程然后是設置
在命令中填入我們需要執行的命令
我這里就彈計算機吧 然后編譯成exe
在編譯的時就會執行我們的命令。
當然這個也有3種:
1.自定義構建
2.pre-link步驟
3.Post-bulid步驟
在自定義步驟中的參數有2個
分別是命令和輸出
命令可以放我們的shellcode 輸出的話都可以的
同樣也是可以執行我們的命令的
同理 post-bulid也是可以執行命令的
在后面翻資料的時候發現了一個有意思的文章
在前面的Visual Studio中我復現了這個APT的手法,我們可以再一次看微軟文檔發現在Visual Studio存在一個引擎--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的環境中編排和構建產品(可以簡單理解為執行可以代碼),而且Visual Studio使用MSBuild加載和生成托管項目。例如:Visual Studio中的項目文件.csproj,.vbproj,.vcxproj等,
在.NET Framework 4.0中支持了一項新功能”Inline Tasks”,被包含在元素UsingTask中,可用來在xml文件中執行c#代碼
這里是不是看著很眼熟?哈哈哈
沒錯,前面我們在復現這個APT組織的手法中知道了我們那個利用點就是.vcxproj文件,那么我們可以脫離VS來進行利用。
我們去微軟中下載msbuild.exe 當然在.net中我們也能查找到
利用起來也不難 在MSF中可以直接生成利用代碼
我們使用Microsoft
VisualStudio創建以MSBuild格式保存的、帶有*.csproj后綴的C#代碼,以便可以使用MSBuild平臺將其編譯為可執行程序。借助于一個惡意的構建的過程,我們可以獲得受害者計算機的反向shell。接下來,我們要生成file.csproj文件,為此,首先需要通過msfvenom生成一個基于C#的shellcode。之后,將該shellcode放入我們的file.csproj中,具體如下所示。
具體的利用手法前輩們總結好了
https://www.cnblogs.com/backlion/p/10490573.html
這里補充一些利用手法吧
執行powershell命令
這里參考3gstudent和Casey的手法,但是Casey給出的POC掛了,所以我們可以使用3gstudent的POC來進行利用
https://github.com/3gstudent/msbuild-inline-task/blob/master/executes%20PowerShellCommands.xml
以上就是如何利用Build Events特性執行代碼復現,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。