急 这个是王者荣耀官网里什么英雄

作者:三好学生
稿费:600RMB(不服你也来投稿啊!)
投稿方式:发送邮件至,或登陆网页版在线投稿
最近Casey ,对我有很大启发。
本文将基于他公开的POC,并结合我的研究心得,介绍以下MSBuild的应用技巧:
Execute PowerShell Commands
Execute PE file
Execute Shellcode
VisualStudio Persistence
MSBuild是Microsoft Build Engine的缩写,代表Microsoft和Visual Studio的新的生成平台
MSBuild可在未安装Visual Studio的环境中编译.net的工程文件
MSBuild可编译特定格式的xml文件
更多基本知识可参照以下链接:
/en-us/library/dd393574.aspx
0x02 常规用法
1. 编译xml文件并执行代码
&?xml version=&1.0& encoding=&utf-8& ?&&Project xmlns=&/developer/msbuild/2003&&
&Target Name=&PrintCurrentDateTime&&
&Message Text=&The current date and time is: $([System.DateTime]::Now).& /&
&/Target&&/Project&
保存为test.csproj
cmd下执行:
C:/Windows/Microsoft.Net/Framework/v4.0.30319/msbuild.exe test.csproj
在cmd下会输出显示当前时间,如图
2. 编译xml文件生成exe
using Sclass Test{
static void Main()
Console.WriteLine(&Hello world&);
保存为hello.cs
&Project xmlns=&/developer/msbuild/2003&&
&Target Name=&Compile&&
&CSC Sources=&hello.cs& OutputAssembly=&hello.exe& /&
&/Target&&/Project&
保存为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#代码
详细介绍可参考如下链接:
/en-us/library/dd722601.aspx?f=255&MSPPError=-
1. HelloWorld示例
以下代码保存为helloworld:
&Project ToolsVersion=&4.0& xmlns=&/developer/msbuild/2003&&
&Target Name=&Hello&&
&HelloWorld /&
&UsingTask
TaskName=&HelloWorld&
TaskFactory=&CodeTaskFactory&
AssemblyFile=&C:/Windows/Microsoft.Net/Framework/v4.0.30319/Microsoft.Build.Tasks.v4.0.dll& &
&ParameterGroup/&
&Using Namespace=&System& /&
&Code Type=&Fragment& Language=&cs&&
Console.WriteLine(&Hello World&);
&/UsingTask&&/Project&
注: 保存的文件名任意
cmd下执行:
C:/Windows/Microsoft.NET/Framework/v4.0.30319/msbuild.exe helloworld
cmd输出helloworld, 如图
2. 执行powershell命令
可参照Casey分享的POC,地址如下:
/subTee/6bfd6ddff216e434f257614
该POC已将c#代码转换成xml文件的格式,编写需要注意的部分如下:
标记1 TaskName可修改,但两个位置的名称需要对应
标记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地址如下:
/subTee/ca477b4d19c885bec05ce238cbad6371
但是上传的文件被截断,导致部分代码无法查看,于是尝试自己实现
结合之前研究过的代码,地址如下:
/subTee/00cdacc2fe
对照上文提到的xml格式,编写代码实现在Inline Tasks中内存加载64位的mimikatz.exe,实现代码的下载地址为:
/3gstudent/msbuild-inline-task/blob/master/executes%20mimikatz.xml
cmd下执行:
C:/Windows/Microsoft.NET/Framework/v4.0.30319/msbuild.exe aa
报错,如图
解决方法:
需要换用64位的.net Framework,原代码无需修改,只需要使用64位的.net Framework加载就好
cmd下执行:
C:/Windows/Microsoft.NET/Framework64/v4.0.30319/msbuild.exe aa
加载成功,如图
4. 执行shellcode
参考自 /subTee/a06d4ae23e
使用msf生成32位shellcode:
use windows/execset CMD calc.exeset EXITFUNC threadgenerate -t csharp
同样结合上文提到的xml格式,编写代码实现在Inline Tasks中执行shellcode,实现代码的下载地址为:
/3gstudent/msbuild-inline-task/blob/master/executes%20shellcode.xml
保存为SimpleTasks.csproj,在cmd下执行:
C:/Windows/Microsoft.NET/Framework/v4.0.30319/msbuild.exe SimpleTasks.csproj
如图,成功执行shellcode弹出计算器
在64位系统下,先将shellcode替换为64位,然后换用64位的.net Framework执行即可,代码下载地址为:
/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也可用到此处,实现代码已上传,地址为:
/3gstudent/msbuild-inline-task/blob/master/executes%20shellcode%20when%20visual%20studio%20is%20afterBuild.csproj
修改vs工程中的.csproj文件,添加上述代码,能够实现在vs工程编译过程中执行shellcode, 如图
利用MSBuild实现的代码执行,有如下特点:
1、可绕过应用程序白名单
2、提供一种直接执行shellcode的方法
3、在内存中执行PE文件
4、结合VisualStudio实现的钓鱼和后门
所以建议对系统中的msbuild.exe进行更多的监控和限制。
注: 文中相关POC代码已上传至github,地址为:
/3gstudent/msbuild-inline-task
本文由 安全客 原创发布,如需转载请注明来源及本文地址。
本文地址:/learning/detail/3046.html
最新教程周点击榜
微信扫一扫当前位置: && 知识详情
【技术分享】Use MSBuild To Do More(渗透中MSBuild的应用技巧)
阅读:13660次
作者:三好学生稿费:500RMB(不服你也来投稿啊!)投稿方式:发送邮件至,或登陆网页版在线投稿0x00 前言最近Casey Smith@subTee更新了一系列关于”MSBuild”的研究进展,对我有很大启发。本文将基于他公开的POC,并结合我的研究心得,介绍以下MSBuild的应用技巧:Execute PowerShell CommandsExecute PE fileExecute ShellcodeVisualStudio Persistence0x01 简介MSBuild是Microsoft Build Engine的缩写,代表Microsoft和Visual Studio的新的生成平台MSBuild可在未安装Visual Studio的环境中编译.net的工程文件MSBuild可编译特定格式的xml文件更多基本知识可参照以下链接:0x02 常规用法1. 编译xml文件并执行代码&?xml&version=&1.0&&encoding=&utf-8&&?&
&Project&xmlns=&/developer/msbuild/2003&&
&&&Target&Name=&PrintCurrentDateTime&&
&&&&&Message&Text=&The&current&date&and&time&is:&$([System.DateTime]::Now).&&/&
&&&/Target&
&/Project&保存为test.csprojcmd下执行:C:\Windows\Microsoft.Net\Framework\v4.0.30319\msbuild.exe&test.csproj在cmd下会输出显示当前时间,如图2. 编译xml文件生成exeusing&S
class&Test
&&&&static&void&Main()
&&&&&&&&Console.WriteLine(&Hello&world&);
}保存为hello.cs&Project&xmlns=&/developer/msbuild/2003&&
&&&&&Target&Name=&Compile&&
&&&&&&&&&CSC&Sources=&hello.cs&&OutputAssembly=&hello.exe&&/&
&&&&&/Target&
&/Project&保存为hello.csprojhello.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#代码详细介绍可参考如下链接:1. HelloWorld示例以下代码保存为helloworld:&Project&ToolsVersion=&4.0&&xmlns=&/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下执行:C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe&helloworldcmd输出helloworld,如图2. 执行powershell命令可参照Casey分享的POC,地址如下:该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地址如下:&但是上传的文件被截断,导致部分代码无法查看,于是尝试自己实现结合之前研究过的代码,地址如下:对照上文提到的xml格式,编写代码实现在Inline Tasks中内存加载64位的mimikatz.exe,实现代码的下载地址为:cmd下执行:C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe&aa报错,如图解决方法:需要换用64位的.net Framework,原代码无需修改,只需要使用64位的.net Framework加载就好cmd下执行:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe&aa加载成功,如图4. 执行shellcode参考自使用msf生成32位shellcode:use&windows/exec
set&CMD&calc.exe
set&EXITFUNC&thread
generate&-t&csharp同样结合上文提到的xml格式,编写代码实现在Inline Tasks中执行shellcode,实现代码的下载地址为:保存为SimpleTasks.csproj,在cmd下执行:C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe&SimpleTasks.csproj如图,成功执行shellcode弹出计算器在64位系统下,先将shellcode替换为64位,然后换用64位的.net Framework执行即可,代码下载地址为:如图,成功执行64位shellcode5. VisualStudio Persistence在《Pay close attention to your download code——Visual Studio trick to run code when building》中介绍过利用VisualStudio的.csproj文件实现的代码执行,同样Inline Tasks也可用到此处,实现代码已上传,地址为:修改vs工程中的.csproj文件,添加上述代码,能够实现在vs工程编译过程中执行shellcode,如图0x04 小结利用MSBuild实现的代码执行,有如下特点:1、可绕过应用程序白名单2、提供一种直接执行shellcode的方法3、在内存中执行PE文件4、结合VisualStudio实现的钓鱼和后门所以建议对系统中的msbuild.exe进行更多的监控和限制。注:&文中相关POC代码已上传至github,地址为:&
本文由 安全客 原创发布,如需转载请注明来源及本文地址。本文地址:/learning/detail/3046.html
参与讨论,请先
啊啊啊啊又看见三好学生了,,,,啊啊啊啊啊啊我都关注你的github 博客了。。。
安全播报APP
Copyright & 360网络攻防实验室 All Rights Reserved 京ICP证080047号[京ICP备号-6]更多最新文章相关作者文章搜狗:感谢您阅读Use MSBuild To Do More(渗透中MSBuild的应用技巧) 本文版权归原作者所有,本文由网友投递产生,如有侵权请联系 ,会第一时间为您处理删除。GDC注:因为需要解决在linux64机上编译32位的mongodb(没办法,因为编译的php是32位,然后我想将mongdb扩展添加到php中),在网上搜了很多文章,感觉这篇好懂,而且好用。我使用的是方法一,具体为:
& linux32 ./configure --with-php-config=/usr/local/php/bin/php-config
& export CFLAGS="-m32 -04 -march=i386 -mtune=i386"
make成功后,用file命令看一下modules目录下的生成的mongo.so。输出为&ELF 32-bit LSB shared object&。哈哈,成功!
首先需要安装32位的兼容库
apt-get install ia32-libs libc6-dev-i386 linux32
1.用linux32命令在configure时改一下CHOST,设置一下编译环境
$ linux32 ./configure
#系统类型将变为:i686-pc-linux-gnu
#而不是x86_64-unknown-linux-gnu
2.设定GCC的参数
export CFLAGS="-m32&&-march=i386 -mtune=i386"
export CFLAGS="-m32 -04 -march=i386 -mtune=i386"
#最关键是-m32
-m32, -m64
Generate code for a 32-bit or 64-bit environment. The 32-bit environment
sets int, long and pointer to 32 bits and generates code that runs on
any i386 system. The 64-bit environment sets int to 32 bits and long and
pointer to 64 bits and generates code for
AMD's x86-64 architecture.
修改/usr/bin/gcc ld,强制加入m32信息
将gcc,ld重命名为gcc.64,ld.64
/usr/bin/gcc
gcc.64 &m32 $@
/usr/bin/ld
ld.64 &m elf_i386 $@
阅读(...) 评论()关于Win7 64位,应用程序(32位)无法载入系统目录(system32)下的DLL的搜索推荐 -WinServer-TryCatch
>> 相关推荐
关于的搜索推荐
最近要将一些程序放到win764位下测试,加载dll时遇到奇怪问题; 我已经将应用程序(32位)所需的dll(32位)放到了system32下, 我在调试的时候也看到获取的系统目录也是X:\Windows\System32\ 但是加载这个DLL的时候失败,我用LoadLibrary,LoadLibraryEx均失败; 用静态链接DLL的方式也提示找不到DLL, 但是只要将DLL复制到应用程序同目录下就没有问题;
望各位大侠指点.
复制到应用程序同目录下就没有问题,该dll是否需要注册,注册表中是否有clsid和dll对应路径,直接卸掉了拷到system32下regsvr32注册如何
直接echo%path%检查环境变量
这个DLL不需要注册
看看是否是这个原因 http://social./Forums/en-US/vcgeneral/thread/2cf464e6-808a-e-ce21a3393a8b
引用3楼xman_78tom的回复:
看看是否是这个原因 http://social./Forums/en-US/vcgeneral/thread/2cf464e6-808a-e-ce21a3393a8b
不是这原因,我的应用程序不是.net写的,从进程管理器可以看出,在64位系统仍然以32位运行.
没找到好办法,最后把dll编译成静态lib,和*.exe链接成一个文件.
是不是应该放到syswow64目录下
听说这两个动态连接库都windows socket网络编程接口用的,想知道为什么要搞两个这样的呢?这两个的区别在哪?各位什么优势吗?熟悉帮忙回答一下,谢谢了!
------------
char sysdir[255];GetWindowsDirectory(sysdir,255);Edit1-&Text=
//WINDOWS目录GetSystemDirectory(sysdir,255);Edit2-&Te...
使用的是VS2010位开发工具,在32位系统中开发好的应用程序,源码拷贝到64位系统上运行时出现错误不是有效的 Win32 应用程序。 (异常来自 HRESULT:0x) 请...
本帖最后由 kingsen829 于
00:08:40 编辑
------------
IIS运行在32位下面cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/...
有不用把硬盘拆下来挂到别的机器上的方法么?谢谢...
如题,提示错误信息为“不是合法的win32程序”,这个问题怎么搞呀,谢谢高手指导。
------------
你生成的程序如果是x64的,就不能在32位windows下运行。你把...
IIS配置:在win7下配备asp,将应用程序池64位改成32位,但是没有启用32位这一项,网上的都是这样说的:打开iis
,点击应用程序池,在点击右边的设置程序池默认,...
今天一开机就显示这样一个对话框。是什么意思啊?哪位大虾能给个详细的指点!!ope38.exe-损坏的图像应用程序或DLL C:\windows\system32\csrss32.dll为无效的...
原文如下The software worked on 2 computers, one running Vista and one running XP. It failed to load on 4 similar computers. Among the many errors I ge...
用delphi7开发的程序在xp上可以运行.exe,但是到win7上再运行就报:runtime error 217 at 0044BD98错误,无法打开.exe。求怎么解决这样的问题?
------------
请问高手:在一个64位的WIN2003系统中,有一个自定义的COM+应用组件,在"标识"选项中默认的"交互模式"状态下,无法启动,一启动就报错.而使用了"本地服务-内置...
听说 Win Tc 是16位的软件。在Win 7
出来之前,Win Tc
在32位cpu下的32位xp系统中能够正常运行,就是因为向下兼容的原因吧。但在64位cpu下的32位Win 7系统中,...
程序需要一个服务程序和若干个dll,在制作安装程序的时候,将服务程序和dll放在程序的目录,或者放到系统system32目录,这2个位置有什么区别?对程序运行有什么影...
有一个32位C#程序在win7x64下运行, 通过Process.Start() 无法启动StikyNot(便笺).经查是由于32位程序运行于WOW64下对System32的访问会被重定向到SysWOW64下,而Sy...
应该有个通用的安装文件吧
------------
发生问题的原因:
你应该是在安装工程中,指定文件复制的位置时,使用了绝对的C:\windows\system32位置...
由于不同...}

我要回帖

更多关于 王者荣耀官网 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信