[openssl-dev] Could someone verify my efforts of a scan for the DROWN attack?
Brian Reichert
reichert at numachi.com
Wed Mar 30 16:27:47 UTC 2016
I'm applying the advice from this post:
https://mta.openssl.org/pipermail/openssl-dev/2016-March/005602.html
I've successfully downloaded and compiled this test utility.
I have a number of varying SSL services I'm scanned; some are Java
apps, and some are linked against OpenSSL.
According to the above URL:
In both cases all the individual tests in the scripts should print "OK"
status if the specific cipher is not supported and report "failed: 0"
together with exit status of 0 if you want to automate it.
>From this, I infer that 'fail' means an SSL connection could indeed
be established using that SSL version/cipher combination. (The code uses
the 'conversation' term, so I'll use that in this post.)
Whereas most of my services come up clean, I have one that I can't
seem to reconfigure such that it passes.
I'm concerned I'm getting bit by false 'failures'.
My actual failing test yields these conversations that 'fail'. I
slightly augmented this script to report the 'failed' conversation:
else:
print("BAD {0} ...".format(conversation_name))
bad+=1
# PYTHONPATH=. python scripts/test-sslv2-force-cipher.py \
-h localhost -p 10000 > out
# grep BAD out
BAD Connect with SSLv2 EXP-RC4-MD5 ...
BAD Connect with SSLv3 EXP-RC4-MD5 ...
BAD Connect with SSLv3 EXP-RC2-CBC-MD5 ...
BAD Connect with SSLv2 EXP-RC2-CBC-MD5 ...
Each failed conversation yields a 'TLSIllegalParameterException'
error; e.g.
Connect with SSLv2 EXP-RC4-MD5 ...
Error encountered while processing node <tlsfuzzer.expect.ExpectServerHello2
object at 0x2b3e590> (child: <tlsfuzzer.messages.ClientMasterKeyGenerator
object at 0x2b3e710>) with last message being: None
Error while processing
Traceback (most recent call last):
File "scripts/test-sslv2-force-export-cipher.py", line 109, in main
runner.run()
File "/root/tlsfuzzer/tlsfuzzer/runner.py", line 129, in run
header, parser = self.state.msg_sock.recvMessageBlocking()
File "/root/tlsfuzzer/tlslite/messagesocket.py", line 100, in
recvMessageBlocking
for res in self.recvMessage():
File "/root/tlsfuzzer/tlslite/messagesocket.py", line 82, in recvMessage
for ret in self.recvRecord():
File "/root/tlsfuzzer/tlslite/recordlayer.py", line 682, in recvRecord
for result in self._recordSocket.recv():
File "/root/tlsfuzzer/tlslite/recordlayer.py", line 188, in recv
for record in self._recvHeader():
File "/root/tlsfuzzer/tlslite/recordlayer.py", line 165, in _recvHeader
"Malformed record layer header")
TLSIllegalParameterException: Malformed record layer header
When I test for each of these SSL version/ciphers individually using
s_client, they all fail; e.g.:
# openssl s_client -connect localhost:10000 -ssl2 \
-cipher EXP-RC4-MD5 > /dev/null; echo $?
error setting cipher list
140548678301512:error:1410D0B9:SSL routines:SSL_CTX_set_cipher_list:no
cipher match:ssl_lib.c:1314:
1
So - are the python-based tests really failing in my case?
For example, hitting port 80, which isn't SSL-enabled at all, also yields
the TLSIllegalParameterException error, and a non-zero exit status:
# PYTHONPATH=. python scripts/test-sslv2-force-export-cipher.py \
-h localhost -p 80 | grep TLSIllegalParameterException
TLSIllegalParameterException: Malformed record layer header
TLSIllegalParameterException: Malformed record layer header
TLSIllegalParameterException: Malformed record layer header
TLSIllegalParameterException: Malformed record layer header
TLSIllegalParameterException: Malformed record layer header
TLSIllegalParameterException: Malformed record layer header
I do appreciate any feedback on this matter!
--
Brian Reichert <reichert at numachi.com>
BSD admin/developer at large
More information about the openssl-dev
mailing list