从内存中窃取未加密的SSH代理密钥
更多互联网新鲜资讯、工作奇淫技巧关注原创【飞鱼在浪屿】(日更新)
文章插图
如果你曾经使用SSH密钥来管理多台计算机 , 很可能已经使用过ssh-agent 。 该工具旨在将SSH密钥保留在内存中 , 从而使用户不必每次都键入密码 。 但是 , 这可能会带来一些安全风险 。 以root身份运行的用户可能具有从内存中提取未加密的SSH密钥并对其进行重构的能力 。
由于需要root用户访问权限 , 因此这种攻击似乎没有用 。 例如 , 攻击者可能能够安装键盘记录器并使用它来获取SSH密钥的密码 。 但是 , 这导致攻击者不得不等待目标键入他们的密码 。
使用SSH代理使用SSH代理的一种常见方法是先运行“ ssh-agent bash” , 然后运行“ ssh-add”以将密钥添加到代理 。 添加后 , 密钥将保留在SSH代理程序的堆栈中 , 直到该过程结束 , 添加了另一个密钥或用户 , 还可以使用-d或-D选项 。 大多数人会运行一次 , 然后忘记它 , 直到需要重新启动 。
从内存中拉出SSH密钥【从内存中窃取未加密的SSH代理密钥】有几种方法可以创建SSH代理内存的副本 。 最简单的方法是使用gdb 。 gdb使用ptrace调用来附加到SSH代理 。 这为gdb提供了创建正在运行的进程的内存转储所必需的特权 。 该grabagentmem.sh脚本 ()提供了自动执行此取出内存快照的方式 。 默认情况下 , 运行时它将为每个SSH代理进程创建00堆栈的内存转储 。 这些文件名为sshagent-PID.stack 。
root@test:/tmp# grabagentmem.sh Created /tmp/SSHagent-17019.stack
如果gdb在系统上不可用 , 则对整个计算机进行内存转储 , 并使用易失性来提取SSH代理进程的堆栈可能是可行的 。 但是 , 此过程当前不在本文档的讨论范围之内 。
从内存转储中解析SSH密钥一旦获得了堆栈的副本 , ?就有可能从该文件中提取密钥 。 但是 , 密钥以与SSH-keygen生成的密钥不同的格式保留在堆栈中 。 这是parse_mem.py脚本()派上用场的地方 。 此脚本需要安装pyasn1 python模块 。 安装完成后 , 可以针对内存文件运行脚本 。 如果该内存文件包含有效的RSA SSH密钥 , 则它将保存到磁盘 。 该工具的未来版本可能支持其他密钥格式 , 例如DSA , ECDSA , ED25519和RSA1 。
root@test:/tmp# parse_mem.py /tmp/SSHagent-17019.stack /tmp/key Found rsa key Creating rsa key: /tmp/key.rsa
然后 , 可以将这个key.rsa文件用作ssh -i的参数 。 这将像原始用户的密钥一样 , 只需要输入密码即可将其解锁 。
获得有效且可用的SSH密钥可以帮助渗透测试人员进一步访问客户端网络 。 在用户帐户以及服务器上的根帐户上 , 同时使用密钥是很常见的 。 服务器也可能配置为仅允许密钥访问 。
- 空调|让格力、海尔都担忧,中国取暖“新潮物”强势来袭,空调将成闲置品?
- 国外|坐拥77件专利,打破国外的垄断,造出中国最先进的家电芯片
- 手机基带|为了5G降低4G网速?中国移动回应来了:罪魁祸首不是运营商
- 通气会|12月4~6日,2020中国信息通信大会将在成都举行
- 王文鉴|从工人到千亿掌门人,征服华为三星,只因他36年只坚持做一件事
- 中国|浅谈5G移动通信技术的前世和今生
- 操盘|中兴统一操盘中兴、努比亚、红魔三大品牌
- Blade|售价2798元 中兴Blade 20 Pro 5G手机发布 骁龙765G配四摄
- 健身房|乐刻韩伟:产业互联网中只做单环节很难让数据发挥大作用
- 垫底|5G用户突破2亿:联通垫底,电信月增700万,中国移动有多少?