具体的な攻撃方法は、「アカウントを取得」し、セキュリティ研究者を騙して悪意のあるコードを含む POC をダウンロードさせることで、コンパイル中に悪意のあるコマンドとコードをトリガーします。
TAG セキュリティ部門は、さまざまな企業や組織で脆弱性の研究開発に従事するセキュリティ研究者をターゲットに、Twitter などのソーシャル メディアを使用したソーシャル エンジニアリング攻撃を公表し、これを NSFOCUS Fuying Lab. が分析した結果、次のことが確認されました。このインシデントは、Lazarus 組織によるサイバーセキュリティ業界に対する標的型サイバー攻撃であり、より深い攻撃意図と行動がある可能性があると推測されています。 NSFOCUSの攻撃・対策技術研究チームM01N
チームも今回の事件について総合的な分析と判断を行った結果、この事件は「公然と板道路を建設し、密かに陳滄を横断する」という典型的なソーシャルエンジニアリング攻撃事件であると判断した。この事件で Lazarus 組織が使用した新しい間接コマンド実行攻撃手法が明らかになりました。Lazarus 組織は、朝鮮半島の APT 組織です。この組織は2007年から活動しており、韓国、中国、米国、インド、その他の国に対して長期にわたって攻撃を行ってきた。外国のセキュリティ会社の調査によると、Lazarus組織は2014年のソニー・ピクチャーズに対するハッカー攻撃、2016年のバングラデシュ銀行のデータ漏洩、米国の防衛請負業者、米国のエネルギー省、英国、韓国、その他のビットコインに関与していた。 2017年には取引所が攻撃されるなどの事件が起きた。 2017 年に世界中を席巻した最も悪名高いセキュリティ事件である「Wannacry」ランサムウェア ウイルスも、この組織の仕業である疑いがありました。
Lazarus 組織の攻撃者はセキュリティ研究者を装い、研究ブログと複数の Twitter アカウントを設立しました。これらの偽装アカウントのほとんどには、Web 開発、ブラウザの脆弱性マイニング、Windows カーネルのセキュリティ、さらにはCTF プレーヤー: ID タグがいくつか表示されるのを待ち、セキュリティ調査の最新情報を公開しながら、お互いにコメントしたり転送したりして影響力を拡大します。 さらに、彼らのブログ (https://blog.br0vvnn[.]Green Alliance Technologyio) では、複数の公開された脆弱性分析記事が公開されています。これには、次の訪問レビューも含まれます。セキュリティ研究者間のより高い信頼を築こうとする、情報のないセキュリティ研究者。
研究で一定の影響力を確立した後、攻撃者はコミュニケーションの対象となるセキュリティ研究者を積極的に探し出し、脆弱性研究におけるより深い協力と交流を望むことを表明します。その後、攻撃者は VisualStudio プロジェクト ファイルをセキュリティ研究者と共有します。このプロジェクト ファイルは明らかにいくつかの脆弱性の POC コードですが、密かに悪意のあるコマンドとコードが含まれており、ターゲットの研究者がコンパイルして実行してトリガーされるのを待っています。 。
https://mp.weixin.qq.com/s/7RwH5_h2rGn3MxGIngal6A
カスタム ビルド イベントを指定することで、ビルド開始前にコマンドを自動的に実行できますたとえば、ビルドを開始する前に
ビルドの開始前に .bat ファイルを実行することも、ビルドの開始後に新しいファイルをフォルダーにコピーすることもできます。ビルドが完了しました。
.bat ファイルを実行することも、
ビルドが完了した後に新しいファイルをフォルダーにコピーすることもできます。ビルド イベントは、ビルドが正常に完了した場合にのみ実行されます
ビルド プロセスのこれらのポイントまで、ビルド イベントは実行されません。例:
これを理解するのは難しくありません。
引き続き Microsoft ドキュメントの情報を確認すると、ビルド イベントには次の 3 種類のイベントがあることがわかります。コンパイル前にカスタマイズを実行するタスク
https://docs.microsoft.com/en-us/visualstudio/ide/specifying-custom-build-events-in-visual-studio?view=vs-2019
2.ビルド後のイベント コマンド ラインのリンク前イベント、リンク前にカスタム タスクを実行する
指定在构建开始之前要执行的所有命令,如果项目是最新的并且未触发任何构建,则预构建事件不会运行。
3.ビルド後のイベントを実行するビルド後のイベント。コンパイルが完了したら、カスタム タスクを実行します
指定在构建结束后要执行的所有命令
対応する XML 要素は Microsoft ドキュメントにも記載されています。興味のある学生は、Lazarus で自分で見てください
この組織ではアプリケーションに Visual Studio を使用しているため、アプリケーションのメソッドを再現しましょう:1. Visual Studio を開きます 2. 新しいプロジェクトを作成します
3. プロジェクトのプロパティを入力します上でわかるように、イベントには 3 種類あります##最初のイベントを見てみましょう
第一种可以直接执行命令行也可以执行宏代码:
这里简单复现一下,就不讨论宏代码的一个情况了。
在cobalt strike种直接生成powershell的恶意脚本。
把命令放在visual studio中
应用然后编译
可以看到直接上线。
接着是第二种情况,我的电脑性能较差,因此我没有使用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
以上がビルド イベント機能を使用してコードのレプリケーションを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。