Чи можна дізнатися хостів у файлі знаних_хостів?


115

Я хотів би побачити, які хости є у моєму файлі знаних_хостів, але він, здається, не читається людиною. Чи можна це прочитати?

Більш конкретно, є хост, до якого я можу підключитися за допомогою декількох імен, і я хочу дізнатися, який відбиток пальців я очікую від нього з мого відомого файлу хостів.

Оновлення: я використовую OpenSSH_5.3p1 Debian-3ubuntu7, OpenSSL 0.9.8k 25 березня 2009

Рядок з мого файла знаних_хостів виглядає приблизно так,

|1|guO7PbLLb5FWIpxNZHF03ESTTKg=|r002DA8L2JUYRVykUh7jcVUHeYE= ssh-rsa AAAAB3NzaC1yc2EAAFADAQABAAABAQDWp73ulfigmbbzif051okmDMh5yZt/DlZnsx3DEOYHu3Nu/+THJnUAfkfEc1XkOFiFgbUyK/08Ty0K6ExUaffb1ERfXXyyp63rpCTHOPonSrnK7adl7YoPDd4BcIUZd1Dk7HtuShMmuk4l83X623cr9exbfm+DRaeyFNMFSEkMzztBYIkhpA2DWlDkd90OfVAvyoOrJPxztmIZR82qu/5t2z58sJ6Jm2xdp2ckySgXulq6S4k+hnnGuz2p1klviYCWGJMZfyAB+V+MTjGGD/cj0SkL5v/sa/Fie1zcv1SLs466x3H0kMllz6gAk0/FMi7eULspwnIp65g45qUAL3Oj

Якщо це не хеш, ви можете скористатися: unix.stackexchange.com/questions/236192/…
Бенджамін Годакре

Відповіді:


135

У вашому файлі HashKnownHostsвстановлено " yes" ssh_config, тому імена хостів недоступні в простому тексті.

Якщо ви знаєте ім'я хоста, якого ви шукаєте достроково, ви можете шукати його за допомогою:

    ssh-keygen -H -F hostname

Ось відповідний розділ зі 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.

3
Чи знають хеш-хости по суті означає, що це неможливо? тобто мені потрібно знати ім'я хоста, щоб переглянути його інформацію?
Колін Ньюелл

7
@ColinNewell Правильно, вам потрібно знати ім'я хостів. Це запобіжний захід, щоб зловмисник не збирав імена хостів / IP-адрес інших вікон, які ви часто зустрічаєте, якщо ваша машина зламана.
пдо

1
Не бійтеся, коли виходу немає, але спробуйте не повне кваліфіковане ім'я хоста, а ім'я хоста.
математика

6
Не sshd_config, а ssh_config.
Монітор риб

9
@pdo - ваша команда не завжди працює. Якщо хост має SSH на іншому порту 22, то формат у known_hostsінший. Тоді вам доведеться скористатись такою командою: ssh-keygen -H -F [host.example.com]:2222
Мартін Вегтер

17

Для майбутніх пошукових працівників ця стаття (без відмови від відповідальності: я не є афілійованою) має відносно простий скрипт Perl для грубої дії хешованих IP-адрес та імен хостів у known_hosts.

http://blog.rootshell.be/2010/11/03/bruteforcing-ssh-known_hosts-files/

Це дозволяє починати з певної IP-адреси. Його також можна легко змінити, використовуючи словник.

Також у червні 2014 року проект John the Ripper додав підтримку розтріскування відомих_хостів , які можуть скористатися декількома ядрами процесора, GPU, керування словниками тощо.

Ви також можете використовувати цей фрагмент nmap для створення словника всіх IP-адрес RFC1918, який використовується як словник:

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

1
Також є реалізація пітона з подібними функціями, їх можна знайти за адресою: blog.tremily.us/posts/known_hosts
Ларс Нордін,

Ларс Нордін, дякую за пораду. Я передав інформацію про Ремілі команді Джона Різника, і вони додали підтримку для цього у кровотечі-джамбо: openwall.com/lists/john-users/2014/07/02/2
Royce Williams

1
А ось як це зробити з hashcat: up1ink.tumblr.com/post/132370869368/…
Royce Williams

4

Чи ssh-keygen -l -f ~/.ssh/known_hostsдопомагає? (Використовуючи -vтакож ви отримуєте гарні маленькі карти скарбів, наприклад

+--[ RSA 2048]----+
|        .        |
|       + .       |
|      . B .      |
|     o * +       |
|    X * S        |
|   + O o . .     |
|    .   E . o    |
|       . . o     |
|        . .      |
+-----------------+

2
Не в суворому сенсі ні, все це все-таки64. Пояснення хед-файлу pdo наводить на думку, що це одностороння річ, тому я думаю, що я застряг, якщо не знаю імені хоста.
Колін Ньюелл

Це мені допомогло. Чого я конкретно хотів, - це поєднання. Щоб знайти попередньо перевірений відбиток ssh, можна запустити:ssh-keygen -l -f ~/.ssh/known_hosts -F <hostname>
isaaclw

е, ssh-keygen -l -F <hostname>ще простіше
isaaclw

2

На початку кожного рядка "відомі_хости" (перед рядком "ssh-dss" або "ssh-rsa") розміщується string / ip:

hostgn6 ssh-dss AAAB3NzaC1kc3MAAACBAIfGV4+/28Zr+dT/i+ifydUBS0dMRUjCtExIThOj3Yexynu+wSRGjMm4GfF+og2kAljZyUjhBFeM+WYbJzcDSDB [...] ==
yumyumn6.dik6.dir2g.some.net ssh-dss AAAAB3NzaC1kc3MAAACBAIfGV4+/28Zr+dT/i+ifydUBS0dMRUjCtExITh [...] ==

2
... і таким чином awk '{print $1}' known_hostsробить трюк. Майте на увазі, що сервери, які слухають нестандартні порти, закінчуються як, скажімо, [some-server]:5555в known_hosts.
sr_

3
На жаль, не в моєму. Має більше схоже на закодовані дані base64. У моєму файлі також розміщені дані.
Колін Ньюелл

Яке програмне забезпечення ssh ви використовуєте тоді (ми вважали, що ви використовуєте майже стандартне програмне забезпечення opensh)?
Ouki

Я додав більше деталей до свого питання.
Колін Ньюелл

7
Як зазначає @pdo, ваш sshd як "HashKknownHosts" встановлений на, що може виявитися трохи анальним, але питання безпеки є. І звичайно, немає ніякого способу просто змінити хеші та отримати імена хостів від "відомих_хостів".
Ouki

2

Використовуйте -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)

Ви можете використовувати 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.