远控免杀——概念

远控免杀——概念

免杀概念

免杀技术全称为反杀毒技术Anti Anti- Virus简称“免杀”,它指的是一种能使病毒木马免于被杀毒软件查杀的技术

杀软检测方式

扫描技术

  1. 扫描压缩包:对压缩包和封装文件作分析检测
  2. 程序篡改防护:避免恶意程序通过篡改删除杀毒侦测程序从而破坏电脑
  3. 修复技术:对被恶意程序损坏的文件进行还原
  4. 急救盘杀毒:利用空白U盘制作急救启动盘来检测电脑病毒
  5. 智能扫描:扫描检测常用磁盘、系统关键位置,耗时较短
  6. 全盘扫描:扫描全部磁盘,耗时较长
  7. 勒索软件防护:保护电脑中的文件不被恶意加密
  8. 开机扫描:开机自动扫描,扫描压缩文档和可能不需要的程序

监控技术

  1. 内存监控:发现内存中存在病毒并主动报警;监控所有进程;监控读取到内存中的文件;监控读取到内存中的网络数据
  2. 文件监控:发现写到磁盘上的文件中存在病毒或者被病毒感染,主动报警
  3. 邮件监控:电子邮件的附件中存在病毒时进行拦截
  4. 网页防护:阻止网络攻击和不安全的下载行为
  5. 行为防护:警示用户应用程序的可疑行为

扫描引擎

特征码扫描

特征码扫描是传统杀毒软件的主要利器,是病毒诊断方法中,扫描法的一种。将扫描信息与病毒特征库进行对照,信息与病毒特征吻合的文件会被判断为存在病毒。病毒的特征码一般是文件内部的一段或者几段代码,特殊性在于不大可能与正常程序代码吻合。抽取的代码长度要适当,保证特征码唯一性的同时缩减病毒扫描的空间与时间开销

特征码:能识别一个程序是一个病毒的一段不大于64字节的特征串

特征码类别:

  1. 文件特征码:单一文件特征码、复合文件特征码(通过多处特征进行判断)。针对文件病毒
  2. 内存特征码:单一内存特征码、复合内存特征码。针对内存病毒

优点:速度快;准确率相对较高,误杀操作较少;基本不需要用户参与判断

缺点:采用病毒特征代码检测,面对不断出现的新型病毒需要不断更新病毒库,否则检测工具的老化会失去使用价值;病毒特征代码检测无法对不知道特征码的新病毒进行检测;病毒特征码本身有问题可能会出现误报,数据误删

文件校验和

对文件扫描后,计算正常文件内容的校验和,将校验和写入文件中或写入别的文件保存;定期或每次在使用文件前,检查文件现在内容算出的校验和与原来保存的校验和是否一致,从而判断文件是否被感染

优点:方法简单;可发现未知病毒;能发现文件细微变化

缺点:误报率高;效率低;不能识别病毒

行为检测

通过长期观察研究总结病毒的特殊行为,并且这些行为在正常程序行为中比较罕见。当程序运行时,监视进程的各种行为,发现病毒行为,立即报警。

优点:可发现未知病毒;可准确预报未知的大多病毒

缺点:可能误报;不能识别病毒;需要用户参与判断

主动防御

不需要病毒特征码支持,杀软自行分析扫描目标程序的行为,根据预先设定的规则进行主动的病毒判断清除等操作。

实现难度较高,计算机智能也是在一系列规则下诞生的,该技术还需要不断的研究进步

机器学习识别

既可以做静态样本的二进制分析,又可以运行在沙箱动态行为分析中,内容/行为+算法模式。随着深度学习的发展,运用深度学习技术来识别病毒特征

免杀技术

免杀技术最基本思想就是破坏病毒木马本身的特征,可以是特征码,也可以是行为特征,破坏其固有特征并保留其原有功能

修改特征码

数据

特征码定位到数据位置不容易修改

  1. 字符串,如果不影响程序逻辑,可替换大小写;无关紧要的数据,随意替换
  2. 整数,如果不影响结果,可替换值或清零等
  3. 地址,基本不能修改,具体看情况
  4. PE头数据,无用数据清零或修改,有用数据具体情况具体分析
  5. 直接修改代码访问数据的地址,数据放到其他地址

代码

特征码定位到代码

  1. 等价替换汇编代码,例如mov eax,0可以换成xor eax,eax,直接结果相同二进制代码不同
  2. 在不影响逻辑的情况下,交换代码顺序
  3. 代码块位移,将代码块移动到不用的内存位置,通过加入jmp addr跳过去执行

修改特征码最重要的是定位特征码,但是定位并修改特征码后不代表病毒木马程序能正常运行,各个杀软厂商的特征库不同,一般修改特征码只能对一类杀软起效。

添加花指令

花指令也可称之为垃圾指令。花指令本身对程序的执行结果没有影响,存在的目的是阻止反汇编程序或对反汇编设置的障碍

⼤多数反病毒软件是靠特征码来判断⽂件是否有毒的,⽽为了提⾼精度,现在的特征码都是在⼀定偏移量限制之内的,否则会对反病毒软件的效率产⽣严重的影响。

通过添加花指令,程序的部分偏移会受到影响。反病毒软件如果不能识别花指令,那么检测特征码的偏移量就会受到影响,从而无法正常检测木马病毒

如何添加花指令:

  1. 加数据计算代码,加减乘除各类组合
  2. 加字符串操作代码,增加、删除、查找、替换等
  3. 加多层跳转,跳转间加无效指令
  4. 加貌似有效的API调用,如LoadLibrary+GetProcAddr+API等

加壳免杀

可以将加壳简单理解为:解密器/解压器+加密器/压缩器(原始代码)

通过加密器/压缩器将原始代码进行加密压缩,让其特征码变化隐藏,然后组装上解密器/解压器到文件中,运行是先运行解密/解压器,将加密压缩内容解密解压,然后继续运行原始代码

加冷门壳

壳也有特征,知名的壳很容易被识别出来,或者自动脱壳并查杀

改壳

将开源的压缩壳进行修改,比如修改入口,区段信息修改,入口代码移位

内存免杀

大多数反病毒软件的文件扫描与内存扫描采用的不是同一套特征码,文件免杀只能过静态文件扫描,执行时会读入内存,没有做内存免杀还是会被杀软识别出来

如果是利用Windows自身提供的API来将加密或者封装好的shellcode写入到内存执行的话,将会大大增加查杀的难度

二次编译

通过各种编码器、各种语言对shellcode进行二次编码从而达到免杀效果

分离免杀

将shellcode和加载器分离。shellcode的加载器本身并不包含恶意代码,当加载器运行时,从程序之外加载shellcode执行

将PE文件以某种加密方式进行存储后使用加载器读取PE文件并且解密,最后放入内存中执行

资源修改

有些杀软设置有扫描白名单,比如程序图标为杀软就可过查杀

加资源

使用ResHacker对文件进行资源操作,将正常软件的资源(如图片、版本信息、对话框等)加入到自己的软件

替换资源

使用ResHacker替换无用资源(Version等)

加签名

使用签名伪造工具,将正常软件的签名信息假如自己的软件中