hacktricks/forensics/basic-forensic-methodology/linux-forensics.md

573 lines
30 KiB
Markdown
Raw Normal View History

# Linux取证
2022-04-28 16:01:33 +00:00
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
2022-08-31 22:35:39 +00:00
使用[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)可以轻松构建和自动化由全球最先进的社区工具提供支持的工作流程。\
2023-08-03 19:12:22 +00:00
立即获取访问权限:
2022-08-31 22:35:39 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
2022-04-28 16:01:33 +00:00
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
* 你在一家**网络安全公司**工作吗你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass)或**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
2022-04-28 16:01:33 +00:00
</details>
2023-08-03 19:12:22 +00:00
## 初始信息收集
2020-12-25 10:22:35 +00:00
2023-08-03 19:12:22 +00:00
### 基本信息
2020-12-25 10:22:35 +00:00
首先,建议准备一些**带有已知良好的二进制文件和库的USB设备**可以只获取ubuntu并复制文件夹_/bin_ _/sbin_ _/lib_和_/lib64_然后挂载USB设备并修改环境变量以使用这些二进制文件
2020-12-25 10:22:35 +00:00
```bash
export PATH=/mnt/usb/bin:/mnt/usb/sbin
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
```
2023-08-03 19:12:22 +00:00
一旦您配置了系统以使用良好且已知的二进制文件,您可以开始提取一些基本信息:
2020-12-25 10:22:35 +00:00
```bash
2022-09-07 15:35:57 +00:00
date #Date and time (Clock may be skewed, Might be at a different timezone)
2020-12-25 10:22:35 +00:00
uname -a #OS info
2022-09-07 15:35:57 +00:00
ifconfig -a || ip a #Network interfaces (promiscuous mode?)
2020-12-25 10:22:35 +00:00
ps -ef #Running processes
netstat -anp #Proccess and ports
lsof -V #Open files
netstat -rn; route #Routing table
df; mount #Free space and mounted devices
2020-12-25 22:35:08 +00:00
free #Meam and swap space
2020-12-25 10:22:35 +00:00
w #Who is connected
2020-12-26 23:48:55 +00:00
last -Faiwx #Logins
2020-12-25 10:22:35 +00:00
lsmod #What is loaded
cat /etc/passwd #Unexpected data?
cat /etc/shadow #Unexpected data?
2020-12-25 22:35:08 +00:00
find /directory -type f -mtime -1 -print #Find modified files during the last minute in the directory
2020-12-25 10:22:35 +00:00
```
2023-08-03 19:12:22 +00:00
#### 可疑信息
2020-12-25 10:22:35 +00:00
2023-08-03 19:12:22 +00:00
在获取基本信息时,您应该检查以下异常情况:
2020-12-25 22:25:37 +00:00
2023-08-03 19:12:22 +00:00
* **Root进程**通常以较低的PID运行因此如果您发现一个具有较大PID的Root进程可能存在可疑情况
* 检查`/etc/passwd`中没有shell的用户的**注册登录**
* 检查`/etc/shadow`中没有shell的用户的**密码哈希值**
2020-12-25 22:25:37 +00:00
2023-08-03 19:12:22 +00:00
### 内存转储
2020-12-25 22:25:37 +00:00
2023-08-03 19:12:22 +00:00
为了获取正在运行的系统的内存,建议使用[**LiME**](https://github.com/504ensicsLabs/LiME)。
2020-12-25 20:14:31 +00:00
2023-08-03 19:12:22 +00:00
要进行**编译**,您需要使用与受害机器使用的**相同内核**。
2020-12-25 20:14:31 +00:00
{% hint style="info" %}
2023-08-03 19:12:22 +00:00
请记住,您**不能在受害机器上安装LiME或任何其他东西**,因为这将对其进行多个更改。
2020-12-25 20:14:31 +00:00
{% endhint %}
2023-08-03 19:12:22 +00:00
因此如果您有一个相同版本的Ubuntu可以使用`apt-get install lime-forensics-dkms`。
2020-12-25 20:14:31 +00:00
在其他情况下您需要从GitHub下载[**LiME**](https://github.com/504ensicsLabs/LiME),并使用正确的内核头文件进行编译。要**获取受害机器的确切内核头文件**,您只需将目录`/lib/modules/<kernel version>`复制到您的机器上,然后使用它们来**编译**LiME
2020-12-25 20:14:31 +00:00
```bash
make -C /lib/modules/<kernel version>/build M=$PWD
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
```
2023-08-03 19:12:22 +00:00
LiME支持3种格式
2020-12-25 20:14:31 +00:00
2023-08-03 19:12:22 +00:00
* 原始格式(将每个段连接在一起)
* 填充格式(与原始格式相同,但右侧位填充为零)
* Lime格式推荐的带有元数据的格式
2020-12-25 21:41:10 +00:00
2023-08-03 19:12:22 +00:00
LiME还可以用于通过网络发送转储而不是将其存储在系统上使用类似于`path=tcp:4444`
2020-12-25 22:03:49 +00:00
2023-08-03 19:12:22 +00:00
### 磁盘镜像
2020-12-25 22:03:49 +00:00
2023-08-03 19:12:22 +00:00
#### 关闭系统
2020-12-25 22:03:49 +00:00
2023-08-03 19:12:22 +00:00
首先,您需要**关闭系统**。这并不总是一个选择,因为有时系统将是一台公司无法承受关闭的生产服务器。\
有两种关闭系统的方式,一种是**正常关闭**,另一种是**“拔插头”关闭**。第一种方式将允许**进程正常终止**和**文件系统同步**,但也会允许可能的**恶意软件破坏证据**。拔插头的方法可能会导致**一些信息丢失**(由于我们已经对内存进行了镜像,所以不会丢失太多信息),而**恶意软件将没有任何机会**对此做任何事情。因此,如果您**怀疑可能存在恶意软件**,只需在系统上执行**`sync`**命令,然后拔掉插头。
2020-12-25 22:03:49 +00:00
#### 获取磁盘镜像
2020-12-25 22:20:35 +00:00
重要的是要注意,在**将您的计算机连接到与案件相关的任何内容之前**,您需要确保它将以**只读方式挂载**,以避免修改任何信息。
2020-12-25 22:03:49 +00:00
```bash
#Create a raw copy of the disk
dd if=<subject device> of=<image file> bs=512
2022-09-07 15:35:57 +00:00
#Raw copy with hashes along the way (more secure as it checks hashes while it's copying the data)
2020-12-25 22:08:05 +00:00
dcfldd if=<subject device> of=<image file> bs=512 hash=<algorithm> hashwindow=<chunk size> hashlog=<hash file>
2020-12-25 22:21:23 +00:00
dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes
2020-12-25 22:03:49 +00:00
```
2023-08-03 19:12:22 +00:00
### 磁盘镜像预分析
2020-12-25 22:03:49 +00:00
2023-08-03 19:12:22 +00:00
对没有更多数据的磁盘镜像进行镜像制作。
2021-01-05 13:06:39 +00:00
```bash
2022-09-07 15:35:57 +00:00
#Find out if it's a disk image using "file" command
2023-08-03 19:12:22 +00:00
file disk.img
2021-01-05 13:06:39 +00:00
disk.img: Linux rev 1.0 ext4 filesystem data, UUID=59e7a736-9c90-4fab-ae35-1d6a28e5de27 (extents) (64bit) (large files) (huge files)
#Check which type of disk image it's
2023-08-03 19:12:22 +00:00
img_stat -t evidence.img
2021-01-05 13:06:39 +00:00
raw
#You can list supported types with
img_stat -i list
Supported image format types:
2023-08-03 19:12:22 +00:00
raw (Single or split raw file (dd))
aff (Advanced Forensic Format)
afd (AFF Multiple File)
afm (AFF with external metadata)
afflib (All AFFLIB image formats (including beta ones))
ewf (Expert Witness Format (EnCase))
2021-01-05 13:06:39 +00:00
#Data of the image
2023-08-03 19:12:22 +00:00
fsstat -i raw -f ext4 disk.img
2021-01-05 13:06:39 +00:00
FILE SYSTEM INFORMATION
--------------------------------------------
File System Type: Ext4
2023-08-03 19:12:22 +00:00
Volume Name:
2021-01-05 13:06:39 +00:00
Volume ID: 162850f203fd75afab4f1e4736a7e776
Last Written at: 2020-02-06 06:22:48 (UTC)
Last Checked at: 2020-02-06 06:15:09 (UTC)
Last Mounted at: 2020-02-06 06:15:18 (UTC)
Unmounted properly
Last mounted on: /mnt/disk0
Source OS: Linux
[...]
#ls inside the image
fls -i raw -f ext4 disk.img
d/d 11: lost+found
d/d 12: Documents
d/d 8193: folder1
d/d 8194: folder2
V/V 65537: $OrphanFiles
#ls inside folder
fls -i raw -f ext4 disk.img 12
r/r 16: secret.txt
#cat file inside image
icat -i raw -f ext4 disk.img 16
ThisisTheMasterSecret
```
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
2022-08-31 22:35:39 +00:00
使用[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)可以轻松构建和自动化由全球最先进的社区工具提供支持的工作流程。
2023-08-03 19:12:22 +00:00
立即获取访问权限:
2022-08-31 22:35:39 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## 搜索已知恶意软件
2020-12-23 19:52:25 +00:00
2023-08-03 19:12:22 +00:00
### 修改的系统文件
2020-12-23 19:52:25 +00:00
一些Linux系统具有验证许多已安装组件完整性的功能这是一种有效的方法来识别异常或不合适的文件。例如在Linux上`rpm -Va`旨在验证使用RedHat软件包管理器安装的所有软件包。
2020-12-23 19:52:25 +00:00
```bash
#RedHat
rpm -Va
#Debian
dpkg --verify
debsums | grep -v "OK$" #apt-get install debsums
```
2023-08-03 19:12:22 +00:00
### 恶意软件/Rootkit 检测工具
2020-12-23 19:52:25 +00:00
2023-08-03 19:12:22 +00:00
阅读以下页面,了解可以用于查找恶意软件的工具:
2020-12-23 19:52:25 +00:00
{% content-ref url="malware-analysis.md" %}
[malware-analysis.md](malware-analysis.md)
{% endcontent-ref %}
2020-12-23 19:52:25 +00:00
2023-08-03 19:12:22 +00:00
## 搜索已安装的程序
2020-12-23 19:52:25 +00:00
2023-08-03 19:12:22 +00:00
### 软件包管理器
2020-12-23 19:52:25 +00:00
2023-08-03 19:12:22 +00:00
在基于 Debian 的系统中_**/var/lib/dpkg/status**_ 文件包含有关已安装软件包的详细信息,而 _**/var/log/dpkg.log**_ 文件记录了软件包安装时的信息。\
在 RedHat 和相关的 Linux 发行版中,**`rpm -qa --root=/mntpath/var/lib/rpm`** 命令将列出系统上 RPM 数据库的内容。
2020-12-23 19:52:25 +00:00
```bash
#Debian
cat /var/lib/dpkg/status | grep -E "Package:|Status:"
cat /var/log/dpkg.log | grep installed
#RedHat
rpm -qa --root=/ mntpath/var/lib/rpm
```
2023-08-03 19:12:22 +00:00
### 其他
2020-12-23 19:52:25 +00:00
**并非所有已安装的程序都会在上述命令中列出**,因为某些应用程序在某些系统上不可用作为软件包,必须从源代码安装。因此,检查诸如 _**/usr/local**__**/opt**_ 等位置可能会发现其他已从源代码编译和安装的应用程序。
2020-12-23 19:52:25 +00:00
```bash
ls /opt /usr/local
```
2023-08-03 19:12:22 +00:00
另一个好主意是**检查**$PATH中的**常见文件夹**,查找与**已安装软件包无关的二进制文件**
2020-12-23 19:52:25 +00:00
```bash
#Both lines are going to print the executables in /sbin non related to installed packages
#Debian
find /sbin/ -exec dpkg -S {} \; | grep "no path found"
#RedHat
find /sbin/ exec rpm -qf {} \; | grep "is not"
```
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
2022-08-31 22:35:39 +00:00
使用[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)轻松构建和自动化由全球**最先进**的社区工具提供支持的工作流程。\
2023-08-03 19:12:22 +00:00
立即获取访问权限:
2022-08-31 22:35:39 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## 恢复已删除的运行二进制文件
2022-03-13 16:39:41 +00:00
![](<../../.gitbook/assets/image (641).png>)
2023-08-03 19:12:22 +00:00
## 检查自启动位置
2020-12-23 20:08:45 +00:00
2023-08-03 19:12:22 +00:00
### 计划任务
2020-12-23 20:08:45 +00:00
```bash
cat /var/spool/cron/crontabs/* \
/var/spool/cron/atjobs \
/var/spool/anacron \
/etc/cron* \
/etc/at* \
/etc/anacrontab \
/etc/incron.d/* \
/var/spool/incron/* \
#MacOS
ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/
```
2023-08-03 19:12:22 +00:00
### 服务
2020-12-23 20:08:45 +00:00
2023-08-03 19:12:22 +00:00
恶意软件通常会作为新的未授权服务嵌入系统。Linux有一些脚本用于在计算机启动时启动服务。初始化启动脚本 _**/etc/inittab**_ 调用其他脚本,如 rc.sysinit 和 _**/etc/rc.d/**_ 目录下的各种启动脚本,或者在一些旧版本中是 _**/etc/rc.boot/**_。在其他版本的Linux中如Debian启动脚本存储在 _**/etc/init.d/**_ 目录中。此外,一些常见的服务在 _**/etc/inetd.conf**__**/etc/xinetd/**_ 中启用具体取决于Linux的版本。数字取证人员应检查每个启动脚本中是否存在异常条目。
2020-12-23 20:08:45 +00:00
* _**/etc/inittab**_
2022-03-13 16:39:41 +00:00
* _**/etc/rc.d/**_
2020-12-23 20:08:45 +00:00
* _**/etc/rc.boot/**_
2022-03-13 16:39:41 +00:00
* _**/etc/init.d/**_
2020-12-23 20:08:45 +00:00
* _**/etc/inetd.conf**_
* _**/etc/xinetd/**_
2020-12-23 22:44:17 +00:00
* _**/etc/systemd/system**_
* _**/etc/systemd/system/multi-user.target.wants/**_
2023-08-03 19:12:22 +00:00
### 内核模块
2020-12-23 22:44:17 +00:00
2023-08-03 19:12:22 +00:00
在Linux系统上内核模块通常用作恶意软件包的rootkit组件。内核模块是根据 `/lib/modules/'uname -r'``/etc/modprobe.d` 目录中的配置信息以及 `/etc/modprobe``/etc/modprobe.conf` 文件在系统启动时加载的。应检查这些区域是否存在与恶意软件相关的项目。
2020-12-23 22:44:17 +00:00
2023-08-03 19:12:22 +00:00
### 其他自启动位置
2020-12-23 22:44:17 +00:00
2023-08-03 19:12:22 +00:00
Linux使用几个配置文件在用户登录系统时自动启动可执行文件这些文件可能包含恶意软件的痕迹。
2020-12-23 22:44:17 +00:00
2023-08-03 19:12:22 +00:00
* _**/etc/profile.d/\***_ , _**/etc/profile**_ , _**/etc/bash.bashrc**_ 在任何用户账户登录时执行。
* _**/.bashrc**_ , _**/.bash\_profile**_ , _**\~/.profile**_ , _**/.config/autostart**_ 在特定用户登录时执行。
* _**/etc/rc.local**_ 传统上在所有正常系统服务启动后执行,即在切换到多用户运行级别的过程结束时。
2020-12-23 22:44:17 +00:00
2023-08-03 19:12:22 +00:00
## 检查日志
2020-12-23 22:44:17 +00:00
2023-08-03 19:12:22 +00:00
在受损系统上查找所有可用的日志文件,以寻找恶意执行和相关活动的痕迹,例如创建新服务。
2020-12-23 22:44:17 +00:00
2023-08-03 19:12:22 +00:00
### 纯日志
2020-12-23 22:44:17 +00:00
记录在系统和安全日志中的**登录**事件,包括通过网络登录,可以揭示**恶意软件**或**入侵者**在特定时间通过给定账户访问受损系统的情况。系统日志中可以捕获与恶意软件感染相关的其他事件,包括在事件发生时创建新服务或新账户。\
2023-08-03 19:12:22 +00:00
有趣的系统登录日志:
2020-12-23 22:44:17 +00:00
2023-08-03 19:12:22 +00:00
* **/var/log/syslog** (debian) 或 **/var/log/messages** (Redhat)
* 显示系统的一般消息和信息。这是全局系统活动的数据日志。
* **/var/log/auth.log** (debian) 或 **/var/log/secure** (Redhat)
* 保存成功或失败的登录和认证过程的认证日志。存储位置取决于系统类型。
* `cat /var/log/auth.log | grep -iE "session opened for|accepted password|new session|not in sudoers"`
* **/var/log/boot.log**:启动消息和引导信息。
* **/var/log/maillog** 或 **var/log/mail.log**:用于邮件服务器日志,方便查看在服务器上运行的 postfix、smtpd 或与电子邮件相关的服务信息。
* **/var/log/kern.log**:保存内核日志和警告信息。内核活动日志(例如 dmesg、kern.log、klog可以显示特定服务的重复崩溃可能表明安装了不稳定的木马版本。
* **/var/log/dmesg**:设备驱动程序消息的存储库。使用 **dmesg** 命令查看此文件中的消息。
* **/var/log/faillog**:记录失败的登录信息。因此,用于检查潜在的安全漏洞,如登录凭据被盗和暴力破解攻击。
2023-08-03 19:12:22 +00:00
* **/var/log/cron**:记录与 Crond 相关的消息cron 作业。例如cron 守护程序启动作业的时间。
* **/var/log/daemon.log**:跟踪运行的后台服务,但不以图形方式表示。
2023-08-03 19:12:22 +00:00
* **/var/log/btmp**:记录所有失败的登录尝试。
* **/var/log/httpd/**:包含 Apache httpd 守护程序的 error\_log 和 access\_log 文件的目录。所有 httpd 遇到的错误都记录在 **error\_log** 文件中。考虑内存问题和其他与系统相关的错误。**access\_log** 记录通过 HTTP 进入的所有请求。
* **/var/log/mysqld.log** 或 **/var/log/mysql.log**:记录每个调试、失败和成功消息的 MySQL 日志文件,包括 MySQL 守护程序 mysqld 的启动、停止和重启。系统根据目录决定。RedHat、CentOS、Fedora 和其他基于 RedHat 的系统使用 /var/log/mariadb/mariadb.log。然而Debian/Ubuntu 使用 /var/log/mysql/error.log 目录。
* **/var/log/xferlog**:保存 FTP 文件传输会话。包括文件名和用户发起的 FTP 传输等信息。
* **/var/log/\***:始终检查此目录中的意外日志
2020-12-23 22:44:17 +00:00
{% hint style="info" %}
2023-08-03 19:12:22 +00:00
在入侵或恶意软件事件中Linux系统的日志和审计子系统可能被禁用或删除。由于Linux系统的日志通常包含有关恶意活动的最有用信息入侵者经常删除它们。因此在检查可用的日志文件时重要的是查找可能表示删除或篡改的间隙或乱序条目。
2020-12-23 22:44:17 +00:00
{% endhint %}
2023-08-03 19:12:22 +00:00
### 命令历史
2020-12-23 22:44:17 +00:00
许多Linux系统配置为为每个用户账户保留命令历史记录
2020-12-23 22:44:17 +00:00
2021-10-19 00:01:07 +00:00
* \~/.bash\_history
* \~/.history
2021-10-19 00:01:07 +00:00
* \~/.sh\_history
* \~/.\*\_history
2020-12-23 22:44:17 +00:00
2023-08-03 19:12:22 +00:00
### 登录
2020-12-27 00:27:13 +00:00
2023-08-03 19:12:22 +00:00
使用命令 `last -Faiwx` 可以获取已登录用户的列表。\
建议检查这些登录是否合理:
2020-12-27 00:27:13 +00:00
2023-08-03 19:12:22 +00:00
* 有任何未知用户吗?
* 有任何不应该有shell登录的用户吗
2020-12-27 00:27:13 +00:00
2023-08-03 19:12:22 +00:00
这很重要,因为**攻击者**有时可能将 `/bin/bash` 复制到 `/bin/false` 中,以便像 **lightdm** 这样的用户可以登录。
2020-12-27 00:28:02 +00:00
请注意,您也可以通过阅读日志来查看此信息。
2023-08-03 19:12:22 +00:00
### 应用程序痕迹
2020-12-23 23:14:22 +00:00
* **SSH**: 使用SSH连接到受损系统或从受损系统连接到其他系统会在每个用户帐户的文件中留下记录_**/.ssh/authorized\_keys**_和_**/.ssh/known\_keys**_。这些记录可以揭示远程主机的主机名或IP地址。
* **Gnome桌面**: 用户帐户可能有一个_**/.recently-used.xbel**_文件其中包含有关在Gnome桌面上运行的应用程序最近访问的文件的信息。
* **VIM**: 用户帐户可能有一个_**/.viminfo**_文件其中包含有关VIM使用情况的详细信息包括搜索字符串历史和使用vim打开的文件的路径。
2023-08-03 19:12:22 +00:00
* **Open Office**: 最近使用的文件。
* **MySQL**: 用户帐户可能有一个_**/.mysql\_history**_文件其中包含使用MySQL执行的查询。
* **Less**: 用户帐户可能有一个_**/.lesshst**_文件其中包含有关less使用情况的详细信息包括搜索字符串历史和通过less执行的shell命令。
2020-12-23 23:14:22 +00:00
2023-08-03 19:12:22 +00:00
### USB日志
2021-05-28 17:27:17 +00:00
[**usbrip**](https://github.com/snovvcrash/usbrip)是一个用纯Python 3编写的小型软件用于解析Linux日志文件根据发行版的不同可能是`/var/log/syslog*`或`/var/log/messages*`以构建USB事件历史记录表。
2021-05-28 17:27:17 +00:00
2023-08-03 19:12:22 +00:00
了解所有已使用的USB设备是很有趣的如果您有一个授权的USB设备列表那么查找"违规事件"使用不在该列表中的USB设备将更加有用。
2021-05-28 17:27:17 +00:00
2023-08-03 19:12:22 +00:00
### 安装
```
2021-05-28 17:27:17 +00:00
pip3 install usbrip
2022-09-07 15:35:57 +00:00
usbrip ids download #Download USB ID database
2021-05-28 17:27:17 +00:00
```
2023-08-03 19:12:22 +00:00
### 示例
#### Example 1: Collecting Volatile Data
2023-08-03 19:12:22 +00:00
#### 示例 1收集易失性数据
2023-08-03 19:12:22 +00:00
To collect volatile data from a Linux system, you can use the following commands:
2023-08-03 19:12:22 +00:00
要从Linux系统中收集易失性数据可以使用以下命令
2023-08-03 19:12:22 +00:00
```bash
$ date
$ uname -a
$ ps aux
$ netstat -antp
$ ifconfig -a
```
2023-08-03 19:12:22 +00:00
#### Example 2: Collecting Disk Image
2023-08-03 19:12:22 +00:00
#### 示例 2收集磁盘镜像
2023-08-03 19:12:22 +00:00
To collect a disk image from a Linux system, you can use the following command:
2023-08-03 19:12:22 +00:00
要从Linux系统中收集磁盘镜像可以使用以下命令
2023-08-03 19:12:22 +00:00
```bash
$ dd if=/dev/sda of=/mnt/forensics/disk_image.dd
```
#### Example 3: Analyzing Disk Image
#### 示例 3分析磁盘镜像
To analyze a disk image in Linux, you can use the following commands:
要在Linux中分析磁盘镜像可以使用以下命令
```bash
$ file disk_image.dd
$ fdisk -l disk_image.dd
$ mmls disk_image.dd
$ mount -o loop,ro disk_image.dd /mnt/forensics/mount_point
$ ls -l /mnt/forensics/mount_point
$ cat /mnt/forensics/mount_point/etc/passwd
```
#### Example 4: Analyzing Log Files
#### 示例 4分析日志文件
To analyze log files in Linux, you can use the following commands:
要在Linux中分析日志文件可以使用以下命令
```bash
$ cat /var/log/syslog
$ cat /var/log/auth.log
$ cat /var/log/apache2/access.log
$ cat /var/log/apache2/error.log
```
#### Example 5: Analyzing Network Traffic
#### 示例 5分析网络流量
To analyze network traffic in Linux, you can use the following commands:
要在Linux中分析网络流量可以使用以下命令
```bash
$ tcpdump -i eth0 -w /mnt/forensics/network_traffic.pcap
$ tshark -r /mnt/forensics/network_traffic.pcap
```
#### Example 6: Analyzing Memory Dump
#### 示例 6分析内存转储
To analyze a memory dump in Linux, you can use the following commands:
要在Linux中分析内存转储可以使用以下命令
```bash
$ volatility -f memory_dump.raw imageinfo
$ volatility -f memory_dump.raw pslist
$ volatility -f memory_dump.raw netscan
$ volatility -f memory_dump.raw filescan
```
```
2021-05-28 17:27:17 +00:00
usbrip events history #Get USB history of your curent linux machine
usbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR user
#Search for vid and/or pid
usbrip ids download #Downlaod database
usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid
```
2023-08-03 19:12:22 +00:00
更多示例和信息请参考GitHub[https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
2021-05-28 17:27:17 +00:00
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
2022-08-31 22:35:39 +00:00
\
使用[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)可以轻松构建和自动化由全球最先进的社区工具提供支持的工作流程。\
2023-08-03 19:12:22 +00:00
立即获取访问权限:
2022-08-31 22:35:39 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
2023-08-03 19:12:22 +00:00
## 检查用户账户和登录活动
2020-12-23 22:44:17 +00:00
检查 _**/etc/passwd**_、_**/etc/shadow**_ 和 **安全日志**查找异常的名称或在已知未经授权事件附近创建或使用的账户。还要检查可能的sudo暴力攻击。\
此外,检查 _**/etc/sudoers**__**/etc/groups**_ 等文件,查找给用户授予的意外权限。\
最后,查找没有密码或密码容易猜测的账户。
2020-12-23 22:44:17 +00:00
2023-08-03 19:12:22 +00:00
## 检查文件系统
2020-12-23 23:14:22 +00:00
2023-08-03 19:12:22 +00:00
文件系统数据结构可以提供与恶意软件事件相关的大量**信息**,包括事件的**时间**和**恶意软件**的实际**内容**。\
恶意软件越来越多地被设计为**阻碍文件系统分析**。一些恶意软件会更改恶意文件的日期时间戳,以使时间线分析更加困难。其他恶意代码被设计为仅将某些信息存储在内存中,以最小化存储在文件系统中的数据量。\
为了应对这些反取证技术,有必要**仔细关注文件系统日期时间戳的时间线分析**,以及存储在可能发现恶意软件的常见位置的文件。
2020-12-23 23:14:22 +00:00
* 使用 **autopsy** 可以查看可能有助于发现可疑活动的事件时间线。您还可以直接使用 **Sleuth Kit**`mactime` 功能。
* 检查 **$PATH** 内是否有意外的脚本可能是一些sh或php脚本
* `/dev` 中的文件曾经是特殊文件,您可能会在这里找到与恶意软件相关的非特殊文件。
2023-08-03 19:12:22 +00:00
* 查找异常或**隐藏的文件**和**目录**,例如“.. ”(点 点 空格)或“..^G ”(点 点 控制-G
* 系统上的 `/bin/bash` 的 Setuid 副本 `find / -user root -perm -04000 print`
* 检查已删除的**inode的日期时间戳**如果在同一时间删除了大量文件则可能表明恶意活动例如安装了rootkit或木马服务。
* 由于inode是按照下一个可用的方式分配的因此在大约相同时间放置在系统上的恶意文件可能会被分配连续的inode。因此在找到恶意软件的一个组件之后检查相邻的inode可能会很有成效。
* 还要检查像 _/bin__/sbin_ 这样的目录,因为新文件或修改文件的**修改时间**可能很有趣。
* 按创建日期对目录中的文件和文件夹进行排序,以查看最近的文件或文件夹(通常是最后一个)。
2020-12-23 23:14:22 +00:00
您可以使用 `ls -laR --sort=time /bin` 检查文件夹中最近的文件。\
您可以使用 `ls -lai /bin |sort -n` 检查文件夹中文件的inode。
2020-12-28 22:28:30 +00:00
{% hint style="info" %}
请注意,**攻击者**可以**修改时间**以使**文件看起来合法**,但他**无法修改inode**。如果您发现一个文件表明它的创建和修改时间与同一文件夹中的其他文件相同,但是**inode**却**意外地更大**,那么该文件的时间戳已被修改。
2020-12-28 22:28:30 +00:00
{% endhint %}
2023-08-03 19:12:22 +00:00
## 比较不同文件系统版本的文件
2021-01-06 15:28:14 +00:00
2023-08-03 19:12:22 +00:00
#### 查找添加的文件
2021-01-06 15:28:14 +00:00
```bash
git diff --no-index --diff-filter=A _openwrt1.extracted/squashfs-root/ _openwrt2.extracted/squashfs-root/
```
2023-08-03 19:12:22 +00:00
#### 查找修改的内容
When conducting a forensic investigation on a Linux system, it is important to identify any modified content that may be relevant to the case. This can include modified files, directories, or system configurations.
To find modified content, you can use various tools and techniques. One common approach is to compare the current state of the system with a known good state. This can be done by creating a baseline of the system's files and configurations, and then comparing it with the current state.
2023-08-03 19:12:22 +00:00
One tool that can be used for this purpose is the `find` command. By using the `-newer` option, you can search for files that have been modified after a specific date and time. For example, the following command will find all files modified within the last 24 hours:
2021-01-06 15:28:14 +00:00
```
find / -type f -newermt "24 hours ago"
```
2023-08-03 19:12:22 +00:00
You can also use the `stat` command to obtain detailed information about a file, including its modification time. For example, the following command will display the modification time of a file:
2023-08-03 19:12:22 +00:00
```
stat <file_path>
```
2023-08-03 19:12:22 +00:00
Additionally, you can check the system logs for any suspicious activities or modifications. The `/var/log` directory contains various log files that can provide valuable information about system events.
By identifying and analyzing modified content, you can gain insights into the actions taken on the system and potentially uncover evidence relevant to your investigation.
2021-01-06 15:28:14 +00:00
```bash
git diff --no-index --diff-filter=M _openwrt1.extracted/squashfs-root/ _openwrt2.extracted/squashfs-root/ | grep -E "^\+" | grep -v "Installed-Time"
```
#### 查找已删除的文件
When conducting Linux forensics, it is important to be able to find deleted files. Even though a file may have been deleted, it is often still recoverable from the file system.
在进行Linux取证时能够找到已删除的文件非常重要。即使文件已被删除通常仍然可以从文件系统中恢复。
One way to find deleted files is by using the `grep` command to search for specific file signatures within the unallocated space of a disk image. File signatures are unique patterns of bytes that can be used to identify the file type.
2023-08-03 19:12:22 +00:00
一种查找已删除文件的方法是使用`grep`命令在磁盘镜像的未分配空间中搜索特定的文件签名。文件签名是用于识别文件类型的唯一字节模式。
2023-08-03 19:12:22 +00:00
To search for deleted files using `grep`, you can use the following command:
2021-01-06 15:28:14 +00:00
使用`grep`搜索已删除文件,可以使用以下命令:
2021-01-06 15:28:14 +00:00
```bash
grep -a -b -E -o -P '<file_signature>' <disk_image>
2021-01-06 15:28:14 +00:00
```
- The `-a` option treats the disk image as a text file.
- The `-b` option prints the byte offset of the matching pattern.
- The `-E` option enables extended regular expressions.
- The `-o` option prints only the matching part of the line.
- The `-P` option enables Perl-compatible regular expressions.
2023-08-03 19:12:22 +00:00
- `-a`选项将磁盘镜像视为文本文件。
- `-b`选项打印匹配模式的字节偏移量。
- `-E`选项启用扩展正则表达式。
- `-o`选项仅打印行的匹配部分。
- `-P`选项启用Perl兼容的正则表达式。
Replace `<file_signature>` with the specific file signature you want to search for, and `<disk_image>` with the path to the disk image file.
将`<file_signature>`替换为要搜索的特定文件签名,将`<disk_image>`替换为磁盘镜像文件的路径。
By searching for file signatures within the unallocated space, you may be able to find deleted files that can provide valuable evidence during a forensic investigation.
通过在未分配空间中搜索文件签名,您可能能够找到已删除的文件,这些文件可以在取证调查中提供有价值的证据。
2023-08-03 19:12:22 +00:00
```bash
git diff --no-index --diff-filter=A _openwrt1.extracted/squashfs-root/ _openwrt2.extracted/squashfs-root/
```
#### 其他过滤器
2021-01-06 15:28:14 +00:00
**`-diff-filter=[(A|C|D|M|R|T|U|X|B)…​[*]]`**
仅选择已添加(`A`)、已复制(`C`)、已删除(`D`)、已修改(`M`)、已重命名(`R`)以及其类型(即常规文件、符号链接、子模块等)已更改(`T`)、未合并(`U`)、未知(`X`)或已破坏配对(`B`)的文件。可以使用任意组合的过滤字符(包括无)。当将`*`(全部或无)添加到组合中时,如果比较中存在与其他条件匹配的文件,则选择所有路径;如果没有与其他条件匹配的文件,则不选择任何内容。
2021-01-06 15:28:14 +00:00
2023-08-03 19:12:22 +00:00
此外,这些大写字母可以转换为小写字母以进行排除。例如,`--diff-filter=ad`排除已添加和已删除的路径。
2021-01-06 15:28:14 +00:00
请注意,并非所有的差异都可以包含所有类型。例如,从索引到工作树的差异永远不会有已添加的条目(因为差异中包含的路径集受限于索引中的内容)。类似地,如果禁用了对复制和重命名类型的检测,那么复制和重命名条目将不会出现。
2020-12-28 21:51:56 +00:00
2023-08-03 19:12:22 +00:00
## 参考资料
2020-12-23 22:44:17 +00:00
2021-10-19 00:01:07 +00:00
* [https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf](https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf)
2020-12-23 22:44:17 +00:00
* [https://www.plesk.com/blog/featured/linux-logs-explained/](https://www.plesk.com/blog/featured/linux-logs-explained/)
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
你在一家**网络安全公司**工作吗想要在HackTricks中**宣传你的公司**吗?或者你想要**获取最新版本的PEASS或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
2022-04-28 16:01:33 +00:00
* 发现我们的独家[NFT收藏品](https://opensea.io/collection/the-peass-family)——[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
2022-04-28 16:01:33 +00:00
**通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
2022-04-28 16:01:33 +00:00
</details>
2022-08-31 22:35:39 +00:00
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
2022-08-31 22:35:39 +00:00
\
使用[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)可以轻松构建和自动化由全球最先进的社区工具提供支持的工作流程。\
2023-08-03 19:12:22 +00:00
立即获取访问权限:
2022-08-31 22:35:39 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}