op7ic/unix_collector
GitHub: op7ic/unix_collector
一个跨平台 UNIX 系统实时取证收集脚本,用于在安全事件中快速采集各类系统取证数据。
Stars: 42 | Forks: 7
# unix_collector
[](https://www.gnu.org/licenses/gpl-3.0)
[]()
[]()
一个用于类 UNIX 系统的综合实时取证收集脚本,旨在为取证调查和事件响应收集关键系统信息。
作为一个单一的 shell 脚本,```unix_collector``` 易于上传和执行,无需解压、编译、安装或连接互联网下载额外组件。该脚本既可以普通用户身份运行,也可以 root 身份运行,但以 root 身份执行时效果更好,因为这样可以访问更广泛的系统文件和取证数据。
[](#)
## 🖥️ 支持的平台
UNIX Collector 支持广泛的类 UNIX 操作系统,并具有自动平台检测功能:
### 操作系统
- [](https://www.linux.org/)
- [](https://www.apple.com/macos/)
- [](https://www.android.com/)
- [](https://www.freebsd.org/)
- [](https://www.openbsd.org/)
- [](https://www.netbsd.org/)
- [](https://www.oracle.com/solaris/)
- [](https://www.ibm.com/power/operating-systems/aix)
- [](https://www.hpe.com/)
### 容器与虚拟化平台
- [](https://www.docker.com/)
- [](https://kubernetes.io/)
- [](https://podman.io/)
- [](https://containerd.io/)
- [](https://linuxcontainers.org/)
- [](https://www.vmware.com/products/esxi-and-esx.html)
- [](https://www.virtualbox.org/)
- [](https://www.linux-kvm.org/)
- [](https://www.proxmox.com/)
### 专用平台
- [](https://www.citrix.com/)
- []()
### Linux 发行版
- [](https://ubuntu.com/)
- [](https://www.debian.org/)
- [](https://www.redhat.com/)
- [](https://www.centos.org/)
- [](https://www.suse.com/)
- [](https://archlinux.org/)
- [](https://www.gentoo.org/)
- [](http://www.slackware.com/)
**注意**:该脚本会自动检测平台并相应地调整收集方法。对于未明确列出的系统,请使用 `--platform=generic` 选项以进行尽力而为的收集。
# 功能
### 🔍 收集内容
该脚本收集 **360 多种不同的取证数据**,以帮助识别潜在的系统入侵:
| 类别 | 数据数量 | 关键取证数据 |
|----------|-------|---------------|
| **系统信息** | ~30 | Kernel 版本、硬件清单、BIOS/UEFI、时区、安装日期 |
| **存储与文件系统** | ~40 | 磁盘分区、RAID 阵列、LVM 卷、ZFS 数据集、挂载点 |
| **进程分析** | ~30 | 运行中的进程、命令行、文件句柄、已删除的二进制文件、内存映射、无属主文件、僵尸进程 |
| **持久化机制** | ~35 | Cron 任务、at 任务、systemd 定时器、rc 脚本、Kernel 模块 |
| **网络配置** | ~20 | 网络接口、路由表、网络连接、防火墙规则、ARP 缓存 |
| **用户与认证** | ~15 | 用户账户、用户组、SSH 配置、sudo 规则、Kerberos 票据 |
| **系统日志** | ~10 | /var/log、审计日志、启动日志、安全事件、dmesg |
| **虚拟系统** | ~45 | VMware ESXi (25)、VirtualBox (10)、KVM/libvirt (7)、其他 (3) |
| **容器平台** | ~45 | Docker (13)、Podman (11)、LXC (12)、Containerd (2)、Proxmox (3) |
| **文件哈希** | 3 | 所有收集到的二进制文件的 MD5、SHA1、SHA256 |
| **配置文件** | ~20 | /etc 配置、systemd 单元、网络设置 |
| **附加数据** | ~15 | 家目录、临时文件、已安装的软件包、编译器工具 |
| **远程访问工具** | ~20 | TeamViewer、AnyDesk、RustDesk、VNC 变体、SSH 隧道、RDP 工具 |
| **应用取证数据** | ~40 | Confluence、Tomcat、Jenkins、WordPress、Elastic Stack 等 |
| **Web 浏览器** | ~50 | 历史记录、书签、Cookie、保存的密码、扩展程序、下载记录、偏好设置 |
**系统与硬件**
- 完整的硬件清单和系统信息
- Kernel 版本、模块和污点状态
- BIOS/UEFI 设置和启动配置
- 存储设备、分区和 RAID 配置
**文件与进程**
- 包含 inode 和 MAC 时间的完整文件系统时间线
- 运行中的进程及其命令行和文件描述符
- 进程内存映射和已删除二进制文件检测
- 带有加密哈希的 SUID/SGID 二进制文件
- 每个进程打开的文件和网络连接
**用户与认证**
- 用户账户、用户组和密码策略
- SSH 密钥和配置
- Sudo 规则和 PAM 设置
- 登录历史和活动会话
- Kerberos 票据和认证 token
**持久化机制**
- Cron 任务、at 任务和 systemd 定时器
- Init 脚本和启动项
- Kernel 模块和驱动程序
- 系统服务和 daemon
**网络与通信**
- 网络接口和路由表
- 活动连接和监听端口
- 防火墙规则和包过滤器
- DNS 配置和主机映射
- ARP 缓存和邻居表
**日志与审计轨迹**
- 系统日志(/var/log、/var/adm)
- 认证日志和安全事件
- 审计 daemon 日志和规则
- 启动和 Kernel 消息
- 特定于应用程序的日志
**容器与虚拟化**
- Docker/Podman 容器、镜像和卷
- 虚拟机清单和配置
- 容器运行时配置和日志
- Hypervisor 设置和资源分配
**附加取证数据**
- 已安装的软件和补丁级别
- /etc 中的配置文件
- 临时文件和缓存
- 用户家目录
- 浏览器取证数据和历史记录
- 计划任务和服务
**远程访问与管理**
- 远程访问工具配置和日志
- TeamViewer、AnyDesk、RustDesk 安装和日志
- VNC 服务器配置(TightVNC、TigerVNC、RealVNC、UltraVNC)
- Chrome Remote Desktop 取证数据
- SSH 隧道和端口转发脚本
- RDP/XRDP 配置和日志
- NoMachine、Splashtop、Parsec 游戏远程日志
- Apache Guacamole 基于 Web 的远程桌面设置
- ConnectWise/ScreenConnect 支持工具取证数据
- LogMeIn 和 GoToMyPC 配置
- X2Go 会话数据
- Remmina 连接配置文件
- DWService 远程支持日志
- 远程工具的 systemd 服务定义
- 远程应用程序的桌面条目
- 检测潜在的 SSH 后门脚本
**Web 浏览器取证数据**
- 基于 Chromium 的浏览器:Google Chrome、Chromium、Microsoft Edge、Brave、Opera、Vivaldi
- Mozilla Firefox:包括 ESR 和开发者版本
- Safari:macOS 系统
- 隐私浏览器:Tor Browser(收集范围有限)
## 🚀 快速开始
### 安装
```
# 下载脚本(单文件,无依赖)
wget https://raw.githubusercontent.com/op7ic/unix_collector/main/unix_collector.sh
# 使其可执行
chmod +x unix_collector.sh
```
### 基本用法
```
# 运行自动检测(推荐:以 root 身份运行以进行完整收集)
sudo ./unix_collector.sh
# 以普通用户身份运行(收集受限)
./unix_collector.sh
# 手动指定 platform
sudo ./unix_collector.sh --platform=Linux
```
**💡 提示**:虽然脚本可以以普通用户身份运行,但以 root 身份运行可以访问更全面的取证数据,包括系统日志、进程内存映射和特权配置文件。
### 可用的平台选项
- `solaris` - Sun/Oracle Solaris
- `aix` - IBM AIX
- `mac` - macOS/Darwin
- `linux` - 通用 Linux
- `hpux` - HP-UX
- `android` - Android 设备
- `generic` - 未知的 UNIX 系统
### 部署与收集示例
```
# 1. 将脚本传输到目标系统
scp unix_collector.sh user@target:/tmp/
# 2. SSH 到目标
ssh user@target
# 3. 运行 collector
cd /tmp && sudo ./unix_collector.sh --quiet
# 4. 将结果传回
scp collector-*.tar.xz analyst@forensics:/cases/
# 5. 提取并分析
tar -xf collector-*.tar.xz
```
## 📋 主要特性
- **🔧 自包含**:单一 shell 脚本,无外部依赖
- **🌐 适用于物理隔离环境**:运行无需网络连接
- **🛡️ 无侵入性**:只读操作可保持证据完整性
- **🔍 全面**:收集 250 多种类型的取证数据
- **⚡ 高效**:可配置的文件大小限制可防止资源耗尽
- **🔐 哈希校验**:使用多种算法(MD5、SHA1、SHA256)进行证据验证
- **📊 时间线分析**:包含 inode 和时间戳数据的完整文件系统时间线,导出为 body 和 csv 文件
## 💾 输出格式
### 归档结构
该脚本会创建一个带有时间戳的归档文件:`collector-hostname-DD-MM-YYYY.tar[.xz|.bz2|.gz]`
压缩格式会根据可用的工具自动选择:
1. **XZ**(如果可用,则体积最小)
2. **BZIP2**(压缩率较好)
3. **GZIP**(速度最快)
4. **TAR**(无压缩,在其他工具不可用时的备选方案)
### 目录组织
```
collector-hostname-DD-MM-YYYY/
├── general/ # System information, kernel, hardware
├── software/ # Installed packages and patches
├── logs/ # System and application logs
├── homedir/ # User home directories
├── procfiles/ # Process information from /proc
├── tmpfiles/ # Temporary file preservation
├── setuid/ # SUID/SGID binaries
├── hashes/ # File hashes (MD5/SHA1/SHA256)
├── network/ # Network configuration and connections
├── hardware/ # Hardware information
├── auditd/ # Audit configuration (Linux)
├── virtual/ # Virtualization platform data
├── containers/ # Container runtime information
└── collector-*.txt # Collection metadata
```
## 💻 系统要求
### 最低要求
- **Shell**:任何兼容 POSIX 的 shell(/bin/sh)
- **权限**:可以普通用户身份运行;建议使用 root/sudo 以进行全面收集
- **工具**:基本的 UNIX 实用程序(find、tar、grep)——所有 UNIX 系统的标准配置
- **空间**:磁盘上需有足够的空间,以便将日志和其他文件复制到单个位置(或者,从挂载的磁盘或网络分区运行)。(具体取决于系统大小)
## ⚡ 性能与限制
### 可配置的限制
- **文件大小上限**:默认为 500MB(防止收集过大的数据库/媒体文件)
- **智能过滤**:排除虚拟磁盘镜像(vmdk、vhd、ova)
- **高效收集**:在可用时使用 rsync 以加快复制速度
### 预计运行时间
- **小型系统**(已用空间 <10GB):5-10 分钟
- **中型系统**(10-100GB):15-30 分钟
- **大型系统**(100GB+):30-60 分钟
- **时间线生成**:根据文件系统大小,需额外增加 5-30 分钟
### 资源使用情况
- **CPU**:低到中等(主要在计算哈希时)
- **内存**:极小(通常 <100MB)
- **磁盘 I/O**:收集期间为读取密集型
- **网络**:无需联网
## 🎯 使用场景
- **🚨 事件响应**:在安全事件期间进行快速取证分诊
- **🔍 妥协评估**:识别系统被入侵的迹象
- **🛡️ 威胁狩猎**:收集取证数据以主动检测威胁
- **📊 安全审计**:记录系统状态以用于合规性和分析
- **🔬 取证调查**:保留证据以进行详细分析
- **💾 系统基线**:创建参考快照以检测变更
- **🏢 企业安全**:跨内部网络部署以进行集中收集
- **📱 IoT/嵌入式分析**:调查的嵌入式设备
## 许可证
该项目采用 GNU General Public License v3.0 授权 - 有关详细信息,请参阅 LICENSE 文件。
## 致谢
- 受到 Portcullis Security Team 集体知识的启发
- 基于 pentestmonkey 的 unix-privesc-check 的概念
- 特别感谢 Ian Ventura-Whiting (Fizz) 和 Tim Brown (timb_machine) 提供的灵感
- Mike Trewartha
标签:Cutter, HTTP工具, Live Response, PB级数据处理, Shell, UNIX, 子域名突变, 安全运维, 库, 应急响应, 数字取证, 数据包嗅探, 无线安全, 网络安全审计, 自动化脚本, 请求拦截