使用 Linux 工具进行计算机取证

使用 Linux 工具进行计算机取证

本文通过介绍 Linux 系统工具(Ftkimage、xmount、Volatility、dd、netcat)来介绍使用计算机取证的方法和步骤。 硬盘数据的取证是指为了证据保全,确保取证工作造成数据丢失,在获取到证据介质后,首先要做的就是对介质数据进行全盘镜像备份。内存取证主要通过对内存数据及其缓存硬盘数据进行分析,提取那些对案件侦破可能有重要意义的易失性数据,这些易失性数据的特点是存在于正在运行的计算机或网络设备的内存中,关机或重启后这些数据将不再存在。

0x00前言

计算机取证过程中要用到很多工具 , 根据取证工具的用途, 主要可以将取证工具分为三大类:第一类是磁盘文件取证复制工具, 第二类是内存文件取证工具,第三类是取证分析工具。尽管很多商业工具都是在 Windows 环境中开发的,但是 Linux 平台还是获得了自己的一席之地,因为 Linux 包含了非常强大的工具,这些工具对取证调查是非常有帮助的,L本文主要介绍 Linux 环境下的磁盘和内存取证工具包括
Ftkimage、xmount、Volatility、dd、netcat 等。

0x01磁盘取证简介

一般来说取证就是收集并分析证据,并为司法行动中的展示构建事实的一个过程。但在计算机技术中,或在计算机取证技术中,取证就是通过专门的技术来发现证据的过程,这些证据可被用于确认计算机、计算机网络、相关设备、数据存储媒体是否被用于实施犯罪或未授权的活动。在计算机的取证领域中,取证人员在取证调查的整个过程中证明证据媒体没有在任何方面被篡改是至关重要的。其中一种方法是对原始的证据媒体作一个映象复制,并对映象复制品展开调查,以防止对原始证据的任何更改。本文介绍磁盘取证工具的平台是
Fedora 21 x64 系统。

1镜像工具 dd

  计算机取证时需要为计算机生成一个位镜像, 这个操作要在系统还在运行的时候或在系统关闭之前进行。最常使用的就是两个工具: dd 和 netcat(两者都是开源软件安装非常简单这里从略)。dd 为我们生成磁盘的位镜像文件,而 netcat 将拷贝通过网络传送出去。你需要一台联网的电脑来接收该镜像文件,而且该电脑需要有足够的空间来存放镜像文件。

复制/dev/sdc 到文件 cyqdrive.dd 中。将文件分割成多个 1GB 大小的文件。读取错误时,忽略该错误而不停止拷贝行为。这个例子命令如下:

#dd if=/dev/sdc split=1G of=cyqdrive.dd

刚才已经展示如何创建一个磁盘镜像,但只是创建镜像到系统的本地文件。但是当当前的物理空间不足时就要使用 netcat 来将 dd 命令的的输出通过网络连接进行重定向。首先在目标服务器上,启动 netcat 作为一个监听,并将输出重定向到一个远程服务器上的文件。我会用 netcat 监听 TCP 的 3452 端口,并将镜像写入一个远程的文件 cyqimage.dd。

#nc -l -p 3452 > myimage.dd

  然后你可以对服务器(192.168.1.1)进行镜像拷贝,并通过标准输出(没有指定输出的文件)来将镜像文件输出到 netcat,然后由 netcat 将镜像文件发送到目标服务器,使用如下命令:

# dd if=/dev/sdc split=1G of=cyqdrive.dd | nc 192.168.1.1 3452

2 使用 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 Version x64 – 3.1.1 版本的文件,下载后解压缩后即可使用,文件名称是 ftkimager。

用户可以使用这个命令查看帮助信息

./ftkimager –help

首先查看当前加载的驱动器列表,输出界面见图 1

图 1. 查看驱动器列表

获取/dev/sdb 这个磁盘的 E01 模式的文件映像, 使用如下命令:

#./ftkimager /dev/sdb /tmp/cyq.e01 --e01 --frag 500M --description "cyq" --examiner cyq

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 模式的文件映像

3 xmount工具制作 snapshot(快照)文件

xmount 工具可以把 E01 格式的镜像文件转化为 VDI 或者 VMDK 格式。然后用户可以使用 VirtualBox 和 Vmware 软件打开文件进行取证操作。

安装 xmount 软件包

#RPM –ivh https://forensics.cert.org/cert-forensics-tools-release-el7.rpm

#yum install xmount

下面需要修改配置文件

#usermod -a -G fuse cyq

#vi /etc/fuse.conf”

把下面一行的 # 去掉,修改为:

user_allow_other

然后保存文件后,然后建立一个目录

#mkdir ~/mnt0

如果需要建立 vdi 格式,使用如下命令:

#xmount --in ewf --out vdi --cache ~/tmp/MyDisk.cache ~/tmp/cyq.E?? ~/mnt0

这个命令比较长,参数也比较多。这里简单介绍一下

--in ewf 是表示源文件是 E01 格式。

-~/tmp/cyq.E?? 表示源文件的路径,并且可能是多个文件。

--out vdi 表示输出格式是 vdi。

/mnt0 是输出文件的目录。

--description "cyq"是操作说明。

~/tmp/MyDisk.cache 是缓存文件名称。

建立 vdi 文件后,可以使用 VirtualBox 虚拟机导入这个 vdi 文件进行取证分析。

如果需要建立 vmdk 格式,使用如下命令:

#xmount --in ewf --out vmdk --cache ~/tmp/MyDisk.cache ~/tmp/cyq.E?? ~/mnt0

建立 vmdk 文件后,可以使用 Vmware Workstation 导入这个文件进行取证分析。

0x2内存取证简介

内存取证主要通过对内存数据及其缓存硬盘数据进行分析,提取那些对案件侦破可能有重要意义的易失性数据,这些易失性数据的特点是存在于正在运行的计算机或网络设备的内存中,关机或重启后这些数据将不再存在。

成功获取物理内存以后,接下来的工作就是要对镜像文件进行分析,从中提取有用的入侵证据。一般来说,我们可以从镜像文件中提取以下信息 ( 这些信息是指在生成镜像文件那个时刻的信息) :

1.所有正在内存中运行的进程;

2.所有的载入模块和 DLL( 动态链接库),包括被植入的各种恶意程序;

3.所有正在运行的设备驱动程序,包括隐藏的 rootkits;

4.每个进程打开的所有文件;

5.每个进程打开的所有注册表的键值;

6.每个进程打开的所有网络套接字 ( sockets),包括 IP 地址和端口信息;

7.用户名和口令;

8.正在使用的电子邮件 和网页链接;

9.正在编辑的文件内容。

1 内存取证软件 Volatility 简介

Volatility 是一款基于 GNU 协议的开源框架,使用 Python 语言编写而成的内存取证工具集,可以分析内存中的各种数据。Volatility 支持对 32 位或 64 位 Wnidows、Linux、Mac、Android 操作系统的内存数据进行提取与分析。

内存取证的工作流程

工作流程首先在取证计算机上安装 Volatility 软件包。接着获取内存副本后传输到取证计算机上面,最后是进行分析工作。本文介绍内存取证工具的平台是 Backtrack5 x64 系统。

安装 Volatility

#apt-get update

#dpkg --get-selections | grep volatility

#apt-get install volatility

进入程序的存储目录验证一下

#cd /pentest/forensics/volatility

#ls -l vol.py

#./vol.py –h

vol.py 是主程序,主要包括如下

-f FILENAME 选项的功能是说明打开一个镜像文件所使用的文件名,这个命令选项几乎在所有命令中都会用到。

--cache 选项的功能是使用缓存。

--dtb=DTB 选项的功能是说明 DTB(Directory Table Base) 页目录表的基地址。

-k KPCR 选项的功能是说明一个指定的内核处理器控制区的虚拟地址。

apihooks 插件命令的功能是监测在进程和内核中的 api 钩子。

bioskbd 插件命令的功能是动态地从内存中读取键盘缓冲区的数据。

cmdscan 插件命令的功能是通过访问_command_history 获取历史命令记录。

connections 插件命令查看当前内存中活跃的 tcp 连接。

制作 Linux 系统的 Profile

Volatility 自带一些 windows 系统的 profile,Linux 系统的 Profile 需要自己制作,制作的方法如下:实际是将 module.dwarf 和 system.map 打包成一个 zip 文件,接着将 zip 文件移动到 volatility/plugins/overlays/linux/ 目录中。

也可以在 https://github.com/KDPryor/LinuxVolProfiles 处直接下载已经做好的 profile 文件(zip 文件)然后复制到目录后解压缩即可。

点击查看代码清单

2 制作 Linux 下的内存镜像文件

这里使用的工具是 fmem,fmem 是用于检索内存的取证工具。它是作为一个内核模块的来运行。

安装使用方法:

#wget http://hysteria.sk/~niekt0/foriana/fmem_current.tgz

#tar zxvf fmem_current.tgz

#cd fmem_1.6-0

# make; ./run.sh

下面的命令将内存里的数据拷贝到 root 目录下的 cyq.vmem 文件

# dd if=/dev/fmem of=/root/cyq.vmem bs=10MB count=2048

内存取证的实例

检查进程详细信息

检查进程详细信息可以使用 linux_psaux 子命令,命令如下:

#./vol.py -f /root/pexit.vmem --profile=LinuxUbuntu1004_pae32-33x86 linux_psaux

命令输出结果见图 3

图 3. 检查进程详细信息

检查系统进程树信息

检查系统进程树信息可以使用 linux_pstree 子命令,命令如下:

#./vol.py -f /root/pexit.vmem --profile=LinuxUbuntu1004_pae32-33x86 linux_pstree

命令输出结果见图 4

图 4. 检查进程详细信息

说明: 进程树 (Process tree) 是计算机科学中的术语,又称为进程图 (Process map) 或进程家族树 (Process graph),是一种表示进程关系的直观方法。linux 的树形进程结构为管理进程提供了很大的方便,不管是内核对进程的管理还是用户对进程的管理都受惠不少,对于审计也是很有用的,不管运行的什么进程,都会有一条不会断的线索将之绑在系统内部。

查看某具体进程的情况

检查某具体进程的情况可以使用 linux_proc_maps 子命令,命令如下:

# ./vol.py -f /root/cyq.vmem --profile=LinuxUbuntu1004_pae32-33x86 linux_proc_maps | grep httpds

命令输出结果见图 5

图 5. 检查 httpds 进程详细信息

说明:这个子命令可以查看进程细节包括共享库、开始和结束的位置等信息。

查看网络链接情况

检查网络链接情况可以使用 linux_netstat 子命令,命令如下:

#./vol.py -f /root/pexit.vmem --profile=LinuxUbuntu1004_pae32-33x86 linux_netstat

命令输出结果见图 6

图 6. 查看网络链接情况

参数查看内核路由表情况

检查内核路由表情况可以使用linux_route_cache子命令,命令如下:

#./vol.py -f /root/pexit.vmem --profile=LinuxUbuntu1004_pae32-33x86 linux_route_cache 命令输出结果见图 7

图 7. 查看内核路由表情况

内存取证的子命令列表简介

限于篇幅这里笔者就介绍以上几个命令,这里笔者把相关命令(也可以叫插件)进行分类。

获取系统进程信息相关命令:

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 的内容。

详细使用方法可以看在官方网站包含 Linux 的相关命令参考:

https://blogs.sans.org/computer-forensics/files/2012/04/Memory-Forensics-Cheat-Sheet-v1_2.pdf

0x03总结

计算机取证主要包括两个阶段:物理证据获取和信息分析。本文通过介绍 Linux 系统工具(Ftkimage、xmount、Volatility、dd、netcat)来介绍使用计算机取证的方法和步骤。包括磁盘数据的取证和内存取证。

欢迎大家分享更好的思路,热切期待^^_^^ !!!

时间: 2024-11-06 23:12:41

使用 Linux 工具进行计算机取证的相关文章

第2章 Linux系统安装(3)_SSH连接Linux工具:SecureCRT和WinSCP

4. SSH连接Linux工具 4.1 Linux网卡配置 (1)临时配置: ifconfig eth0 192.168.32.100 //给eth0网卡指定IP,写在ROM里的,关机会丢失. (2)永久生效:修改配置文件 ①vi /etc/sysconfig/network-scripts/ifcfg-eth0 //静态IP设置示例 DEVICE=eth0 HWADDR=00:0C:29:D5:F0:B4 TYPE=Ethernet UUID=ff3e7b27-0267-47f9-abb5-0

linux 工具系列之 - strace

 what is strace ? Linux 解释 从字面意思上就可道 strace 跟踪程序执行时候的系统调用和信号. how use? man 一下strace 发现它的参数一大坨,是不是很郁闷,不用担心,其实我们只要记住几个常用的参数就可以搞定绝对大多数问题啦 注意 test指可执行文件 strace  -i 查看可执行文件的系统调用 -i  查看可执行文件在那个地址进行了系统调用,可配合gdb -p " pid of test" 附加到运行的进程 Ctrl  +c 结束 -o

【转载更新】Linux工具之AWK 3.高级知识

原文:http://blog.hexu.org/archives/41.shtml#id2874788 awk编程 14.1. 变量 在awk中,变量不需要定义就可以直接使用,变量类型可以是数字或字符串.赋值格式:Variable = expression,如$ awk ‘$1 ~/test/{count = $2 + $3; print count}’ test,上式的作用是,awk先扫描第一个域,一旦test匹配,就把第二个域的值加上第三个域的值,并把结果赋值给变量count,最后打印出来.

20140617-Windows连接Linux工具介绍

20140617-Windows连接Linux工具介绍 1.正常情况下都不会直接在Linux服务端进行操作,实际使用服务器和工作电脑不会在同一个地方,也不允许在服务器操作. 我这里用SecureCRT 7.0来连接服务器.提供个下载,带注册机工具: 安装完后进行注册,以管理员身份运行KEY,点patch,第一次找到程序的安装目录,选择"SecureCRT.exe"[确定],然后会自动弹出程序的配置文件目录,选"SecureCRTHelp.exe"文件[确定],接下来

Linux工具参考篇(网摘)

Linux工具参考篇 原文出处:[Linux Tools Quick Tutorial] 1. gdb 调试利器 2. ldd 查看程序依赖库 3. lsof 一切皆文件 4. ps 进程查看器 5. pstack 跟踪进程栈 6. strace 跟踪进程中的系统调用 7. ipcs 查询进程间通信状态 8. top linux下的任务管理器 9. free 查询可用内存 10. vmstat 监视内存使用情况 11. iostat 监视I/O子系统 12. sar 找出系统瓶颈的利器 13.

【转载 更新】Linux工具之AWK 2.基础知识

1. awk简介 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入.一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具.它在命令行中使用,但更多是作为脚本来使用.awk的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作.如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被操作所指

Linux工具开发---2编程实现对输入字符序列变换(编码/加密/散列)方式的智能判定

如何简单实现一个可以智能判定输入字符序列变换方式的小程序 本文由CSDN-蚍蜉撼青松 [主页:http://blog.csdn.net/howeverpf]原创,转载请注明出处! 问题描述: 在分析网络数据包或者研究安全问题时,经常会遇到变换后的字符序列.而能否准确识别密文的变换算法,对进一步的分析工作很关键.常用的变换算法包括但不限于:Base64.URL编码.HTML编码.MD5散列.DES加密.RSA加密等.要求: 1)在理解算法原理及密文特点的基础上,使用任意编程语言实现,当输入一段密文

【转载更新】Linux工具之AWK 4.实例

======基 础 篇====== 1.无pattern的action实例 a.awk ‘{print NR $1 $NF}’data.txt   打印行号,第一列和最后一列,中间无分隔符 b.awk ‘{print $1,$NF}’ data.txt     打印第一列和最后一列,并且中间有分隔符 c.awk‘{print$0,$NF+10}’data.txt  打印整行,并打印 最后一行加上10的结果 2.有pattern的action实例 a.awk ‘/[0-9]/’ data.txt

Linux工具XFTP、Xshell(centos配置java环境 工具篇 总结一)

?Xmanager5是什么? ?安装XFTP ?安装Xshell 1.Xmanager5(官网:https://www.netsarang.com/download/software.html)是全新标准的跨平台集成解决方案.它是一个一站式解决方案,这个软件包含有以下一些产品:Xshell5,Xftp5和Xlpd5. 2.安装XFTP Xftp(csdn下载地址,含注册码:http://download.csdn.net/detail/sinat_31719925/9804890) Xftp是一