在Linux渗透测试或安全评估中,信息收集(Information Gathering / Enumeration) 是整个攻击链或防御加固中最关键、最基础的一环。正如你上传图片中所强调的:“信息收集应该是渗透测试人员迈出的第一步”。

进行Linux信息收集的核心原因可以归纳为以下五个维度:

1. 🎯 精准定位攻击面,避免“盲打”

Linux系统发行版众多(Ubuntu, CentOS, Debian, Kali等),内核版本、软件包管理器、默认配置差异巨大。

  • Without Info: 盲目尝试Exploit可能导致服务崩溃、触发告警或浪费大量时间。
  • With Info: 确认了 Apache 2.4.49 + Ubuntu 20.04 + Kernel 5.4,就能直接匹配 CVE-2021-41773 等特定漏洞,实现精确打击

2. 🔑 寻找本地提权(Privilege Escalation)路径

这是Linux信息收集最直接的目的。当你获得一个低权限Shell后,必须通过收集以下信息来判断能否提权至root:

  • SUID/SGID文件: 是否有配置错误的二进制文件可被滥用?
  • Cron定时任务: 是否有以root身份运行且可写的脚本?
  • 内核版本: 是否存在已知的内核提权漏洞(如Dirty Cow, PwnKit)?
  • Capabilities: 是否有程序被赋予了过高的能力位?
  • 敏感文件权限: /etc/shadow, SSH私钥, 配置文件是否可读?

3. 🏗️ 识别运行环境与基础设施

现代Linux很少孤立存在,了解环境决定了后续战术:

  • 虚拟化检测: 如图8-1所示,判断是VMware/KVM/Docker还是物理机。虚拟机可能存在逃逸漏洞;容器则需关注namespace/cgroup配置。
  • 网络拓扑: 网卡信息、路由表、开放端口、防火墙规则(iptables/nftables)。这决定了能否横向移动、反弹Shell是否会被拦截、是否存在内网其他目标。
  • 挂载与存储: NFS挂载、外部磁盘、备份文件位置,往往藏有敏感凭证。

4. 🛡️ 规避防御机制与取证痕迹

了解目标的防御体系才能安全操作:

  • 安全模块状态: SELinux/AppArmor是否开启?处于Enforcing还是Permissive模式?这直接影响Exploit能否执行。
  • 日志与审计: rsyslog/auditd/syslog-ng的配置如何?哪些操作会被记录?是否需要清理痕迹或绕过审计?
  • EDR/AV: 是否安装了CrowdStrike、ClamAV等终端防护?进程名和路径是什么?

5. ⏱️ 提高测试效率与成功率

  • 减少试错成本: 信息收集越充分,后续利用阶段越顺畅。
  • 制定备选方案: 如果主攻击路径被封堵,收集到的备用信息(如其他用户账号、备用服务、历史命令记录)可提供Plan B。
  • 合规与报告: 专业的渗透测试报告需要详实的信息收集结果作为证据支撑,证明漏洞的真实性和影响范围。

📌 总结

信息收集不是“可选步骤”,而是“生存技能”。 在Linux环境中,它相当于战前的战场侦察:不了解地形(系统架构)、敌情(防御机制)、补给线(网络/存储)和弱点(漏洞/误配),任何进攻都是赌博。高质量的信息收集能将渗透测试从“运气驱动”转变为“知识驱动”。

1.1检测是否在虚拟机中

systemd-detect-virt

1.2判断是否在 Docker 容器中

grep 'docker' /proc/1/cgroup

1.3系统基本信息

uname -a

1.4内核版本信息

uname -r

1.5系统架构信息

uname -m

1.6发行版信息

精确识别Linux发行版及版本

cat /etc/*-release

 1.7系统主机名信息

hostname,

cat /etc/hostname

1.8用户信息枚举

whoami

id

cat /etc/passwd

1.9当前谁在线、何时登录、用什么终端、系统运行多久

who

w

last

uptime

2.0最简化的“当前登录用户列表”

user

2.1历史登录命令

last

2.2超管用户信息:不止 root 是超管

grep -v -E "^#" /etc/passwd 2>/dev/null | awk -F: '$3 == 0 { print $1 }' 2>/dev/null

2.3查看系统环境变量

env 2>/dev/null | grep -v 'LS_COLORS' | grep -v '^_' 2>/dev/null

2.4echo $PATH —— 路径信息是提权的“隐形导火索”

2,5用户配置文件 /etc/profile 与 /etc/bash.bashrc

2.6查看网络接口信息

ip a

2.7ARP 缓存信息

 ip neigh show

2.8IP 路由表

路由表 = 横向移动路线图

ip route

2.9系统网络配置信息

1. ss -tulnp → 找「开放的服务与潜在攻击面」

这是在找本机对外暴露的入口点

  • 找什么: 哪些端口在监听(LISTEN)、绑定在哪个IP(0.0.0.0 vs 127.0.0.1)、背后是什么进程。
  • 安全意义:
    • 0.0.0.0:22 → SSH 对所有网卡开放,可能被暴力破解。
    • 127.0.0.1:3306 → MySQL 仅本地访问,但若存在 SSRF/LFI 漏洞仍可被利用。
    • :::8080 → IPv6 全监听,可能绕过了仅针对 IPv4 的防火墙规则。
    • 未知进程监听高位端口 → 可能是后门、反弹 Shell 或恶意挖矿程序。
  • 一句话总结: 找"门"——哪些门开着,谁在看门。

2. ss -tuna → 找「活跃连接与异常通信」

这是在找当前正在发生的网络行为

  • 找什么: 已建立的连接(ESTABLISHED)、TIME_WAIT 状态的残留连接、UDP 无状态通信。
  • 安全意义:
    • 连接到外部可疑 IP:PORT → 可能是 C2 回连、数据外泄、反弹 Shell。
    • 大量 TIME_WAIT 到同一目标 → 可能刚完成端口扫描或被 DDoS。
    • 内网 IP 之间的异常连接 → 横向移动的痕迹。
    • UDP 连接到非常用端口 → DNS 隧道、ICMP 隧道等隐蔽信道。
  • 一句话总结: 找"人"——谁在和这台机器说话,说了什么。

3. ss -s → 找「协议层异常与性能瓶颈」

这是在找网络栈的健康状况和隐藏问题

  • 找什么: TCP 重传率、SYN 队列溢出、孤儿连接数、内存占用等统计摘要。
  • 安全意义:
    • SYN_RECV 数量异常高 → 正遭受 SYN Flood 攻击。
    • 重传率 > 5% → 网络质量差,或存在中间人篡改/丢包。
    • timewait 堆积 → 短连接服务配置不当,或扫描器留下的痕迹。
    • sockets 总数远超预期 → 可能存在 Socket 泄漏型恶意软件。
  • 一句话总结: 找"病"——网络栈有没有被攻击或过载的迹象。

4. ip -s link → 找「接口级流量特征与物理层线索」

这是在找网卡层面的收发行为和底层异常

  • 找什么: 每个接口的收发包计数、错误帧、丢包、碰撞等。
  • 安全意义:
    • RX/TX bytes 持续增长但无合法业务 → 后台有隐蔽数据传输。
    • errors/dropped 非零 → 网线故障、驱动问题,或 ARP 欺骗导致的帧冲突。
    • 某接口 TX >> RX → 可能在向外发送大量数据(数据泄露)。
    • 虚拟接口(docker0/veth)有流量 → 容器内有活跃服务,需进一步排查。
  • 一句话总结: 找"痕"——网卡上留下了多少数据进出的物理证据。

3.1查看 DNS 配置文件

cat /etc/resolv.conf

3.2系统进程枚举

# 1. 查看所有进程(找可疑服务) ps aux

# 2. 查看以 root 权限运行的进程(提权突破口) ps aux | grep root

# 3. 查看 SUID/SGID 文件(经典提权路径) find / -perm -4000 -type f 2>/dev/null

# 4. 查看内核版本(决定是否可用 Dirty COW、Dirty Pipe 等) uname -a

3.3特权访问枚举

3.4它寻找的是 Linux 系统中所有关于 sudo 权限的底层配置规则

sudo cat /etc/sudoers

本质上是在直接读取系统的“特权分配总账本”。

. 免密执行配置(最核心的提权点)

. 受限命令白名单

. 环境变量保留策略

. 用户与组的批量授权

你必须已经拥有了完整的 sudo 权限(或已经是 root),才能成功执行 sudo cat /etc/sudoers

3.5定时任务(cron)枚举

ls -la /etc/cron* 2>/dev/null

列举所有用户的定时任务(需 root 权限)

for user in $(getent passwd | cut -d: -f1); do echo "### Crontabs for $user ###"; crontab -u $user -l 2>/dev/null; done

其他用户的定时任务:crontab -l -u <用户名>

crontab -l:列出当前用户的定时任务(无需 root)
crontab -l -u otheruser:列出其他用户的定时任务 → 仅 root 可执行

3.6软件信息枚举

3.7软件清单 + 工具探测 + 敏感文件权限检查

dpkg -l 输出(Debian/Ubuntu 软件清单)

搜索常用工具(which + /dev/null 技巧)

which nc 2>/dev/null ; which netcat 2>/dev/null; which wget 2>/dev/null; ...

# 1. 快速筛选高危软件 dpkg -l | grep -Ei "apache|nginx|mysql|postgres|jenkins|gitlab|docker|ssh" # 2. 检查关键攻击工具是否存在 which python3 wget nc curl gcc 2>/dev/null

# 3. 检查敏感文件权限(尤其 shadow) ls -la /etc/passwd /etc/shadow /root/.bash_history 2>/dev/null

3.8SUID/SGID 文件搜索 + ✅ 可写文件定位

特殊权限的文件:find / -perm -u=s -type f 2>/dev/null

find /usr/local/bin /opt /home -perm -u=s -type f 2>/dev/null3.8可写文件:两种方式

find / -writable ! -user $USER -type f 2>/dev/null

只要前30条

方式 2:当前用户可写(含自身文件)

find / -writable -user $USER -type f 2>/dev/null

查找当前用户可写但非自身所有的文件

find / -writable ! -user $USER -type f -path "/sys/*" -prune -o -path "/proc/*" -prune -o -exec ls -l {} \; 2>/dev/null

查找当前用户可写且属于自己的文件

find / -writable -user $USER -type f -path "/proc/*" -prune -o -path "/sys/*" -prune -o -exec ls -l {} \; 2>/dev/null

查找 .bak 备份文件(高危!)

find / -name "*.bak" -type f 2>/dev/null

搜索关键字(pass, cred, key 等)

find / -type f -name "*.php" -exec grep -i "pass" {} \; 2>/dev/null

4.1隐藏文件与历史记录挖掘

# 1. 查看自己的 history(可能有你之前试过的密码)

cat ~/.bash_history 2>/dev/null | grep -iE "pass|pwd|ssh|mysql|pg"

# 2. 查看其他用户的 history(重点!)

ls -la /home/*/.*history 2>/dev/null

3.# 如果发现 /home/y/.bash_history,立即读取:

cat /home/y/.bash_history 2>/dev/null | grep -i "pass"

查找某个用户的隐藏文件(.bash_*, .ssh/, .config/ 等)

find /home -name ".*" -type f -exec ls -l {} \; 2>/dev/null

快速侦察命令

# 只查高危隐藏文件

for u in $(ls /home 2>/dev/null); do echo "=== $u ==="; ls -la /home/$u/.ssh/ 2>/dev/null || true; cat /home/$u/.bash_history 2>/dev/null | head -3 2>/dev/null || true; find /home/$u -name ".env" -o -name "config.*" 2>/dev/null; done

查找 home 目录下的隐藏文件

find /home -name ".*"

4.2在 ~/.bash_history 中搜索密码关键词

history | grep -i passw

 cat ~/.bash_history 2>/dev/null | grep -iE "pass|pwd|key|secret"

OpenVPN 配置文件 (*.ovpn) —— 高危凭证宝库!

OpenVPN 客户端配置文件(.ovpn)常包含:
auth-user-pass /etc/openvpn/auth.txt → 认证凭据路径
ca, cert, key → 证书路径(可能含私钥)
明文用户名/密码(如果未用 auth-user-pass 文件)

cat /etc/openvpn/auth.txt

ls -la /etc/openvpn/auth.txt 2>/dev/null && cat /etc/openvpn/auth.txt 2>/dev/null

find / -name "*.ovpn" -o -name "auth.txt" -o -name "*openvpn*pass*" 2>/dev/null grep -r "auth-user-pass" /etc/ /home/ /opt/ /var/ 2>/dev/null

4.3ssh私钥文件

ls -l /backup/.ssh/id_rsa

 cat /backup/.ssh/id_rsa
ls -l 显示:-rw-r--r-- 1 user user ... /backup/.ssh/id_rsa
→ 权限 644,意味着任何用户都能读取该私钥!


cat 输出显示:-----BEGIN RSA PRIVATE KEY-----
→ 这是一个完整的 SSH 私钥文件,可用于无密码登录对应公钥的账户。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐