杀毒软件查杀思路
杀软常见扫描方式与技术
1、扫描压缩包技术:即是对压缩包案和封装文件作分析检查的技术。
2、程序窜改防护:即是避免恶意程序借由删除杀毒侦测程序而大肆破坏电脑。
3、修复技术:即是对恶意程序所损坏的文件进行还原
4、急救盘杀毒:利用空白U盘制作急救启动盘,来检测电脑病毒。
5、智能扫描:扫描最常用的磁盘,系统关键位置,耗时较短。
6、全盘扫描:扫描电脑全部磁盘,耗时较长。7、勒索软件防护:保护电脑中的文件不被黑客恶意加密。
8、开机扫描:当电脑开机时自动进行扫描,可以扫描压缩文档和可能不需要的程序。
监控技术
1、内存监控:当发现内存中存在病毒的时候,就会主动报警;监控所有进程;监控读取到内存中的文件;监控读取到内存的网络数据。
2、文件监控:当发现写到磁盘上的文件中存在病毒,或者是被病毒感染,就会主动报警。
3、邮件监控:当发现电子邮件的附件存在病毒时进行拦截。
4、网页防护:阻止网络攻击和不安全下载。5、行为防护:提醒用户可疑的应用程序行为。
常见的查杀方式
1、特征码扫描:所谓特征码其实就是程序内部的一串或者几串二进制机器码。特征码匹配工作原理是先总结出某个病毒的特征码,然后在目标文件中搜索看有没有类似的匹配,如果有匹配就暂定为病毒文件。优点:速度快,配备高性能的扫描引擎;准确率相对比较高,误杀操作相对较少;很少需要用户参与。缺点:采用病毒特征代码法的检测工具,面对不断出现的新病毒,必须不断更新病毒库的版本,否则检测工具便会老化,逐渐失去实用价值;病毒特征代码法对从未见过的新病毒,无法知道其特征代码,因而无法去检测新病毒;病毒特征码如果没有经过充分的检验,可能会出现误报,数据误删,系统破坏,给用户带来麻烦。
2、文件和校验法:将正常文件A的hash值保存,然后如果有一个新的A文件发送过来计算其hash值,如果与正常文件的不同,那么认定为病毒文件。
3、沙盒检测:基于行为的检测,看有没有一些敏感的行为来确定文件是否为病毒。优点是可能发现未知的病毒,缺点是误报相对较高,需要用户参与。
4、云查杀:类似于特征码查杀。只是如果特征码库没有匹配值的时候会把文件上传到云端继续分析,有时候扫描病毒刚扫描出来不是病毒,但过一会儿扫描就是病毒了,这种行为就是云查杀。
免杀技术
加载器
可以查阅这个网站来看加载器的代码。shellcode加载器加载与普通的源码加载原理上没什么太大区别,只是多了一个接收参数的过程,当已经有了一个cmdshell的时候这个东西就很好用,如果是为了样本投递,用处就不是很大。运行过程如下:
花指令
通过加一段没有意义的指令也就是花指令来达到免杀效果,原理跟改特征码差不多。例如杀毒软件本来是在0x00001000到0x00005000处找一个特征码。但因为我们填充了花指令,恶意代码跑到了0x00008000这个位置,就会导致特征码查杀失败,从而达到免杀目的。花指令撰写方法:找到程序的一个全0代码段。 打开 PE explorer更改入口地点也就是途中的00402D6A
使用花指令前:
使用小串花指令后:
总结:也可能是使用姿势不对,感觉不怎么好用。
附录
寄存器 | 用处 |
---|---|
ECX | 循环计数器 |
ESP | 总是指向栈顶 |
EBP | 总是只想栈底 |
段寄存器 | 存放预先分配的内存的基址 |
EIP | 存放下一条指令的地址 |
EFLAGS | 存放一些标识位 |
汇编中lea命令是对地址进行操作例如
lea edx, [ebx+eax4+3]
运算EAX4+EBX+3,结果放入EDX
改特征码
改特征码是一个最基本的思路,因为大多数杀毒软件都是基于特征码进行查杀的。特征码的具体定义是能识别一个程序的不大于64字节的字符。更改特征码原则是不改变程序的运行效果的前提下,更改其特征码。不过每个厂商的特征库不同,需要针对不同的厂商进行特征码的更改。消耗的人力物力都非常大,不过效果不错。方法:利用myccl工具查找定位复合特征码:
1.将文件导入后,设置好分块数量,然后点击生成。
2.对生成对文件进行查杀,如果分块后生成的文件全部被查杀那么增加分块数量。
3.查杀结束后点击二次处理。这时候就会生成特征码区间,点击特征取件可以弹出右面这个窗口。每次生成新的特征码后要点击特征码范围然后点击右下方“添加已确定的特征码范围”。重复操作3直到确定所有的范围并且杀毒软件完全无法查杀出病毒。
4.因为现在特征区间很大所以需要在特征区间数值上右键选择复合定位此处特征。然后点击生成,继续重复上述操作,直到每个特征码区间的大小为2字节的时候就可以进行批量的特征码修改,也可以分批修改分批测试。5.根据生成的特征码区间对源代码程序进行改动。
例如上述对源代码区间是00002060之后对两个字节。换算成真实内存地址就是 00400000+.text段的rva+00002060-00000400也就是00402c60.我们用x23dbg看看。
暂时将其改为nop。上述为一个较为完整的一处特征码修改过程,与正确的修改过程区别就是最后一步改代码应该改为不影响程序整体运行的代码,最简单的方法是移动到全0区域用jmp调用。
转自:hackctf