【技术分享】Use MSBuild To Do More(渗透中MSBuild的应用技巧)

2025渗透测试核心工具链:从信息收集到后渗透的实战指南 在网络安全领域,渗透测试是评估系统安全性的核心方法,其本质是通过模拟恶意攻击来发现潜在漏洞。其技术原理在于遵循标准化的测试流程,如PTES,系统性地对目标进行信息收集、漏洞扫描、利用和权限提升。掌握高效的工具链对于提升测试效率和深度至关重要,它能帮助安全工程师在复杂的网络环境中精准定位弱点。当前,工具生态正朝着YAML驱动、Go语言编写和一体化协同的方向演进,例如Nuclei凭借其庞大的社区模板库实现了精准高效的漏洞检测,而ProjectDiscovery系列工具(如Subfinder、Httpx)则通过管 阅读详情

0x00 前言


最近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文件并执行代码

1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <Target Name="PrintCurrentDateTime">
     <Message Text="The current date and time is: $(&#91;System.DateTime&#93;::Now)." />
   </Target>
</Project>

保存为test.csproj

cmd下执行:

1
C:\Windows\Microsoft.Net\Framework\v4.0.30319\msbuild.exe test.csproj

在cmd下会输出显示当前时间,如图

https://i-blog.csdnimg.cn/blog_migrate/eddb07b1401db46f5fb8b4cdb28086bf.jpeg

2. 编译xml文件生成exe

1
2
3
4
5
6
7
8
using System;
class Test
{
     static void Main()
     {
         Console.WriteLine("Hello world");
     }
}

保存为hello.cs

1
2
3
4
5
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
     <Target Name="Compile">
         <CSC Sources="hello.cs" OutputAssembly="hello.exe" />
     </Target>
</Project>

保存为hello.csproj

hello.cs和hello.csproj放于同一目录

cmd下执行:

1
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <Target Name="Hello">
    <HelloWorld />
   </Target>
   <UsingTask
     TaskName="HelloWorld"
     TaskFactory="CodeTaskFactory"
     AssemblyFile="C:\Windows\Microsoft.Net\Framework\v4.0.30319\Microsoft.Build.Tasks.v4.0.dll" >
     <ParameterGroup/>
     <Task>
       <Using Namespace="System" />  
       <Code Type="Fragment" Language="cs">
         <![CDATA[
                 Console.WriteLine("Hello World");       
         ]]>
       </Code>
     </Task>
     </UsingTask>
</Project>

注:保存的文件名任意

cmd下执行:

1
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"

系统默认安装路径为:

1
"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下执行:

1
C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe aa

报错,如图

解决方法:

需要换用64位的.net Framework,原代码无需修改,只需要使用64位的.net Framework加载就好

cmd下执行:

1
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe aa

加载成功,如图


4. 执行shellcode

参考自https://gist.github.com/subTee/a06d4ae23e2517566c52

使用msf生成32位shellcode:

1
2
3
4
use windows/exec
set CMD calc.exe
set EXITFUNC thread
generate -t csharp

同样结合上文提到的xml格式,编写代码实现在Inline Tasks中执行shellcode,实现代码的下载地址为:

https://github.com/3gstudent/msbuild-inline-task/blob/master/executes%20shellcode.xml

保存为SimpleTasks.csproj,在cmd下执行:

1
C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe SimpleTasks.csproj

如图,成功执行shellcode弹出计算器

在64位系统下,先将shellcode替换为64位,然后换用64位的.net Framework执行即可,代码下载地址为:

https://github.com/3gstudent/msbuild-inline-task/blob/master/executes%20x64%20shellcode.xml

如图,成功执行64位shellcode


5. VisualStudio Persistence

在《Pay close attention to your download code——Visual Studio trick to run code when building》中介绍过利用VisualStudio的.csproj文件实现的代码执行,同样Inline Tasks也可用到此处,实现代码已上传,地址为:

https://github.com/3gstudent/msbuild-inline-task/blob/master/executes%20shellcode%20when%20visual%20studio%20is%20afterBuild.csproj

修改vs工程中的.csproj文件,添加上述代码,能够实现在vs工程编译过程中执行shellcode,如图


0x04 小结


利用MSBuild实现的代码执行,有如下特点:

1、可绕过应用程序白名单

2、提供一种直接执行shellcode的方法

3、在内存中执行PE文件

4、结合VisualStudio实现的钓鱼和后门

所以建议对系统中的msbuild.exe进行更多的监控和限制。

注: 文中相关POC代码已上传至github,地址为: https://github.com/3gstudent/msbuild-inline-task

本文由 安全客 原创发布,如需转载请注明来源及本文地址。
本文地址:http://bobao.360.cn/learning/detail/3046.html

渗透测试实战指南:从基础到进阶的网络安全攻防演练 网络安全的核心在于理解攻击与防御的对抗原理。渗透测试作为主动安全评估的关键技术,通过模拟真实攻击来发现系统弱点,其价值在于提前暴露风险,提升整体防御能力。从基础概念出发,渗透测试遵循标准化的方法论流程,如信息收集、漏洞分析、权限提升等阶段,广泛应用于企业安全评估、合规审计及攻防演练等场景。掌握如Nmap、Metasploit等核心工具链,并理解其背后的网络协议与系统原理,是构建有效安全防护的基础。本文聚焦实战环境搭建与完整攻防演练,通过拆解渗透测试各阶段技术细节,帮助读者建立系统化的安全攻防思维,实现从理论 阅读详情

相关推荐

BloodHound实战指南:从AD域攻击图谱构建到隐蔽渗透路径规划

在网络安全领域,Active Directory(AD)域环境因其复杂的权限关系成为攻防焦点。理解其图论原理是高效渗透的关键。攻击者通过收集域内对象与关系数据,构建可视化攻击图谱,从而将隐蔽的权限传递链显性化。这一技术价值在于将传统基于经验的模糊攻击,转变为数据驱动的精准路径规划,极大提升了内网横向移动与权限提升的效率。在实战应用场景中,结合SharpHound收集器与Neo4j图数据库,安全人员能够系统性地分析ACL、会话等关键信息,识别出从普通域用户到域管理员的高危路径。本文深入探讨了如何利用Blood

weixin_34121282的博客 624

内网渗透实战指南:从基础到进阶的完整学习路径

内网渗透是网络安全领域的核心技术,通过模拟攻击者在企业内部网络的横向移动路径,帮助企业发现结构性安全风险。其技术原理涉及信息收集、权限提升、横向移动等多个环节,在纵深防御体系中具有重要价值。在实际应用中,安全工程师需要掌握网络侦察、漏洞利用、防御规避等关键技术,同时必须遵循合法合规的测试边界。本文基于内网渗透和横向移动等核心概念,详细解析了从环境搭建到域渗透的完整实战路径,为安全从业者提供系统化的学习框架。通过理解攻击链思维和防御机制,安全团队能够有效验证防护措施,提升企业整体安全水位。

weixin_34379433的博客 383

Kali Linux渗透测试实战:从工具集解析到靶机攻防演练

渗透测试是网络安全领域的核心实践,旨在通过模拟攻击来评估系统防御能力。其原理在于主动发现漏洞,核心价值在于防患于未然,广泛应用于企业安全评估与合规审计。Kali Linux作为专为渗透测试设计的操作系统,集成了Nmap、Metasploit等600余款工具,覆盖信息收集、漏洞利用等全流程。它通过预配置环境,极大提升了安全测试效率,是安全从业者进行授权测试与技能学习的首选平台。本文以DC-1靶机为例,深度解析Kali的工具生态与实战工作流。

chuozhi7142的博客 413

[分享]绝对牛逼哄哄的shellcode内存注入,支持64,32,远程内存注入,支持VMP壳最大强度保护[转]

哈哈哈,因为这个MemLoadLibrary2的原型,没记错的话,应该是2009年以前的一个memoryloaddll.具体是谁写的我也不懂了.SaveShellCode ()保存起来的shellcode可以直接拿到什么易语言,驱动之类的去用,只要参数传的对了,就没毛病。[分享]绝对牛逼哄哄的shellcode内存注入,支持64,32,远程内存注入,支持VMP壳最大强度保护。面对当前各种安全检测,单纯的内存注入是行不通的.具体要怎么处理,还是得靠自己多转变下思维.//提取shellcode写到文件.

u010551008的博客 424

红队实战:从信息收集到域控渗透的完整攻击链演练

渗透测试是网络安全领域的核心实践,旨在通过模拟真实攻击来评估系统防御能力。其基本原理是遵循PTES等标准框架,系统性地进行信息收集、漏洞分析、利用和权限提升。这项技术的核心价值在于主动发现安全短板,推动防御体系从被动响应转向主动加固。在红队演练中,工程师需要将Nmap、Impacket、CrackMapExec、BloodHound等工具有机组合,形成标准化的工程化攻击流程。典型的应用场景包括企业内网渗透测试,攻击链往往从外部Web漏洞切入,通过横向移动和权限提升,最终抵达域控等核心资产。本文以RedTea

weixin_30562507的博客 426

从CVE漏洞原理到渗透工具实战:构建完整网络安全攻防链路

在网络安全领域,漏洞分析与渗透测试是核心实践。CVE(通用漏洞披露)作为漏洞标准化标识,其背后是内存安全、协议实现缺陷、供应链依赖等基础安全问题。理解漏洞原理,如内存池损坏、JNDI注入或路径遍历,是评估风险与影响范围的关键。渗透工具则是将原理转化为实践的技术载体,用于漏洞验证、权限提升与横向移动。掌握从信息收集、漏洞扫描到后渗透的完整工具链,能有效提升安全测试效率与深度。本文聚焦永恒之蓝、Log4Shell等经典CVE,剖析其原理与利用方式,并系统梳理Metasploit、Cobalt Strike等工具

weixin_33871366的博客 448

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

最近Casey Smith@subTee更新了一系列关于”MSBuild”的研究进展,对我有很大启发。 本文将基于他公开的POC,并结合我的研究心得,介绍以下MSBuild的应用技巧: Execute PowerShell Commands Execute PE file Execute Shellcode VisualStudio Persistence 0x01 简介 MSBuild是Mic...

Coisini的博客 480

红队实战:利用EvilClippy混淆与Cobalt Strike C2框架实现免杀渗透

在网络安全领域,指挥与控制(C2)框架是高级攻击者进行持续渗透和横向移动的核心平台,而宏文档(VBA)则是常见的初始攻击载荷投递载体。其原理在于,C2框架通过建立隐蔽的通信信道,实现对受控主机的远程操控;而恶意宏代码则利用Office文档的自动化功能,在用户启用宏时执行攻击指令。这项技术的核心价值在于,它能将看似无害的文档与强大的后端攻击基础设施无缝连接,极大地提升了攻击的隐蔽性和持续性。在实际应用场景中,红队评估和渗透测试人员常利用此类技术模拟高级持续性威胁(APT)的攻击链,以检验目标网络的纵深防御能力

403

利用MSBuild制作msf免杀的后门

今天看到三好学生对MSBuild的利用,它的好处这里已经说完,http://bobao.360.cn/learning/detail/3046.html,说可以有提供一种直接执行shellcode的方法,然后就尝试了一下通过MSBuild进行msf的木马后门的免杀。         我这次选择了32位的那个版本来进行演示:      需要改写的是shellcode那部分:

Matthew 6万+

红队实战:横向移动与权限提升的核心技巧与工具链

在网络安全领域,横向移动与权限提升是渗透测试和后渗透阶段的核心技术。横向移动指攻击者在突破网络边界后,利用已获取的访问权限,在网络内部系统间进行扩散,以寻找更高价值的目标。权限提升则是通过利用系统漏洞或配置缺陷,将现有用户权限提升至更高等级(如SYSTEM或域管理员),从而获取对系统的完全控制。这两项技术的实战价值在于,它们能将一个初始的、受限的立足点,转化为对整个网络或关键资产的掌控,是红队评估中实现“由点及面”渗透的关键。在实战中,攻击者常利用WMI、SMB、WinRM等协议进行基于凭证的横向移动,并通

chouxuyi9789的博客 477

从攻击到防御:深度解析反向TCP Meterpreter Shell实战与应急响应

在网络安全领域,远程控制与反制是攻防对抗的核心议题。其基本原理是通过在目标系统上执行特定载荷(Payload),建立一条从被控端到控制端的命令与控制(C2)信道,实现对远程主机的隐秘操控。这项技术的核心价值在于,它不仅是渗透测试中验证系统脆弱性的关键手段,更是防御方理解攻击链、构建有效检测与响应能力的基础。从应用场景看,无论是红队评估、漏洞验证,还是蓝队进行威胁狩猎与事件响应,深入理解此类技术的运作机制都至关重要。本文将以经典的 Meterpreter 载荷为例,结合内存驻留、进程迁移等热词,详细拆解反向T

weixin_30522095的博客 385

pwntools各使用模块简介

pwntools pwntools 是一款专门用于CTF Exploit的python库,能够很方便的进行本地与远程利用的切换,并且里面包含多个模块,使利用变得简单。可以在github上直接搜索pwntools 进行安装。 基本模块 asm : 汇编与反汇编,支持x86/x64/arm/mips/powerpc等基本上所有的主流平台dynelf : 用于远程符号泄漏,需要提供leak方法el...

weixin_34259232的博客 1024

msfvenom跨平台免杀后门实战:从载荷生成到内存加载技术

在网络安全领域,攻击载荷(Payload)是执行特定任务的核心代码片段,其原理在于通过精心构造的指令序列,在目标系统上实现远程控制、信息窃取等操作。理解载荷生成与免杀的技术价值,对于渗透测试、红蓝对抗和防御体系评估至关重要。它能帮助安全人员模拟真实攻击链,检验安全防护的有效性。在实际应用场景中,攻击者常需让载荷适配不同操作系统(如Windows、Linux、macOS),并规避杀毒软件(AV)和端点检测与响应(EDR)系统的检测。这便涉及到对可执行文件格式、内存加载机制和检测逻辑的深刻理解。本文聚焦于使用m

weixin_30336061的博客 341

msbuild 语法_【技术分享】Use MSBuild To Do More(渗透中MSBuild的应用技巧)

作者:三好学生稿费:500RMB(不服你也来投稿啊!)投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿0x00 前言最近Casey Smith@subTee更新了一系列关于”MSBuild”的研究进展,对我有很大启发。本文将基于他公开的POC,并结合我的研究心得,介绍以下MSBuild的应用技巧:Execute PowerShell CommandsExecute PE fil...

weixin_36123682的博客 234

Metasploit木马生成与免杀:从载荷制作到Meterpreter会话控制实战

在网络安全领域,理解攻击链是构建有效防御的基础。攻击载荷(Payload)作为恶意代码的核心载体,其生成与投递技术直接关系到攻击的隐蔽性与成功率。通过编码、混淆等技术手段实现免杀(Antivirus Evasion),可以绕过传统杀毒软件的静态特征检测。Metasploit框架作为渗透测试的标准工具,其msfvenom模块提供了灵活的载荷生成能力,而Meterpreter则提供了强大的远程会话控制功能。掌握从载荷生成、免杀处理到会话建立的完整流程,不仅能深化对攻击技术的理解,更能帮助安全从业者从防御视角识别

dixi7825的博客 381

美亚杯取证比赛必备:Veracrypt挂载+检材解压保姆级教程(附常见错误排查)

本文提供美亚杯数字取证竞赛的Veracrypt挂载与检材解压保姆级教程。详细解析从分卷压缩包解压(密码格式为MeiyaCup+年份)到使用Veracrypt正确挂载加密容器的全流程,并附有常见错误排查与高级应急方案,帮助选手高效突破技术门槛,顺利进入取证分析阶段。

alice7model的博客 1042

Meterpreter偏执模式实战:红队渗透中的隐匿生存技术详解

在网络安全领域,终端防护系统(EDR)和入侵检测技术通过分析进程行为、网络流量等特征识别威胁。其核心原理在于对比已知恶意软件签名与异常行为模式,一旦匹配即触发告警。为应对这种检测,渗透测试中的隐匿技术应运而生,其技术价值在于延长攻击驻留时间,提升横向移动和数据窃取的成功率。应用场景主要集中于红队评估、APT攻击模拟等需要长期隐蔽的实战环境。本文聚焦于Metasploit框架中的Meterpreter偏执模式,深入解析如何通过传输层混淆、进程伪装和网络行为模拟等技术,有效规避基于签名和行为分析的检测。其中,进

aebe49167的博客 588

电网加密芯片全解析:分类与功能​

在电网数字化转型的浪潮中,数据安全和设备的身份认证变得愈发重要。加密芯片作为保障电网信息安全的核心部件,凭借独特的技术特性,在不同应用场景下发挥着关键作用,有力推动着智能电网的安全稳定发展。接下来,我们将对电网中常见的加密芯片展开分类介绍,并探讨其对应的功能。​。

1963

红队实战:逆向免杀与横向移动的闭环攻击链构建

在网络安全领域,渗透测试与红蓝对抗是评估企业防御体系有效性的核心手段。其技术原理在于模拟攻击者思维,通过漏洞利用、权限提升和横向移动等步骤,深入探测内网安全弱点。这项技术的价值在于帮助企业提前发现并修复安全短板,提升整体安全防护能力。应用场景广泛覆盖护网行动、渗透测试和持续安全监测。其中,逆向免杀技术通过混淆、加密和合法程序白利用等手段,规避安全软件检测;而横向移动则依赖对SMB、WMI等内网协议及Pass-the-Hash等凭据传递技术的深入理解。本文将结合vulnstack红队靶场和Cobalt Str

Coding 1248

【C2000系列DSP的Bootloader详解】如何打包源文件为库文件且加密仅授权使用,一步步教你如何实现

如果想要在 TI 的 CCS 开发环境中为 C2000 系列 MCU 生成 lib 库文件,并对这些库文件进行加密保护,确保只有授权方(持有密钥)才能调用和使用,以此保护源代码的知识产权。

昔时扬尘处 177

第1课:开篇扫盲——OpenClaw是什么?能帮你解决什么问题?(入门必看)

核心目标:学会安装、卸载、管理OpenClaw技能,自定义AI代理的性格与权限,让AI贴合自己的使用习惯。核心内容技能市场详解:ClawHub市场核心技能分类(办公、学习、开发、生活),热门技能推荐(web-search、文件处理、邮件管理)[superscript:3][superscript:4]。技能安装与卸载:终端命令实操(openclaw skill install/uninstall),技能更新与版本管理[superscript:3]。

从零开始,掌握网络安全。提供全面的网络安全教程、攻防演练技巧和行业动态。 1758
上一篇: Web漏洞搜索引擎——PunkSPIDER
下一篇: 【技术分享】逆向分析EXTRABACON——针对思科ASA防火墙的大杀器
SAKAISON
博客等级 码龄10年 61粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值