数字取证简介

数字取证是一种法律和计算机科学领域的专业实践,它涉及使用科技和计算机取证工具来调查数字设备和电子数据,以收集、分析和保护与犯罪、法律诉讼或其他调查相关的证据。数字取证旨在确保在法律程序中获得的数字证据的完整性、可靠性和法律可接受性。数字取证被定义为可以由法院使用的计算机证据的保存,识别,提取和记录的过程。

简而言之,数字取证是使用技术收集证据、调查证据并在法律案件中呈现调查结果的过程。它可以包括检查网络活动、访问日志、搜索历史记录和硬盘和移动设备等数字存储介质,以及分析这些数据以识别犯罪活动或其他不当行为的证据。

一些用例

调查网络攻击——如果发生安全漏洞或网络攻击,可以使用数字取证来确定攻击的范围和来源。然后,该信息可用于提高组织对未来攻击的防御能力。

威胁检测和响应——主动识别和减轻安全威胁非常有用。

数据恢复——数字取证还可用于恢复在攻击期间可能被盗或删除的数据。

刑事调查——收集的证据可用于识别嫌疑人、确定动机并将嫌疑人与特定犯罪联系起来。

共同目标包括收集可用于在法庭上起诉嫌疑人的证据。

Linux命令行基础知识

本节介绍数字取证所必需的Linux命令行工具。

有许多Linux命令可用于取证,但一些最重要的命令包括:

ls

用于列出目录中的文件和目录

1
2
3
$ ls
Desktop Downloads Music Pictures snap Videos
Documents hhhh nuclei-templates Public Templates

cd

用于更改当前工作目录

1
$ cd Desktop/

cat

用于显示文件的内容

该cat命令(“concatenate”的缩写)可让你打印文件的内容。

1
2
$ cat read.txt 
0x783kb

strings

用于显示文件中的可打印字符串

strings命令是二进制工具集GNU Binutils的一员,用于打印文件中可打印字符串,文件可以是文本文件,但一般用于打印二进制目标文件、库或可执行文件中的可打印字符。字符串默认至少是4个或更多可打印字符的任意序列,可使用选项改变字符串最小长度。

1
2
$ strings read.txt 
0x783kb

grep

用于在一个或多个文件中搜索特定字符串或模式

该grep命令对于在大文件(例如日志文件)中搜索字符串非常有用。它可以让你搜索URL、电子邮件地址、MD5哈希值等模式,从而显着加快调查速度。

1
2
$ grep 0x78 read.txt 
0x783kb

find

用于搜索文件和目录

该find命令可用于定位不同类型的文件、目录、具有特定权限的文件、最近修改的文件。

1
2
3
4
5
6
$ find . -type d
.
./hhhh
./hhhh/BurpSuitePro
./hhhh/struts2
./hhhh/webshell

md5sum, sha1sum

用于计算文件的MD5和SHA1哈希值

这两个命令都接受输入并生成固定长度的字符串,也称为哈希或校验和。如果文件的内容发生变化,即使是轻微变化,其哈希值也会有所不同。这对于检测文件是否已被修改或篡改非常有用。

1
2
3
4
5
$ md5sum read.txt 
b6eb8ef935243ce65bb2cbd4cf142861 read.txt

$ sha1sum read.txt
19c957fabb21613f3bf2f3228b38ef01716eb3dd read.txt

netstat

用于显示有关系统上网络连接的信息

该工具提供有关系统上活动连接的有用信息。该工具显示的信息包括活动连接的本地和远程地址以及端口。

1
2
3
4
5
6
7
8
9
10
$ netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 backbox.shared:bootpc prl-local-ns-ser:bootps ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] STREAM 27678 @printer-applet-lock-user-linus
unix 2 [ ] DGRAM 24127 /run/user/1000/systemd/notify
unix 3 [ ] DGRAM CONNECTED 18521 /run/systemd/notify
unix 2 [ ] DGRAM 18549 /run/systemd/journal/syslog

file

用于根据文件内容确定文件的类型

该file命令可用于识别文本、图像、音频、视频和可执行文件等文件。它还可用于识别可能是恶意的未知文件。

1
2
$ file /etc/passwd
/etc/passwd: ASCII text

xxd

用于打印给定文件的十六进制转储

该xxd命令对于打印给定文件或标准输入的十六进制转储非常有用。它还可以将十六进制转储转换回其原始二进制形式。

1
2
$ xxd read.txt 
00000000: 3078 3738 336b 620a 0x783kb.

hexedit

用于编辑十六进制格式的文件

该hexedit工具允许您以交互方式编辑文件的原始字节。它通常用于修复损坏的文件。

1
2
3
4
5
6
$ hexedit 67.jpg
00000000 FF D8 FF E0 00 10 4A 46 49 46 00 01 01 00 00 01 00 01 00 00 ......JFIF..........
00000014 FF DB 00 43 00 08 06 06 07 06 05 08 07 07 07 09 09 08 0A 0C ...C................
00000028 14 0D 0C 0B 0B 0C 19 12 13 0F 14 1D 1A 1F 1E 1D 1A 1C 1C 20 ...................
0000003C 24 2E 27 20 22 2C 23 1C 1C 28 37 29 2C 30 31 34 34 34 1F 27 $.' ",#..(7),01444.'
00000050 39 3D 38 32 3C 2E 33 34 32 FF DB 00 43 01 09 09 09 0C 0B 0C 9=82<.342...C....

ps

用于列出系统上运行的进程

该ps命令可让您查看计算机上当前运行的所有进程的列表。它提供的信息包括进程 ID、用户、状态和启动进程的命令。

1
2
3
4
$ ps
PID TTY TIME CMD
2180 pts/0 00:00:00 bash
13793 pts/0 00:00:00 ps