known_hosts 파일에서 호스트를 찾을 수 있습니까?


115

known_hosts 파일에 어떤 호스트가 있는지 확인하고 싶지만 사람이 읽을 수있는 것으로 보이지 않습니다. 읽을 수 있습니까?

보다 구체적으로 여러 이름을 통해 연결할 수있는 호스트가 있으며 알려진 호스트 파일에서 지문이 무엇인지 알고 싶습니다.

업데이트 : OpenSSH_5.3p1 Debian-3ubuntu7, OpenSSL 0.9.8k 2009 년 3 월 25 일을 사용하고 있습니다

known_hosts 파일의 라인은 다음과 같습니다.

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

해시되지 않은 경우 다음을 사용할 수 있습니다 : unix.stackexchange.com/questions/236192/…
Benjamin Goodacre

답변:


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 주소를 수집하지 못하도록하는 보안 조치입니다.
pdo

1
출력이 전혀 없을 때 두려워하지 말고 완전한 호스트 이름이 아닌 호스트 이름을 대신 시도하십시오.
math

6
sshd_config가 아니라 ssh_config입니다.
물고기 모니터

9
@pdo-명령이 항상 작동하지는 않습니다. 호스트 이외의 포트에 SSH가있는 경우 22형식 known_hosts은 다릅니다. 다음 명령을 사용해야합니다. ssh-keygen -H -F [host.example.com]:2222
Martin Vegter

17

향후 검색자를 위해이 기사 (면책 조항 : 필자는 아님)는 해시 된 IP 및 호스트 이름을에 무차별 대입하는 비교적 간단한 Perl 스크립트를 사용 known_hosts합니다.

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

특정 IP 주소에서 시작할 수 있습니다. 사전을 사용하도록 쉽게 수정할 수도 있습니다.

또한 2014 년 6 월 John the Ripper 프로젝트 는 known_hosts cracking에 대한 지원을 추가 하여 여러 CPU 코어, GPU, 사전 맹 글링 등을 활용할 수 있습니다.

이 nmap 스 니펫을 사용하여 사전으로 사용할 모든 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/known_hosts
Lars Nordin

라스 노르 딘, 팁 주셔서 감사합니다. 나는 Remily의 정보를 John the Ripper 팀에 제출했으며 bleeding-jumbo : 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
가장 엄격한 의미는 아닙니다. 모두 여전히 base64입니다. pdo의 해시에 대한 설명은 그것이 한 가지 방법이라고 제안하므로 호스트 이름을 모르면 갇혀있는 것 같습니다.
콜린 뉴웰

그것은 나를 도왔다. 내가 구체적으로 원했던 것은 조합이었습니다. 이전에 확인 된 ssh 지문을 찾으려면 다음을 실행하십시오.ssh-keygen -l -f ~/.ssh/known_hosts -F <hostname>
isaaclw

어, ssh-keygen -l -F <hostname>훨씬 더
간단합니다

2

각 "known_hosts"행의 시작 부분에 "ssh-dss"또는 "ssh-rsa"문자열 앞에 호스트 문자열 / 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]:5555known_hosts.
sr_

3
불행히도 내 안에 없습니다. 광산은 base64로 인코딩 된 데이터와 비슷합니다. 내 파일에서 데이터가 파이프로 구분됩니다.
콜린 뉴웰

현재 어떤 ssh 소프트웨어를 사용하고 있습니까?
Ouki

내 질문에 더 자세한 내용을 추가했습니다.
콜린 뉴웰

7
@pdo에서 언급했듯이 sshd는 "HashKnownHosts"로 설정되어 있으며 약간 항문으로 보일 수 있지만 보안상의 문제입니다. 물론 단순히 해시를 뒤집고 "known_hosts"에서 호스트 이름을 얻는 방법은 없습니다.
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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.