恶意代码取证

Download Report

Transcript 恶意代码取证

恶意代码取证
韩承钦
S310060109
主要内容
•
•
•
•
•
•
前言
恶意软件事件响应
内存取证
事后取证
文件识别和构型
Windows平台下可疑软件分析
前言
• 数量迅速增长,表现出“混合-威胁”特征,
具有多种功能和多种不同的传播方法。
• nihaorr1.com/1.js
• Stuxnet病毒(震网)
• 利用恶意软件去实施和隐藏犯罪的现象日益
普遍,这就迫使需要更多的数字调查员参与
到反病毒厂商和安全研究人员的领域中,利
用一些恶意软件分析技术和工具来进行恶意
软件分析。
主要内容
•
•
•
•
•
•
前言
恶意软件事件响应
内存取证
事后取证
文件识别和构型
Windows平台下可疑软件分析
传统静态取证模型
攻击发生
攻击进行中
检测到攻击
证据收集
备
份
证
据
法律裁判
原始证据
分析结果
传统静态取证模型
证据分析
动态取证模型
网络及主机信息
网络监控
攻击发生
攻
击
进
行
中
取
证
收
集
攻击信息
响
应
系
统
备份证据
法律制裁
与提
分交
析原
结始
果证
据
证据分析
恶意软件事件响应:易失性数据收集与实
时Windows系统检查
适用于Windows
的时间响应工具
套件
建立实时
响应工具包
易失性数
据收集方法
从实时Windows
系统收集非易
失性数据
建立实时响应工具包
• 进行实时取证响应时,最重要的是要使用可信赖
的工具从目标系统中获取数据。
• 确定并记录工具的依赖性,这样有利于了解使用
一个工具时,其将对其他文件进行哪些访问,以
及对系统造成哪些变化。可以使用Dependency
Walker或PEView之类的PE文件分析,已得到这
些工具的文件依赖关系。
• 选择好工具后,需要将工具放到实时响应工具箱
中,创建工具套件的测试和验证系统最有效的方
法是建立VMWare之类的虚拟os来实现。
恶意软件事件响应:易失性数据收集与实
时Windows系统检查
适用于Windows
的时间响应工具
套件
建立实时
响应工具包
易失性数
据收集方法
从实时Windows
系统收集非易
失性数据
易失性数据的保存
• 获取整个内存数据:利用PsTools套件中的
pslist程序获取。
• 从实时Windows系统中获取整个内存,最简
单的放大就是从移动存储介质中运行dd命
令来获取整个物理内存。一些软件:Helix
(www.e-fense.com/helix)、Nigilant;还
有一些商用的远程取证工具:
ProDiscoverIR、OnlineDFS/LiveWire已经
可以获取远程系统的整个内存数据。
搜集目标系统的详细信息
• 系统日期和时间:shell中的date/t、time/t命令,
Win2003中的now命令。
• 系统标识符:包括计算机名、ip地址。whoami获
取系统用户信息,ver获取os信息,ipconfig/all获
取IP地址信息。
• 网络配置:老练的恶意软件通过与远程控制端进
行VPN连接进行通信以逃避入侵检测软件和其他
网络监控系统。工具Promiscdetect和Promqry是
检查这方面的利器。
被激活的协议
• 通过URLProtocolView程序来识别目标系统
已被激活的协议。
系统正常运行时间
• 如果能够确定恶意软件从被安装之后目标系
统没有重启,这非常重要。
• 可以从工具箱中调用uptime程序
(http://support.microsoft.com/kb/232243
)。
系统环境
• 如操作系统版本 、补丁级别和硬件。
• 可使用psinfo、systeminfo、Dumpwin等工
具来查询系统可以获得目标环境和状态的准
确快照。
识别登录到当前系统的用户
• 调查人员应尽力获取有关一下信息:用户名登录
位置、登录Session的持续时间、该用户访问的共
享文件或其他资源、和该用户关联的进程、该用
户引起的网络活动。
• Psloggendon,是包含在PsTools套件中的一个命
令行接口程序,可以来识别本地和远程登录到目
标系统的用户。
• Quser,这个程序可以用来显示已登录用户名、登
录的时间和日期,以及session类别及状态等信息。
检查网络连接和活动
• 网络连接情况、最近的DNS请求、目标系
统的NetBIOS名字表、ARP缓存以及内部路
由表。
• Netstat是各种Win os自带的程序,用来显
示目标系统中目前已经建立或者正在进行监
听的socket连接。
搜集进程信息
• 通常恶意软件运行时,都在目标系统中以进
程的形式表现出来。
• 从最基本的信息进程名和ID开始,搜集临时
上下文环境、内存消耗、可执行程序镜像的
进程、用户镜像的进程、子进程、调用库和
依赖库、用来创建进程的命令行参数、相关
联的句柄、进程的内存内容、与系统状态和
残留环境相关的上下文环境。
• tlist程序、tasklist程序、PRCView.exe。
关联开放端口及其活动进程
• 端口扫描:使用nmap工具。
• 通用端口(www.iana.org/assignment/portnumbers)。
检查服务和驱动程序
• 尽管服务对终端用户是透明的,在系统后台
运行,恶意软件也就可以以自运行方式在后
台运行,导致用户难以发现。
• Psservice是一个可以提供目标系统中服务
的详细情况的工具。
检查打开的文件
• 通过打开的文件可以判断目标系统感染的恶
意代码的类型,如可以知道恶意软件样本实
际需要调用的或者操作的服务和资源。
• 识别本地代开的文件:用NirSoft开发的
OpenFilesView工具。
• 识别远程打开的文件:除了系统自带的net
file命令外,常用工具是Mark Russionvich
开发的psfile。
收集命令和历史记录
• UNIX和Linux使用bash命令行shell来维护
bash的历史命令。
• 不幸的是Win os没有相应的功能,但可以从
cmd中使用doskey /history命令来找回存在
内存中的命令。
识别共享
• 尽管恶意代码不会都会使用网络共享的方式
进行传播,单确实有一些样(W32/Bacalid
变形的文件感染器)能够识别并感染目标系
统共享文件夹中的文件。
检查计划任务
• 有些恶意代码变种是事件驱动的,这意味着
代码会一直潜伏在系统中,除非特定的日期
或者事件触发执行。
• 可以使用工具schtasks来确认发现计划任务,
只用/Query选项显示所有的计划任务。
收集剪贴板内容
• 在一个受到潜伏攻击的电脑上,传播方式还
不知道,这是剪贴板的内容可能为辨别这次
攻击的类型提供了一些潜在的重大线索。
• 我们可以通过pclip程序来检查目标系统中剪
贴板的具体内容。
恶意软件事件响应:易失性数据收集与实
时Windows系统检查
适用于Windows
的时间响应工具
套件
建立实时
响应工具包
易失性数
据收集方法
从实时Windows
系统收集非易
失性数据
从实时Windows系统中收集非易失性数据
• 一般情况下取证人员不会直接访问实时系统
中的文件,因为这样可能会对存储的数据进
行了修改。
• 然后很多情况下,也需要对实时系统中的文
件数据或者注册表进行选择性的取证保存和
分析。
• 在实时Windows系统中对存储媒介进行司法
复制,对特定数据进行司法保存。
恶意软件事件响应:易失性数据收集与实
时Windows系统检查
适用于Windows
的时间响应工具
套件
建立实时
响应工具包
易失性数
据收集方法
从实时Windows
系统收集非易
失性数据
适用于Windows的时间响应工具套件
• Windows Forensic Toolchest(WFT)通过
多种工具为一致性信息收集提供了一个框架。
WFT可配置以自动方式或者特定的的顺序
来运行任何工具。WFT讲获取的的数据生
成MD5值,并为数据收集过程提供支撑的
审计信息报告。但WFT不能列举被删除的
文件,还有一个明显缺陷是其需要依赖受害
主机的操作系统。
适用于Windows的时间响应工具套件
• ProDiscoverIR是一款商业的取证工具
• 不依赖于目标操作系统,但要在目标系统中
运行代理程序
适用于Windows的时间响应工具套件
• OnlineDFS/LiveWire,在线数字取证工具套
件。
• 具备从远程计算机中获取易失性数据的能力,
并且可以从远程计算机中获取目标系统的整
个内存转储以及整个硬盘的司法拷贝。
主要内容
•
•
•
•
•
•
前言
恶意软件事件响应
内存取证
事后取证
文件识别和构型
Windows平台下可疑软件分析
内存取证
Windows内
存取证工具
内存取证
方法学
提取Windows
进程内存数据
传统内存
分析方法
Windows内存
取证工具机理
Windows进程
内存数据分析
内存取证方法学
• 对内存取证与对存储介质取证的过程相似。
• 获取内存后,下一步就是还原数据,并对内
存中的元素数据解析以用于进一步分析。
• 内存取证的目的有:搜集信息、对每个可疑
进程深入分析。
内存取证
Windows内
存取证工具
内存取证
方法学
提取Windows
进程内存数据
传统内存
分析方法
Windows内存
取证工具机理
Windows进程
内存数据分析
传统内存分析方法
• 在内存工具发展之前,我们通常用strings工
具从内存中提取出可读文本内容,利用文件
提取工具从内存中恢复相关的可执行文件。
• 大多数strings的实现都是默认只提取ASCII
字符串,但是对Unicode字符串来说也应该
引起足够的重视。
内存取证
Windows内
存取证工具
内存取证
方法学
提取Windows
进程内存数据
传统内存
分析方法
Windows内存
取证工具机理
Windows进程
内存数据分析
Windows内存取证工具
• 由于不同Windows版本甚至不同补丁版本的内核
数据结构的差别,许多内存取证工具只支持特定
版本的Windows系统。
• 深入分析内存印象。
• 活动的、为活动的和隐藏的进程。
–
–
–
–
进程内存
线程
模块和库
打开文件和套接字
内存取证
Windows内
存取证工具
内存取证
方法学
提取Windows
进程内存数据
传统内存
分析方法
Windows内存
取证工具机理
Windows进程
内存数据分析
Windows内存取证工具机理
• 虚拟内存地址
Skl.exe EPROCESS
DTB:0x0a039000
0x0a039000
页表目录表
PEB:0x7ffdf000(v)
0x0a102000
PDE# 511
0x0a0eb000
页表
PEB
PTE# 991
图1 虚拟内存地址和物理地址的转换,然后找到进程sql.exe进程的PEB结构
Windows内存取证工具机理
• 虚拟内存地址
表1 虚拟地址0x7ffdf0000的组成
描述
位
二进制
十六进制
页表目录起始地址
页表起始地址
偏移地址
31~22
21~12
11~0
11111111
1111011111
0
0x1ff
0x3df
0x0
十进制
511
991
0
进程和线程
• Win os中每个运行的进程都在内存中有一个
对应的EPRROCESS。
进程和线程
PPEB_LDR_DATA
InMemaryOrderModuleList
LDR_DATA_TABLE_ENTRY
InMemoryOrderLinks
ImagePathName
PEB
DllBase
PRTL_USER_PROCESS_PARAMETERS
CommandLine
PPS_POST_PROCESS_INIT_ROUTINE
图2 PEB结构描述
FullDllName
TimeDateStamp
进程和线程
Modules Mapped into
Memory
Executable File Path
_EPROCESS Block
Process Environment Block
Command Line
Dynamic Library Paths
Process Environment
图3 PEB中提供的有价值的信息
进程和线程
表2 xp sp2系统中EPROCESS结构元素
价值
描述
偏移 数据类型
DirectoryTableBase
Directory Table Base
0x18
CreateTime
Process Creation Time
0x70
UniqueProcessID
Process Identifier
0x84
ImageFileName
Executable Name
0x174
InheritedFromUniqueProcessID Parent Process Identifier
0x14c
PEB
Process Environment Block 0x1b0
Uint48
FILETIME
32 byte Int
String
32 byte Int
32 bytes
恢复可执行文件
恢复可执行文件
从PEB结构中获得
可执行文件在内存
中的起始地址
从可执行文件的起
始地址处读PE头
根据PE头中的内容
可得到可执行文件
各个节的地址和大
小
根据PE头中获得
各个PE节的信息
从内存页面中进
行提取,然后重组
成一个文件
Related Documents
Windows内
存取证工具
内存取证
方法学
提取Windows
进程内存数据
传统内存
分析方法
Windows内存
取证工具机理
Windows进程
内存数据分析
提取进程内存数据
• 除了恶意进程相关的上下文环境和可执行文
件的相关数据,恶意进程所占的内存空间中
的数据也是非常有价值的 。
• 进程在内存中以页面为单位存储数据。
内存取证
Windows内
存取证工具
内存取证
方法学
提取Windows
进程内存数据
传统内存
分析方法
Windows内存
取证工具机理
Windows进程
内存数据分析
进程内存数据的导出和Windows系统实时分
析
• 对实时运行的进程进行安全评估。
• 捕获进程并分析内存
– 利用Userdump来获得进程的内存数据
– 利用Pmdump获得内存映像
– 用PARIER搜集运行进程的内存数据
– 用Process Dumper获得进程内存数据
主要内容
•
•
•
•
•
•
前言
恶意软件事件响应
内存取证
事后取证
文件识别和构型
Windows平台下可疑软件分析
事后取证:从Windows系统中搜索并提取恶
意软件及相关线索
功能分析
事后取证
司法检查
提取恶意软件
从Windows系统中发现并提取恶意软件
•
•
•
•
•
•
搜索已知恶意软件、搜索已安装的程序
搜索预取文件、检查可执行文件
检查自启动项、检查计划任务
审查日志、检查用户账户
检查文件系统、检查注册表
还原点、关键词搜索
搜索已知恶意软件
• 与其他分析形式一样,最有效的策略是先搜
索最容易搜到的线索。
• 当某一类型的恶意软件已被确认后,散列分
析可以用来识别其他数据相同但文件名不同
的文件。
• 有多种散列库基于文件MD5或SHA1密码学
散列值来确认已知的恶意软件,如NSR1和
NDIC的散列库
检查已安装的程序、检查预取文件
• 通过对已安装的程序进行检查,可以很容易
的找到受害计算机中的的可疑程序。
• Win os在程序执行时都会常见预取文件,这
样可以提高下一次访问该程序的速度
检查可执行文件
• 攻击者通常会想尽办法是恶意软件难以发现
和检测到,因此通过仔细检查可执行文件可
以发现很多常用的隐藏技术。
• Windows系统中隐藏可执行文件的最简单方
法是修改文件的原始后缀为其他后缀。
• 通过对文件头部进行分析,可检测出来。
检查服务、驱动自启动位置以及计划任务
• 恶意软件通常在某些位置进行配置以便于系
统自启动运行。
• 区分合法系统及恶意软件时间困难的事情,
需要综合使用多种工具和分析方法。
审查日志
• Windows系统中各种各样的日志可能包含了
恶意软件存在证据或相关的文件和活动。
• LogParser是一款强大的工具,可以来检查
大部分Windows日志,包括微软的事件日志。
检查用户账户
• 通过对受害系统本地用户账户或登录账户进
行深入检查,也可以发现恶意软件是如何植
入的。
• 一种常见的入侵和恶意软件传播方式是弱口
令。
• Access Data公司的密码恢复工具套件
(PPTK)、John the Ripper、Ophcrack
检查文件系统、检查注册表
• 尽管寻找异常文件很难,但通常有很多迹象
用来区分恶意软件和其他正常文件。
• 注册表包含了Windows系统的配置和使用详
细信息
还原点、关键词搜索
• 一般的Win os对特定的重要文件进行备份以
便于事后灾难恢复。
• 在硬盘上进行关键词搜索被证实是一种定位
恶意软件踪迹的有效方法。
深入的Windows系统中的恶意软件发现与提
取技术
• 随着各个机构及os自身的安全措施提高,恶
意软件采用的技术也越来越高明;目前流行
的恶意软件都采用了信息安全防护软件对抗
技术。
• 定制解药
主要内容
•
•
•
•
•
•
前言
恶意软件事件响应
内存取证
事后取证
文件识别和构型
Windows平台下可疑软件分析
文件识别和构型、Windows平台下可以软件
分析
• 略