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


本篇文章给大家分享的是有关如何利用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.微软文档中说“通过指定自定义构建事件,我们可以在构建开始之前或构建完成之后自动运行命令,仅当构建成功达到构建过程中的那些点时,构建事件才会运行”,例如:可以在构建开始之前运行.bat文件,或者在构建完成后将新文件复制到文件夹中。这个不难理解。我们继续看微软文档中的资料可以知道Build Events具有3种事件,分别为:1.Pre-build event command line 预先生成事件;在编译前执行自定义任务2.Post-build event command line 预链接事件;在链接前执行自定义任务3.Run the post-build event 后期生成事件;在编译完成后执行自定义任务其中在微软文档中也给出了对应的XML 元素,有兴趣的同学可以自行看看在Lazarus组织中是利用Visual Studio进行利用的,那么我们来复现一下利用手法:1.打开Visual Studio
2.新建一个项目
3.进入项目的属性就可以看到了,正如上面看到的具有3种事件我们来利用一下第一种事件看看第一种可以直接执行命令行也可以执行宏代码:这里简单复现一下,就不讨论宏代码的一个情况了。在cobalt strike种直接生成powershell的恶意脚本。把命令放在visual studio中应用然后编译可以看到直接上线。然后是第2种,电脑比较卡,所以我就不上线cobalt strike了,我们使用弹计算器来证明可利用吧编译同理,第3种也是我们也可以在项目文件中直接添加我们需要执行的命令打开项目目录可以看到其中以.vcxproj结尾的文件就是我们需要利用的文件。这里使用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 EngineThe 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的环境中编排和构建产品(可以简单理解为执行可以代码),而且Visua免费云主机域名l 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中,具体如下所示。具体的利用手法前辈们总结好了这里补充一些利用手法吧执行powershell命令这里参考3gstudent和Casey的手法,但是Casey给出的POC挂了,所以我们可以使用3gstudent的POC来进行利用以上就是如何利用Build Events特性执行代码复现,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注云编程开发博客行业资讯频道。

相关推荐: 网站域名被劫持会出现哪几种情况

  网站劫持:是指当用户打开一个网址的时候,出现一个不归属于网站范畴内的一个广告页面,或者是直接就跳转到某一个不不是这个网站所属的一个网站免费云主机域名的分页面。  网站劫持问题都是如何检测的?  IIS7网站监控  测网站是否被劫持、DNS污染检测等信息。 …

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 02/07 10:17
Next 02/07 10:17