Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So verwenden Sie die Funktion „Build-Ereignisse“, um eine Codereplikation durchzuführen

So verwenden Sie die Funktion „Build-Ereignisse“, um eine Codereplikation durchzuführen

WBOY
WBOYnach vorne
2023-05-25 20:41:001106Durchsuche


TAG Die Sicherheitsabteilung hat einen Social-Engineering-Angriff über soziale Medien wie Twitter aufgedeckt, der sich an Sicherheitsforscher richtete, die in verschiedenen Unternehmen und Organisationen an Schwachstellenforschung und -entwicklung beteiligt waren. Nach einer Analyse durch das NSFOCUS Fuying Laboratory wurde bestätigt, dass der Vorfall von Lazarus organisiert wurde gezielter Cyberangriff auf die Cybersicherheitsbranche und spekulierte, dass es möglicherweise tiefergehende Angriffsabsichten und -handlungen gibt. Das Angriffs- und Gegenmaßnahmentechnologie-Forschungsteam M01N
Team von NSFOCUS führte auch eine umfassende Analyse und Beurteilung dieses Vorfalls durch und stellte fest, dass es sich bei diesem Vorfall um einen typischen Social-Engineering-Angriffsvorfall handelte, bei dem „offen Plankenstraßen gebaut und Chencang heimlich überquert“ wurden Geheimnisse dieses Vorfalls in diesem Artikel Eine neue indirekte Befehlsausführungsangriffstechnik, die von der Lazarus-Organisation bei dem Vorfall verwendet wurde.

Die Lazarus-Organisation ist eine APT-Organisation von der koreanischen Halbinsel. Die Organisation ist seit 2007 aktiv und führt seit langem Angriffe auf Südkorea, China, die USA, Indien und andere Länder durch. Untersuchungen ausländischer Sicherheitsunternehmen zufolge war die Lazarus-Organisation an dem Hackerangriff auf Sony Pictures im Jahr 2014, dem Datenleck der Bangladesh Bank im Jahr 2016, dem US-Rüstungsunternehmen, dem US-Energieministerium und Bitcoin-Börsen im Vereinigten Königreich und im Süden beteiligt Korea im Jahr 2017. Anschläge und andere Vorfälle. Auch der berüchtigtste Sicherheitsvorfall, der die Welt im Jahr 2017 erfasste, der Ransomware-Virus „Wannacry“, wurde vermutlich auf das Werk dieser Organisation zurückgeführt.

Die spezifische Angriffsmethode besteht darin, „Konten zu erstellen“ und dann Sicherheitsforscher dazu zu verleiten, ihren POC mit bösartigem Code herunterzuladen, der bei der Kompilierung bösartige Befehle und Codes auslöst.

Die Angreifer der Lazarus-Organisation gaben sich als Sicherheitsforscher aus und richteten einen Forschungsblog und mehrere Twitter-Konten ein. Die meisten dieser getarnten Konten waren mit Identitäts-Tags wie Webentwicklung, Browser-Schwachstellen-Mining, Windows-Kernel-Sicherheit und sogar CTF gekennzeichnet Teilnehmer und werden einige Aktualisierungen der Sicherheitsforschung veröffentlichen und sich gegenseitig kommentieren und weiterleiten, um den Einfluss zu erweitern.

如何利用Build Events特性执行代码复现

Darüber hinaus hat ihr Blog (https://blog.br0vvnn[.]

io) mehrere öffentlich veröffentlichte Artikel zur Schwachstellenanalyse veröffentlicht und enthält auch Kommentare von einigen uninformierten Sicherheitsforschern, um den Aufbau von größerem Vertrauen in der Sicherheit zu veranschaulichen Forscher.

如何利用Build Events特性执行代码复现

Nachdem Angreifer einen gewissen Einfluss auf die Forschung aufgebaut haben, suchen sie aktiv nach der Kommunikation mit den Sicherheitsforschern ihrer Zielgruppe und äußern ihren Wunsch nach einer vertieften Zusammenarbeit und einem intensiveren Austausch bei der Schwachstellenforschung. Anschließend gibt der Angreifer eine Visual

Studio-Projektdatei an Sicherheitsforscher weiter. Bei der Projektdatei handelt es sich eindeutig um POC-Code für einige Schwachstellen, sie enthält jedoch insgeheim bösartige Befehle und Codes, die darauf warten, dass der Zielforscher kompiliert und ausgeführt wird.

NSFOCUS Technology

https://mp.weixin.qq.com/s/7RwH5_h2rGn3MxGIngal6A

Aus dem Artikel von NSFOCUS Technology können wir den Hintergrund und einige Informationen des Vorfalls erfahren.

Aus öffentlichen Berichten kennen wir die Angriffsmethode der Lazarus-Organisation mithilfe von Build Events. Lassen Sie uns diese Methode gemeinsam reproduzieren.

Schauen wir uns zunächst die Informationen zu Build-Ereignissen (Build Events) in der Microsoft-Dokumentation an

Durch die Angabe eines benutzerdefinierten Build-Ereignisses können Sie automatisch Befehle ausführen

bevor ein Build startet oder nachdem er abgeschlossen ist. Sie können beispielsweise einen ausführen
.bat-Datei vor dem Start eines Builds oder Kopieren neuer Dateien in einen Ordner, nachdem der Build abgeschlossen ist. Build-Ereignisse werden nur ausgeführt, wenn der Build diese Punkte im Build-Prozess erfolgreich erreicht. In der Microsoft-Dokumentation heißt es: „Durch Angabe von „custom“. Build-Ereignisse können wir automatisch Befehle ausführen, bevor der Build startet oder nachdem der Build abgeschlossen ist. Die Build-Ereignisse werden nur ausgeführt, wenn der Build diese Punkte im Build-Prozess erfolgreich erreicht“, zum Beispiel:

kann vor dem Start des Builds ausgeführt werden .bat-Datei oder kopieren Sie die neue Datei in den Ordner, nachdem der Build abgeschlossen ist.

Das ist nicht schwer zu verstehen.

Wir sehen uns weiterhin die Informationen in Microsoft-Dokumenten an und können sehen, dass Build Events drei Arten von Ereignissen hat:

1. Die Befehlszeile für Pre-Build-Ereignisse generiert vorab benutzerdefinierte Aufgaben vor der Kompilierung.

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

2.Befehlszeilen-Pre-Link-Ereignis für Post-Build-Ereignisse; Führen Sie benutzerdefinierte Aufgaben vor dem Verknüpfen aus Microsoft-Dokumentation Interessierte Schüler können sich die entsprechenden XML-Elemente selbst ansehen

In der Lazarus-Organisation wird Visual Studio verwendet, also reproduzieren wir die Verwendungsmethode:

1 Erstellen Sie ein Neues Projekt

3. Geben Sie die Eigenschaften des Projekts ein

und Sie werden es sehen. Wie Sie oben sehen können, gibt es drei Arten von Ereignissen. Werfen wir einen Blick auf das erste Ereignis

第一种可以直接执行命令行也可以执行宏代码:

如何利用Build Events特性执行代码复现

这里简单复现一下,就不讨论宏代码的一个情况了。

在cobalt strike种直接生成powershell的恶意脚本。

如何利用Build Events特性执行代码复现

把命令放在visual studio中

如何利用Build Events特性执行代码复现

应用然后编译

如何利用Build Events特性执行代码复现

可以看到直接上线。

接着是第二种情况,我的电脑性能较差,因此我没有使用cobalt strike上线,我们使用弹计算器来验证可利用性

如何利用Build Events特性执行代码复现

编译

如何利用Build Events特性执行代码复现

同理,第3种也是

如何利用Build Events特性执行代码复现

我们也可以在项目文件中直接添加我们需要执行的命令

打开项目目录可以看到

如何利用Build Events特性执行代码复现

其中以.vcxproj结尾的文件就是我们需要利用的文件。

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

这里使用notepad++打开,这个文件其实也是一个xml文件。

ok 我们直接查找PreBuildEvent,PreLinkEvent,PostBuildEvent这3个xml元素

这里以PreBuildEvent进行利用

如何利用Build Events特性执行代码复现

可以看到在PreBuildEvent 具有参数,这里就是可以执行命令的地方,

如何利用Build Events特性执行代码复现

保存一下然后导进vs中进行编译

如何利用Build Events特性执行代码复现

这里再分享一个手法吧 我看到网上的分析文章都是说PreBuildEvent,PreLinkEvent,PostBuildEvent这三个利用点,都是其实还有一个的地方可以给我们利用

我们可以回看到.vcxproj文件,然后全局查找一下Command可以发现具有4个Command参数,

如何利用Build Events特性执行代码复现

除了3个我们说过的之外,还有一个在中

添加我们需要执行的命令

如何利用Build Events特性执行代码复现

保存然后编译一下,但是发现并不能成功利用,通过查看微软文档知道我们还需要构建一个输出叁数。

如何利用Build Events特性执行代码复现

然后编译,弹出计算机

如何利用Build Events特性执行代码复现

图形化的利用在

如何利用Build Events特性执行代码复现

理论上所有的IDE都能这样利用,我们可以看一下在Microsoft Visual中的利用过程吧

打开vc然后新建一个工程,在上面的工具栏找到工程然后是设置

如何利用Build Events特性执行代码复现

如何利用Build Events特性执行代码复现

在命令中填入我们需要执行的命令

我这里就弹计算机吧 然后编译成exe

如何利用Build Events特性执行代码复现

在编译的时就会执行我们的命令。

如何利用Build Events特性执行代码复现

当然这个也有3种:

1.自定义构建
2.pre-link步骤
3.Post-bulid步骤

在自定义步骤中的参数有2个
分别是命令和输出

命令可以放我们的shellcode 输出的话都可以的

如何利用Build Events特性执行代码复现

同样也是可以执行我们的命令的

如何利用Build Events特性执行代码复现

同理 post-bulid也是可以执行命令的
如何利用Build Events特性执行代码复现

在后面翻资料的时候发现了一个有意思的文章

在前面的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中我们也能查找到

如何利用Build Events特性执行代码复现

利用起来也不难 在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

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Funktion „Build-Ereignisse“, um eine Codereplikation durchzuführen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen