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. BFS - 求最短路径

    Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. ...

  2. Redux 一步到位

    简介 Redux 是 JavaScript 状态容器,提供可预测化的状态管理 Redux 除了和 React 一起用外,还支持其它库( jquery ... ) 它体小精悍(只有2kB,包括依赖) 由 ...

  3. Android权限系统

    Android系统为每个应用程序提供了一个安全的运行环境,不同程序间相互隔离,应用程序的数据等私有资源,外界无法访问.这个安全的运行环境由Android的权限系统(可称为沙箱系统)来提供.本文简单记录 ...

  4. python sys.modules 和 sys.path 及 __name__

    1.sys.modules 存放已经缓存的模块 值是dict 2.sys.path 搜索路径 值是list 3.if __name__= __main__ 可以看成python的程序入口,如果直接执行 ...

  5. 从0开发3D引擎(八):准备“搭建引擎雏形”

    大家好,现在开始本系列的第三部分,按照以下几个步骤来搭建引擎雏形: 1.分析引擎的需求 2.实现最小的3D程序 3.从中提炼引擎原型 4.一步一步地对引擎进行改进,使其具备良好的架构 5.实现与架构相 ...

  6. 面试官问你MyBatis SQL是如何执行的?把这篇文章甩给他

    初识 MyBatis MyBatis 是第一个支持自定义 SQL.存储过程和高级映射的类持久框架.MyBatis 消除了大部分 JDBC 的样板代码.手动设置参数以及检索结果.MyBatis 能够支持 ...

  7. 富文本编辑器、全文检索和django发送邮件

    1.富文本编辑器 1.1快速了解 借助富文本编辑器,网站的编辑人员能够像使用offfice一样编写出漂亮的.所见即所得的页面.此处以tinymce为例,其它富文本编辑器的使用也是类似的. 在虚拟环境中 ...

  8. 数据结构与算法 --- js二分算法

    var arr = [-34, 1, 3, 4, 5, 8, 34, 45, 65, 87]; //递归方式 function binarySearch(data,dest,start,end ){ ...

  9. Mybatis框架配置讲解以及使用

    1.什么是Mybatis MyBatis 是一款优秀的持久层框架, 它支持定制化 SQL.存储过程以及高级映射. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.·MyB ...

  10. Springboot | @RequestBody 接收到的参数对象属性为空

    背景 今天在调试项目的时候遇到一个坑,用Postman发送一个post请求,在Springboot项目使用@RequestBody接收时参数总是报不存在,但是多次检查postman上的请求格式以及项目 ...