CS后门源码特征分析
cs?cs go!来看看经典后门的流量分析吧
首先准备好cs在kali中解压后进入cs的文件目录中
1
| chmod 777 * #然后使用chmod命令给所有的文件可读可写可执行权限
|
然后设置并启动cs

之后在物理机上运行cs

登陆账号密码后进入后台

新建一个监听器

生成一个木马文件并选择监听器生成并保存在文件夹中

在物理机中双击运行文件发现物理机成功在后台上线

然后抓取流量包,使用筛选指令:


在流量包中找到特征码==KZlL==

使用java的==checksum8==算法来计算
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| public class EchoTest {
public static long checksum8(String text) {
if (text.length() < 4) {
return 0L;
}
text = text.replace("/", "");
long sum = 0L;
for (int x = 0; x < text.length(); x++) {
sum += text.charAt(x);
}
return sum % 256L;
}
public static void main(String[] args) throws Exception {
System.out.println(checksum8("KZlL"));
}
}
|
结果输出为93,说明了这是一个64位的木马

这里再生成一个32位的后门木马
在win7虚拟机中运行木马文件可以看到win7在监听器中上线

在wireshark打开流量检测找到第一个请求头

使用java的==checksum8==算法来计算特征码==Y2Wz==

可以得到结果92而92也正好表示为32位木马文件
创建一个http的规则文件,命名位==cshttp==将规则写入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
alert http any any -> any any (gid:3333; sid:30001; rev:1; \ msg:"http-beacon-checksum8-path-parse"; \ classtype: http-beacon; \ flow: established, to_server; \ urilen:4<>6; \ luajit:checksum8_check.lua; \ )
function init (args) local needs = {} needs["http.uri"] = tostring(true) return needs end
function match(args) local uri_raw = tostring(args["http.uri"]) local uri = string.sub(uri_raw, 2, -1) -- 去除uri中的"/" local sum = 0
for i=1, local x = string.sub(uri,i,i) sum = sum + string.byte(x) end
if (sum % 256) == 92 then return 1 -- 符合checksum8规则,匹配成功 else return 0 -- 不符合checksum8规则,匹配失败 end end
|
然后放入suricata的规则文件夹之中运行之后再查看日志

之后再生成一个https型的后门,先创建一个新的监听器

再生成一个可执行的恶意文件

之后在物理机中运行用wirehshark进行流量监测可以发现JA3码具有明显的特征

编写规则文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| alert tls any any -> any any (gid:6666; sid:30005; rev:1; \ msg:"https-beacon-ja3-hash"; \ classtype: https-beacon; \ ja3.hash; pcre:"/652358a663590cfc624787f06b82d9ae|4d93395b1c1b9ad28122fb4d09f28c5e|72a589da586844d7f0818ce684948eea|a0e9f5d64349fb13191bc781f81f42e1/"; \ )
alert tls any any -> any any (gid:6666; sid:30006; rev:1; \ msg:"https-beacon-ja3s-hash"; \ classtype: https-beacon; \ ja3s.hash; pcre:"/fd4bc6cea4877646ccd62f0792ec0b62|15af977ce25de452b96affa2addb1036|b742b407517bac9536a77a7b0fee28e9/"; \ )
|
查看日志

加壳免杀处理流量分析
因为是在无安全软件的干扰下进行的我们直接用一个最简单的upx壳来当作免杀处理


加壳之后先运行64位的后门软件,然后运行抓包,再将心跳包后缀改为vir文件解密

看上去upx壳并不能对最后解析的结果产生作用
再运行32位的http后门,将生成的心跳包用工具解密

可以看到同样也将心跳包的内容解密出来了
由此可见一些简单的加壳对心跳包的解读是没有影响的