开头
有段时间对免杀十分感兴趣,想了想好久没在公众号发东西了,一直以来都是写语雀(这可真是好东西啊),决定把以前学习别人项目的和自己试着做的免杀(已失效)的记录发出来凑一凑文章
项目分析
github:https://github.com/9emin1/charlotte
- 先正常执行一遍
- 发现过程有一个removing charlootte.cpp,去python文件里把删除cpp文件的代码给删了
- 重新执行一遍,有我们想看的文件了
- 内容全是随机字符串
- 打开模板文件template.cpp对比,首先确认一下工作模式
确认了template.cpp是模板文件,但是不全,其中有一部分都是由python生成后,插入到其中
在.py文件中可以看到,利用replace替换字符串的方式去实现随机字符串的生成
它会将敏感的字符串都进行xor混淆,当然也包括shellcode 要注意的是,xor为了避免可逆或者固定特征,采用的也是随机字符串
通过对比,可以看到 不单单是字符,函数也进行了随机 同时,使用了getprocaddress的方式隐藏了导入表
- 接下来可以抄一下代码,看看如何实现的
在python中,会将字符串进行xor后,替换到模板中
然后在生成的文件中,开头可以看到,这一串就是xor混淆后的CreateThread等字符
然后他会放到需要用的地方进行调用
类似以下代码(python版)
总结
项目涉及到的免杀方法
- xor混淆shellcode 硬编码
- 函数名变量名随机字符串
- 隐藏导入表