软件想要免杀,可以采取以下几种方法:
二进制流免杀
利用汇编语言配合C++编写程序,调用系统底层函数进入内核模式,从而绕过用户态的检测。
新工具和新项目
寻找反病毒厂商未覆盖的方法和工具,例如使用新的编程语言或项目,或者采用偏僻的语言来提高代码的复杂度,使其在反病毒软件的盲区中运行。
特征码检测
对文件或内存中的特征进行检测,通常采用模糊哈希或机器学习模型,优点是准确度高,但支持存在瑕疵,复杂逻辑的代码需要人工分析。
内存免杀
将shellcode直接加载进内存,避免文件落地,从而规避文件扫描。申请内存时采用渐进式申请,将内存区域改为可执行,并在执行时执行分离免杀策略。
修改资源
杀软在检测程序时会检查文件的描述、版本号、创建日期等特征,可以通过工具如Restorator修改这些资源文件以达到免杀目的。
隐藏IAT(导入表)
通过修改程序的导入表,使得某些系统函数调用不再触发杀毒软件的检测,因为反病毒软件通常只检测一个进程的行为。
关联检测
检测的特征不仅仅是恶意payload的特征,也可能是一组关联的代码。例如,在使用加载器加载shellcode时,需要开辟内存、加载shellcode、执行内存区域shellcode等步骤,这些步骤可能被反病毒软件提取出来作为特征。
使用免杀工具
可以使用一些专门的免杀工具,如Jtool、Cshellcode免杀处理平台等,这些工具可以帮助你生成免杀文件。
虚拟机测试
在虚拟机环境中测试软件,确保其免杀效果,因为虚拟机环境可以隔离真实系统,避免影响主机安全。
动态免杀技术
通过修改程序的运行时行为,例如使用CreateSvcRpc技术以SYSTEM用户身份执行程序,从而绕过杀毒软件的检测。
请注意,免杀技术可能涉及违反软件使用协议或法律法规,使用时请务必谨慎,并确保不用于恶意目的。