签名免杀的正确姿势

2023-11-20 12:36:47 浏览数 (1)

00

前言

这里针对exe签名对VT查杀结果的影响和实际免杀能力做了测试。

包括vs v143编译器和intel C 编译器。

四种签名方式:

  1. 没有签名
  2. sigthief签名窃取
  3. 无效的签名
  4. 有效的签名

及两个方面的测试:

  1. VT查杀测试
    1. 空包测试:没有什么内容的代码
    2. 简单木马测试:最简单的shellcode加载器并且没有做任何加密
    3. 更复杂木马测试:shellcode加密,使用HTTP回调加载器
  2. 杀软测试:包括火绒、360、defender、卡巴

截图比较多,可以直接划至末尾看总结。签名工具包末尾下载。

空包测试

打包一个没有什么内容的空exe:

1. 没有签名

vs 默认编译器v143:

intel C 编译器:

2. sigthief签名窃取

这里窃取的是360的证书:

vs 默认编译器v143:

3. 无效的签名

使用signtool GUI工具生成一份微软证书:

使用微软的签名工具签名:

由于签名时没有指定时间截,所以时间截不可用,也表示签名无效:

vs 默认编译器v143:

4. 有效的签名

签名时加上时间截服务器:

签名后时间截上会显示签名时间:

vs 默认编译器v143:

简单木马测试

这里使用最简单的加载器并且没有做任何加密进行测试:

1. 没有签名

vs 默认编译器v143:

intel C 编译器:

2. sigthief签名窃取

vs默认编译器:

只减少了两个。

intel C 编译器:

效果几乎没有变化。

3. 无效的签名

vs默认编译器:

减少了5个。

intel C 编译器:

减少了2个。

4. 有效的签名

vs默认编译器:

减少了6个。

intel C 编译器:

减少了2个。

更复杂木马测试

shellcode加密,使用HTTP回调加载器:

1. 没有签名

vs默认编译器:

intel C 编译器:

2. sigthief签名窃取

vs默认编译器:

intel C 编译器:

3. 无效的签名

vs默认编译器:

intel C 编译器:

4. 有效的签名

vs默认编译器:

intel C 编译器:

杀软测试

为了方便测试,重新对exe进行了重命名:

vs前缀代表默认编译器,intel前缀代表intel c 编译;test代表简单木马,test1代表更复杂木马;invalid代表无效签名,signed代表sigthief签名窃取,signeds有效签名。

360、火绒测试:

简单木马全军覆没,intel c 编译的木马全军覆没,vs默认编译器的更复杂木马全部存活。

面对defender全军覆没:

卡巴只有更复杂木马能够正常执行:

几分钟后全部被终止但是并没有报毒。

01

总结

签名对VT查杀结果的影响表格:

测试

编译器

VT查杀

没有签名

sigthief签名窃取

无效签名

有效签名

空包

v143

4

3

2

2

Intel C Compiler

0

-

-

-

简单木马

v143

31

29

26

25

Intel C Compiler

23

23

21

21

更复杂木马

v143

7

3

3

2

Intel C Compiler

2

3

2

2

空包时intel C 编译器可以做到VT0查杀,也就是说如果代码层面免杀做得足够好的话,使用intel C 编译器就可以做得VT0查杀。在代码层面免杀时,sigthief、无效签名和有效签名均可使报毒大量减少。sigthief可以使报毒减少,但在报毒较低时可能导致报毒增加。无效签名比sigthief效果更好,有效签名又略好于无效签名。

杀软测试结果:

火绒、360:简单木马全军覆没,intel c 编译的木马全军覆没,vs默认编译器的更复杂木马全部存活。

defender:全军覆没。

卡巴:只有更复杂木马能够正常执行,但又在几分钟后被终止但是并没有报毒。

对上面两者进行总结,exe签名面对实际的杀软时签名与不签名并没有太大的区别,但可以使VT上面的数据更好看,当然,这只是针对自签名,如果用微软认证的证书进行签名结果可能会更好。

锦鲤安全

一个安全技术学习与工具分享平台

点分享

点收藏

点点赞

点在看

0 人点赞