恶意代码分析必备知识

反病毒软件原理

  • 反病毒软件一般由扫描器、病毒库和虚拟机组成,并由主程序将它们整合为一体
  • 一般情况下,扫描器用于查杀病毒,是反病毒软件的核心。一个反病毒软件的效果好坏直接取决于扫描器的技术与算法是否先进
  • 病毒库中存储着病毒所具有的独一无二的特征字符,我们称之为“特征码”,而病毒库存储特征码的存储形式则取决于扫描器采用哪种扫描技术
  • 特征码可能存在于任何文件中,例如exe文件、dll文件、apk文件、php文件、甚至是TXT文件中,所以它们都有可能被查杀。
  • 虚拟机,可以使病毒在一个反病毒软件构建的虚拟机环境中执行,这样就与现实的cpu、硬盘等物理设备完全隔离,从而可以更加深入的检测文件的安全性

常见的防病毒技术(基于文件扫描)

基于文件扫描的反病毒技术可以分为:
“第一代扫描技术”
“第二代扫描技术”
“算法扫描”
对于恶意代码分析师来说,非常有必要对每一种扫描技术有所了解

第一代扫描技术可以用“在文件中检索病毒特征序列”这句话高度概括,这一扫描技术直到现在也仍然被各大反病毒软件厂商使用着,其主要分为“字符串扫描技术”与“通配符扫描技术”两种。

第二代扫描技术的代表有

  • 智能扫描法
  • 近似精确识别法
  • 骨架扫描法
  • 精确识别法

智能扫描法

这种方法是在大量变异病毒出现后提出的。智能扫描法会忽略检测文件中像nop这种无意义的指令。而对于文本格式的脚本病毒或者宏病毒,则可以替换掉多余的格式字符,例如空格,换行符,制表符等。由于这一切替换动作往往是在扫描缓冲区中执行的,从而大大提高了扫描器的检测能力

近似精确识别法

多套特征码

该方法采用两个或者更多的字符集来检测每一个病毒,如果扫描器检测到其中一个特征符合,那么就会警告发现变种,但不会执行下一步操作。如果多个特征码全部符合,则报警发现病毒,并执行下一步操作

检验和

这个方法的思路是让每一个无毒的文件生成一个校验和,等待下次扫描时再进行简单的校验和对比。如果校验值有所变化,再做进一步的扫描,否则就说明这个文件没有被感染,这样有利于提升扫描器的效率。除此之外,某些安全产品还对病毒文件采取了分块校验的方式以提高准确性。

骨架扫描法

此方法由卡巴斯基公司发明,在检测宏病毒时特别有用,它既不用特征码也不用校验和,而是通过逐行解析宏语句,并将非必要的字符丢弃,只剩下代码的骨架,通过对代码骨架的分析,从而提高了对变种病毒的检测能力。

精确识别法

精确识别法是先进能够保证扫描器精确识别病毒变种的唯一方法,常与第一代扫描技术相结合。精确识别法也是利用校验技术,只不过应用的更广,更复杂。它甚至能通过对整个病毒进行校验和计算生成特征图

常见反病毒技术(基于内存扫描)

内存扫描反病毒技术是一种原理复杂的扫描技术,内存扫描器一般与实时监控扫描器协作

常见反病毒技术(基于行为监控)

基于行为监控的反病毒技术一般需要与虚拟机、主动防御等技术配合工作。其原理是主要针对病毒木马行为进行分析对比,如果某些程序在执行后会进行一些非常规的、可疑的操作,那么及时这不是一个新生病毒,也会被拥有这种技术的反病毒产品拦截。

开源杀毒软件ClamAV使用手册

clamav整个的检测流程

命令:

clamscan  扫描当前目录
clamscan -r -i C:\vir  扫描文件,递归扫描子目录
sigtool   查看和创建签名数据库
sigtool -i main.cvd
freshclam  病毒库更新工具

恶意软件特征规则编写工具-Yara

Yara 也是一个扫描工具, 但是提供了很好的特征规则,病毒分析师使用 Yara 可以更好的编写病毒的特征规则。

http://yara.readthedocs.io/en/v3.5.0/
http://yara.readthedocs.io/en/v3.5.0/writingrules.html#more-about-rules
中文翻译: http://www.freebuf.com/articles/system/26373.html
http://netsecurity.51cto.com/art/201402/430005.htm

分析一个未知样本

  • 从客户机提取样本
  • 分析可疑文件
  • 提取特征
  • 编写Yara规则

从客户机提取样本

分析可疑进程

工具:PCHunter or ProcessExplorer or 火绒剑
刻板印象:一般来说伪装成一下进程比较多:Explorer.exe svchost.exe

扫描进程

发现有两个 explorer.exe 进程,其中一个很可疑

可疑文件

获得可疑文件

explorer.exe 隐藏文件
将文件打包压缩,密码: 15pb

分析样本

删除 explorer.exe 以及一些桌面快捷方式,重启电脑。 发现程序又回来了!
继续分析, 发现文件夹都是都隐藏的

Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png

分析主程序,先查壳,有壳 UPX,脱壳

Paste_Image.png
Paste_Image.png

再使用 PE 工具,查看导入信息。

Paste_Image.png

Paste_Image.png

查看导入信息,有复制文件、注册表操作、 服务操作、加载驱动操作等。

Paste_Image.png

提取特征

字符串: q6789.com
字符串: C:\TSTP\winlogon.exe

编写 Yara 规则

rule vir4
{
strings:
$my_text_string = "C:\\TSTP\\winlogon.exe"
condition:
$my_text_string
}

使用 Python 中的 Yara 模块

import yara
def mycallback(data):
if data['strings']:
print data['strings'] #输出 匹配到的特征
yara.CALLBACK_CONTINUE
# 编译规则文件
rules = yara.compile('C:/rules.txt')
# 扫描指定的文件,匹配规则
matches = rules.match('C:/test/Lab01-01.dll', callback=mycallback)

杀毒引擎-虚拟机

虚拟机就是模拟执行程序,在内存中展开程序,就像在内存中扫描这个程序一样扫描展开的程序。

模拟的过程:
(1) 构建一个虚拟的环境, 虚拟的 CPU, 栈, 内存
(2) 解释执行将要执行的指令。

举例:
① mov eax,1,执行这条指令, eax 放入虚拟的 CPU 中
② push ebp,执行这条指令, 修改堆栈,修改的虚拟的栈空间
③ mov [401000],1 执行这条指令,写的是事先准备好的内存空间,内存是重定位过
的。
④ Call MessageBoxW 执行这条指令, 自己模拟一个 MessageBoxW, 将参数保存到日
志, 然后正确返回即可 。
以下就是 TAV 引擎模拟的模块。
虚拟机只是模拟的执行指令,并没有在真实的物理机上运行

杀毒分析-沙箱

百度百科

沙箱是一种按照安全策略限制程序行为的执行环境。早期主要用于测试可疑软件等,比如黑客们为了试用某种病毒或者不安全产品,往往可以将它们在沙箱环境中运行。经典的沙箱系统的实现途径一般是通过拦截系统调用,监视程序行为,然后依据用户定义的策略来控制和限制程序对计算机资源的使用,比如改写注册表,读写磁盘等。

典型的沙箱(沙盘): Sandboxie https://www.sandboxie.com/

主要作用:如果你不信任某个软件,那么右键在沙盘中运行!
程序会运行,但是不会修改真实的磁盘文件和注册表文件
此外,有些杀毒软件也内置沙箱,原理和 Sandboxie 一样的。 比如卡巴斯基、 avast 等。
自动化分析沙箱: cuckoo https://cuckoosandbox.org/

历史上常见的病毒行为

(1) 利用系统机制,自动运行病毒
在 xp 系统上, 每个文件夹下都会有一个 autorun.inf 的配置文件,可以指定打开文件夹的
时候默认执行的文件,病毒会利用这一点执行程序。
(2) 利用系统机制, 劫持一些小的 DLL,运行病毒
在 xp 系统上,系统的模块中有两个 DLL 是比较小的, usp10.dll 和 lpk.dll。
dll 执行的规则是如果当前目录有这个 DLL,那么就执行当前目录的, 如果当前目录没有,
再执行系统目录的。
病毒会释放伪装的 lpk.dll 或者 usp10.dll 到所有的文件夹下,以及 zip 或者是 rar 压缩
包中。
放入压缩包中是因为以前 rar 有命令行版的,可以执行命令批量修改压缩包。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,188评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,464评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,562评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,893评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,917评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,708评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,430评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,342评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,801评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,976评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,115评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,804评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,458评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,008评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,135评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,365评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,055评论 2 355

推荐阅读更多精彩内容