1. Ludwigshafener Sicherheitsforum

Am Dienstag, den 4.11.2014 findet im Rahmen der Ludwigshafener Sicherheitstage das erste Ludwigshafener Sicherheitsforum statt.

Das Thema der zweistündigen Diskussionsrunde lautet »Datensicherheit – Realität oder Illusion?«. Meinereiner hat die Ehre, das hochkarätig besetzte Podium ergänzen zu dürfen.

CheckDMARC now analyzes SPF policies, too

As SPF is a base technology for DMARC this was just a small logical step. The script can check for »real« SPF DNS records (which are rarely being used) or the TXT record of a domain for its analysis:

$ ./checkdmarc --help
Check DMARC
Checks all effective TLD subdomains of a given brand for a DMARC record and presents the results.

Synopsis
checkdmarc options... [brand]...

[brand] can be a string like 'gmx' or 'yahoo'.
Temporary files are being left behind in the current working directory for debug reasons.

Options
-c, --cleanup
     Cleanup temporary files.

--dmarc
     Check the DMARC policies for the given brand.

-h, --help
     Show this help.

--spftxt
     Check the TXT records for SPF policies.

--spfspf
     Check the SPF records for SPF policies.

The output for an SPF analysis looks like this:

$ ./checkdmarc --spftxt gmx
This script is going to make several thousand DNS request. Proceed at your own risk, iff you know what you are doing.
Type 'yes' to proceed, anything else to abort.
yes
Running 6567 queries, this may take a while ...
SERVFAIL: 22
connection timed out; no servers could be reached: 7
has no TXT record: 115
NXDOMAIN: 6282
is an alias for: 87
redirect: 28
?all: 2
~all: 7
-all: 11

redirect details:
gmx.at descriptive text "v=spf1 redirect=gmx.net"
gmx.biz descriptive text "v=spf1 redirect=gmx.net"
gmx.com.br descriptive text "v=spf1 redirect=gmx.net"
gmx.ca descriptive text "v=spf1 redirect=gmx.net"
gmx.cc descriptive text "v=spf1 redirect=gmx.net"
gmx.ch descriptive text "v=spf1 redirect=gmx.net"
gmx.cn descriptive text "v=spf1 redirect=gmx.net"
gmx.es descriptive text "v=spf1 redirect=gmx.net"
gmx.eu descriptive text "v=spf1 redirect=gmx.net"
gmx.fr descriptive text "v=spf1 redirect=gmx.net"
gmx.hk descriptive text "v=spf1 redirect=gmx.net"
gmx.ie descriptive text "v=spf1 redirect=gmx.net"
gmx.co.in descriptive text "v=spf1 redirect=gmx.net"
gmx.info descriptive text "v=spf1 redirect=gmx.net"
gmx.it descriptive text "v=spf1 redirect=gmx.net"
gmx.li descriptive text "v=spf1 redirect=gmx.net"
gmx.lu descriptive text "v=spf1 redirect=gmx.net"
gmx.com.my descriptive text "v=spf1 redirect=gmx.net"
gmx.name descriptive text "v=spf1 redirect=gmx.net"
gmx.org descriptive text "v=spf1 redirect=gmx.net"
gmx.ph descriptive text "v=spf1 redirect=gmx.net"
gmx.pt descriptive text "v=spf1 redirect=gmx.net"
gmx.ru descriptive text "v=spf1 redirect=gmx.net"
gmx.se descriptive text "v=spf1 redirect=gmx.net"
gmx.sg descriptive text "v=spf1 redirect=gmx.net"
gmx.tm descriptive text "v=spf1 redirect=gmx.net"
gmx.tw descriptive text "v=spf1 redirect=gmx.net"

?all details:
gmx.ind.br descriptive text "v=spf1 include:_spf.locaweb.com.br include:_spf.google.com ?all"
gmx.lt descriptive text "v=spf1 a mx ptr ?all"

~all details:
gmx.cl descriptive text "v=spf1 +a +mx +ip4:50.97.138.105 +a:relay.mailchannels.net ~all"
gmx.ge descriptive text "v=spf1 a mx ip4:80.77.52.171 ~all"
gmx.co.kr descriptive text "v=spf1 ip4:121.78.236.24 ~all"
gmx.com.mx descriptive text "v=spf1 a mx ptr mx:mail.gmx.com.mx ip4:148.243.230.135 ~all"
gmx.net.pl descriptive text "v=spf1 a mx ip4:85.17.198.170 ip4:85.17.198.172 ~all"
gmx.sk descriptive text "v=spf1 a mx ~all"
gmx.so descriptive text "v=spf1 include:mx.ovh.com ~all"

-all details:
gmx.com descriptive text "v=spf1 ip4:213.165.64.0/23 ip4:74.208.5.64/26 ip4:74.208.122.0/26 ip4:212.227.126.128/25 ip4:212.227.15.0/24 ip4:212.227.17.0/27 ip4:74.208.4.192/26 ip4:82.165.159.0/24 ip4:50.22.171.0/28 -all"
gmx.de descriptive text "v=spf1 ip4:213.165.64.0/23 ip4:74.208.5.64/26 ip4:212.227.126.128/25 ip4:212.227.15.0/25 ip4:212.227.17.0/27 ip4:74.208.4.192/26 ip4:82.165.159.0/24 -all"
gmx.hu descriptive text "v=spf1 +a +mx -all"
gmx.lv descriptive text "v=spf1 +a +mx -all"
gmx.net descriptive text "v=spf1 ip4:213.165.64.0/23 ip4:74.208.5.64/26 ip4:212.227.126.128/25 ip4:212.227.15.0/25 ip4:212.227.17.0/27 ip4:74.208.4.192/26 ip4:82.165.159.0/24 -all"
gmx.bjarkoy.no descriptive text "v=spf1 -all"
gmx.pl descriptive text "v=spf1 ip4:64.111.210.170 ip4:92.61.240.134 -all"
gmx.uz descriptive text "v=spf1 +a +mx -all"
gmx.com.de descriptive text "v=spf1 -all"
gmx.us.org descriptive text "v=spf1 -all"
gmx.co.com descriptive text "v=spf1 -all"

Wahlempfehlung zur Europawahl

Heute in einer Woche kennen wir bereits die ersten Prognosen und Hochrechnungen. Da wird es Zeit für eine Wahlempfehlung. Schließlich bin ich ja als nicht ganz unpolitischer Mensch bekannt. ;-)

Die großen Parteien

Wer mich kennt weiß schon, was ich hier zu Linke, SPD, Grüne, FDP, CDU und CSU schreiben werde: Alle diese Parteien haben sich schon mit diversen lächerlichen Ausreden (Klassiker: »parlamentarische Zwänge«) oder sogar als treibende Kraft an Verschärfungen von Überwachungsgesetzen beteiligt.

Ich bin fest davon überzeugt, dass wir genau den umgekehrten Weg nehmen müssen: Es braucht mehr Freiheit auf dieser Welt. Somit fallen diese Parteien alle durch’s Raster.

Die kleinen Parteien

Ja, ich habe mir auch die kleinen Alternativen angesehen. Immerhin stehen 25 Parteien zur Wahl. Ich verzichte jedoch darauf, euch mit meinem Ablehnungsgrund zu jeder einzelnen davon zu belästigen – das würde sowieso niemanden interessieren – und fasse mich kurz: Auch hier findet sich meiner Meinung nach nichts für mich Passendes.

Sogenannte »Alternative« für Deutschland

Die AfD wird derzeit, wie damals die Piraten, von den Medien hochgepusht. Leider direkt vor einer wichtigen Wahl.

Auch hier fasse ich mich kurz: Blaue Nazis braucht kein Mensch. Eine Partei, die sich rechts der Union positioniert muss sich nicht wundern, wenn sie auch Personen rechts der Union anzieht. Und rechts der Union gibt es nicht mehr viel.

Aussagen von AfD und NPD lassen sich nicht unterscheiden. Und wer meinen Freunden droht Fotos von ihrer Teilnahme an Demonstrationen in »SA-Foren« zu stellen ist und bleibt Antidemokrat.

A propos Freunde: Die AfD zu unterstützen wäre derzeit der schnellste Weg aus meinem Freundeskreis.

Piratenpartei

Meine ehemalige Partei ist derzeit leider auch primär in den Medien, weil sie sich nicht von der Befürwortung von Massenmord distanziert. Und der (sind wir mal positiv eingestimmt) klärende außerordentliche Bundesparteitag ist auch noch weit entfernt.

Auch wenn ich befürchte, dass hier wie so oft keine Richtungsentscheidung gefällt wird wünsche ich der Partei noch immer viel Erfolg. Nur muss diese Entscheidung endlich kommen. Daher wird meine Stimme nicht an die Piraten gehen, um mit einem möglichst schlechten Ergebnis diese Notwendigkeit hoffentlich allen klarzumachen.

Die PARTEI

DiePARTEI-Logo
Es bleibt … Die Partei für Arbeit, Rechtsstaatlichkeit, Tierschutz, Elitenförderung und basisdemokratische Initiative. Kurz: Die PARTEI. Ihr Programm ist … ach, lest es einfach selbst im Spiegel nach.

Die PARTEI ist meine Wahlempfehlung zur Europawahl 2014. Sie besteht, wenn man über das satirische Programm hinwegsieht, aus sozialliberalen Mitgliedern, die auf satirische Art und Weise auf die Missstände in unserem politischen System hinweisen. Im Kommunalwahlkampf nimmt sie derzeit gezielt die Inhaltsleere der Konkurrenz auf’s Korn. Sie ist auch sehr leicht zu finden: Ganz unten auf den Stimmzetteln.

Und wenn man schon keine Partei mehr findet, die sich an Menschenrechten und demokratischen Grundprinzipiel orientiert, ist sie die wahre Alternative bei dieser Wahl.

Kurzum: Sie ist sehr gut!

TLS 1.3 without RSA key transport?

Sometimes I really wish IT media would report more in detail. Everybody was ranting about the Heartbleed TLS vulnerability, but none I know of followed the discussion long enough to see the TLS 1.3 IETF working draft appear. OK, so far it is basically just a copy of RFC 5246 aka »The Transport Layer Security (TLS) Protocol Version 1.2« but this would nevertheless make a good headline in my humble opinion.

And while others are trying to fix current TLS implementations (which is also a very good result from the Heartbleed debates) the IETF working group discusses interesting proposals:

If only I had the time to read the complete discussion …

Determining SSL/TLS capabilities of a mail server

Especially in Germany where the so called »NSA-leaks« by Edward Snowden caught a lot of public attention encryption is becoming more and more popular. Or at least everybody seems to talk about it. And everybody seems to know someone who knows someone who might have encrypted something … well, you get the picture.

In any way the largest ESPs in Germany (Disclaimer: Although I might be associated with one of those I am not in any way an official representative, so all the opinions stated here are my very own and not those of a specific company) have decided to start »Email made in Germany« (EmiG). One piece of EmiG is the promise of encrypted mail transport. In other words. Mail servers should talk with each other using SSL/TLS.

Everybody who had a chance to check out SSL/TLS has found a wonderful world full of security challenges: Each and every SSL/TLS version has different flaws, many, many different cipher suites have been proposed and afterwards broken. I won’t go into all the details here, you could write books about this. Wikipedia is a good place to start.

So I wanted to see a tool to determine the SSL/TLS capabilities of a mail server. At first I did not find one and started to investigate how to write my own.

You can find a lot of those tools for web servers but not for mail. I can only speculate about the reasons for this. Most probably the cause might be due to the fact that to start the SSL/TLS session you usually have to initiate the SMTP session unencrypted and change to an encrypted transmission using the STARTTLS command. Openssl supports this, but the scripting gets more complicated, as you still have to close the connection afterwards. Http is simpler in that regard.

The solution

And then I found this commit to Nmap. Dated just a few days ago. This script is so perfect, you just saved my day!

So, without any further distractions, THIS is what I was searching for.

First let us determine the correct mail server to test:
$ host -t MX gmx.de
gmx.de mail is handled by 10 mx01.emig.gmx.net.
gmx.de mail is handled by 10 mx00.emig.gmx.net.
$ host mx01.emig.gmx.net
mx01.emig.gmx.net has address 213.165.67.97
mx01.emig.gmx.net has address 213.165.67.115

And then … let the show begin:

# nmap --script ssl-enum-ciphers2 -p 25 213.165.67.97

Starting Nmap 6.40 ( http://nmap.org ) at 2014-04-28 22:01 CEST
Nmap scan report for mx01.emig.gmx.net (213.165.67.97)
Host is up (0.0079s latency).
PORT STATE SERVICE
25/tcp open smtp
| ssl-enum-ciphers2:
|   SSLv3:
|     ciphers:
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_RSA_WITH_AES_256_CBC_SHA - strong
|     compressors:
|       NULL
|   TLSv1.0:
|     ciphers:
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_RSA_WITH_CAMELLIA_128_CBC_SHA - strong
|       TLS_RSA_WITH_CAMELLIA_256_CBC_SHA - strong
|     compressors:
|       NULL
|   TLSv1.1:
|     ciphers:
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_RSA_WITH_CAMELLIA_128_CBC_SHA - strong
|       TLS_RSA_WITH_CAMELLIA_256_CBC_SHA - strong
|     compressors:
|       NULL
|   TLSv1.2:
|     ciphers:
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 - strong
|       TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 - strong
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 - strong
|       TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - strong
|       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - strong
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 - strong
|       TLS_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_RSA_WITH_AES_128_CBC_SHA256 - strong
|       TLS_RSA_WITH_AES_128_GCM_SHA256 - strong
|       TLS_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_RSA_WITH_AES_256_CBC_SHA256 - strong
|       TLS_RSA_WITH_CAMELLIA_128_CBC_SHA - strong
|       TLS_RSA_WITH_CAMELLIA_256_CBC_SHA - strong
|     compressors:
|       NULL
|_  least strength: strong

Nmap done: 1 IP address (1 host up) scanned in 2.57 seconds

The results for GMX and also the presentation by this tool: Pure beauty! Thanks a lot for this great piece of software. :-)

And this is how to make it work if your Nmap packages do not yet contain the latest version of this script:

$ mkdir -p ~/.nmap/scripts
$ cd ~/.nmap/scripts
$ wget http://code.metager.de/source/raw/nmap/nmap/scripts/ssl-enum-ciphers.nse
$ mv ssl-enum-ciphers.nse ssl-enum-ciphers2.nse
$ wget http://nmap.org/svn/nselib/tls.lua
$ sudo mv tls.lua /usr/share/nmap/nselib/
$ nmap --script-updatedb

Please note the changed name »ssl-enum-ciphers2.nse« so it does not overwrite the distributed script.