BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
Differenzial Analyse in der Praxis (Florian Walther)
1. Differenzial Analysen in der Praxis
Wie man mit Hilfe von Differenzial Analysen die
Zufälligkeit von Werten analysiert.
Florian 'scusi' Walther
2. Credits
Fly out to:
Michael 'lcamtuf' Zalevski (google)
for http://lcamtuf.coredump.cx/oldtcp/tcpseq.html
Randal Acton (ex @stake)
for peer review my research
Van Hauser (thc.org)
for his contributions to this project
FtR (phenoelit.org)
for his contributions to this project
3. Über mich
● Florian 'scusi' Walther
● Wohnhaft in Berlin
● Über 20 Jahre Computererfahrung
● Über 10 Jahre IT-Security Erfahrung
● Seit Mai 2010 Teamlead IT-Security bei VZ
4. Was bringt es ? Oder Warum?
● Kryptografie ist wichtig im Internet und e-business.
● Die Zufälligkeit ist oft wichtiges Kriterium für die Sicherheit.
● Aber wie soll man die Zufälligkeit testen?
5. Einsatzgebiete
Überall dort wo es wichtig ist Werte nutzen zu
können die Dritte nicht kennen dürfen/sollen.
● Sitzungsschlüssel
● Kennungen, z.B. (temporäre) Nutzerkennungen
● Sog. SALT-Werte oder NOUNCEs
● Sog. Aktivierungs URLs
● Sequenznummern z.B. in TCP/IP
●...
6. Grundlagen
Im Grunde berechnen wir eine saubere drei-
dimensionale Representation unserer ein-
dimensionalen Eingabedaten.
Diese Methode ist wissenschaftlich bekannt unter
dem Namen 'delayed coordinates'.
7. Delayed coordinates
Die Methode wird vor allem in der Analyse von
dynamischen Systemen eingesetzt.
Speziell bei non-linearen Systemen sowie zur
Analyse von deterministischem Chaos.
8. Delayed coordinates
Wir gehen davon aus, daß wir nicht vorhandene
Dimensionen rekonstruieren können indem wir
vorherige Werte alz zusätzliche Koordinaten
verwenden können.
9. Delayed coordinates berechnen
Wir berechnen die Differenz von einem Wert zu
seinem Vorgänger sowie zu seinem Nachfolger.
x[n] = s[n-2] - s[n-3]
y[n] = s[n-1] - s[n-2]
z[n] = s[n] - s[n-1]
10. Nutzung in der Praxis
Die Nutzung in der Praxis zeige ich anhand von
Sitzungsschlüsseln (Session-ID) in einer
Webapplikation.
11. Vorgehen 1/5
Eine statistisch ausreichende Menge an
SessionID Werten sammeln.
10.000 sollten es schon mindestens sein!
#!/bin/sh
# gather.sh
while [ 1 ]
do
echo -e „GET / HTTP/1.0nn“ |
nc -vv $1 80 |
grep SESSIONID
done
12. Vorgehen 2/5
Werte vorbereiten und bereinigen.
sed 's/^Cookie: JESSIONID=//' COOKIEFILE |