op7ic/unix_collector

GitHub: op7ic/unix_collector

一个跨平台 UNIX 系统实时取证收集脚本,用于在安全事件中快速采集各类系统取证数据。

Stars: 42 | Forks: 7

# unix_collector [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Version](https://img.shields.io/badge/Version-2.0-green.svg)]() [![Platform](https://img.shields.io/badge/Platform-Multi--UNIX-orange.svg)]() 一个用于类 UNIX 系统的综合实时取证收集脚本,旨在为取证调查和事件响应收集关键系统信息。 作为一个单一的 shell 脚本,```unix_collector``` 易于上传和执行,无需解压、编译、安装或连接互联网下载额外组件。该脚本既可以普通用户身份运行,也可以 root 身份运行,但以 root 身份执行时效果更好,因为这样可以访问更广泛的系统文件和取证数据。 [![Imgur](https://i.imgur.com/6xMcGIg.gif)](#) ## 🖥️ 支持的平台 UNIX Collector 支持广泛的类 UNIX 操作系统,并具有自动平台检测功能: ### 操作系统 - [![Linux](https://img.shields.io/badge/Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black)](https://www.linux.org/) - [![macOS](https://img.shields.io/badge/macOS-000000?style=for-the-badge&logo=apple&logoColor=white)](https://www.apple.com/macos/) - [![Android](https://img.shields.io/badge/Android-3DDC84?style=for-the-badge&logo=android&logoColor=white)](https://www.android.com/) - [![FreeBSD](https://img.shields.io/badge/FreeBSD-AB2B28?style=for-the-badge&logo=freebsd&logoColor=white)](https://www.freebsd.org/) - [![OpenBSD](https://img.shields.io/badge/OpenBSD-F2CA30?style=for-the-badge&logo=openbsd&logoColor=black)](https://www.openbsd.org/) - [![NetBSD](https://img.shields.io/badge/NetBSD-FF6600?style=for-the-badge&logo=netbsd&logoColor=white)](https://www.netbsd.org/) - [![Solaris](https://img.shields.io/badge/Solaris-FF6C2C?style=for-the-badge&logo=oracle&logoColor=white)](https://www.oracle.com/solaris/) - [![AIX](https://img.shields.io/badge/AIX-052FAD?style=for-the-badge&logo=ibm&logoColor=white)](https://www.ibm.com/power/operating-systems/aix) - [![HP--UX](https://img.shields.io/badge/HP--UX-0096D6?style=for-the-badge&logo=hp&logoColor=white)](https://www.hpe.com/) ### 容器与虚拟化平台 - [![Docker](https://img.shields.io/badge/Docker-2496ED?style=for-the-badge&logo=docker&logoColor=white)](https://www.docker.com/) - [![Kubernetes](https://img.shields.io/badge/Kubernetes-326CE5?style=for-the-badge&logo=kubernetes&logoColor=white)](https://kubernetes.io/) - [![Podman](https://img.shields.io/badge/Podman-892CA0?style=for-the-badge&logo=podman&logoColor=white)](https://podman.io/) - [![Containerd](https://img.shields.io/badge/Containerd-575757?style=for-the-badge&logo=containerd&logoColor=white)](https://containerd.io/) - [![LXC/LXD](https://img.shields.io/badge/LXC/LXD-E95420?style=for-the-badge&logo=linuxcontainers&logoColor=white)](https://linuxcontainers.org/) - [![VMware ESXi](https://img.shields.io/badge/VMware_ESXi-607078?style=for-the-badge&logo=vmware&logoColor=white)](https://www.vmware.com/products/esxi-and-esx.html) - [![VirtualBox](https://img.shields.io/badge/VirtualBox-183A61?style=for-the-badge&logo=virtualbox&logoColor=white)](https://www.virtualbox.org/) - [![KVM/libvirt](https://img.shields.io/badge/KVM/libvirt-FF6600?style=for-the-badge&logo=kvm&logoColor=white)](https://www.linux-kvm.org/) - [![Proxmox](https://img.shields.io/badge/Proxmox-E57000?style=for-the-badge&logo=proxmox&logoColor=white)](https://www.proxmox.com/) ### 专用平台 - [![NetScaler](https://img.shields.io/badge/NetScaler-1B75BB?style=for-the-badge&logo=citrix&logoColor=white)](https://www.citrix.com/) - [![IoT/Embedded](https://img.shields.io/badge/IoT%2FEmbedded-6DB33F?style=for-the-badge&logo=linux&logoColor=white)]() ### Linux 发行版 - [![Ubuntu](https://img.shields.io/badge/Ubuntu-E95420?style=flat-square&logo=ubuntu&logoColor=white)](https://ubuntu.com/) - [![Debian](https://img.shields.io/badge/Debian-A81D33?style=flat-square&logo=debian&logoColor=white)](https://www.debian.org/) - [![Red Hat](https://img.shields.io/badge/Red%20Hat-EE0000?style=flat-square&logo=redhat&logoColor=white)](https://www.redhat.com/) - [![CentOS](https://img.shields.io/badge/CentOS-262577?style=flat-square&logo=centos&logoColor=white)](https://www.centos.org/) - [![SUSE](https://img.shields.io/badge/SUSE-0C322C?style=flat-square&logo=suse&logoColor=white)](https://www.suse.com/) - [![Arch](https://img.shields.io/badge/Arch-1793D1?style=flat-square&logo=arch-linux&logoColor=white)](https://archlinux.org/) - [![Gentoo](https://img.shields.io/badge/Gentoo-54487A?style=flat-square&logo=gentoo&logoColor=white)](https://www.gentoo.org/) - [![Slackware](https://img.shields.io/badge/Slackware-000000?style=flat-square&logo=slackware&logoColor=white)](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, 子域名突变, 安全运维, 库, 应急响应, 数字取证, 数据包嗅探, 无线安全, 网络安全审计, 自动化脚本, 请求拦截