实现原理
strace 是一个用于跟踪系统调用和信号的实用工具,它可以在程序执行期间监视和记录系统调用的详细信息。在网络攻防中,通常被攻击者用于记录ssh来源流量,从流量中获取ssh明文密码,从而对内网进行横向渗透或者达到一个权限持久化的效果。
操作步骤
1、查看sshd进程PID
ps -ef | grep sshd #父进程pid
2、使用strace 抓取流量
strace -f -p 2785 -o /tmp/.ssh.log -e trace=read,write,connect -s 2048
以下是该命令的各个选项的解释:
- -f:
-
- 表示跟踪由被跟踪进程(以及由它创建的子进程)执行的系统调用。这是递归跟踪的选项,包括子进程。
- -p 1098:
- -o /tmp/.ssh.log:
-
- 指定 strace 的输出文件路径。这里的输出文件是 /tmp/.ssh.log。
- -e trace=read,write,connect:
-
- 指定要跟踪的系统调用类型,这里是 read(读取)、write(写入)和 connect(连接)。这意味着 strace 会记录这个进程执行的这三种类型的系统调用。
- -s 2048:
-
- 设置 strace 输出的字符串长度上限为 2048 字节。这个选项用于限制 strace 输出中字符串的长度,以防止输出过长。
3、测试,我们使用kali 进行登录
在被控机器上连接ssh,随后查看密码是否被记录
可以看到成功抓取到流量。
如何排查
检查运行中的 strace 进程:
- 使用以下命令检查系统上是否有正在运行的 strace 进程:
pgrep strace
或
ps aux | grep strace
- 这将显示与 strace 相关的进程列表。
查看 strace 进程的命令行参数:
ps -p <进程号> -o cmd
使用 ps 命令查看 strace 进程的命令行参数,以获取更详细的信息
ps -p <strace 进程号> -o ppid= | xargs ps -p -o cmd=
获取 strace 进程的父进程号,并查看该父进程的命令行参数,以了解哪个进程启动了 strace。
原文始发于微信公众号(贝雷帽SEC):【Tips+1】Linux持久化—strace监听ssh来源流量
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论