隐匿自己的c2服务器(一)

隐匿自己的c2服务器(一)

🌊服务器设置

安装java环境

yum install -y java-1.8.0-openjdk*

image-20220910103114222

启动设置

遇到插件中中文乱码时,只需要更改启动的编码参数即可解决:

java  -Dfile.encoding=utf-8 -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -Xms512M -Xmx1024M -jar cobaltstrike.jar

开启禁ping

vim /etc/sysctl.conf
net.ipv4.icmp_echo_ignore_all = 1		//添加这一行
sysctl -p								//保存之后刷新配置

🚀微信机器人推送上线信息

首先先注册好企业微信,不清楚百度上搜一下就好了,下载好这个插件:项目地址上传到服务器,然后在群聊中添加机器人

image-20221124225924234

一路点过来到这里就得到了机器人的webhook地址了

image-20221124230113693

然后开始修改下载好的文件,因为配置的是微信推送,所以在CS_bot.py这个文件里注释掉其他的不用项。然后注意这个py文件本来就有拼接url故需要将webhook里面key的部分(?key=之后的)提出来替换掉那个xxxx

image-20221124233225907

然后编辑CS_bot.cna,划线的地方需要修改为自己放这个py文件的绝对路径。再编辑好之后先运行一下这个文件,缺什么包就用pip3下载好。

image-20221124233309521

使用agscript在后台启动,注意这里的格式为 user那里不要和自己登录的用户名重复

nohup ./agscript <host> <port> <user> <pass> </file/CS_bot.cna> 

最后的效果如下:

bc54eaa5-07a0-4333-9995-6702956dd96d

🏳️‍🌈端口特征修改

修改teamserver默认端口

其位于teamserver的最后一段,将-Dcobaltstrike.server_port=改为自己想设置的端口,

image-20221125005322123

🏬证书特征修改

CobaltStrike的默认证书有三个:

  • cobaltstrike.store 证书:用于服务端和客户端加密通讯
  • proxy.store 证书:用于浏览器代理也就是browserpivot功能
  • ssl.store 证书:如果你没有配置https-certificate选项,并且使用的是https监听器那么CobaltStrike默认就会使用这个证书

其中cobaltstrike.store证书和ssl.store证书比较敏感,特征也早已被各大厂商标记,建议自己生成替代不要使用其默认证书。我们可以使用keytool来管理或生成证书。keytool是一个Java数据证书的管理工具 ,keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中(即.store后缀文件)

可以使用 keytool -h 查看帮助,这里简单例举一点,其他的有需要就百度

image-20221125001600435

cs的原始证书特征很明显就不看了,我这把原先的证书删了,用Keytool来重新生成证书

keytool -keystore cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias 别名 -dname "CN=(名字与姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称), ST=(州或省份名称), C=(单位的两字母国家代码)"
eg:
keytool -keystore test.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias test.tk -dname "CN=Microsoft Windows, OU=MOPR, O=Microsoft Corporation, L=Redmond, ST=Washington, C=US"

查看一下生成的证书(密钥库密码默认为123456,密码取决于上面你改不改)

keytool -list -v -keystore 证书名.store

image-20221125005652373

之后还要在teamsever里面修改一下keystore:

image-20221125005608842

到这里简单的修改就完成了

🌏流量特征修改

利用cdn加速进行隐匿

域名

正常情况下,第一步我们要做的是先申请一个域名(这个域名的作用是用来配合 CDN 来隐藏我们的C2服务器),然后再申请一个CDN对我们所申请的域名进行加速,在这个过程中CDN会要求我们在域名的解析配置中设置相应的 CNAME。

  • 一句话核心原理:使用CDN内容分发网络的多节点分布式技术,通过“加速、代理、缓存”隐藏在后面的静态文件或服务;最终实现对外暴露的是CDN多节点的公网域名IP,很难甚至无法溯源真实后端服务器的域名或IP!

首先要做的就是申请一个域名,可以去下面这个外网的弄到免费域名https://www.freenom.com/zh/index.html?lang=zh。这里就细讲一下比较详细的过程:

没有账号不用管待会会有注册的,先搜索一个域名,最好就是搜全,加上.tk .ml之类的,否则有可能搜不到。

image-20221125013853419

然后注册那里,我没截图但这里拿编辑页面来说。就是你的信息不能乱写,正确度不高的话是成功不了的,比如如果你是挂代理上来的,那就在编辑信息就得和你的IP所在地尽可能匹配。像我用的就是下面这个网站洛杉矶地址生成器 - 美国地址生成器 - 美国身份生成器 (meiguodizhi.com)来生成信息。

image-20221125111751267

注册成功了就可以点上面横栏service里面查看。

cdn配置

cdn我用的是免费的Cloudflarehttps://www.cloudflare.com/zh-cn/。注册账号后登陆,选择免费计划然后添加刚刚弄到的欲与CS服务器绑定的域名

image-20221125112734323

进入站点后,点击左侧的dns,查看Cloudflare的名称服务器,把这两个ns记录下

image-20221125113001703

然后会带刚刚注册域名的网站,在service里面有管理页面,进来如下依次填入前面的两个ns记录。这样就可以将自己的域名的所有解析功能都托管在Cloudflare,这样Cloudflare可以提供CDN的解析功能了

image-20221125113127457

然后接着就是添加两条记录,一个的名称@或者其他的也可以,一个为www。添加后保存

image-20221125114242797

在页面规则这里也添加两条,一个的url为*.域名/*,一个为.域名/*。底下选缓存级别绕过

image-20221126012104555

之后可以ping一下自己的域名,能ping通而底下的ip也已经不是我们服务器的ip了。

image-20221125114522388

证书和密钥

这里的设置就是把下面的自动配置的功能都关了。

image-20221125115706895

下面创建证书,如下图

image-20221125115833161

很简单看图操作:

image-20221125115949205

创建之后保存一下生成的密钥和证书

在服务器上加俩个文件分别为secret.key 和 cert.pem 来保存。使用以下命令生成 certout.p12 。再接着生成新的证书:

openssl pkcs12 -export -in 保存的源证书.pem -inkey 保存的私钥.key -out 输出的p12文件名(自定义).p12 -name 设置别名 -passout pass:设置密码
keytool -importkeystore -deststorepass 设置密码 -destkeypass 设置密码 -destkeystore 设置证书文件名.store -srckeystore 上面自定义的p12文件.p12 -srcstoretype PKCS12 -srcstorepass 上面设置的密码 -alias 设置别名
eg:
openssl pkcs12 -export -in cert.pem -inkey secret.key -out certout.p12 -name cloudflare_cert -passout pass:753015
keytool -importkeystore -deststorepass 753015 -destkeypass 753015 -destkeystore bk.store -srckeystore certout.p12 -srcstoretype PKCS12 -srcstorepass 753015 -alias cloudflare_cert

修改profile文件

然后就是修改以下profile文件,根据你自己的文件来改GitHub上有很多拿来改一下就可以用了。我这里就大概这样

image-20221127005025141

最后检查一下域名能否正常使用,这个ip就是我们使用的Cloudflare的最近CDN节点的公网ip

image-20221126024043510

上线效果

配置CS Listener,将高信誉域名填入HTTPS Hosts和HTTPS Host(Stager)中,将CS服务器域名填入HTTPS Host Header中

但是要注意:Cloudflare的代理模式只有部分端口能够使用,使用时要注意端口的设置,否则是监听不到的。(Cloudflare 支持的 HTTP 端口:80、8080、8880、2052、2082、2086、2095;Cloudflare 支持的 HTTPS 端口:443、2053、2083、2087、2096、8443)

还有因为我是使用的国内云主机,域名没有进行备案,所以没有办法使用80、8080、443、8443端口提供服务;这里就直接拿https的来了

image-20221126015752095

上线之后等一会是可以看到,CS上显示该机器的外部ip为某云的ip,并且该ip是动态变化的。

image-20221126015959609

查看受控主机本地回接C2服务器的ip地址已经是CDN节点IP,而不是我们自己服务器的真实ip

image-20221126021206548

查一下这个IP可以看到来自cloudflare

image-20221126021239791

至此就简单完成了,后面还会接着尝试其他方法来隐匿

posted @ 2022-11-27 01:37  lockly  阅读(493)  评论(0编辑  收藏  举报