一、电子取证

电子取证是指利用计算机软硬件技术,以符合法律规范的方式对计算机入侵、破坏、欺诈、攻击等犯
罪行为进行证据获取、保存、分析和出示的过程。从技术方面看,计算机犯罪取证是一个对受侵计算
机系统进行扫描和破解,对入侵事件进行重建的过程。具体而言,是指把计算机看作犯罪现场,运用
先进的辨析技术,对计算机犯罪行为进行解剖,搜寻罪犯及其犯罪证据。
取证分为现场勘查阶段证据分析阶段

  • 现场勘查阶段
    • 主要任务是获取可能的物理证据,如嫌疑人的计算机、移动硬盘、U盘、手机、数码相机、数字存储
      卡等各种可能包含证据的介质。
  • 证据分析阶段
    • 对获取的存储设备进行深入检查,发现可能的电子证据并生成报告,以便提交给法庭作为诉讼证据。

22

法律法规:

二、内存取证

内存取证是指在计算机系统的内存中进行取证分析,以获取有关计算机系统当前状态的信息。内存取证通常用于分析计算机系统上运行的进程、网络连接、文件、注册表等信息,并可以用于检测和分析恶意软件、网络攻击和其他安全事件

2.1、内存取证工具Volatility

  • 介绍

Volatilty是一款开源的内存分析框架,主要用于从计算机内存中提取到数字证据,它可以用于取证,恶意代码分析、漏洞研究、操作系统学习以及其他安全领域。

Volatility 已经开发到了Volatility 3,但是第三代仍然在开发阶段,其功能相较于第二代还不完善,但是第三代对Windows 10以上的Windows系统所导出的内存数据提供了更完善的支持(Volatility 由于和 windows cmd 命令vol冲突,所以需要在 Powershell 中使用)

2.2、安装

2.2.1、安装pip

以kali中为例

wget https://bootstrap.pypa.io/pip/2.7/get-pip.py

python2 get-pip.py

image-20240331211350614

image-20240331211741946

2.2.2、下载vol并安装
git	clone https://ghproxy.com/https://github.com/volatilityfoundation/volatility.git
cd volatility && python2 setup.py install

image-20240331212254212

2.2.3、依赖安装
apt install python2-dev
pip2 install --upgrade setuptools -i https://pypi.tuna.tsinghua.edu.cn/simple
pip2 install pycryptodome -i https://pypi.tuna.tsinghua.edu.cn/simple
pip2 install yara -i https://pypi.tuna.tsinghua.edu.cn/simple
pip2 install distorm3 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip2 install construct==2.5.5-reupload -i https://pypi.tuna.tsinghua.edu.cn/simple
ln -s /usr/local/lib/python2.7/dist-packages/usr/lib/libyara.so /usr/lib/libyara.so
2.2.4、测试python2
python2 vol.py -h

image-20240331213336751

2.3、工具使用方法

2.3.1、获取镜像信息
python2 vol.py -f ../Challenge.raw imageinfo

image-20240401092553752

文件较大所用时间较长

Suggested Profile(s) : Volatility 推荐的配置文件

AS Layer2 显示了使用的内存镜像文件路径

KDBG 显示了内存镜像中的 KDBG 结构地址

Number of Processors 显示了处理器数量

Image Type 显示了操作系统服务包版本

Image date and time 显示了内存镜像文件的创建日期和时间

2.3.2、获取进程信息
python2 vol.py -f ../Challenge.raw --profile=Win7SP1x64 pslist

image-20240401092719981

Volatility的procdump插件可以根据进程ID或进程名提取进程的内存映像,并保存为一个单独的文件

python2 vol.py -f ../Challenge.raw --profile=Win7SP1x64 procdump -p 520 -D ./
p:pid进程号

image-20240401102413337

image-20240401102440760

2.3.3、查看终端里执行过的命令

Volatiltiy的cmdscan插件可以扫描内存镜像中的进程对象,提取已执行的cmd命令,并将其显示在终端中

python2 vol.py -f ../Challenge.raw --profile=Win7SP1x64 cmdscan

image-20240401102734597

2.3.4、查看进程在终端里运行的命令

Volatility中的cmdline插件可以用于提取进程执行的参数和参数

python2 vol.py -f ../Challenge.raw --profile=Win7SP1x64 cmdline

image-20240401102852763

2.3.5、查找内存中的文件

Volatility的filescan插件可以在内存中搜索已经打开的文件句柄,从而获得文件名、路径、文件大小等信息

我想找到hint.txt文件,可以使用一下命令

python2 vol.py -f ../Challenge.raw --profile=Win7SP1x64 filescan |grep hint.txt

image-20240401103359602

grep是linux下常见的命令之一,它用于在文件中查找指定的字符串,它用于文件中查找指定的字符串,并将包含该字符串的行输出

如果只使用filescan而不匹配grep的话,Volatility就会输出系统上的全部文件

2.3.6、提取内存中的文件

Volatility的dumpfiles插件可以用来提取系统内存中的文件

提取hint.txt文件,hint.txt的内存位置为0x000000011fd0ca70,这两个由于位置都一样,随便提取哪个都行

python2 vol.py -f ../Challenge.raw --profile=Win7SP1x64 dumpfiles -Q 0x000000011fd0ca70 -D ./ 
Q:内存位置

image-20240401104351974

2.3.7、查看浏览器历史记录

Volatility中的iehistory插件可以用于提取Internet Explorer浏览器历史记录

python2 vol.py -f ../Challenge.raw --profile=Win7SP1x64 iehistory

image-20240401104828568

2.3.8、提取用户密码hash值并爆破

Volatility中的Hashdump插件可以用于提取系统内存中的密码哈希值

python2 vol.py -f ../Challenge.raw --profile=Win7SP1x64 hashdump

image-20240401105021326

2.3.9、查看剪切板的里的内容

Volatility中的clipboard插件可以用于从内存转储中提取剪贴板数据

python2 vol.py -f ../Challenge.raw --profile=Win7SP1x64 clipboard

image-20240401105709074

2.3.10、查看正在运行的服务
python2 vol.py -f ../Challenge.raw --profile=Win7SP1x64 svcscan

image-20240401105842990

执行了svcscan之后,每列代表服务的一些信息,包括服务名、PID、服务状态、服务类型、路径等等

2.3.11、查看网络连接状态

Volatility中的netscan插件可以在内存转储中查找打开的网络连接和套接字,该命令将显示所有当前打开的网络连接和套接字。输出包括本地和远程地址、端口、进程ID和进程名称等信息

python2 vol.py -f ../Challenge.raw --profile=Win7SP1x64 netscan

image-20240401110120808

2.3.12、查看注册表信息

printkey是Volatility工具中用于查看注册表的插件之一。它可以帮助分析人员查看和解析注册表中的键值,并提供有关键值的详细信息,如名称、数据类型、大小和值等

python2 vol.py -f ../Challenge.raw --profile=Win7SP1x64 printkey

image-20240401110439443

根据名称查看具体子项的内容,这里以SAM\Domains\Account\Users\Names做演示,这个是Windows系统中存储本地用户账户信息的注册表路径,它包含了每个本地用户账户的名称和对应的SID信息

python2 vol.py -f ../Challenge.raw --profile=Win7SP1x64 printkey -K "SAM\Domains\Account\Users\Names"

image-20240401111119660

2.13.13、提取全部的注册表
python2 vol.py -f ../Challenge.raw --profile=Win7SP1x64 dumpregistry -D ./

image-20240401111619524

2.4、全部插件

amcache		 				查看AmCache应用程序痕迹信息 
apihooks 检测内核及进程的内存空间中的
API hook atoms 列出会话及窗口站
atom 表
atomscan Atom表的池扫描(Pool scanner)
auditpol 列出注册表HKLMSECURITYPolicyPolAdtEv的审计策略信息
bigpools 使用BigPagePoolScanner转储大分页池(big page pools)
bioskbd 从实时模式内存中读取键盘缓冲数据(早期电脑可以读取出BIOS开机密码)
cachedump 获取内存中缓存的域帐号的密码哈希
callbacks 打印全系统通知例程
clipboard 提取Windows剪贴板中的内容
cmdline 显示进程命令行参数
cmdscan 提取执行的命令行历史记录(扫描_COMMAND_HISTORY信息)
connections 打印系统打开的网络连接(仅支持Windows XP 和2003)
connscan 打印TCP连接信息
consoles 提取执行的命令行历史记录(扫描_CONSOLE_INFORMATION信息)
crashinfo 提取崩溃转储信息
deskscan tagDESKTOP池扫描(Poolscaner)
devicetree 显示设备树信息
dlldump 从进程地址空间转储动态链接库
dlllist 打印每个进程加载的动态链接库列表
driverirp IRP hook驱动检测
drivermodule 关联驱动对象至内核模块
driverscan 驱动对象池扫描
dumpcerts 提取RAS私钥及SSL公钥
dumpfiles 提取内存中映射或缓存的文件
dumpregistry 转储内存中注册表信息至磁盘
editbox 查看Edit编辑控件信息 (Listbox正在实验中)
envars 显示进程的环境变量
eventhooks 打印Windows事件hook详细信息
evtlogs 提取Windows事件日志(仅支持XP/2003)
filescan 提取文件对象(file objects)池信息
gahti 转储用户句柄(handle)类型信息
gditimers 打印已安装的GDI计时器(timers)及回调(callbacks)
gdt 显示全局描述符表(Global Deor Table)
getservicesids 获取注册表中的服务名称并返回SID信息
getsids 打印每个进程的SID信息
handles 打印每个进程打开的句柄的列表
hashdump 转储内存中的Windows帐户密码哈希(LM/NTLM)
hibinfo 转储休眠文件信息
hivedump 打印注册表配置单元信息
hivelist 打印注册表配置单元列表
hivescan 注册表配置单元池扫描
hpakextract 从HPAK文件(Fast Dump格式)提取物理内存数据
hpakinfo 查看HPAK文件属性及相关信息
idt 显示中断描述符表(Interrupt Deor Table)
iehistory 重建IE缓存及访问历史记录
imagecopy 将物理地址空间导出原生DD镜像文件
imageinfo 查看/识别镜像信息
impscan 扫描对导入函数的调用
joblinks 打印进程任务链接信息
kdbgscan 搜索和转储潜在KDBG值
kpcrscan 搜索和转储潜在KPCR值
ldrmodules 检测未链接的动态链接DLL
lsadump 从注册表中提取LSA密钥信息(已解密)
machoinfo 转储Mach-O 文件格式信息
malfind 查找隐藏的和插入的代码
mbrparser 扫描并解析潜在的主引导记录(MBR)
memdump 转储进程的可寻址内存
memmap 打印内存映射
messagehooks 桌面和窗口消息钩子的线程列表
mftparser 扫描并解析潜在的MFT条目
moddump 转储内核驱动程序到可执行文件的示例
modscan 内核模块池扫描
modules 打印加载模块的列表
multiscan 批量扫描各种对象
mutantscan 对互斥对象池扫描
notepad 查看记事本当前显示的文本
objtypescan 扫描窗口对象类型对象
patcher 基于页面扫描的补丁程序内存
poolpeek 可配置的池扫描器插件
printkey 打印注册表项及其子项和值
privs 显示进程权限
procdump 进程转储到一个可执行文件示例
pslist 按照EPROCESS列表打印所有正在运行的进程
psscan 进程对象池扫描
pstree 树型方式打印进程列表
psxview 查找带有隐藏进程的所有进程列表
qemuinfo 转储 Qemu 信息 raw2dmp 将物理内存原生数据转换为windbg崩溃转储格式
screenshot 基于GDI Windows的虚拟屏幕截图保存 servicediff Windows服务列表(ala Plugx)
sessions _MM_SESSION_SPACE的详细信息列表(用户登录会话)
shellbags 打印Shellbags信息
shimcache 解析应用程序兼容性
Shim 缓存注册表项
shutdowntime 从内存中的注册表信息获取机器关机时间
sockets 打印已打开套接字列表
sockscan TCP套接字对象池扫描
ssdt 显示SSDT条目
strings 物理到虚拟地址的偏移匹配(需要一些时间,带详细信息)
svcscan Windows服务列表扫描
symlinkscan 符号链接对象池扫描
thrdscan 线程对象池扫描
threads 调查_ETHREAD和_KTHREADs
timeliner 创建内存中的各种痕迹信息的时间线
timers 打印内核计时器及关联模块的DPC
truecryptmaster Recover 恢复TrueCrypt7.1a主密钥
truecryptpassphrase 查找并提取TrueCrypt密码
truecryptsummary TrueCrypt摘要信息
unloadedmodules 打印卸载的模块信息列表
userassist 打印注册表中UserAssist相关信息
userhandles 转储用户句柄表
vaddump 转储VAD数据为文件
vadinfo 转储VAD信息
vadtree 以树形方式显示VAD树信息
vadwalk 显示遍历VAD树
vboxinfo 转储Virtualbox信息(虚拟机)
verinfo 打印PE镜像中的版本信息
vmwareinfo 转储VMware VMSS/VMSN 信息
volshell 内存镜像中的shell windows 打印桌面窗口(详细信息)
wintree Z顺序打印桌面窗口树
wndscan 池扫描窗口站
yarascan 以Yara签名扫描进程或内核内存

2.5、导入插件

mimikatz.py 放置到 volatility/plugins目录

image-20240401114018425

mimikatz是一个开源的用于从Windows操作系统中提取明文密码,哈希值以及其他安全凭据的工具

python2 vol.py -f ../Challenge.raw --profile=Win7SP1x64 mimikatz

image-20240401115237364

如果报错为这个

image-20240401115105175

pip2 install construct==2.10.54

安装这个包后就可以使用了

image-20240401115200629

三、内存取证工具Strings

  • 语法
strings [ -a ] [ - ] [ -o ] [ -t Format ] [ -n Number ] [ -Number ] [ File ... ]

strings 命令在对象文件或二进制文件中查找可打印的字符串。字符串是 4 个或更多可打印字符的任意序列,以换行符或空字符结束。 strings 命令对识别随机对象文件很有用

image-20240401115619921