Brute Ratel C4 Keygen
Contents
文章发布至看雪《Brute Ratel C4 Keygen》
分析
Brute Ratel C4简称brc4,一款C2工具,功能和CobaltStrike差不多,界面花里胡哨,用了不少开源黑科技,据作者说前段时间被竞争对手Mdsec泄露到VT,然后又被老毛破解了…公布的版本是v1.2.2,给的license文件只支持到2023-01-01,于是打算抽空看看作者是怎么保护的。
先看目录结构:
包只支持linux,可在ubuntu上自测,界面是Qt写的,commander-runme是运行脚本,.brauth是license,brute-ratel-linx64是server,启动会进行license验证。
启动参数:./brute-ratel-linx64 -ratel -a admin -p 123456 -h 127.0.0.1:8443 -sc cert.pem -sk key.pem
先扫一下如图:
可知server是Go写的,正好试下ida 7.7解析metadata,发现没识别到,搜了字符串发现是1.18,ida8.0(https://hex-rays.com/products/ida/news/8_0/)才支持。
后面用了下0xjiayu兄弟的go_parser,正好支持到1.18,问题不大,把符号贴上去后就感觉没什么玩的了。
看了看逻辑:
main_main
main_product_info
stat //判断.brauth文件是否存在
if (flase)
main_validate_activation_key //从服务端校验激活key,生成.brauth
main_DecryptBlob //关键解密.brauth
main_KeyExpansion //密钥扩展128
main_decryptmsg //xAES解密轮函数
xxxAES轮函数:
AddRoundKey(10, state, RoundKey);
InvShiftRows(state);
InvSubBytes(state);
for (round = 9; round > 0; --round)
{
InvShiftRows(state);
AddRoundKey(round, state, RoundKey);
ShiftRows(state);
InvMixColumns(state);
InvShiftRows(state);
InvSubBytes(state);
}
MixColumns(state);
AddRoundKey(0, state, RoundKey);
开始以为作者留了小动作,上linux_server远程调试确认下密钥扩展的结果,结果只是轮函数简单改了改-。-
KeyGen
再看下license结构:
加密前:01-01-2000:01-01-3000:YourLicense:foo@foo.com:Just 4 fun
格式:start:expired:type:email:note
加密后:v8l7HAP1rnsFZLwL:k9eYKc+dzgi/ybsVCfgVowQwS3Nufd1NdooFsXKPvxgDRE2pWVlTPPRyjcB9vqeaqFC4Mgj/Nv8Qq7+QvixxoQ==
格式:key:base64(xxxAES_ECB(data))
最后附上一个keygen,有兴趣的可以玩玩…