46、Kali Linux 数字取证工具全解析

Kali Linux 数字取证工具全解析

在数字取证领域,Kali Linux 提供了丰富的工具集,可用于处理各类取证任务。下面将详细介绍这些工具的使用方法和相关技术。

1. Windows 文件系统与 ffind 工具

Windows 系统的文件系统允许多个文件名指向同一数据位置。运行 ffind 工具时,通常需要指定偏移量、磁盘映像和元数据地址,示例命令如下:

ffind -o 2048 mydisk.img 12

该命令的输出会为 Linux 系统提供 inode 编号,或为其他文件系统提供文件表中的条目编号。

2. 隐藏数据的发现与提取

数据隐藏的方式多种多样,既可以藏在文件内部,也可以藏在文件系统中。以 NTFS 文件系统为例,自 20 世纪 90 年代初起,就开始使用备用数据流(Alternate Data Streams,ADS)来支持与 Macintosh 系统的分层文件系统(Hierarchical Filesystem,HFS)分区进行交互。HFS 允许使用资源分支来存储图标等支持数据。ADS 文件在 Windows 系统的目录列表中不会显示,但某些工具可以检测到它们的存在。

若要识别 NTFS 磁盘映像中的 ADS 文件,可使用 TSK 工具。以下是使用 fls 工具查看 NTFS 分区中 ADS 文件的示例:

┌──(kilroy@badmilo)-[~]
└─$ sudo fls -o 2048 ntfs-ad.img
r/r 4-128-1:    $AttrDef
r/r 8-128-2:    $BadClus
r/r 8-128-1:    $BadClus:$Bad
r/r 6-128-4:    $Bitmap
r/r 7-128-1:    $Boot
d/d 11-144-4:   $Extend
r/r 2-128-1:    $LogFile
r/r 0-128-6:    $MFT
r/r 1-128-1:    $MFTMirr
d/d 44-144-1:   $RECYCLE.BIN
r/r 9-128-8:    $Secure:$SDS
r/r 9-144-11:   $Secure:$SDH
r/r 9-144-14:   $Secure:$SII
r/r 10-128-1:   $UpCase
r/r 10-128-4:   $UpCase:$Info
r/r 3-128-3:    $Volume
r/r 42-128-1:   0005567b6a99313fb18b18f2.pdf
r/r 39-128-1:   holyhydrant-sm.png
r/r 43-128-1:   id-card.jpeg
r/r 41-128-1:   image.png
r/r 40-128-1:   MalwareSample.exe
d/d 36-144-1:   System Volume Information
r/r 47-128-1:   theatre.txt
r/r 47-128-6:   theatre.txt:malware.exe
V/V 256:        $OrphanFiles

获取 MFT 中的地址后,可使用 istat 工具获取数据块,再使用 blkcat 工具从 ADS 中提取文件。

除了 ADS,部分文件类型也支持嵌入信息,如 PDF 文件,还有一些媒体文件(如图像或音频)可在不影响整体质量的情况下存储文件。

3. PDF 文件分析

PDF 文件常被用于生成只读文档,因其不可编辑和修改的特性,成为文档共享的热门选择。然而,PDF 文件可以包含文本、图像、其他文档或脚本,这使其可能成为恶意行为的载体,如携带恶意软件。

Kali Linux 提供了一些工具来评估可疑的 PDF 文件。例如,使用 pdfid 工具可以查看 PDF 文件的元数据,示例如下:

┌──(kilroy@badmilo)-[~/Downloads]
└─$ pdfid pocorgtfo08.pdf
PDFiD 0.2.8 pocorgtfo08.pdf
 PDF Header: %PDF-1.5
 obj                 1613
 endobj              1613
 stream               856
 endstream            856
 xref                   1
 trailer                1
 startxref              1
 /Page                 64
 /Encrypt               0
 /ObjStm                0
 /JS                   12
 /JavaScript            8
 /AA                    3
 /OpenAction            0
 /AcroForm              1
 /JBIG2Decode           0
 /RichMedia             0
 /Launch                0
 /EmbeddedFile          0
 /XFA                   0
 /Colors > 2^24         0

从上述输出可以看到,该 PDF 文件中定义了 8 个 JavaScript 部分,并且识别出了超过 1600 个对象。虽然这些信息不一定意味着文件存在问题,但可能需要进一步深入检查。

可使用 pdf-parser 工具将 PDF 文件的各个部分分解为更易读的形式,由于大文件的输出较多,可使用 less more 命令控制输出流并进行搜索。另外, binwalk 工具可用于提取 PDF 文件中隐藏的数据,示例如下:

┌──(kilroy@badmilo)-[~/Downloads]
└─$ binwalk -e pocorgtfo22.pdf

DECIMAL       HEXADECIMAL     DESCRIPTION
 --------------------------------------------------------------------
-----
0             0x0             ISO 9660 Primary Volume, System 
Identifier: "", 
Volume Identifier: "  "

┌──(kilroy@badmilo)-[~/Downloads]
└─$ ls _pocorgtfo22.pdf.extracted
0.iso  iso-root

从输出结果可知,提取出了一个 ISO 映像,可将其挂载以查看内部内容。

4. 隐写术

隐写术是指将信息隐藏在公开对象中的技术。该技术通常利用大文件的空余空间来隐藏信息,像图像(JPEG、PNG 等)或音频文件(MP3、M4A、WAV 等)这类媒体文件是很好的载体,因为在不被察觉的情况下可以省略很多信息。

Kali Linux 提供了一些隐写术工具,如 steghide 工具可用于在图像文件中存储和提取文件。以下是使用 steghide 工具将可执行文件隐藏在图像文件中的示例:

┌──(kilroy@savagewoofer)-[~]
└─$ steghide embed -ef sample.exe -cf holyhydrant.jpeg -sf 
innocent.jpeg
Enter passphrase:
Re-Enter passphrase:
embedding "sample.exe" in "holyhydrant.jpeg"... done
writing stego file "innocent.jpeg"... done

比较原始图像文件和处理后的文件,可能看不出明显差异。若要提取存储的文件,可使用 extract 功能,但需要知道存储时使用的密码。若怀疑某个文件隐藏了其他文件,可使用 stegseek 工具尝试暴力破解密码,该工具默认使用 rockyou.txt 字典文件。示例如下:

┌──(kilroy@savagewoofer)-[~]
└─$ time stegseek innocent.jpeg
StegSeek 0.6 - https://github.com/RickdeJager/StegSeek

[i] Found passphrase: "robin"

[i] Original filename: "sample.exe".
[i] Extracting to "innocent.jpeg.out".

real    
0.09s
user    
0.53s
sys 
0.02s
cpu 
613%


┌──(kilroy@savagewoofer)-[~]
└─$ file innocent.jpeg.out
innocent.jpeg.out: PE32+ executable (console) x86-64, for MS Windows, 
6 sections

除了使用命令行工具, stegosuite 工具还提供了图形用户界面(GUI),使用 GUI 可以直观地查看可用于存储的空间大小,避免嵌入过大的文件或文本消息。

隐写术的挑战在于,其技术会因使用的工具和存储的内容而异。例如,某些使用 stegosuite 工具嵌入文本的图像,即使密码在 rockyou 字典文件中, stegseek 工具也可能无法找到任何信息。即便使用其他字典文件,也不能保证一定能找到密码。

5. 内存取证

磁盘取证固然重要,但获取和分析内存同样不可忽视。不过,Kali Linux 在内存取证方面的工具相对有限。内存取证的一个挑战是获取内存映像,因为大多数获取方法都需要向内存中插入软件,这会改变内存状态,而这正是我们要获取的对象。此外,访问内存需要最高权限,实际上需要内核级权限,因为内核才与内存进行交互。

对于 Windows 系统,有一些程序可以获取内存转储文件,如今端点检测与响应(Endpoint Detection and Response,EDR)软件也能在发生事件时捕获内存。对于 Linux 系统,可使用内核模块来获取内存转储文件。Kali Linux 包含 lime-forensics-dkms 软件包,可用于在系统上转储内存。LiME 是 Linux Memory Extractor 的缩写,它是一个内核模块,安装软件包后不能直接使用,需要从安装的源代码进行编译,这需要内核头文件(可能已安装)。编译过程如下:

┌──(kilroy@savagewoofer)-[~]
└─$ cd /usr/src/lime-forensics-1.9.1-5

┌──(kilroy@savagewoofer)-[/usr/src/lime-forensics-1.9.1-5]
└─$ sudo make

make -C /lib/modules/6.6.9-amd64/build M="/usr/src/lime-forensics-
1.9.1-5" modules
make[1]: Entering directory '/usr/src/linux-headers-6.6.9-amd64'
  CC [M]  /usr/src/lime-forensics-1.9.1-5/tcp.o
  CC [M]  /usr/src/lime-forensics-1.9.1-5/disk.o
  CC [M]  /usr/src/lime-forensics-1.9.1-5/main.o
  CC [M]  /usr/src/lime-forensics-1.9.1-5/hash.o
  CC [M]  /usr/src/lime-forensics-1.9.1-5/deflate.o
  LD [M]  /usr/src/lime-forensics-1.9.1-5/lime.o
/usr/src/lime-forensics-1.9.1-5/lime.o: warning: objtool: 
init_module(): ↩
not an indirect call target
/usr/src/lime-forensics-1.9.1-5/lime.o: warning: objtool: 
cleanup_module(): ↩
not an indirect call target
  MODPOST /usr/src/lime-forensics-1.9.1-5/Module.symvers
  CC [M]  /usr/src/lime-forensics-1.9.1-5/lime.mod.o
  LD [M]  /usr/src/lime-forensics-1.9.1-5/lime.ko
  BTF [M] /usr/src/lime-forensics-1.9.1-5/lime.ko
Skipping BTF generation for /usr/src/lime-forensics-1.9.1-5/lime.ko 
due to ↩
unavailability of vmlinux
make[1]: Leaving directory '/usr/src/linux-headers-6.6.9-amd64'
strip --strip-unneeded lime.ko
mv lime.ko lime-6.6.9-amd64.ko

┌──(kilroy@savagewoofer)-[/usr/src/lime-forensics-1.9.1-5]
└─$ sudo cp lime-6.6.9-amd64.ko ~

┌──(kilroy@savagewoofer)-[~]
└─$ sudo insmod ./lime-6.6.9-amd64.ko "path=mem.out format=raw"

与内核模块交互需要管理员权限,虽然可以将源代码复制到自己的目录中进行编译,但插入内核内存始终需要 root 权限。上述命令中的参数指定内核模块以原始格式将内存写入文件,该内核模块还支持其他路径,如将内存转储文件通过网络套接字发送到远程系统。

有趣的是,LiME 不仅可用于 Linux 机器,由于 Android 基于 Linux,也可将其推送到移动设备上并捕获内存。不过,这需要使用 Android 开发工具,并且设备要开启开发者模式,同时将模块推送到设备并获取 shell 访问权限并非易事,因为许多设备都有保护机制,可能会增加操作难度,但理论上是可行的。

获取内存转储文件后,需要进行分析。曾经在 Kali Linux 可用的 Volatility 工具现已不在软件源中,不过可以从 GitHub 下载 Volatility 3 的源代码并自行编译安装,该工具安装过程简单,且有许多插件可用于分析内存。此外,还有 Volatility 的分支 Rekall 工具,但可能不再维护。

除了 Volatility 工具的自动搜索功能,Kali Linux 还提供了 YARA 工具,它是一种创建规则的格式,可用于搜索内容,通常用于识别恶意行为(如运行的恶意软件)。如果有 YARA 规则文件,或者愿意自己编写规则,就可以使用 yara 工具对内存转储文件(或其他适用的工件)进行扫描。以下是使用 yara 工具对内存转储文件进行能力扫描的示例:

┌──(kilroy@badmilo)-[~]
└─$ yara capabilities.yar sample002.bin
inject_thread sample002.bin
hijack_network sample002.bin
create_service sample002.bin
create_com_service sample002.bin
network_udp_sock sample002.bin
network_tcp_listen sample002.bin
network_toredo sample002.bin
network_smtp_dotNet sample002.bin
network_smtp_raw sample002.bin
network_smtp_vb sample002.bin
network_p2p_win sample002.bin
network_http sample002.bin
network_dropper sample002.bin
network_ftp sample002.bin
network_tcp_socket sample002.bin
network_dns sample002.bin
network_dga sample002.bin
escalate_priv sample002.bin
screenshot sample002.bin
keylogger sample002.bin
cred_local sample002.bin
sniff_audio sample002.bin
migrate_apc sample002.bin
spreading_file sample002.bin
spreading_share sample002.bin
rat_rdp sample002.bin
win_mutex sample002.bin
win_registry sample002.bin
win_token sample002.bin
win_private_profile sample002.bin
win_files_operation sample002.bin
Str_Win32_Winsock2_Library sample002.bin
Str_Win32_Wininet_Library sample002.bin
Str_Win32_Internet_API sample002.bin
Str_Win32_Http_API sample002.bin

从扫描结果可以看出,YARA 规则文件正在查找攻击者可能使用或滥用的能力,并且在 Windows 系统的内存捕获文件中找到了多个匹配项。不过,其中一些能力可能是正常的,而另一些则更可能具有恶意性质。在取证工作中,仅运行工具是不够的,还需要进一步深入挖掘信息,验证工具的输出结果。例如,在现代系统中,Windows 系统存在 TCP 套接字是正常的,但关键是要了解这些套接字的用途, Volatility 工具可以显示套接字列表,包括监听和已连接的套接字。

总结

综上所述,Kali Linux 拥有一系列实用的取证工具,为数字取证工作提供了有力支持。在使用这些工具时,需要注意以下重要事项:
1. 谨慎处理取证工件 :收集取证工件后,务必小心谨慎,确保其不被篡改。
2. TSK 工具的强大功能 :TSK 工具集可用于磁盘取证,能深入分析文件系统的数据结构,还能从磁盘中收集重要工件,不仅可以处理磁盘上的文件,还能获取已删除文件和孤立数据。
3. 数据隐藏与提取 :数据可隐藏在文件系统或文件中,可使用 scalpel magicrescue 等工具根据文件头和文件尾信息提取特定类型的文件。
4. PDF 文件的安全评估 :PDF 文件可能被用于恶意目的,但 pdfid pdf-parser 等工具可显示 PDF 文件的元数据, binwalk 工具可提取隐藏在 PDF 文件中的数据。
5. 隐写术工具的应用 :隐写术是将数据隐藏在文件中的技术, stegosuite steghide 等工具可用于隐藏和提取数据。

通过合理运用这些工具和技术,能更有效地进行数字取证工作,为网络安全提供保障。

Kali Linux 数字取证工具全解析

6. 工具使用流程总结

为了更清晰地展示各个工具的使用流程,下面以表格和流程图的形式进行总结。

工具名称 使用场景 操作步骤
ffind 处理 Windows 文件系统,获取 inode 编号或文件表条目编号 运行 ffind -o [偏移量] [磁盘映像] [元数据地址]
fls 识别 NTFS 磁盘映像中的 ADS 文件 运行 sudo fls -o [偏移量] [磁盘映像]
istat 获取 ADS 文件的数据块 先通过 fls 获取 MFT 地址,再使用 istat [地址]
blkcat 从 ADS 中提取文件 使用 blkcat [数据块地址]
pdfid 查看 PDF 文件的元数据 运行 pdfid [PDF 文件]
pdf - parser 分解 PDF 文件各部分为易读形式 运行 pdf - parser [PDF 文件] ,大文件可结合 less more 控制输出
binwalk 提取 PDF 文件中隐藏的数据 运行 binwalk -e [PDF 文件]
steghide 在图像文件中存储和提取文件 存储: steghide embed -ef [加密文件] -cf [封面文件] -sf [最终文件] ;提取: steghide extract -sf [最终文件] (需密码)
stegseek 暴力破解隐写文件的密码 运行 stegseek [隐写文件] ,默认使用 rockyou.txt 字典
lime - forensics - dkms 获取 Linux 系统内存转储文件 1. 进入 /usr/src/lime - forensics - 1.9.1 - 5 目录;2. 运行 sudo make 编译;3. 复制编译后的文件到指定目录;4. 运行 sudo insmod [编译后的文件] "path=[输出文件] format=raw"
yara 使用 YARA 规则扫描内存转储文件 运行 yara [YARA 规则文件] [内存转储文件]

下面是一个简单的 mermaid 流程图,展示从磁盘取证到内存取证的大致流程:

graph LR
    A[获取磁盘映像] --> B[使用 TSK 工具分析磁盘文件系统]
    B --> C{是否有隐藏数据}
    C -- 是 --> D[使用 fls 等工具识别 ADS 文件]
    D --> E[使用 istat 和 blkcat 提取数据]
    C -- 否 --> F[检查文件类型]
    F --> G{是否为 PDF 文件}
    G -- 是 --> H[使用 pdfid 和 pdf - parser 分析 PDF]
    H --> I[使用 binwalk 提取隐藏数据]
    G -- 否 --> J{是否适合隐写术分析}
    J -- 是 --> K[使用 steghide 或 stegseek 处理隐写文件]
    J -- 否 --> L[考虑其他文件处理方式]
    M[获取内存转储文件(Windows 或 Linux)] --> N[使用 Volatility 或 YARA 分析内存]
    B --> M
7. 实际案例分析

假设我们收到一个可疑的 PDF 文件和一个 Windows 系统的内存转储文件,下面我们按照上述工具和流程进行分析。

7.1 PDF 文件分析

首先,使用 pdfid 工具查看 PDF 文件的元数据:

┌──(user@kali)-[~/Downloads]
└─$ pdfid suspicious.pdf
PDFiD 0.2.8 suspicious.pdf
 PDF Header: %PDF - 1.7
 obj                 200
 endobj              200
 stream               50
 endstream            50
 xref                   1
 trailer                1
 startxref              1
 /Page                 10
 /Encrypt               0
 /ObjStm                0
 /JS                   5
 /JavaScript            3
 /AA                    1
 /OpenAction            0
 /AcroForm              0
 /JBIG2Decode           0
 /RichMedia             0
 /Launch                0
 /EmbeddedFile          1
 /XFA                   0
 /Colors > 2^24         0

从输出可以看出,该 PDF 文件包含 JavaScript 代码和一个嵌入式文件,这可能存在安全风险。接着使用 pdf - parser 工具进一步分析:

┌──(user@kali)-[~/Downloads]
└─$ pdf - parser suspicious.pdf

由于输出较多,我们可以使用 less 控制输出:

┌──(user@kali)-[~/Downloads]
└─$ pdf - parser suspicious.pdf | less

在查看过程中,重点关注 JavaScript 代码部分和嵌入式文件的相关信息。最后,使用 binwalk 工具提取隐藏数据:

┌──(user@kali)-[~/Downloads]
└─$ binwalk -e suspicious.pdf

查看提取结果:

┌──(user@kali)-[~/Downloads]
└─$ ls _suspicious.pdf.extracted
7.2 内存转储文件分析

对于 Windows 系统的内存转储文件,我们先使用 YARA 规则进行扫描。假设我们有一个 malware_rules.yar 的 YARA 规则文件:

┌──(user@kali)-[~]
└─$ yara malware_rules.yar windows_memory_dump.bin
malware_signature1 windows_memory_dump.bin
malware_signature2 windows_memory_dump.bin

从扫描结果可以看出,内存转储文件中存在与 YARA 规则匹配的恶意特征。接下来,我们可以尝试使用 Volatility 3 工具进行更深入的分析。首先,下载并安装 Volatility 3

┌──(user@kali)-[~]
└─$ git clone https://github.com/volatilityfoundation/volatility3.git
┌──(user@kali)-[~]
└─$ cd volatility3
┌──(user@kali)-[~/volatility3]
└─$ pip install -r requirements.txt
┌──(user@kali)-[~/volatility3]
└─$ python setup.py install

安装完成后,运行 Volatility 3 进行分析:

┌──(user@kali)-[~]
└─$ python vol.py -f windows_memory_dump.bin windows.pslist

该命令将列出内存转储文件中所有的进程信息,通过分析这些信息,我们可以进一步了解系统在内存捕获时的运行状态,查找可能存在的恶意进程。

8. 注意事项与建议

在使用 Kali Linux 进行数字取证时,还需要注意以下几点:
1. 权限问题 :许多工具需要管理员权限才能正常运行,如 sudo 命令的使用。在操作过程中,要确保以合适的权限执行命令,避免因权限不足导致操作失败。
2. 数据完整性 :在收集和处理取证数据时,要保证数据的完整性。可以使用哈希算法(如 MD5、SHA - 256 等)对数据进行校验,确保数据在传输和处理过程中没有被篡改。
3. 工具更新 :Kali Linux 的工具会不断更新,定期更新工具可以获取最新的功能和修复已知的漏洞。可以使用 apt update apt upgrade 命令更新系统和工具。
4. 规则编写 :使用 YARA 等工具时,如果需要自己编写规则,要确保规则的准确性和有效性。可以参考相关的文档和示例,逐步学习规则编写技巧。
5. 法律合规 :在进行数字取证时,要遵守相关的法律法规。确保取证过程合法合规,避免因违法行为导致证据无效或引发法律纠纷。

总结与展望

Kali Linux 提供的丰富取证工具为数字取证工作带来了极大的便利。通过合理运用这些工具,我们可以有效地处理各种取证任务,包括文件系统分析、隐藏数据提取、PDF 文件安全评估、隐写术分析和内存取证等。

在未来,随着技术的不断发展,数字取证领域也将面临新的挑战和机遇。例如,随着云计算和移动设备的普及,取证工作需要适应新的环境和数据存储方式。同时,恶意软件的技术也在不断更新,取证工具需要不断改进和升级以应对新的威胁。

我们期待 Kali Linux 能够持续更新和完善其取证工具集,为数字取证人员提供更强大、更便捷的工具。同时,取证人员也需要不断学习和掌握新的技术和方法,以更好地应对日益复杂的数字取证任务,保障网络安全和数据安全。

总之,Kali Linux 在数字取证领域具有重要的地位,通过深入了解和熟练使用其工具,我们可以在数字取证工作中取得更好的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值