我想看看我的 known_hosts 文件中有哪些主机,但它似乎不是人类可读的。是否可以阅读它?
更具体地说,我可以通过多个名称连接到一个主机,我想从已知的主机文件中找出我期望的指纹。
更新:我正在使用 OpenSSH_5.3p1 Debian-3ubuntu7,OpenSSL 0.9.8k 2009 年 3 月 25 日
我的 known_hosts 文件中的一行看起来像这样,
|1|guO7PbLLb5FWIpxNZHF03ESTTKg=|r002DA8L2JUYRVykUh7jcVUHeYE= ssh-rsa AAAAB3NzaC1yc2EAAFADAQABAAABAQDWp73ulfigmbbzif051okmDMh5yZt/DlZnsx3DEOYHu3Nu/+THJnUAfkfEc1XkOFiFgbUyK/08Ty0K6ExUaffb1ERfXXyyp63rpCTHOPonSrnK7adl7YoPDd4BcIUZd1Dk7HtuShMmuk4l83X623cr9exbfm+DRaeyFNMFSEkMzztBYIkhpA2DWlDkd90OfVAvyoOrJPxztmIZR82qu/5t2z58sJ6Jm2xdp2ckySgXulq6S4k+hnnGuz2p1klviYCWGJMZfyAB+V+MTjGGD/cj0SkL5v/sa/Fie1zcv1SLs466x3H0kMllz6gAk0/FMi7eULspwnIp65g45qUAL3Oj
Run Code Online (Sandbox Code Playgroud)
pdo*_*pdo 175
您已在文件中HashKnownHosts设置为“ yes” ssh_config,因此主机名在纯文本中不可用。
如果您提前知道要查找的主机名,则可以使用以下命令进行搜索:
ssh-keygen -H -F hostname
# Or, if SSH runs on port other than 22
ssh-keygen -H -F '[hostname]:2222'
Run Code Online (Sandbox Code Playgroud)
这是ssh-keygen(1)手册页中的相关部分:
-F hostname
Search for the specified hostname in a known_hosts file, listing
any occurrences found. This option is useful to find hashed host
names or addresses and may also be used in conjunction with the
-H option to print found keys in a hashed format.
Run Code Online (Sandbox Code Playgroud)
Roy*_*ams 22
对于未来的搜索者,这篇文章(非免责声明:我没有从属关系)有一个相对简单的 Perl 脚本,可以在known_hosts.
http://blog.rootshell.be/2010/11/03/bruteforcing-ssh-known_hosts-files/
它允许从特定的 IP 地址开始。它也可以很容易地修改为使用字典。
此外,在 2014 年 6 月,John the Ripper 项目增加了对 known_hosts 破解的支持,它可以利用多个 CPU 内核、GPU、字典重整等。
总体而言,这是一项类似于密码破解的练习,具有更可预测(或至少受限制)的目标空间。
对于私有 IP,您可以使用此 nmap 片段生成所有 RFC1918 IP 地址的字典以用作字典:
nmap -sL -Pn -n 192.168.0.0/16 172.16.0.0/12 10.0.0.0/8 |\
grep '^Nmap scan report for' | cut -d\ -f5 >ips.list
Run Code Online (Sandbox Code Playgroud)
如果包含公共 IP,则使用规则可能更有效。这个 hashcat 规则集可能需要额外的工作来适应与 JtR 一起工作,但完成了大部分繁重的工作,应该给你一个起点。
主机名对用户和环境更具特殊性,但主机名也有趋势。完全限定的主机名可以在 DNS、/etc/hosts、shell 历史记录等中与任何发现的 IP 地址相关联。由于目标系统可能与主机系统完全无关,因此可以从各种 Internet 范围的扫描工作(例如 Censys)的 DNS 数据中获取公共域和主机名的公共转储。
除了最简单的情况外,在接受的所有答案中,使用 John the Ripper 可能比本地 SSH 解决方案更有效且可扩展性更好。
sr_*_*sr_ 10
有ssh-keygen -l -f ~/.ssh/known_hosts帮助吗?它显示该文件中每个主机的指纹。(使用-v你也可以获得漂亮的小藏宝图,例如
+--[ RSA 2048]----+
| . |
| + . |
| . B . |
| o * + |
| X * S |
| + O o . . |
| . E . o |
| . . o |
| . . |
+-----------------+
Run Code Online (Sandbox Code Playgroud)
使用-l选项ssh-keygen列出指纹,以及-F在known_hosts文件中搜索主机名的选项。
$ ssh-keygen -l -F sdf.org
# Host sdf.org found: line 835 type RSA
2048 6e:cd:53:4f:75:a1:e8:5b:63:74:32:4f:0c:85:05:17 |1|9J47PEllvWk/HJ6LPz5pOB2/7rc=|ld0BtQh5V3NdhBHBwR/ZqSv8bqY= (RSA)
Run Code Online (Sandbox Code Playgroud)
您可以使用您ssh-keyscan的指纹known_hosts与来自服务器的指纹进行比较。
$ ssh-keyscan sdf.org | awk '{print $3}' | base64 -d | openssl md5 -c
# sdf.org SSH-2.0-OpenSSH_7.1
# sdf.org SSH-2.0-OpenSSH_7.1
no hostkey alg
(stdin)= 6e:cd:53:4f:75:a1:e8:5b:63:74:32:4f:0c:85:05:17
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
182746 次 |
| 最近记录: |