欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

Use MSBuild To Do More(渗透中MSBuild的应用技巧)

来源:本站整理 作者:三好学生 时间:2016-09-21 TAG: 我要投稿

最近Casey Smith@subTee更新了一系列关于”MSBuild”的研究进展,对我有很大启发。
本文将基于他公开的POC,并结合我的研究心得,介绍以下MSBuild的应用技巧:
Execute PowerShell Commands
Execute PE file
Execute Shellcode
VisualStudio Persistence
0x01 简介
MSBuild是Microsoft Build Engine的缩写,代表Microsoft和Visual Studio的新的生成平台
MSBuild可在未安装Visual Studio的环境中编译.net的工程文件
MSBuild可编译特定格式的xml文件
更多基本知识可参照以下链接:
https://msdn.microsoft.com/en-us/library/dd393574.aspx
0x02 常规用法
1. 编译xml文件并执行代码
 
保存为test.csproj
cmd下执行:

C:\Windows\Microsoft.Net\Framework\v4.0.30319\msbuild.exe test.csproj
在cmd下会输出显示当前时间,如图

2. 编译xml文件生成exe
using System;
class Test
{
    static void Main()
    {
        Console.WriteLine("Hello world");
    }
}
保存为hello.cs   
   
保存为hello.csproj
hello.cs和hello.csproj放于同一目录
cmd下执行:

C:\Windows\Microsoft.Net\Framework\v4.0.30319\msbuild.exe hello.csproj
可以编译生成hello.exe,如图

注:编译文件满足xml文件格式即可,后缀名任意
0x03 扩展用法
在.NET Framework 4.0中支持了一项新功能”Inline Tasks”,被包含在元素UsingTask中,可用来在xml文件中执行c#代码
详细介绍可参考如下链接:
https://msdn.microsoft.com/en-us/library/dd722601.aspx?f=255&MSPPError=-2147217396
1. HelloWorld示例
以下代码保存为helloworld:
  
    TaskName="HelloWorld"
    TaskFactory="CodeTaskFactory"
    AssemblyFile="C:\Windows\Microsoft.Net\Framework\v4.0.30319\Microsoft.Build.Tasks.v4.0.dll" >
   
   
       
     
       
                Console.WriteLine("Hello World");      
        ]]>
     
   
   
注:保存的文件名任意
cmd下执行:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe helloworld
cmd输出helloworld,如图

2. 执行powershell命令
可参照Casey分享的POC,地址如下:
https://gist.github.com/subTee/6b236083da2fd6ddff216e434f257614
该POC已将c#代码转换成xml文件的格式,编写需要注意的部分如下:

标记1TaskName可修改,但两个位置的名称需要对应
标记2为固定格式:TaskFactory="CodeTaskFactory"
标记3的路径在不同系统可能会有区别,准确的为:
"$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll"
系统默认安装路径为:

"C:\Windows\Microsoft.Net\Framework\v4.0.30319\Microsoft.Build.Tasks.v4.0.dll"
标记4为一个简单的输出helloworld实例

标记5为固定格式,定义为public class ClassExample : Task, ITask
实际测试POC如图,成功执行powershell命令

3. 执行PE文件
Casey分享的POC地址如下:
https://gist.github.com/subTee/ca477b4d19c885bec05ce238cbad6371
但是上传的文件被截断,导致部分代码无法查看,于是尝试自己实现
结合之前研究过的代码,地址如下:
https://gist.github.com/subTee/00cdac8990584bd2c2fe
对照上文提到的xml格式,编写代码实现在Inline Tasks中内存加载64位的mimikatz.exe,实现代码的下载地址为:
https://github.com/3gstudent/msbuild-inline-task/blob/master/executes%20mimikatz.xml
cmd下执行:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe aa
报错,如图

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载