16 Mai 2008

Debian/Ubuntu SSL Vulnerability Scanning für SSL Server

Nachdem ich gestern die SSH Server nach unsicheren Key geprüft hatte, waren heute unsere SSL Server dran. Eine passende Blacklist liefert Ubuntu beim Update im Packet openssl-blacklist mit samt dem passenden Tool mit dem man ein lokales Keyfile überprüfen kann. Leider hilft das nicht bei entfernten Servern weiter und so habe ich heute ein bisschen ge-scripted um auch Remote checken zu können.

Das Script macht nichts anderes als mit dem openssl Kommando s_client das SSL Certificate zu extrahieren und dann dem Modulus des Pub-Key mittels SHA1 Checksumme gegen die Blacklist aus dem
openssl-blacklist Paket zu prüfen:

Hier das Script:


#!/bin/sh

host=$1

if [ x$host != x ] ; then
(echo HEAD / HTTP/1.0\\n\\n; sleep 1) | openssl s_client -connect $host:443 -showcerts > $host.log 2>&1
if ! grep -q "BEGIN CERT" $host.log ; then
echo $host does not present a SSL Certificate
else
fp=`openssl x509 -noout -modulus -in $host.log | sha1sum | cut -c 21-40`
cn=`openssl x509 -noout -subject -in $host.log | sed -e 's/^.*CN=\([^/]*\).*$/\1/'`
if grep -q $fp /usr/share/openssl-blacklist/blacklist* ; then
echo $host \($cn\) blacklisted!
else
echo $host \($cn\) OK
fi
fi
else
echo $0 hostname/ip
fi


Oder als Download auf Google Pages

Update Einfach mal das Script auf www.whitehouse.gov ansetzen. Mal abgesehen dass die URL eine Falschen Hostnamen präsentiert ist das ganz grosses Kino!

15 Mai 2008

Debian/Ubuntu SSL Vulnerability Scanning mit ssh-vulnkey

Da ich (bzw. wir) ein Nutzer von Debian und Ubuntu bin/sind, ist im Moment die Suche nach kompromitierbaren Schlüsseln angesagt. Glücklicherweise liefern sowohl debian als auch Ubuntu ein neues Tool für diesen Zweck mit ssh-vulnkey. Damit kann man zum einen die eigenen Keys Scannen die unter .ssh liegen aber auch die Ausgaben von ssh-keyscan.

Für viele Hosts im eigenen Haus hat man die Schlüssel bereitts in der Datei ~/.ssh/known_hostsLeider liefert das Tool bei der Verwendung auf ~/.ssh/known_hosts keinen brauchbaren Output aber mit ein wenig Hilfe aus der Unix-Toolchest kann man da Abhilfe schaffen:
sed 's/^\([^ ]*\) \(.*\)$/\2 \1/' known_hosts | ssh-vulnkey - | grep COMPRO

Und siehe da eine Hübsche Liste von Hosts die der Ausmerksamkeit bedürfen... Ich bin dann mal weg, ich hab da 51 Hosts die Updates brauchen.

PS: Nicht vergessen bei Debian das Packet openssh-blacklist mitzuinstallieren sonst fehlt die Liste mit den unsicheren Schlüsseln.