Weaponzation

介绍

首先探讨下“武器化”,按照我个人的理解用一把枪来做类比,一颗子弹或者一把空枪不足以构成威胁,同样的在Cobalt Strike将payload和可执行文件(EXE,DLL或者powershell等)结合起来构成了武器化的概念。

在Cobalt Strike中首先解释几个概念:

  • artifact可以理解为包含了payload的全功能被控制程序。
  • stage本身是一段尽可能小的手工优化过的汇编程序,连接到主控制端,按照主控制端的要求对大的payload进行下载。
  • payload是指一段任意大小的,与位置无关的代码,被stage执行。Cobalt Strike中许多攻击和工作流都将payload用多个stage实现投递。

    在上边两个图中表现了两种artifact的执行方式,一种是将payload用stage实现投递,另外一种方式是payload直接被运行在内存中。

可执行文件和DLLs

  • 生成一个可执行文件或者DLL的方法
    Attacks->Packages->Windows EXE(s)
  • 如何执行DLL文件
    首先生成一个和目标机器匹配的dll文件(x86或者x64),然后在目标机器上使用rundll32.exe 启动生成的dll并运行startw函数即可。

    rundll32.exe artifact.dll,startw

托管文件

  • 托管一个文件
    Attacks->Web Drive-by->Host File
  • 管理或者删除托管文件
    Attacks->Web Drive-by->Manage
  • 查看web活动
    View->Web Log
  • 一些防御措施
    针对curl,wget和lynx返回404
  • 以下为托管文件的具体操作


Artifact Kit

Cobalt Strike使用Artifact Kit生成可执行文件和DLL,是一款商业框架,用于构建可绕过某些防病毒,具体下载方式 Help->Arsenal。

Artifact Kit工作原理

  • 混淆shellcode并将其嵌套于二进制文件中,这种混淆可以绕过识别恶意代码的杀毒软件。
  • 突破防病毒沙箱AV检测,Artifact Kit是可执行文件和DLL模板的集合,它依赖于反病毒产品不会模拟的某些行为来恢复二进制文件内的shellcode。

    Artifact Kit使用步骤

  • Help->Arsenal 下载Artifact Kit,这个是需要授权的。下载完成后解压并执行文件夹中build.sh,该脚本在Linux上执行。
  • 导入脚本,Cobalt Strike->Script Manager,从该文件夹中加载artifact.cna脚本,然后按照生成可执行文件的步骤操作即可。

Scripted Web Delivery

利用powershell、bitsadmin、python、regsvr32远程下马,提供的单行程序将允许攻击者快速获得目标主机的会话。

  • Attacks->Web Drive-by->Scripted Web Delivery

Resource Kit

Resource Kit是Cobalt Strike改变Cobalt Strike在其工作流程中使用的HTA,Powershell,Python,VBA和VBS脚本模板的方法。
下载方法Help->Arsenal下载Resource Kit,这个同样需要授权,下载完成后将resources.cna脚本加载使用,然后按照生成可执行文件的步骤操作即可。

用户驱动攻击

在用户驱动攻击中包括了HTML、Java Signed Applet攻击、office宏、windows木马程序,这些攻击方式可以根据实际灵活变更,比如通过Resource Kit可以修改HTML以及office宏,通过Applet Kit修改Java Signed Applet攻击,通过Artifact Kit修改windows木马等。

msf运行32位Beacon

  • 在Cobalt Strike中新建一个监听
  • 在msf中选择一个客户端攻击木马
  • 将payload设置为http或者https
  • 将LHOST和RHOST设置为Beacon监听地址及端口
  • 设置DisablePayloadHeadler为True
  • 设置PrependMigrate为TRUE
  • 生成一个木马,使用Cobalt Strike加载生成一个payload,目标及其访问后获得Beacon




自定义武器化

  • Attacks->Packages->Windows EXE(S) 生成一个现成的木马
  • Attacks->Packages->Payload Generator 生成一个payload
  • 使用第三方artifact或者工具
  • 自己写脚本集成到Cobalt Strike

行为检测与绕过

回到攻击链,我们现在讨论的目标是代码执行
如下图所示,四个环节都可能被检测到:

  • 在攻击链的第一部分依旧是artifact这样一个包含了payload的全功能被控制程序,函数或者一些特征码会被检测到;
  • 一旦我们的artifact在目标机器上运行,那我们就会看到一些行为,比如我们刚好有个office宏运行在一个临时的进程中,并且将我们的payload注入到进程中,这个时候会产生的行为可能就会被检测到,比如启动一个程序、注入一个新的或者已经存在的进程、写文件;
  • 我们成功注入进程后,我们所有的操作会在内存中进行,根据payload占据内存和线程的属性也可能会被检测到;
  • 进程行为也会被检测,比如explorer.exe,notepad.exe等进程做出了一些非常规的动作,或者还有些常见的被滥用应用程序检测。

    那么针对以上可能被检测到的点我们应该如何绕过
  • 对于函数或者特征码以及注入进程的操作一般使用混淆来绕过
  • 对于写文件、进程行为检测一般采用规避的方式
  • 对于启动程序应该采用欺骗父进程的方式
  • 此外对于payload检测同样应该采用规避的方式

内存检测及绕过

检测方式一般如下:

  • 查找与内存映射文件没有关联的线程开始地址。
  • 内存权限,读写权限是攻击工具中常见的模式,有时候内存区域的执行权限与内存映射文件无关,都会被严格检测。
  • 内存内容也会被检测,比如一个PE文件或者与常见技术有关系的特征码等。

绕过方式:

  • 修改artifact 启动地址
  • artifact避免使用读写执行权限
  • 避免使用stagers
  • 在Malleable C2的配置文件中设置userwx为false
  • 开启stomping模块
  • 设置image_size_x86以及image_size_x64
  • 使用prepend实现PE在内存中的偏移量
  • 设置obfuscate为true
  • 设置cleanup为true
  • 使用strrep来编辑字符串
  • 设置sleep_mask为true

Artifact行为一览表

零组资料文库 all right reserved,powered by 0-sec.org未经授权禁止转载 2020-01-20 11:16:34

results matching ""

    No results matching ""