目录
![]()
Linux信息收集:
渗透测试与应急响应的基石
- 在Linux系统中,信息收集是渗透测试和应急响应的关键第一步。
- 通过收集系统架构、用户信息、网络拓扑、进程状态和文件权限等信息,渗透测试人员可以快速了解目标系统,识别潜在漏洞并制定提权策略;
- 应急响应人员则能迅速定位异常,遏制攻击并恢复安全。
- Linux信息收集的命令及其应用。
- 信息收集的重要性在于,它帮助测试人员避免盲目攻击,节省时间和资源。
- 例如,通过
uname -r获取内核版本,可直接查找对应漏洞; - 通过
id发现用户组权限,可利用Docker或sudo提权。
- 在应急响应中,
netstat -antlp能揭示未授权连接,ps aux能定位恶意进程。- 常用命令包括:
systemd-detect-virt检测虚拟化环境,cat /etc/passwd枚举用户,find / -perm -u=s -type f查找SUID文件等。这些命令覆盖系统、网络、进程和文件多个维度,为后续行动提供依据。红队工具如Metasploit和LinEnum进一步提升效率,自动化收集关键信息。
- 常用命令包括:
- 总之:
- Linux信息收集是权限提升和安全防御的基石,掌握相关命令和应用场景,能显著提升攻防能力。
1. Linux系统信息收集有哪些命令?
基于文章内容,以下是Linux系统中常用的信息收集命令,分类列出:
-
虚拟化技术检测:
-
systemd-detect-virt:检测系统是否运行在虚拟化环境中。 -
grep 'docker' /proc/1/cgroup:判断是否在Docker容器中。
-
-
系统基本信息:
-
uname -a:查看系统名称、版本、架构、主机名和内核版本。 -
uname -r:查看内核版本。 -
uname -m:查看系统架构。 -
cat /etc/*-release:查看发行版本信息。 -
hostname或uname -n:查看主机名。
-
-
用户信息:
-
whoami:查看当前用户名。 -
id:查看当前用户详细信息(用户ID、组ID等)。 -
cat /etc/passwd:查看所有用户信息。 -
cat /etc/group:查看所有用户组。 -
for i in $(cut -d":" -f1 /etc/passwd); do id $i; done:获取所有用户及其ID和组信息。 -
w:查看当前登录用户信息。 -
users:查看当前登录用户。 -
last:查看历史登录信息。 -
grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1 }':查找超管用户。
-
-
环境配置:
-
env | grep -v 'LS_COLORS':查看系统环境变量。 -
echo $PATH:查看环境变量中的路径信息。 -
cat /etc/profile:查看用户环境配置文件。 -
cat /etc/shells:查看可用Shell。
-
-
网络信息:
-
ifconfig -a或ip addr show:查看网络接口信息。 -
arp -a:查看ARP缓存信息。 -
route:查看IP路由表。 -
netstat -antlp:查看所有网络连接信息。 -
netstat -ntpl:查看监听的TCP端口。 -
netstat -nupl:查看监听的UDP端口。 -
cat /etc/resolv.conf:查看DNS配置文件。
-
-
系统进程:
-
ps aux:查看所有系统进程。 -
ps aux | grep 'root':查看以root权限运行的进程。 -
ps aux | awk '{print $11}' | xargs -I {} ls -l {}:查看进程对应的二进制文件及权限。
-
-
特权访问:
-
cat /etc/sudoers:查看sudoers文件(需root权限)。 -
echo ' ' | sudo -S -l -k:检查是否可以无密码使用sudo。
-
-
cron任务:
-
ls -la /etc/cron*:查看所有cron任务。 -
for user in $(getent passwd | cut -f1 -d:); do echo "### Crontabs for $user ####"; crontab -u $user -l; done:查看所有用户的定时任务(需root权限)。 -
crontab -l:查看当前用户的定时任务。 -
crontab -l -u root:查看指定用户的定时任务(需root权限)。
-
-
软件信息:
-
yum list installed(CentOS):查看已安装的程序。 -
dpkg -l或apt list(Debian/Ubuntu):查看已安装的程序。
-
-
文件枚举:
-
which nc; which netcat; which nmap; which gcc; which wget:检查常用工具是否安装。 -
ls -la /etc/passwd; ls -la /etc/group; ls -la /etc/profile; ls -la /etc/shadow:查看敏感文件权限。 -
find / -perm -u=s -type f:查找SUID文件。 -
find / -perm -g=s -type f:查找SGID文件。 -
find / -writable ! -user $(whoami) -type f ! -path "/proc/*" ! -path "/sys/*" -exec ls -al {} \;:查找可写文件。 -
find . -name "*.php" -print0 | xargs -0 grep -i -n "pass":查找包含关键字的文件。 -
ls -la /*_history:查找历史命令记录文件。 -
find / -name ".*" -type f -path "/home/*" -exec ls -al {} \;:查找隐藏文件。 -
find / -name "*.ovpn" -type f -path "/home/*" -exec ls -al {} \;:查找VPN配置文件。 -
find / -name id_rsa:查找SSH私钥文件。
-
2. 这些命令能应用于哪些安全漏洞场景中?
以下是命令在安全漏洞场景中的应用:
-
虚拟化技术检测:
-
systemd-detect-virt、grep 'docker' /proc/1/cgroup:判断是否在虚拟机或容器中运行,以便选择虚拟机逃逸或容器提权技术。
-
-
系统基本信息:
-
uname -a、uname -r、uname -m、cat /etc/*-release:获取内核版本和架构,查找已知内核漏洞或发行版特定的漏洞。
-
-
用户信息:
-
id、cat /etc/passwd、cat /etc/group:获取用户和组信息,用于权限提升(如利用不安全组)或横向移动。
-
-
环境配置:
-
env、echo $PATH:检查环境变量,寻找路径劫持机会。
-
-
网络信息:
-
ifconfig -a、ip addr show、arp -a、route、netstat -antlp:获取网络接口和连接信息,用于网络嗅探或横向移动。
-
-
系统进程:
-
ps aux、ps aux | grep 'root':识别root进程,尝试进程注入或提权。
-
-
特权访问:
-
cat /etc/sudoers、echo ' ' | sudo -S -l -k:检查sudo配置,寻找无密码提权机会。
-
-
cron任务:
-
ls -la /etc/cron*、crontab -l:检查定时任务,寻找提权或持久化机会。
-
-
软件信息:
-
yum list installed、dpkg -l、apt list:识别已安装软件,查找已知漏洞。
-
-
文件枚举:
-
find / -perm -u=s -type f、find / -writable ! -user $(whoami) -type f:查找SUID文件或可写文件,用于提权。 -
find / -name id_rsa:查找SSH私钥,获取其他服务器权限。
-
3. 这些命令在应急响应中如何应用?
以下是命令在应急响应中的应用,分类总结:
-
虚拟化技术检测:
-
systemd-detect-virt、grep 'docker' /proc/1/cgroup:判断系统环境,评估攻击范围。
-
-
系统基本信息:
-
uname -a、uname -r、uname -m、cat /etc/*-release:确定系统版本和架构,检查已知漏洞。
-
-
用户信息:
-
w、users、last:检查当前和历史登录用户,识别异常活动。
-
-
环境配置:
-
cat /etc/profile、cat /etc/shells:检查配置文件,寻找配置错误。
-
-
网络信息:
-
netstat -antlp、netstat -ntpl、netstat -nupl、cat /etc/resolv.conf:检查网络连接和端口,识别未授权活动。
-
-
系统进程:
-
ps aux、ps aux | awk '{print $11}' | xargs -I {} ls -l {}:检查进程,识别恶意进程。
-
-
特权访问:
-
cat /etc/sudoers:检查sudo配置,寻找提权痕迹。
-
-
cron任务:
-
for user in $(getent passwd | cut -f1 -d:); do echo "### Crontabs for $user ####"; crontab -u $user -l; done:检查定时任务,识别恶意任务。
-
-
软件信息:
-
yum list installed、dpkg -l、apt list:检查软件版本,识别易受攻击软件。
-
-
文件枚举:
-
ls -la /*_history、find / -name ".*" -type f -path "/home/*"、find / -name "*.ovpn" -type f -path "/home/*"、find / -name id_rsa:检查历史记录、隐藏文件和配置文件,寻找恶意文件或凭据。
-
4. 红队常用的Linux信息收集工具
基于文章,以下是红队常用的工具:
-
Metasploit:
-
模块如
post/linux/gather/enum_network:收集网络信息。 -
其他模块如
checkvm、enum_configs:检测虚拟化技术、枚举配置。
-
-
LinEnum:
-
自动化脚本,收集内核版本、敏感文件、用户、定时任务等信息。
-
5. 分类总结:漏洞利用与应急响应
-
漏洞利用:
-
虚拟化技术检测:
systemd-detect-virt、grep 'docker' /proc/1/cgroup -
系统基本信息:
uname -a、uname -r、uname -m、cat /etc/*-release -
用户信息:
id、cat /etc/passwd、cat /etc/group -
环境配置:
env、echo $PATH -
网络信息:
ifconfig -a、ip addr show、arp -a、route、netstat -antlp -
系统进程:
ps aux、ps aux | grep 'root' -
特权访问:
cat /etc/sudoers、echo ' ' | sudo -S -l -k -
cron任务:
ls -la /etc/cron*、crontab -l -
软件信息:
yum list installed、dpkg -l、apt list -
文件枚举:
find / -perm -u=s -type f、find / -writable ! -user $(whoami) -type f
-
-
应急响应:
-
虚拟化技术检测:
systemd-detect-virt、grep 'docker' /proc/1/cgroup -
系统基本信息:
uname -a、uname -r、uname -m、cat /etc/*-release -
用户信息:
w、users、last -
环境配置:
cat /etc/profile、cat /etc/shells -
网络信息:
netstat -antlp、netstat -ntpl、netstat -nupl、cat /etc/resolv.conf -
系统进程:
ps aux、ps aux | awk '{print $11}' | xargs -I {} ls -l {} -
特权访问:
cat /etc/sudoers -
cron任务:
for user in $(getent passwd | cut -f1 -d:); do echo "### Crontabs for $user ####"; crontab -u $user -l; done -
软件信息:
yum list installed、dpkg -l、apt list -
文件枚举:
ls -la /*_history、find / -name ".*" -type f -path "/home/*"、find / -name "*.ovpn" -type f -path "/home/*"、find / -name id_rsa
-
6. 实际案例
漏洞利用案例
案例1:利用内核漏洞提权
-
执行
uname -r,输出内核版本为3.10.0-514.el7.x86_64。 -
搜索该版本已知漏洞,发现CVE-2017-1000112(提权漏洞)。
-
下载对应漏洞利用代码,编译并运行,成功获取root权限。
案例2:利用Docker组提权
-
执行
id,发现当前用户属于docker组。 -
执行
docker run -v /:/mnt -it alpine chroot /mnt sh,挂载根目录并进入新Shell。 -
在新Shell中以root身份操作,提权成功。
案例3:路径劫持提权
-
执行
echo $PATH,发现/tmp在PATH中且可写。 -
创建恶意脚本
ls(echo "whoami > /tmp/rootcheck" > /tmp/ls)。 -
设置执行权限(
chmod +x /tmp/ls),等待root用户执行ls,确认提权。
案例4:利用SUID文件提权
-
执行
find / -perm -u=s -type f,发现/usr/bin/customtool为SUID文件。 -
检查其功能,发现可执行任意命令。
-
执行
/usr/bin/customtool /bin/sh,获取root Shell。
应急响应案例
案例5:检测恶意网络连接
-
执行
netstat -antlp,发现未知IP的TCP连接(192.168.1.100:4444)。 -
执行
ps aux | grep 4444,定位关联进程PID。 -
执行
ls -l /proc/,确认恶意二进制文件,删除并隔离。/exe
案例6:检测恶意进程
-
执行
ps aux | grep 'root',发现异常进程/tmp/.hidden以root运行。 -
执行
ls -l /tmp/.hidden,确认文件属性异常。 -
终止进程(
kill -9),删除文件并分析来源。
案例7:检查恶意定时任务
-
执行
crontab -l,发现每分钟运行/tmp/backdoor.sh。 -
查看文件内容(
cat /tmp/backdoor.sh),确认恶意代码。 -
删除定时任务(
crontab -e)和文件,记录日志。
案例8:利用SSH私钥横向移动
-
执行
find / -name id_rsa,发现/backup/.ssh/id_rsa可读。 -
复制私钥到本地(
scp),设置权限(chmod 600 id_rsa)。 -
执行
ssh -i id_rsa root@目标IP,成功登录另一服务器。
7. 命令总结(代码段)
- # 虚拟化技术检测
- systemd-detect-virt
- grep 'docker' /proc/1/cgroup
-
- # 系统基本信息
- uname -a
- uname -r
- uname -m
- cat /etc/*-release
- hostname
- uname -n
-
- # 用户信息
- whoami
- id
- cat /etc/passwd
- cat /etc/group
- for i in $(cut -d":" -f1 /etc/passwd); do id $i; done
- w
- users
- last
- grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1 }'
-
- # 环境配置
- env | grep -v 'LS_COLORS'
- echo $PATH
- cat /etc/profile
- cat /etc/shells
-
- # 网络信息
- ifconfig -a
- ip addr show
- arp -a
- route
- netstat -antlp
- netstat -ntpl
- netstat -nupl
- cat /etc/resolv.conf
-
- # 系统进程
- ps aux
- ps aux | grep 'root'
- ps aux | awk '{print $11}' | xargs -I {} ls -l {}
-
- # 特权访问
- cat /etc/sudoers
- echo ' ' | sudo -S -l -k
-
- # cron任务
- ls -la /etc/cron*
- for user in $(getent passwd | cut -f1 -d:); do echo "### Crontabs for $user ####"; crontab -u $user -l; done
- crontab -l
- crontab -l -u root
-
- # 软件信息
- yum list installed # CentOS
- dpkg -l # Debian/Ubuntu
- apt list # Debian/Ubuntu
-
- # 文件枚举
- which nc; which netcat; which nmap; which gcc; which wget
- ls -la /etc/passwd; ls -la /etc/group; ls -la /etc/profile; ls -la /etc/shadow
- find / -perm -u=s -type f
- find / -perm -g=s -type f
- find / -writable ! -user $(whoami) -type f ! -path "/proc/*" ! -path "/sys/*" -exec ls -al {} \;
- find . -name "*.php" -print0 | xargs -0 grep -i -n "pass"
- ls -la /*_history
- find / -name ".*" -type f -path "/home/*" -exec ls -al {} \;
- find / -name "*.ovpn" -type f -path "/home/*" -exec ls -al {} \;
- find / -name id_rsa
8. 总结逻辑与知识点
-
逻辑:
-
信息收集是Linux渗透测试和应急响应的基础,通过系统化收集信息,确定攻击路径或异常点,从而实现提权或防御目标。
-
-
知识点:
-
Linux命令行操作、系统架构、用户和组管理、环境变量配置、网络配置、进程管理、文件权限、定时任务、软件包管理。
-
喜欢本文的请动动小手点个赞,收藏一下,有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!
评论记录:
回复评论: