SlideShare a Scribd company logo
1 of 22
Differenzial Analysen in der Praxis



Wie man mit Hilfe von Differenzial Analysen die
     Zufälligkeit von Werten analysiert.

            Florian 'scusi' Walther
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
Ü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
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?
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

●...
Grundlagen


Im Grunde berechnen wir eine saubere drei-
dimensionale Representation unserer ein-
dimensionalen Eingabedaten.

Diese Methode ist wissenschaftlich bekannt unter
dem Namen 'delayed coordinates'.
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.
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.
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]
Nutzung in der Praxis




Die Nutzung in der Praxis zeige ich anhand von
   Sitzungsschlüsseln (Session-ID) in einer
               Webapplikation.
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
Vorgehen 2/5




     Werte vorbereiten und bereinigen.

sed 's/^Cookie: JESSIONID=//' COOKIEFILE |
Vorgehen 3/5


 Werte normalisieren und ggf. umwandeln.

       hexstring2bigint.pl |

      C78D060223A08F9FF1488DE3B93FCF8C
=> 265248606882191698065742702371877670796
Vorgehen 4/5
     Delayed coordinates aller Werte berechnen.

            seq_bigint.pl > cookie.dat
use Math::BigInt;

@seq = ();
@x = @y = @z = ();
while(<>) {
        chomp($val = $_);
        if (length($val) > 0) {
          push(@seq, $val);
        }
}
for ($i = 3; $i < $#seq; $i++) {
        $o = Math::BigInt->new($seq[$i]);
        $m1 = Math::BigInt->new($seq[$i-1]);
        $m2 = Math::BigInt->new($seq[$i-2]);
        $m3 = Math::BigInt->new($seq[$i-3]);
        push(@x, scalar $o->bsub($m1));
        push(@y, scalar $m1->bsub($m2));
        push(@z, scalar $m2->bsub($m3));
}
for ($i = 0; $i < $#seq; $i++) {
        if (defined $x[$i]) {
          print $x[$i] . " " . $y[$i] . " " . $z[$i] . "n";
        }
}
Vorgehen 5/5




          Werte visualisieren

echo 'splot "cookie.dat"' | gnuplot
Ergebnisse interpretieren




Der wichtigste Teil der Übung: Die Ergebnisse
             richtig interpretieren.
Einfaches Inkrement (hoch zählen)
Zeitbasierte Werte
Gute Zufälligkeit
Live Demo




Einfach mal machen...
Fragen?



    Wenn dann jetzt!

      Oder später an:
florian.walther@gmail.com
Danke




Vielen Dank für eure Zeit und Aufmerksamkeit!

More Related Content

Similar to Differenzial Analyse in der Praxis (Florian Walther)

Warum ECMAScript 6 die Welt ein Stückchen besser macht
Warum ECMAScript 6 die Welt ein Stückchen besser machtWarum ECMAScript 6 die Welt ein Stückchen besser macht
Warum ECMAScript 6 die Welt ein Stückchen besser machtSebastian Springer
 
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins Christian Kauhaus
 
Praesentation TYPO3Camp Berlin Speed mit Extbase
Praesentation TYPO3Camp Berlin Speed mit ExtbasePraesentation TYPO3Camp Berlin Speed mit Extbase
Praesentation TYPO3Camp Berlin Speed mit ExtbaseStefan Frömken
 
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...gedoplan
 
Java Streams und Lambdas
Java Streams und LambdasJava Streams und Lambdas
Java Streams und LambdasNane Kratzke
 
Go - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeGo - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeFrank Müller
 
OSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin Grauel
OSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin GrauelOSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin Grauel
OSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin GrauelNETWAYS
 
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2day
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2dayElegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2day
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2dayMario-Leander Reimer
 
In-Memory Computing mit Apache Ignite und Kubernetes
In-Memory Computing mit Apache Ignite und KubernetesIn-Memory Computing mit Apache Ignite und Kubernetes
In-Memory Computing mit Apache Ignite und KubernetesQAware GmbH
 
Expert system webinar 29.6.2017 cogito und deep learning
Expert system webinar  29.6.2017   cogito und deep learningExpert system webinar  29.6.2017   cogito und deep learning
Expert system webinar 29.6.2017 cogito und deep learningStefan Geißler
 
Microservices mit Rust
Microservices mit RustMicroservices mit Rust
Microservices mit RustJens Siebert
 
Skalierbare Anwendungen mit Google Go
Skalierbare Anwendungen mit Google GoSkalierbare Anwendungen mit Google Go
Skalierbare Anwendungen mit Google GoFrank Müller
 
Eine Reise durch den PostgreSQL Optimizer
Eine Reise durch den PostgreSQL OptimizerEine Reise durch den PostgreSQL Optimizer
Eine Reise durch den PostgreSQL Optimizerpsoo1978
 

Similar to Differenzial Analyse in der Praxis (Florian Walther) (20)

Warum ECMAScript 6 die Welt ein Stückchen besser macht
Warum ECMAScript 6 die Welt ein Stückchen besser machtWarum ECMAScript 6 die Welt ein Stückchen besser macht
Warum ECMAScript 6 die Welt ein Stückchen besser macht
 
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
 
Praesentation TYPO3Camp Berlin Speed mit Extbase
Praesentation TYPO3Camp Berlin Speed mit ExtbasePraesentation TYPO3Camp Berlin Speed mit Extbase
Praesentation TYPO3Camp Berlin Speed mit Extbase
 
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
 
Java Streams und Lambdas
Java Streams und LambdasJava Streams und Lambdas
Java Streams und Lambdas
 
Go - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeGo - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare Systeme
 
OSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin Grauel
OSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin GrauelOSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin Grauel
OSMC 2010 | Logverarbeitung mit syslog-ng - Status und Zukunft by Martin Grauel
 
TypeScript
TypeScriptTypeScript
TypeScript
 
Node.js Security
Node.js SecurityNode.js Security
Node.js Security
 
Typescript
TypescriptTypescript
Typescript
 
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2day
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2dayElegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2day
Elegantes In-Memory Computing mit Apache Ignite und Kubernetes. @data2day
 
In-Memory Computing mit Apache Ignite und Kubernetes
In-Memory Computing mit Apache Ignite und KubernetesIn-Memory Computing mit Apache Ignite und Kubernetes
In-Memory Computing mit Apache Ignite und Kubernetes
 
Microbenchmarks - Wer nicht weiß, was er misst misst Mist
Microbenchmarks - Wer nicht weiß, was er misst misst MistMicrobenchmarks - Wer nicht weiß, was er misst misst Mist
Microbenchmarks - Wer nicht weiß, was er misst misst Mist
 
Expert system webinar 29.6.2017 cogito und deep learning
Expert system webinar  29.6.2017   cogito und deep learningExpert system webinar  29.6.2017   cogito und deep learning
Expert system webinar 29.6.2017 cogito und deep learning
 
Explain explain
Explain explainExplain explain
Explain explain
 
Microservices mit Rust
Microservices mit RustMicroservices mit Rust
Microservices mit Rust
 
Skalierbare Anwendungen mit Google Go
Skalierbare Anwendungen mit Google GoSkalierbare Anwendungen mit Google Go
Skalierbare Anwendungen mit Google Go
 
Spark vs. PL/SQL
Spark vs. PL/SQLSpark vs. PL/SQL
Spark vs. PL/SQL
 
Eine Reise durch den PostgreSQL Optimizer
Eine Reise durch den PostgreSQL OptimizerEine Reise durch den PostgreSQL Optimizer
Eine Reise durch den PostgreSQL Optimizer
 
BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen IBIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
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 |
  • 13. Vorgehen 3/5 Werte normalisieren und ggf. umwandeln. hexstring2bigint.pl | C78D060223A08F9FF1488DE3B93FCF8C => 265248606882191698065742702371877670796
  • 14. Vorgehen 4/5 Delayed coordinates aller Werte berechnen. seq_bigint.pl > cookie.dat use Math::BigInt; @seq = (); @x = @y = @z = (); while(<>) { chomp($val = $_); if (length($val) > 0) { push(@seq, $val); } } for ($i = 3; $i < $#seq; $i++) { $o = Math::BigInt->new($seq[$i]); $m1 = Math::BigInt->new($seq[$i-1]); $m2 = Math::BigInt->new($seq[$i-2]); $m3 = Math::BigInt->new($seq[$i-3]); push(@x, scalar $o->bsub($m1)); push(@y, scalar $m1->bsub($m2)); push(@z, scalar $m2->bsub($m3)); } for ($i = 0; $i < $#seq; $i++) { if (defined $x[$i]) { print $x[$i] . " " . $y[$i] . " " . $z[$i] . "n"; } }
  • 15. Vorgehen 5/5 Werte visualisieren echo 'splot "cookie.dat"' | gnuplot
  • 16. Ergebnisse interpretieren Der wichtigste Teil der Übung: Die Ergebnisse richtig interpretieren.
  • 21. Fragen? Wenn dann jetzt! Oder später an: florian.walther@gmail.com
  • 22. Danke Vielen Dank für eure Zeit und Aufmerksamkeit!