Czy można znaleźć hosty w pliku znane_hosty?


115

Chciałbym zobaczyć, jakie hosty znajdują się w moim pliku znane_hosty, ale wydaje się, że nie jest czytelny dla człowieka. Czy można to przeczytać?

Mówiąc dokładniej, istnieje host, z którym mogę się połączyć za pomocą kilku nazw i chcę dowiedzieć się, jakiego odcisku palca oczekuję od mojego znanego pliku hosts.

Aktualizacja: Używam OpenSSH_5.3p1 Debian-3ubuntu7, OpenSSL 0.9.8k 25 marca 2009

Linia z mojego pliku znane_hosty wygląda mniej więcej tak:

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

Jeśli nie jest mieszany, możesz użyć: unix.stackexchange.com/questions/236192/...
— Benjamin Goodacre

Odpowiedzi:


134

W pliku HashKnownHostsustawiono „ yes” ssh_config, więc nazwy hostów nie są dostępne w postaci zwykłego tekstu.

Jeśli znasz nazwę hosta, którego szukasz z wyprzedzeniem, możesz wyszukać ją za pomocą:

    ssh-keygen -H -F hostname

Oto odpowiednia sekcja ze strony podręcznika 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
Czy znane hashujące hosty zasadniczo oznaczają, że nie jest to możliwe? tzn. muszę znać nazwę hosta, aby zobaczyć jego informacje?
— Colin Newell,

7
@ColinNewell Zgadza się, musisz znać nazwy hostów. Jest to środek bezpieczeństwa, aby powstrzymać atakującego przed zbieraniem nazw hostów / adresów IP innych skrzynek, które często odwiedzasz w przypadku naruszenia bezpieczeństwa komputera.
— pdo

1
Nie bój się, gdy w ogóle nie ma danych wyjściowych, ale spróbuj zamiast pełnej nazwy hosta zamiast nazwy hosta.
— matematyka

6
Nie sshd_config, ale ssh_config.
— Fish Monitor

9
@pdo - twoje polecenie nie zawsze działa. Jeśli host ma SSH na porcie innym niż 22, wówczas format w known_hostsjest inny. Następnie musisz użyć następującego polecenia: ssh-keygen -H -F [host.example.com]:2222
— Martin Vegter

17

Dla przyszłych poszukiwaczy ten artykuł (nie zrzeczenie się odpowiedzialności: nie jestem afilowany) zawiera stosunkowo prosty skrypt Perla do brutalnego wymuszania adresów IP i nazw hostów known_hosts.

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

Umożliwia rozpoczęcie od określonego adresu IP. Można go również łatwo zmodyfikować, aby używał słownika.

Ponadto w czerwcu 2014 r. Projekt John the Ripper dodał obsługę crackowania znanych hostów, która może korzystać z wielu rdzeni procesora, procesorów graficznych, manipulacji słownikami itp.

Możesz także użyć tego fragmentu nmap, aby wygenerować słownik wszystkich adresów IP RFC1918, który będzie używany jako słownik:

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
Istnieje również implementacja Pythona z podobnymi funkcjami, można znaleźć na stronie: blog.tremily.us/posts/known_hosts
— Lars Nordin

Lars Nordin, dzięki za wskazówkę. Przesłałem informacje Remily do zespołu Johna Rozpruwacza, a oni dodali wsparcie dla tego w bleeding-jumbo: openwall.com/lists/john-users/2014/07/02/2
— Royce Williams

1
A oto jak to zrobić za pomocą hashcat: up1ink.tumblr.com/post/132370869368/...
— Royce Williams

4

Czy ssh-keygen -l -f ~/.ssh/known_hostspomaga (Korzystając z -vciebie otrzymujesz również ładne małe mapy skarbów, np

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

2
Nie w najściślejszym sensie nie, to wszystko wciąż jest base64. Wyjaśnienie pdo tego, że jest mieszane, sugeruje, że jest to jedna rzecz, więc myślę, że utknąłem, chyba że znam nazwę hosta.
— Colin Newell,

To mi pomogło. To, czego konkretnie chciałem, to połączenie. Aby znaleźć wcześniej zweryfikowany odcisk palca ssh, możesz uruchomić:ssh-keygen -l -f ~/.ssh/known_hosts -F <hostname>
— isaaclw

uh, ssh-keygen -l -F <hostname>jest jeszcze
— prostsze

2

Na początku każdej linii „znane_ hosty” znajduje się ciąg hosta / ip (przed ciągiem „ssh-dss” lub „ssh-rsa”):

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

2
... i tak awk '{print $1}' known_hostsrobi sztuczka. Należy pamiętać, że serwery nasłuchujące na niestandardowych portach kończą się jako, powiedzmy, [some-server]:5555w known_hosts.
— sr_

3
Niestety nie w moim. Mój wygląda bardziej jak dane zakodowane w standardzie base64. Dane są również rozdzielane potokami w moim pliku.
— Colin Newell,

Z jakiego oprogramowania ssh wtedy korzystasz (zakładaliśmy, że używasz prawie standardowego oprogramowania openssh)?
— Ouki,

Dodałem więcej szczegółów do mojego pytania.
— Colin Newell,

7
Jak stwierdził @pdo, twój sshd jako „HashKnownHosts” jest włączony, co może wydawać się nieco analne, ale dotyczy bezpieczeństwa. Oczywiście nie ma sposobu, aby po prostu odwrócić skróty i uzyskać nazwy hostów z „znanych_hostów”.
— Ouki,

2

Użyj -lopcji, aby ssh-keygenwyświetlić listę odcisków palców, oraz -Fopcji wyszukiwania nazwy hosta w known_hostspliku.

$ 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)

Możesz użyć ssh-keyscando porównania odcisku palca w twoim z odciskiem known_hostsz serwera.

$ 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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.