Linux 系统取证

初始响应阶段应该收集的数据:

  • 系统日期和时间
  • 当前登录的用户清单
  • 整个文件系统的时间/日期
  • 当前正在运行的进程列表
  • 当前打开的套接字列表
  • 在打开的套接字上监听的应用程序列表
  • 当前或最近连接到系统的系统列表

易失性数据收集:

  • 首先需要上传取证人员自己可信任的 shell

  • 记录系统的日期和时间:
    date

  • 记录网卡信息,包括网络地址和状态等:
    ifconfig -a

  • 查看系统每个进程:
    ps -aux

  • 获取打开的网络套接字等信息,如开启了哪些端口,连接的 IP 地址是什么:
    netstat -an
    还可以加上-p 选项将应用程序的程序名及其 PID 映射到打开的端口:
    netstat -anp

  • 显示当前登录的用户信息:
    whow

  • 查看历史命令记录:
    history

  • 查看当前的目录信息
    ls


拷贝硬盘数据

当我们获取受害者机器上的硬盘数据时,必须获取硬盘上的所有数据,包括:已分配空间中的数据、未分配空间中的数据、闲散空间中的数据。只有这样才能恢复所有被删除的文件。

在进行取证前,需要将硬盘上的所有数据备份成为取证映像,接下来的取证分析工作也将在取证映像上进行,而不是在原始盘上进行。

一般情况下,可以使用 3 种方法来获取硬盘中的数据:

  • 用可信的操作系统直接启动涉案机器,将硬盘数据拷贝到外接硬盘
  • 使用瑞士军刀 netcat 工具通过网络传输获取
  • 直接将受害者的硬盘安装到可信的取证分析机上
1. 通过安装受害者硬盘来获取硬盘数据

注:DST 表示是目标盘;SRC 表示是受害者硬盘,源盘。

① 将硬盘插入机器,并挂载
mount /dev/DST /mnt

② 计算源盘数据的 hash 值,并记录结果
md5sum /dev/SRC

③ 将源盘的数据内容全部拷贝到目标盘,并保存为一个文件
dd if=/dev/SRC bs=2048 of=/mnt/disk.dd

④ 计算目标盘上文件的 hash 值
md5sum /mnt/disk.dd

⑤ 如果源盘的 hash 值和目标盘的 hash 值相等,则说明拷贝成功;若不相等,则需要重新拷贝

2. 通过 netcat 工具通过网络传输获取数据

① 在受害者主机上计算源盘的 hash 值
md5sum /dev/SRC

② 在取证人员的机器上启动 netcat 服务,并开启监听
nc -l -p 9000 >> disk.dd
注:-l 表示是监听模式,当监听方收到数据后关闭套接字接口,停止监听;如果希望建停放接收到数据后继续监听,可以选用参数 -L;参数 -p 指定监听端口;>> 为输出重定向

③ 在受害者主机上执行命令,将源盘内容拷贝到取证人员机器上的一个文件中
dd if=/dev/SRC bs=2048 | nc -w 3 10.10.10.1 9000
注:假设取证人员机器的 IP 地址为 10.10.10.1

④ 在鉴定人员的机器上计算文件的 hash 值
md5sum disk.dd

⑤ 如果源盘的 hash 值和目标盘的 hash 值相等,则说明拷贝成功;若不相等,则需要重新拷贝

注:在进行 dd 备份时,需要先进行消毒处理,即清空目标盘中的所有内容,确保映像的完整性和准确性:
dd if=/dev/zero of=/dev/DST


映像文件分解

目前大多数取证工具分析对象是硬盘中的某一个分区而不是整块硬盘。因此获得取证映像后,还㤇将一个个的分区分离出来,在进行分离之前,还需要了解各个分区的位置和长度。

① 使用fdisk命令来查看各个分区的位置和长度
fdisk -lu disk.dd
注:-l 表示列出各个分区的位置和长度、-u 表示位置和长度的单位是删除

② 使用dd命令进行分离
dd if=disk.dd skip=第一块分区开始的位置 count=第一块分区的大小 of=hda1.dd

dd if=disk.dd skip=第二块分区开始的位置 count=第二块分区的大小 of=hda2.dd
……


对拷贝后的磁盘映像进行取证分析

① 先将各个分区的映像以只读的方式挂载到不同的目录上:
mount -o ro,loop,nodev,noexec /dev/hda1.dd /home/hda1
mount -o ro,loop,nodev,noexec /dev/hda2.dd /home/hda2

② 查找隐藏文件

  1. 入侵者常用的一种隐藏技术是将普通文件加入到 /dev 目录或其他目录中,可以用 find -type f 来查找相关目录中的普通文件,如:
    find /dev -type f -print

  2. 另外一种常用的隐藏文件的方法是在文件名的第一个字母前加上.,因为 Linux 中默认 . 开头的文件是隐藏文件。且用普通的 ls 命令不能列出以字符 . 开头的文件。我们可以用以下两种方式来查看这种类型的隐藏文件
    ①用 find 命令来搜索以 . 开头的文件
    find / -name ".*" -print

    ②用 ls -a 命令来显示所有文件,包括隐藏文件
    ls -a

  3. 分析隐藏文件
    可以用 strings 命令来提取文件中的 ASCII 码字符串、或用其他工具来分析隐藏文件的内容。

  4. 分析启动文件和配置文件
    大多数入侵者经常将后面程序隐藏在系统的配置文件和启动文件中,这样的话,每当系统启动时,后门程序就会自动执行,因此通过分析系统的启动项文件和配置文件,往往可以发现隐藏程序。
    ① 分析启动文件:
    启动文件中的正常命令一般都包含在 if 语句结构中,不包含在 if 语句结构中的命令一般可认定为可疑程序。但也不是绝对,因为入侵者很容易作假。
    ②分析配置文件:
    配置文件 /etc/passwd 中包含了系统中所有用户的登录信息。入侵者在入侵系统时可能会在系统中创建新的用户或账号。尤其是那些 UID 为 0 的用户,因为 UID 为 0 代表其拥有 root 权限。
    ③ 分析历史文件
    可以通过 history 命令来查看用户执行过的命令的历史记录。

    同时,入侵者入侵系统后,通常会删除文件或将其链接到 /dev/null 中。通过恢复该文件或分析 /dev/null 可以发现更多的线索。

  5. 分析系统的日志文件

你可能感兴趣的:(取证)