zoukankan      html  css  js  c++  java
  • existence way of The malicious software

    随着新一轮病毒的来袭,杀毒软件显示了它的脆弱。从熊猫烧香、AV终结者、机器狗、磁碟机病毒,拥有的反杀毒能力越来越强,没有自我防护功能的检测软件注定不受市场欢迎

    了解恶意软件隐藏自己、对抗跟踪的生存方式,不仅对检测软件的研发有非常重要的作用,对用户手动检测也有极大的参考价值。

    对大部分用户来说,靠肉眼发现病毒是不容易的,检测软件的扫描器可部分的弥补这个缺陷。如何在扫描器前隐藏自己,甚至反制检测软件,是恶意软件的重要目标。

    一、对抗检测软件的方式

    1、 扫描可见的窗口标题,对含检测软件名称的窗口,发送一条退出消息关闭窗口或者发送大量的垃圾消息使其反应缓慢。或者自动点击检测软件界面上的下一步、跳过等按钮使检测软件部分的失去作用。

    2、 利用垃圾数据覆盖检测软件空间,使其崩溃退出。

    3、 采用守护进程,多个线程互相监视,发现一个被关闭立即生成新的线程。

    4、 将自身注入检测软件进程空间,钩住检测软件使用的某些函数,使检测软件工作无法进行。

    5、 修改检测软件数据库,使检测软件不能识别或错误识别。或者替换检测软件的某些关键文件以达到同样的目的。

    运行在用户模式下的恶意软件对于具有System权限的检测软件上述一些手段无法成功。这可以通过提升权限获得关闭检测软件的能力,但这样比较容易检测。更通用的方式是释放一个.sys文件,然后加载该驱动程序,从而获得完全控制计算机的能力。

    二、隐藏自己的手段

    一直以来病毒有一些通用的隐藏手段,这些手段对一般的恶意软件同样适用,使得检测软件无法识别出这是恶意软件,这些方法包括:

    1、 加密

    这种恶意软件包括解密引擎,运行时引擎读出被加密的内容,然后在内存中重建原执行体。仅仅一个解密引擎容易被检测,一般采用多个解密引擎,运行时随机选择一个。

    2、 多态

    多态病毒的解密引擎可以大幅度改变,一般通过随机插入垃圾块或指令从而创造出无穷多个解密引擎。

    3、 变形

    变形病毒并没有解密引擎,它的病毒体是变化的。通过等价指令替换,随机插入垃圾指令,在感染文件时对宿主大幅度改变从而使检测软件难以识别。

    Windows时代也有一些防止被用户查知的方法,如将病毒插入PE文件的空闲区域,使文件看起来没有任何变化,在任务管理器中隐藏自己等手段,但这些方法一般逃不过检测软件的眼睛。现在rootkit技术被越来越多的恶意软件所喜爱。通过挂接内核钩子rootk可以与检测软件同步,达到隐藏自己的能力。常用的挂钩位置有

    1、 钩住系统服务调度表(SSDT),可以使大部分检测软件监控功能失效。

    2、 Winxp及以后可以通过rdmsrwrmsr指令修改IA32_SYSENTER_EIP寄存器在SSDT之前截获调用,达到同样的目的。

    3、 钩住设备驱动程序对象中主要的I/O请求报文函数表,也是常用的隐藏自己的手段。

    三、防止被删除的方式

    1 以独占方式打开文件,这样使得打开该文件的进程关闭之前基本无法删除该文件。

    2 监控文件变动,发现文件被改动之后立即还原。微软提供的FindFirstChangeNotification FindNextChangeNotificationReadDirectoryChanges可以达到监控作用。

    3 释放文件系统过滤型驱动程序。再用将自己创建的设备对象加到文件系统对象上层,就可作过滤删除操作。

    4、第二部分提到的钩子技巧同样也可以达到这个目的。

    恶意软件是计算机技术中一个复杂并且不断发展的领域。在 IT 业面临的所有问题中,几乎没有比恶意软件攻击更具普遍性,也几乎没有比处理恶意软件的相关费用更昂贵的了。了解恶意软件的生存原理,将有助于您以主动的方式处理此问题。

  • 相关阅读:
    linux inode索引节点使用率100% 解决
    Linux常用命令
    mongodb常用命令
    抓包工具简介:fiddler、charles
    博客园自定义更换背景
    ant+jmeter应用
    BeanShell断言
    jmeter 常用函数(一):__Random
    git常见错误解决方法
    react环境搭建
  • 原文地址:https://www.cnblogs.com/j2eedesigner/p/1222714.html
Copyright © 2011-2022 走看看