数字取证-死活取证
活取证:在主机存活时发现系统被入侵,然后直接把机器的运行内存dump下来,对运行内存进行分析,还原一些进程的中的信息。主要抓取文件metadata,创建时间线,命令历史,分析日志文件,哈希摘要,转存内存信息等数据.
死取证:是对机器的磁盘做镜像之后分析的取证方法。用于在关机后制作硬盘镜像,分析镜像(MBR硬盘分区,GPT全局分区表,LVM逻辑卷)是否存在病毒,木马等恶意程序.
相比于死取证,活取证是更加的重要,能够获取到当前系统第一手资料,对于分析入侵过程起到了至关重要的作用
我们现在构造一个场景,假如公司的一台主机被黑客侵入,当前主机处于运行状态,我们对其进行活取证,调查黑客是如何入侵本系统的.
windows系统活取证:
对windows主机来说,可以使用Dumplt去dump内存中的信息,下载地址为:http://www.secist.com/wp?content/uploads/2016/11/DumpIt.zip(为了保障目标系统的完整性和不破坏第一现场的原则,推荐在U盘中启动
用法很简单,双击打开程序,输入y即可将windows内存的数据制作成raw文件
然后将raw文件拷贝到kali中,使用Volatility进行系统取证,这个要简单许多,详情可参考http://www.cnblogs.com/Hydraxx/p/10530212.html
Linux系统进行活取证
这里我使用debain系统的内存镜像进行活取证,该镜像保存在/root下
在我们进行活取证成功获取到物理内存之后,接下来的工作就是要对镜像文件进行分析,从中提取有用的入侵证据。
一般来说,我们可以从镜像文件中提取以下信息 ( 这些信息是指在生成镜像文件那个时刻的信息) :
|
|
Volatility 简介:
Volatility是一款开源的,基于Python开发的内存取证工具集,可以分析内存中的各种数据。Volatility支持对32位或64位Wnidows、Linux、Mac、Android操作系统的RAM数据进行提取与分析。我们将使用Volatility对内存镜像进行分析.
首先安装volatility
|
|
但是volatility自带了一些windows系统的profile,Linux系统的profile需要自行下载制作
也可以直接去https://github.com/volatilityfoundation/profiles/blob/master/Linux/Debian/x64/Debian94.zip下载debain系统的profile,我这里直接在Linux系统下对windows内存镜像进行分析,对Linux内存镜像分析方法一致
volatility 使用方法:**
volatility -f <文件名> –profile=<配置文件> <插件> [插件参数]
使用imageinfo插件来猜测dump文件的profile值,WinXPSP2x86
|
|
指定profile值,使用pslist去列举系统进程
|
|
使用UserAssist键跟踪执行的程序,查看程序运行了多少次,最后一次运行时间等信息
|
|
使用hivelist插件列举在内存中的注册表
|
|
按虚内存查看注册表内容 -o指向某一注册表的虚内存地址
|
|
查看系统用户账户
|
|
查看最后登录用户
|
|
查看历史命令
|
|
查看网络连接
|
|
查看IE历史信息
|
|
提取hash
|
|
查看SID
|
|
检查结果查毒
|
|
Linux内存取证插件参数
获取系统进程信息相关命令:
linux_pstree:进程树列表
linux_pslist_cache:来自的 kmem_cache 活动进程
linux_psxview:比较进程列表
linux_lsof :打开文件描述符的每个活动进程
linux_pslist :活动的进程列表
linux_psaux:活动的进程列表(输出内容包括更多的细节)
获取系统内存信息的相关命令:
linux_memmap:内存映射文件
linux_pidhashtable: Linux 内核中的 PID 散列表
linux_proc_maps::转储由-s/–vma 参数到磁盘上指定的内存范围。
linux_dump_map:进程内存的详细信息,包括堆和共享库。
linux_bash :bash 历史文件
获取网络接口信息的相关命令:
linux_arp:显示 arp 列表
linux_ifconfig:显示网络接口详细情况
linux_route_cache:显示网络路由表
linux_netstat:查看网络链接情况
获取系统硬件信息的相关命令:
linux_cpuinfo :显示 cpu 的相关命令信息。
linux_dmesg :显示内核缓存信息。
linux_iomem :显示 io 设备信息。
linux_mount :显示/proc/mouns 的相关命令信息,主要是挂载的磁盘设备。
linux_mount_cache :显示 kmem_cache 的相关命令信息。
linux_slabinfo :显示/proc/slabinfo 的相关命令信息。
rootkit 检测的相关命令:
linux_check_afinfo:检查篡改网络协议结构。
linux_check_creds:检查进程共享结构。
linux_check_fop:检查文件操作数据结构篡改情况。
linux_check_idt:检查中断描述符表(IDT)的篡改情况。
linux_check_syscall:在系统调用表检查功能情况。
linux_check_modules:检查用于从内核模块列表中缺少在 sysfs 中的项目。
获取内核模块信息的相关命令:
linux_lsmod:加载内核模块。
linux_tmpfs::tmpfs 的内容。
死取证
镜像工具 dd
计算机取证时需要为计算机生成一个位镜像, 这个操作要在系统还在运行的时候或在系统关闭之前进行。最常使
用的就是两个工具: dd 和 netcat(两者都是开源软件安装非常简单这里从略)。dd 为我们生成磁盘的位镜像文
件,而 netcat 将拷贝通过网络传送出去。你需要一台联网的电脑来接收该镜像文件,而且该电脑需要有足够的空间来存放镜像文件。
复制/dev/sdc 到文件 cyqdrive.dd 中。将文件分割成多个 1GB 大小的文件。读取错误时,忽略该错误而不停止拷贝行为。这个例子命令如下:
刚才已经展示如何创建一个磁盘镜像,但只是创建镜像到系统的本地文件。但是当当前的物理空间不足时就要使用netcat 来将 dd 命令的的输出通过网络连接进行重定向。首先在目标服务器上,启动 netcat 作为一个监听,并将输
出重定向到一个远程服务器上的文件。我会用 netcat 监听 TCP 的 3452 端口,并将镜像写入一个远程的文件cyqimage.dd。然后你可以对服务器(192.168.1.1)进行镜像拷贝,并通过标准输出(没有指定输出的文件)来将镜像文件输出到 netcat,然后由 netcat 将镜像文件发送到目标服务器,使用如下命令:
|
|
使用 FTK Imager for Linux
使用 FTK Imager 工具用户可以创建原始证据媒体的取证映象,如本地硬盘、闪盘、软盘、Zip 驱动器、CD、DVD等。对于 FTK Imager 来说 Command Line Version(命令行版本)是免费的,用户可以访问 http://www.accessdata.com/support/product-downloads 下载对应的操作系统版本,这里笔者使用的是 Fedora and Red Hat Versionx64 – 3.1.1 版本的文件,下载后解压缩后即可使用,文件名称是 ftkimager。用户可以使用这个命令查看帮助信息
首先查看当前加载的驱动器列表,输出界面见图 1
图 1. 查看驱动器列表
获取/dev/sdb 这个磁盘的 E01 模式的文件映像, 使用如下命令:
ftkimager 这个命令比较长,参数也比较多。这里简单介绍一下
/dev/sdb 是取证目标驱动器名称
/tmp/cyq.e01 是取证文件的名称和路径
–e01 是表示使用 E01 格式。
–frag 500M 表示每 500MB 分成一个文件,在映象片断的大小中,用户可以可以选择将映象分割为多个文件以便于
在 DVD 或 FAT 文件系统中中备份。
–examiner cyq 是取证操作人员的姓名简称。
–description “cyq"是操作说明。
E01 格式说明:dd 镜像格式是目前被最广泛使用的一种镜像格式,也称成原始格式 (RAW Image)。dd 镜像的优点是兼容性强,目前所有磁盘镜像和分析工具都支持 dd 格式。E01 是法证分析工具 EnCase 的一个证据文件格式,较好地解决了 dd 镜像的一些不足。在生成 E01 格式证据文件时,会要求用户输入与调查案件相关的信息,如调查人员、地点、机构、备注等元数据。这些元数据将随证据数据信息一同 存入 E01 文件中。文件的每个字节都经过 32 位的CRC 校验,这就使得证据被篡改的可能性几乎为 0。默认情况下,分析软件自动以每 64 扇区的数据块进行校验,这
|
|
种方式兼顾速度和完整性两个方面的考虑。获取个磁盘的 E01 模式的文件映像需要一些时间,根据磁盘大小和硬件型号有所差异,图 2 是完成的界面。
图 2. 获取/dev/sdb 这个磁盘的 E01 模式的文件映像
使用 xmount 工具制作 snapshot(快照)文件
xmount 工具可以把 E01 格式的镜像文件转化为 VDI 或者 VMDK 格式。然后用户可以使用 VirtualBox 和 Vmware
软件打开文件进行取证操作。
安装 xmount 软件包
|
|
下面需要修改配置文件
把下面一行的 # 去掉,修改为:
|
|
然后保存文件后,然后建立一个目录
|
|
如果需要建立 vdi 格式,使用如下命令:
这个命令比较长,参数也比较多。这里简单介绍一下
–in ewf 是表示源文件是 E01 格式。
-~/tmp/cyq.E?? 表示源文件的路径,并且可能是多个文件。
–out vdi 表示输出格式是 vdi。
/mnt0 是输出文件的目录。
–description “cyq"是操作说明。
~/tmp/MyDisk.cache 是缓存文件名称。
建立 vdi 文件后,可以使用 VirtualBox 虚拟机导入这个 vdi 文件进行取证分析。
如果需要建立 vmdk 格式,使用如下命令:
|
|
建立 vmdk 文件后,可以使用 Vmware Workstation 导入这个文件进行取证分析。
- 原文作者:码中春秋
- 原文链接:https://blog.taielab.com/2019-05-09/digital-forensics-live-and-dead.html
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。