Apakah mungkin menemukan host dalam file known_hosts?


115

Saya ingin melihat host apa saja yang ada di file known_hosts saya tetapi tampaknya tidak bisa dibaca manusia. Apakah mungkin untuk membacanya?

Lebih khusus lagi ada host yang dapat saya hubungkan melalui beberapa nama dan saya ingin mencari tahu apa sidik jari yang saya harapkan dari file host yang dikenal.

Pembaruan: Saya menggunakan OpenSSH_5.3p1 Debian-3ubuntu7, OpenSSL 0.9.8k 25 Mar 2009

Baris dari file known_hosts saya terlihat seperti ini,

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

Jika tidak hash, Anda dapat menggunakan: unix.stackexchange.com/questions/236192/…
Benjamin Goodacre

Jawaban:


135

Anda telah HashKnownHostsdiatur ke " yes" dalam ssh_configfile Anda , jadi nama host tidak tersedia dalam plaintext.

Jika Anda tahu nama host yang Anda cari sebelumnya, Anda dapat mencarinya dengan:

    ssh-keygen -H -F hostname

Inilah bagian yang relevan dari ssh-keygen(1)halaman 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.

3
Apakah host hash dikenal pada dasarnya berarti itu tidak mungkin? yaitu saya perlu tahu nama host untuk melihat info itu?
Colin Newell

7
@ColinNewell Benar, Anda perlu tahu nama host. Ini adalah langkah keamanan untuk menjaga penyerang dari memanen nama host / alamat IP kotak lain yang sering Anda kunjungi jika mesin Anda dikompromikan.
pdo

1
Jangan takut ketika tidak ada output sama sekali, tetapi cobalah bukan nama host yang memenuhi syarat tetapi sebaliknya nama host.
matematika

6
Bukan sshd_config, tetapi ssh_config.
Fish Monitor

9
@ po - perintah Anda tidak selalu bekerja. Jika host memiliki SSH pada port selain 22, maka format dalam known_hostsberbeda. Maka Anda harus menggunakan perintah berikut: ssh-keygen -H -F [host.example.com]:2222
Martin Vegter

17

Untuk pencari masa depan, artikel ini (non-disclaimer: Saya tidak terafiliasi) memiliki skrip Perl yang relatif sederhana untuk brute-force IP hash dan hostname di known_hosts.

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

Memungkinkan mulai dari alamat IP tertentu. Bisa juga dengan mudah dimodifikasi untuk menggunakan kamus.

Juga, pada Juni 2014, proyek John the Ripper menambahkan dukungan untuk cracking known_hosts , yang dapat mengambil keuntungan dari beberapa core CPU, GPU, kamus kamus, dll.

Anda juga dapat menggunakan cuplikan nmap ini untuk menghasilkan kamus semua alamat IP RFC1918 untuk digunakan sebagai kamus:

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
Ada juga implementasi python dengan fitur serupa, dapat ditemukan di: blog.tremily.us/posts/known_hosts
Lars Nordin

Lars Nordin, terima kasih atas tipnya. Saya mengirimkan info Remily ke tim John the Ripper, dan mereka menambahkan dukungan untuk ini dalam pendarahan-jumbo: openwall.com/lists/john-users/2014/07/02/2
Royce Williams

1
Dan inilah cara melakukannya dengan hashcat
Royce Williams

4

Apakah ssh-keygen -l -f ~/.ssh/known_hostsmembantu? (Menggunakan -vAnda juga mendapatkan peta harta karun kecil yang bagus, misalnya

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

2
Tidak dalam arti ketat tidak, itu semua masih base64. Penjelasan pdo tentang hashed menunjukkan bahwa ini adalah hal satu arah jadi saya kira saya macet kecuali saya tahu nama hostnya.
Colin Newell

Itu membantu saya. Yang saya inginkan secara spesifik adalah kombinasi. Untuk menemukan sidik jari ssh yang sebelumnya diverifikasi, Anda dapat menjalankan:ssh-keygen -l -f ~/.ssh/known_hosts -F <hostname>
isaaclw

uh, ssh-keygen -l -F <hostname>bahkan lebih sederhana
isaaclw

2

Ada string host / ip di awal setiap baris "known_hosts" (sebelum string "ssh-dss" atau "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
... dan dengan demikian awk '{print $1}' known_hostsmelakukan triknya. Ketahuilah bahwa server yang mendengarkan pada port non-standar berakhir sebagai, katakanlah, [some-server]:5555di known_hosts.
sr_

3
Sayangnya bukan milik saya. Milik saya lebih mirip data yang disandikan base64. Data juga dibatasi pipa di file saya.
Colin Newell

Perangkat lunak ssh mana yang Anda gunakan saat itu (kami berasumsi bahwa Anda menggunakan perangkat lunak openssh yang hampir standar)?
Ouki

Saya telah menambahkan rincian lebih lanjut ke pertanyaan saya.
Colin Newell

7
Seperti yang dinyatakan oleh @pdo, sshd Anda sebagai "HashKnownHosts" diaktifkan, yang mungkin tampak agak anal, tetapi masalah keamanan. Dan tentu saja tidak ada cara untuk membalikkan hash dan mendapatkan nama host dari "hosting_surya" Anda.
Ouki

2

Gunakan -lopsi untuk ssh-keygenmembuat daftar sidik jari, dan -Fopsi untuk mencari nama host di known_hostsfile Anda .

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

Anda dapat menggunakan ssh-keyscanuntuk membandingkan sidik jari Anda known_hostsdengan sidik jari dari server.

$ 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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.