查看: 4059|回复: 12
收起左侧

[讨论] 浅析恶意软件的自防护技术

[复制链接]
驭龙
发表于 2017-3-27 18:49:54 | 显示全部楼层 |阅读模式
这篇文章不错,大家可以反向思维一下,用这些手段防御这些反分析的威胁,因为遇到特定注册值和文件,即使是真实系统,那些威胁也会自动退出,哈哈

浅析恶意软件的自防护技术
如果恶意软件很快被检测到,那么它窃取数据或达成其它目的的可能性基本为零。当前的 IT 安全市场已经比较成熟,安全技术和产品也更加有效。但是,攻击者也在不断学习和监控安全工具的工作机制;而且并不是所有的用户都部署了最佳的防御体系;一些防恶意软件工具已经过期,并且由于配置错误,沙箱也很容易被检测到。
恶意软件的制作者们在花费大量时间和精力研发更复杂的代码,通过逃避沙箱分析、防病毒软件以及恶意软件的分析,来达到目的。本文将为您介绍恶意软件用于逃避检测的几个常用手段。
恶意软件的自防御
恶意软件用以逃避检测和分析的技术有若干种,我们可以把它们分为以下三大类:
  • 防安全工具:用以逃避防病毒软件、防火墙以及其他安全工具的检测。
  • 防沙箱:用以检测自动分析以及躲避可以报告恶意软件行为的引擎。
  • 防分析员:用以检测或愚弄恶意软件分析员。例如:发现 Process Explorer 或 Wireshark 等监控工具,以及一些进程监控技术或程序,以逃避逆向工程。
一些恶意软件同时使用以上三种技术,比如,使用诸如 RunPE (在内存中运行自己的另一个进程)的技术来逃避防病毒软件、沙箱和分析员。
逃避沙箱
沙箱是一个可用于快速检测和了解恶意软件的有效工具,但是,如果沙箱不够强悍,那么被恶意软件检测到也很轻而易举。恶意软件可以执行以下几种基本检查:
  • MAC 地址检测:VMware 或 VirtualBox 等虚拟环境使用已知的 MAC 地址,这一地址通常存储在注册表(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0000\NetworkAddress) 中。恶意软件可以通过两种方法来检测:请求 Hive Key 或者使用 GetAdapterInfo API。          
  • 进程发现:恶意软件可以检测到那些正在运行的和沙箱有关的进程。例如,使用 CreateToolHelp32Snapshot API 可以轻松检测到诸如 VmwareService.exe 等进程,以获取当前运行进程的快照,然后使用 API Process32First 和 Process32Next 列出快照的每个进程。
  • 注册表检测:虚拟环境在系统上创建的注册表项可以被恶意软件检测到。以下是一些可以被恶意软件检查到的部分注册表项列表:
  • 检查钩子函数:钩子是一个可以更改操作系统或应用程序内部函数的行为的技术。沙箱使用钩子技术来更改一个样本的行为,例如:通过挂钩 DeleteFile 函数,恶意软件可以删除将会被沙箱拦截的文件。这一类函数位于内存的某个特定区域  (Kernel land)。恶意软件可以通过检查某个调用函数的地址来检测钩子。例如,如果返回的地址不是位于内核,那么该函数目前被挂钩了。
恶意软件还可以使用其他技术,例如检查某硬盘驱动器的容量或者使用某特别指示来检测某些特定的注册(Red Pill 或 No Pill 技术)。这些技术是基于这样一个事实:计算机里的注册都是独一无二的,并且必须在虚拟环境中重新定位。
躲避防病毒产品
防病毒产品有三个基本功能:特征码、扫描器和启发式。
  • 通过改变样本的哈希可以躲避特征码检测,这个操作很简单,如同在可执行文件里改变一个字节。
  • 通过创建大文件来迷惑模拟器,从而逃避扫描器的检测
  • 逃避启发式分析比较复杂,但也可以通过挂钩回调函数来实现。
恶意软件用以逃避防病毒工具的另一个方法是禁用该工具或者添加例外项。多形态代码非常难以检测。
反调试
恶意软件分析员通常会在代码分析期间进行深入挖掘。反调试是恶意软件用于规避调试器逆向工程的技术,通常会用来检测是否存在使用 Windows API 的调试器。
  • IsDebuggerPresent:该函数用于检查进程环境块中 IsDebugged 字段的特定标记,如果该进程没有在调试器中运行,将会返回 0;如果附带了调试器则会返回非 0 值。          
  • FindWindow:该函数可以按照名字或者类别来搜索窗口(如 OllyDbg),它还可以检测诸如 Wireshark 或 Process Explorer 等工具。
  • CsrGetProcessld:该函数可以找到系统进程 csrss.exe 的进程 ID。默认情况下,拥有 SeDebugPrivilege 进程的访问口令权限是禁用的;但是,当该进程被 OllyDbg 或 winDbg 等调试器载入时,SeDebugPrivilege 权限是启用的。如果一个进程可以打开 csrss.exe,则说明该进程的 SeDebugPrivilege 访问口令权限是启用的,表明该进程正在被调试。
反汇编
反汇编是恶意软件用以逃避逆向工程分析的技术。有很多方法可以用来阻止汇编:
  • API 伪装可以掩盖某特殊函数的调用。例如,结果可能是一个没有 API 函数名称的调用。分析员必须通过逆向分析才能获知哪个函数在使用,而这需要时间。
  • 插入垃圾代码:通过在恶意软件中插入垃圾代码来愚弄分析员,使他们不得不花费时间进行逆向分析这些无用的代码。由于垃圾代码从不会执行,因而不会改变样本的行为。
总结
除了上面所介绍的这些,还有很多可以逃避恶意软件分析的方法,比如通过隐藏恶意软件的进程使它不被检测到,或者隐藏恶意软件中的数据或部分代码等。我们在不断加强安全保护的同时,恶意软件也在不断进化以逃避安全检测,这是一个无休止的过程。通过了解恶意软件的逃避技术可以帮助我们更深入地了解它们的工作机制,从而更好地进行防御。

评分

参与人数 3分享 +1 人气 +2 收起 理由
qftest + 1 版区有你更精彩: )
Johnkay.Young + 1 版区有你更精彩: )
屁颠屁颠 + 1 版区有你更精彩: )

查看全部评分

缺缺
发表于 2017-3-27 19:06:39 | 显示全部楼层
看不太懂- - 字面意思倒是清楚,理解起来好难 隔行如隔山,我只能默默的说点废话- -
nonote
头像被屏蔽
发表于 2017-3-27 19:14:47 | 显示全部楼层
无所谓了,只要系统正常就行了,反正有主动防御、行为检测,应用监控,
又不是技术高超的黑客的目标。
B100D1E55
发表于 2017-3-27 22:54:01 | 显示全部楼层
感觉直接退出算是比较低端的手法了,之前见过有的启发规则会侦测过早退出的程序
VM注册表反侦测大法很容易通过不装guest addition绕过,一般指令序列侦测广谱性还好一些,不过现在大多也被加入规则了
debugger方面的话之前雷锋同学还分享过一个用HookSwitchHookEnabledEvent的方法哈哈,不过我对debugger实在不熟
RoyalFlare
发表于 2017-3-28 00:36:45 | 显示全部楼层
总觉得这篇文章应该发在吾爱破解才对.
不知是否楼主原创文章 或是转载文章?
驭龙
 楼主| 发表于 2017-3-28 09:39:47 | 显示全部楼层
RoyalFlare 发表于 2017-3-28 00:36
总觉得这篇文章应该发在吾爱破解才对.
不知是否楼主原创文章 或是转载文章?
这篇文章不错
这句话的意思,就是说不是我原创,而是别处的
驭龙
 楼主| 发表于 2017-3-28 09:42:06 | 显示全部楼层
B100D1E55 发表于 2017-3-27 22:54
感觉直接退出算是比较低端的手法了,之前见过有的启发规则会侦测过早退出的程序
VM注册表反侦测大法很容易 ...

当然如果真正高端的,个人遇到的话,基本上必死无疑,哈
FUZE
发表于 2017-3-28 17:53:52 | 显示全部楼层
道高一尺魔高一尺八...真正的相爱相杀...
ELOHIM
发表于 2017-3-28 19:56:17 | 显示全部楼层
而且并不是所有的用户都部署了最佳的防御体系


最佳防御体系应该是什么样的呀?有什么标准?或者其它定义?
bbszy
发表于 2017-3-28 21:13:25 | 显示全部楼层
一眼看成自动防护技术 以为是赛门铁克的文章。。。

评分

参与人数 1人气 +1 收起 理由
pal家族 + 1 感谢支持,欢迎常来: )

查看全部评分

您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-3-29 04:26 , Processed in 0.146316 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表