क्या ज्ञात_होस्ट्स फ़ाइल में मेजबानों का पता लगाना संभव है?


115

मैं यह देखना चाहूंगा कि मेरे ज्ञात_होस्ट्स फ़ाइल में मेजबान क्या हैं लेकिन यह मानव पठनीय प्रतीत नहीं होता है। क्या इसे पढ़ना संभव है?

अधिक विशेष रूप से एक मेजबान है जिसे मैं कई नामों के माध्यम से कनेक्ट कर सकता हूं और मैं यह जानना चाहता हूं कि फिंगरप्रिंट मैं अपनी ज्ञात होस्ट फ़ाइल से इसके लिए क्या उम्मीद करता हूं।

अपडेट: मैं OpenSSH_5.3p1 Debian-3ubuntu7, OpenSSL 0.9.8k 25 Mar 2009 का उपयोग कर रहा हूं

मेरी ज्ञात_होस्ट फ़ाइल की एक पंक्ति कुछ इस तरह दिखती है,

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

जवाबों:


134

आप अपनी फ़ाइल में 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 यह सही है, आपको hostname (s) को जानना होगा। यह एक सुरक्षा उपाय है कि आप अपने मशीन से छेड़छाड़ होने पर अक्सर अन्य बॉक्स के होस्टनाम / आईपी पते की कटाई से एक हमलावर को रख सकते हैं।
पोदो

1
जब कोई आउटपुट न हो, तो डरें नहीं, बल्कि पूर्ण योग्य होस्टनाम नहीं बल्कि होस्टनाम का उपयोग करें।
गणित

6
Sshd_config नहीं, लेकिन ssh_config।
मछली मॉनिटर

9
@pdo - आपकी आज्ञा हमेशा काम नहीं करती है। यदि होस्ट में पोर्ट के अलावा अन्य एसएसएच है 22, तो प्रारूप known_hostsअलग है। फिर आपको निम्नलिखित कमांड का उपयोग करना होगा: ssh-keygen -H -F [host.example.com]:2222
मार्टिन वेज्टर

17

भविष्य के खोजकर्ताओं के लिए, इस लेख (गैर-अस्वीकरण: मैं शापित नहीं हूं) के पास आईपी और ब्रूनेश को हूट-फोर्स करने के लिए एक अपेक्षाकृत सरल पर्ल स्क्रिप्ट है known_hosts

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

यह एक विशेष आईपी पते से शुरू करने की अनुमति देता है। शब्दकोश का उपयोग करने के लिए इसे आसानी से संशोधित भी किया जा सकता है।

इसके अलावा, जून 2014 में, जॉन द रिपर प्रोजेक्ट ने ज्ञात_होस्ट क्रैकिंग के लिए समर्थन जोड़ा , जो कि कई सीपीयू कोर, जीपीयू, शब्दकोश मैनबलिंग, आदि का लाभ ले सकता है।

शब्दकोश के रूप में उपयोग करने के लिए सभी 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

1
इसी तरह की विशेषताओं के साथ एक अजगर कार्यान्वयन भी है, इस पर पाया जा सकता है: blog.tremily.us/posts/ogn_hosts
लार्स नॉर्डिन

लार्स नॉर्डिन, टिप के लिए धन्यवाद। मैंने जॉन द रिपर टीम को रेमिली की जानकारी सौंपी, और उन्होंने इसके लिए ब्लीडिंग-जंबो में सपोर्ट जोड़ा: openwall.com/lists/john-users/2014/07/02/2
रॉयस विलियम्स

1
और यहाँ हैशटैग के साथ कैसे किया जाता है: up1ink.tumblr.com/post/132370869368/…
रॉयस विलियम्स

4

ssh-keygen -l -f ~/.ssh/known_hostsमदद करता है? ( -vआप का उपयोग भी अच्छा सा खजाना नक्शे मिल, जैसे

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

2
नहीं सबसे सख्त अर्थ में, यह सब अभी भी base64 है। हैशो के होने के बारे में pdo के स्पष्टीकरण से पता चलता है कि यह एक तरह से बात है इसलिए मुझे लगता है कि मैं तब तक अटका रहा हूँ जब तक मुझे होस्टनाम नहीं पता।
कॉलिन नेवेल

इससे मुझे मदद मिली। मैं विशेष रूप से एक संयोजन चाहता था। पहले से सत्यापित ssh फिंगरप्रिंट खोजने के लिए, आप चला सकते हैं:ssh-keygen -l -f ~/.ssh/known_hosts -F <hostname>
isaaclw

उह, ssh-keygen -l -F <hostname>और भी सरल है
isaaclw

2

प्रत्येक "ज्ञात_होस्ट" लाइन की शुरुआत में होस्ट स्ट्रिंग / आईपी है ("ssh-dss" या "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
... और इस तरह awk '{print $1}' known_hostsचाल चलता है। कि गैर मानक पोर्ट पर सुन सर्वर के रूप में, कहते हैं अंत ध्यान रखें [some-server]:5555में known_hosts
क्रि

3
दुर्भाग्य से मेरा नहीं। मेरा बेस बेस 64 एन्कोडेड डेटा की तरह दिखता है। डेटा भी मेरी फ़ाइल में सीमांकित है।
कॉलिन नेवेल

तब आप कौन से ssh सॉफ़्टवेयर का उपयोग कर रहे हैं (हम मान रहे थे कि आप लगभग-standart ओपनश सॉफ़्टवेयर का उपयोग कर रहे थे)?
ओकी

मैंने अपने प्रश्न में और विवरण जोड़ दिए हैं।
कॉलिन न्यूवेल

7
जैसा कि @pdo ने कहा है, "HashKnownHosts" के रूप में आपके sshd पर सेट किया गया है, जो थोड़ा गुदा दिखाई दे सकता है, लेकिन सुरक्षा चिंता का विषय है। और निश्चित रूप से हैश को उल्टा करने और अपने "ज्ञात_होस्ट" से होस्टनाम प्राप्त करने का कोई तरीका नहीं है।
ओखी

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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.