Cobalt Strike – Bypassing Windows Defender 混淆处理

对于所有红色团队成员来说,在交付有效的替代品同时又不拖延延展组织的所有风吹草动始终是一个挑战。就像所有其他安全解决方案一样,Windows Defender在检测由Cobalt Strike等工具生成的通用有效的方面也变得更加出色。

在此示例中,我们将通过Cobalt Strike生成PowerShell负载,并了解如何进行进行操作,从而绕过Windows 10 PC上的Windows Defender执行。这不是从Windows Defender隐藏有效负载的最优雅前后简单的解决方案,而是是我们使用的方法之一,并且可以正常工作。

创建有效负载的过程如下:

这将导致创建包含PowerShell命令的payload.txt。

如果我们尝试在受害PC上运行命令,则Windows Defender会向我们打招呼,从而对其潜在威胁。

为了绕过Windows Defender,我们需要首先了解Cobalt Strike如何创建其有效负载,然后更改其某些签名,希望Windows Defender认为它是安全的。

首先,很明显,通过查看格式或通过* -encodedcommand * PowerShell标志可以对base64编码的有效负载命令进行编码

要解码命令,我们需要剪切

powershell.exe` `-nop` `-w` `hidden` `-encodedcommand

分开并保留其余部分。

然后使用以下命令解码字符串的其余部分。

echo` `'base64 payload'` `| ``base64` `-d

生成的解码字符串初始包含base64编码的字符串,但尝试解码将不起作用并吐出乱码,因为该字符串也是从IEX明显经过Gzip压缩的(新对象IO.StreamReader(新对象IO。 Compression.GzipStream($ s [IO.Compression.CompressionMode] :: Decompress)))。ReadToEnd()部分,PowerShell命令。

现在我们需要了解此命令中的内容,因为这实际上是触发Windows Defender的部分,即有效负载。通过一些Google搜索,我找到了该PowerShell脚本,它完全可以完成[ http://chernodv.blogspot。 com.cy/2014/12/powershell-compression-decompression.html

](http://chernodv.blogspot.com.cy/2014/12/powershell-compression-decompression.html

$data` `= ``[System.Convert]``::FromBase64String(``'gzip base64'``)``$ms` `= ``New-Object` `System.IO.MemoryStream``$ms``.Write(``$data``, 0, ``$data``.Length)``$ms``.Seek(0,0) | ``Out-Null``$sr` `= ``New-Object` `System.IO.StreamReader(``New-Object` `System.IO.Compression.GZipStream(``$ms``, ``[System.IO.Compression.CompressionMode]``::Decompress))``$sr``.ReadToEnd() | ``set-clipboard

该脚本首先将对字符串进行base64解码,然后将其解压缩,从而为我们提供完整的代码。它随后将输出的内容复制到副本,以将其粘贴到文本文件中,以备后用。

在** $ var_code **变量保存正在由Windows Defender的检测有效副本,我们需要换出绕过防御者。

进一步将** $ var_code **解码是多个ASCII字符,但此时不需要完全解码。

$enc``=``[System.Convert]``::FromBase64String(``'encoded string'``)

我们可以通过以下方式阅读部分内容:

$readString``=``[System.Text.Encoding]``::ASCII.GetString(``$enc``)

现在,以上内容显示了有关用户代理和攻击者IP的一些信息。

对于这类工作,最好的工具和首选工具是Daniel Bohannon的 Invoke-Obfuscation。可以在这里找到该项目的Github页面。

以Invoke-Obfuscation开始的命令是:

Import-Module` `.\``Invoke-Obfuscation``.psd1``Invoke-Obfuscation

现在,我们需要定义需要纠正的有效替代部分。可以使用以下命令完成

Set scriptblock ``'final_base64payload'

该工具将使用我们的脚本块,然后询问我们要进行的方式。在这种情况下,我选择了COMPRESS,然后选择了1。这并不意味着其他选项将不起作用,但是在撰写本文中,Inboke-Obfuscation将发挥神奇的作用,并打印出PowerShell命令,该命令经过充分处理,可能会绕过Windows Defender。

然后,只需键入Out,然后输入为其另存为PowerShell脚本的路径即可。

Out c:\payload.ps1

先前步骤中当前解压缩的有效负载如下所示。

因此,这全都归结为以下事实:我们需要用我们从Invoke-Obfuscation新创建的有效负载替换** [Byte []] $ var_code = [System.Convert] :: FromBase64String **内容。了一个新变量,我将其称为$煞,然后将Invoke-Obfuscation的输出内容放入其中。

重要提示 –您需要在最后一个|之后移除零件。来自Invoke-Obfuscation的输出,因为这是执行命令的命令。我们将不需要它,因为Cobalt Strike模板将为我们做到这一点。

如果您使用的是@sec_groundzero Aggressor脚本则结果应为Cobalt Strike中的信标和Slack通知。

如果我们使用Process Hacker来检查原始CS有效负载和修改后的CS有效负载,我们会发现我们没有更改信标的基本行为。

Cobalt Strike Bypassing Windows Defender 使用混淆处理的更多相关文章

  1. [工具]Cobalt Strike 3.13 TeamServer for Windows

    Cobalt Strike 3.13 TeamServer for Windows 0x001 环境 CS 3.12 或 3.13 Kali或Win最好安装jdk1.8.5或之后版本 设置环境变量,如 ...

  2. Cobalt Strike 学习

    前言 本文以一个模拟的域环境为例对 Cobalt Strike 的使用实践一波. 环境拓扑图如下: 攻击者(kali) 位于 192.168.245.0/24 网段,域环境位于 192.168.31. ...

  3. (转载)Cobalt Strike tutorial下针对CVE-2017-0199利用

    CVE-2017-0199利用OLE对象嵌入Word / RTF文档的方式,使得可以在没有用户交互的情况下执行其内容.OLE由许多不同的程序支持,OLE通常用于使在另一个程序中可用的程序中创建的内容. ...

  4. Cobalt Strike深入使用

    System Profiler使用 System Profiler 模块,搜集目标的各类机器信息(操作系统版本,浏览器版本等) Attacks->web drive-by->System ...

  5. Cobalt Strike 3.13的新功能

    Cobalt Strike 3.13现已推出.此版本添加了TCP Beacong,进程参数欺骗,并将Obfuscate和Sleep功能扩展到SMB和TCP Beacons. TCP Beacon Co ...

  6. 后渗透神器Cobalt Strike的安装

    0x01 简介 Cobalt Strike集成了端口转发.扫描多模式端口监听Windows exe木马,生成Windows dll(动态链接库)木马,生成java木马,生成office宏病毒,生成木马 ...

  7. cobalt strike和metasploit结合使用(互相传递shell会话

    攻击机 192.168.5.173 装有msf和cs 受害机 192.168.5.179 win7 0x01 msf 派生 shell 给 Cobalt strike Msfvenom生成木马上线: ...

  8. Cobalt Strike系列教程第五章:截图与浏览器代理

    Cobalt Strike系列教程分享如约而至,新关注的小伙伴可以先回顾一下前面的内容: Cobalt Strike系列教程第一章:简介与安装 Cobalt Strike系列教程第二章:Beacon详 ...

  9. Cobalt Strike系列教程第二章:Beacon详解

    上周更新了Cobalt Strike系列教程第一章:简介与安装,文章发布后,深受大家的喜爱,遂将该系列教程的其他章节与大家分享,提升更多实用技能! 第二章:Beacon详解 一.Beacon命令 大家 ...

随机推荐

  1. sender e

    sender 产生事件的对象e 事件的参数

  2. 关于pycharm中输出的内容不全的解决办法

    很多时候我们会发现有的时候输出的结果特别多的时候,会在最后输出时用...代替,最后输出一个总长度,那要咋么弄咧? import pandas as pd # 设置显示的最大列.宽等参数,消掉打印不完全 ...

  3. leetcode 最大水池

    leetcode 11题 水池最大容积 题目描述 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 ( ...

  4. SuperSocket Code解析

    SuperSocket1.6Code解析 Normal Socket System.Net.Sockets.dll程序集中使用socket类: 服务器: 创建socket:_socket = new ...

  5. influxdb的命令们

    InfluxDB是一个开源的时序数据库,使用GO语言开发,特别适合用于处理和分析资源监控数据这种时序相关数据.而InfluxDB自带的各种特殊函数如求标准差,随机取样数据,统计数据变化比等,使数据统计 ...

  6. 第二阶段冲刺个人任务——six

    今日任务: 搭建网络服务器,上传数据库及程序. 昨日成果: 合并程序(统计团队博客).

  7. 手把手写一个基于Spring Boot框架下的参数校验组件(JSR-303)

    前言 之前参与的新开放平台研发的过程中,由于不同的接口需要对不同的入参进行校验,这就涉及到通用参数的校验封装,如果不进行封装,那么写出来的校验代码将会风格不统一.校验工具类不一致.维护风险高等其它因素 ...

  8. HTML-02-常用标签演示

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. 百度ai 接口调用

    1.百度智能云 2.右上角 管理控制台 3.左上角产品服务 选择应用 4.创建应用 5.应用详情下面的查看文档 6.选择pythonSDK  查看下面快速入门文档  和  接口说明文档. 7.按步骤写 ...

  10. Vertx使用EventBus发送接受自定义对象

    先看官方文档步骤: 需要一个编解码器,看源码: 可见内置了需要数据类型的实现,所以发送其他消息可以发送,但是如果发送自定义对象就需要自己实现编解码逻辑了 一 自定义编解码器 /** * 自定义对象编解 ...