Linux系统取证学习笔记

根据取证工具的功能,取证工具分为三大类 : 第一类是实时响应工具 , 第二类是取证复制工具 , 第三类是取证分析工具。

根据取证工具的用途, 取证工具分为三大类:第一类是磁盘文件取证复制工具, 第二类是内存文件取证工具,第三类是取证分析工具。

1 磁盘取证

      在计算机的取证领域中,取证人员在取证调查的整个过程中证明证据媒体没有在任何方面被篡改是至关重要的。其中一种方法是对原始的证据媒体作一个映象复制,并对映象复制品展开调查,以防止对原始证据的任何更改。

1.1 镜像工具 dd

dd if=/dev/xvdb of=cyqdrive.dd bs=1024 count=1G

参数解释:

if=文件名(源文件)  of=文件名(输出文件) bs=bytes(同时设置读入/输出的块大小为bytes个字节)  count=blocks(总大小)

详细用法:https://www.cnblogs.com/jikexianfeng/p/6103500.html

1.2 与netcat的结合

dd 为我们生成磁盘的位镜像文件,而 netcat 将拷贝通过网络传输到远程主机。

(1)首先在远程主机上,启动 netcat 作为一个监听,用 netcat 监听 TCP 的 3452 端口,并将镜像写入文件 myimage.dd。

      nc -l -p 3452 > myimage.dd

      -l 监听模式,用于入站连接

      -p 监听端口(本地端口号)

 (2)然后你可以对服务器进行镜像拷贝:

      dd if=/dev/xvdb of=cyqdrive.dd bs=1024 count=1G  | nc 192.168.1.1 3452

1.3 FTK Imager for Linux

使用 FTK Imager 工具用户可以创建原始证据媒体的取证映象,如本地硬盘、闪盘、软盘、Zip 驱动器、CD、DVD 等。

https://accessdata.com/product-download(下载网址,命令行免费)

 1) 首先查看当前加载的驱动器列表

./ftkimager --list-drives

2) 获取/dev/xvdb 这个磁盘的 E01 模式的文件映像

./ftkimager /dev/xvdb /tmp/cyq.e01 --e01 --frag 500M --description "centos7" --examiner heetian

参数解释:

/dev/xvdb 是取证目标驱动器名称
/tmp/cyq.e01 是取证文件的名称和路径
--e01 是表示使用 E01 格式
--frag 500M 表示每 500MB 分成一个文件
--examiner heetian 是取证操作人员的姓名简称
--description "centos7"是操作说明


dd 镜像格式是目前被最广泛使用的一种镜像格式,也称成原始格式 (RAW Image)。
dd 镜像的优点是兼容性强,目前所有磁盘镜像和分析工具都支持 dd 格式。
E01 是法证分析工具 EnCase 的一个证据文件格式,较好地解决了 dd 镜像的一些不足。
在生成 E01 格式证据文件时,会要求用户输入与调查案件相关的信息。这些元数据将随证据数据信息一同存入 E01文件中。文件的每个字节都经过 32 位的 CRC 校验,这就使得证据被篡改的可能性几乎为 0。

1.4 使用 xmount 工具制作快照文件

安装 (Linux下)apt-get install xmount

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

建立 vdi 格式,使用如下命令:xmount --in ewf  /tmp/cyq.e01.E?? --out vdi  ~/mnt0

参数解释:

--in ewf 是表示源文件是 E01 格式。
~/tmp/cyq.e01.E?? 表示源文件的路径,并且可能是多个文件。
--out vdi 表示输出格式是 vdi。
~/mnt0 是输出文件的目录。

建立vmdk文件使用如下命令:xmount --in ewf /tmp/cyq.e01.E?? --out vmdk ~/mnt0

2 内存取证

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

2.1 Volatility

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

(1)安装

从github上下载即可:https://github.com/volatilityfoundation/volatility.git

(2)创建用户配置文件

Volatility需要从用户配置文件中读取内核的相关信息,通过这些信息来定位内存中的关键信息并对其进行解析。因此我们需要获取用户配置文件,且这些配置文件需与你要分析的内核版本相匹配,其中包含了内核数据结构以及调试符号。Volatility 自带一些 windows 系统的 profile,Linux 系统的 Profile 需要自己制作,制作的方法如下:实际是将 module.dwarf 和 system.map 打包成一个 zip 文件,接着将 zip 文件移动到 volatility/plugins/overlays/linux/ 目录中。也可以在 https://github.com/KDPryor/LinuxVolProfiles 处直接下载已经做好的 profile 文件(zip 文件)然后复制到目录后解压缩即可。

(3)获取内存镜像

Volatility并不会抓取内存,这里使用lime(Linux Mem Extractor)抓取内存,当然它也支持安卓系统内存抓取。

下载网址:https://github.com/504ensicsLabs/LiME.git

2.2 基本使用

./vol.py ‐f [image] ­‐profile=[profile] [plugin]      -f后面需要跟绝对路径

./vol.py --info       查看扫描检查、插件、地址空间等信息

./vol.py -h/--help   查看帮助信息 

./vol.py [plugin] –help   查看指定插件的说明

./vol.py --info | grep -i linux_ (列出所有linux插件)  查找插件:不带前缀的是windows的插件,带linux前缀的是linux的插件

查看profile文件:

     

2.3 实例用法

查看系统ARP表:

      vol.py -f /root/centos7.lime --profile=Linuxcentos7x64 linux_arp

查看系统信息:

      vol.py -f /root/centos7.lime --profile=Linuxcentos7x64 linux_banner

检查系统进程信息:

      vol.py -f /root/centos7.lime --profile=Linuxcentos7x64 linux_psaux

查看系统隐藏进程:

      vol.py -f /root/centos7.lime --profile=Linuxcentos7x64 linux_pidhashtable

查看某具体进程的情况

      vol.py -f /root/centos7.lime --profile=Linuxcentos7x64 linux_proc_maps | grep httpd

查看网络链接情况

      vol.py -f /root/centos7.lime --profile=Linuxcentos7x64 linux_netstat

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

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

3 取证分析

      我们可以从镜像文件中提取以下信息  :

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

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

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

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

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

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

      用户名和口令;

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

      正在编辑的文件内容

lsof工具

kali中自带

常用的参数列表:

      lsof filename 显示打开指定文件的所有进程

      lsof -a 表示两个参数都必须满足时才显示结果

      lsof -c string 显示COMMAND列中包含指定字符的进程所有打开的文件

      lsof -u username 显示所属username 进程打开的文件

      lsof -g gid 显示归属gid的进程情况

      lsof +d /DIR/ 据某个目录列出被打开的文件

      lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长

      lsof -d FD 显示指定文件描述符的进程

      lsof -i[46] [protocol][@hostname|hostaddr][:service|port] 查看所有网络情况

      lsof -n 不将IP转换为hostname,缺省是不加上-n参数

      lsof -i :port_number 用以显示符合条件的进程情况

      lsof -p PID 查找进程id来列出打开的文件

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值