É possível descobrir os hosts no arquivo known_hosts?

103

Eu gostaria de ver quais hosts estão no meu arquivo known_hosts, mas ele não parece ser legível por humanos. É possível lê-lo?

Mais especificamente, há um host ao qual eu posso me conectar por meio de vários nomes e quero descobrir qual impressão digital eu espero dele em meu arquivo de hosts conhecidos.

Atualização: Estou usando o OpenSSH_5.3p1 Debian-3ubuntu7, o OpenSSL 0.9.8k em 25 de março de 2009

Uma linha do meu arquivo known_hosts é parecida com essa,

|1|guO7PbLLb5FWIpxNZHF03ESTTKg=|r002DA8L2JUYRVykUh7jcVUHeYE= ssh-rsa AAAAB3NzaC1yc2EAAFADAQABAAABAQDWp73ulfigmbbzif051okmDMh5yZt/DlZnsx3DEOYHu3Nu/+THJnUAfkfEc1XkOFiFgbUyK/08Ty0K6ExUaffb1ERfXXyyp63rpCTHOPonSrnK7adl7YoPDd4BcIUZd1Dk7HtuShMmuk4l83X623cr9exbfm+DRaeyFNMFSEkMzztBYIkhpA2DWlDkd90OfVAvyoOrJPxztmIZR82qu/5t2z58sJ6Jm2xdp2ckySgXulq6S4k+hnnGuz2p1klviYCWGJMZfyAB+V+MTjGGD/cj0SkL5v/sa/Fie1zcv1SLs466x3H0kMllz6gAk0/FMi7eULspwnIp65g45qUAL3Oj
    
por Colin Newell 13.02.2012 / 15:11

5 respostas

120

Você tem HashKnownHosts definido como " yes " no arquivo ssh_config , portanto, os nomes de host não estão disponíveis em texto simples.

Se você souber o nome do host que está procurando com antecedência, poderá pesquisá-lo com:

    ssh-keygen -H -F hostname

Aqui está a seção relevante da ssh-keygen(1) página do manual :

 -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.
    
por 13.02.2012 / 16:30
16

Para futuros pesquisadores, este artigo (sem aviso de isenção: não estou afiliado) tem um script Perl relativamente simples para IPs e nomes de host com hash de força bruta em known_hosts .

link

Permite iniciar a partir de um determinado endereço IP. Também poderia ser facilmente modificado para usar um dicionário.

Além disso, em junho de 2014, o projeto John the Ripper adicionou suporte para cracking de known_hosts , que pode aproveitar vários núcleos de CPU, GPUs, mangling de dicionário etc.

Você também pode usar este snippet nmap para gerar um dicionário de todos os endereços IP RFC1918 para usar como dicionário:

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
    
por 14.04.2013 / 07:15
4

O ssh-keygen -l -f ~/.ssh/known_hosts ajuda? (Usando -v você também obtém bons mapas do tesouro, por exemplo,

+--[ RSA 2048]----+
|        .        |
|       + .       |
|      . B .      |
|     o * +       |
|    X * S        |
|   + O o . .     |
|    .   E . o    |
|       . . o     |
|        . .      |
+-----------------+
    
por 13.02.2012 / 16:41
2

Existe um host string / ip no início de cada linha "known_hosts" (antes da string "ssh-dss" ou "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 [...] ==
    
por 13.02.2012 / 15:24
2

Use a opção -l para ssh-keygen para listar impressões digitais e a opção -F para procurar um nome de host no arquivo 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)

Você pode usar ssh-keyscan para comparar a impressão digital em seu known_hosts com a do servidor.

$ 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
    
por 22.06.2017 / 17:42

Tags