Monthly Archive for Mai 2008

Advanced Reconnecter für USDownloader

So heute mal ein etwas anderer Eintrag, es geht um mein erstes, in C# geschriebenes, Programm.

Durch den Advanced Reconnecter kann man Steuern nach wievielen Downloads ein Reconnect durchgeführt werden soll. Man kann mit dem Advanced Reconnecter auch eine Datei direkt nach dem Download wieder löschen lassen. Eine Anleitung zur Integration beim USDownloader liegt bei.

Download Advanced Reconnecter

Proof-Of-Concept Version 0.2

Es wird das .Net 2.0 oder höher benötigt, gefunden wird dies auf der Microsoft Webseite. Bei Vista ist Version 3.0 automatisch dabei.

Sicherheit von Algorithmen in Datenbankanwendungen

Es gibt viele Hashverfahren, doch welches ist das richtige?

  • MD5
  • SHA1
  • SHA2
  • Whirlpool
  • RIPEMD-160

Dies sind einige der bekanntesten Hashalgorithmen. Der meistgenannte MD5 gilt mittlerweile als unsicher (für eindeutige Hashwerte, wie man sie z.B. beim Download benutzt). Er ist per Brute-Force-Attacke, Rainbow-Tables zu knacken.

Rainbow-Tables sind Tabellen, in denen Zeichenketten, mit den dazugehörigen MD5-Hashwerten gespeichert sind, somit sind leichte Passwörter wie “Paul” sofort geknackt.

Brute-Force-Attacken entsprechen dem Prinzip “Trail and Error”, es wird solange durchprobiert bis ein entsprechenderString (Zeichenkette) dem MD5-Hashwert zugeordnet werden kann. Bsp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
        // Gesucht ist der entsprechende String zu dem Hashwert: 07159c47ee1b19ae4fb9c40d480856c4
        echo md5("a") . '<br>'; //  Ausgabe: 0cc175b9c0f1b6a831c399e269772661
        echo md5("b") . '<br>'; // 92eb5ffee6ae2fec3ad71c777531578f
        echo md5("c") . '<br>'; // 4a8a08f09d37b73795649038408b5f33
        // ... hier geht es weiter mit d, e, f, g ...
        echo md5("aa") . '<br>'; // 4124bc0a9335c27f086f24ba207a4912
        echo md5("ab") . '<br>'; // 187ef4436122d1cc2f40dc2b92f0eba0
        echo md5("ac") . '<br>'; // e2075474294983e013ee4dd2201c7a73
        // ...
        echo md5("az") . '<br>'; // cc8c0a97c2dfcd73caff160b65aa39e2
        // ...
        echo md5("ba") . '<br>'; // 07159c47ee1b19ae4fb9c40d480856c4
        // Der String war nach 53 Versuchen erfolgreich ermittelt
?>

Bei Groß- und Kleinbuchstaben, Zahlen und Sonderzeichen wächst das ganze exponentiell. Bei einem String mit 2 Stellen, und nur Groß- und Kleinbuchstaben und Zahlen gibt es 3844 möglichkeiten. Selbe Bedingungen nur eine andere Anzahl an stellen:

  • 3 Stellen: 238328 Möglichkeiten
  • 4 Stellen: 14776336 Möglichkeiten
  • 6 Stellen: 56800235584 Möglichkeiten
  • 8 Stellen: 218340105584896 Möglichkeiten
  • 10 Stellen: 839299365868340224 Möglichkeiten

Laut Wikipedia schafft ein aktueller Mitellklasse-Computer 15-25 Millionen Möglichkeiten pro Sekunde. Das entspricht (mit 25 Millionen Sekunden gerechnet):

  • 3 Stellen: 1/100 Sekunde
  • 4 Stellen: 0,6 Sekunden
  • 6 Stellen: 38 Minuten
  • 8 Stellen: 101 Tage
  • 10 Stellen: 388565 Tage

Somit ist Brute-Force, bei langen, komplexen Passwörtern keine gute Möglichkeit.

Die einzelnen Algorithmen im Vergleich:

MD5 - Message-Digest Algorithm 5

  • 128-Bit-Hashwerte
  • Kollisionsfreiheit (=>unsicher)

SHA1 - Secure Hash Algorithm 1

  • 160-Bit-Hashwerte
  • Kollisionsfreiheit (=>unsicher)

SHA2 - Secure Hash Algorithm 2

  • 224-, 256-,384- oder 512-Bit-Hashwerte
  • Keine gelungenen Angriffe bekannt

Whirlpool

  • 512-Bit-Hashwerte
  • Jung und offen
  • Keine gelungenen Angriffe bekannt

RIPEMD-160 - RACE Integrity Primitives Evaluation Message Digest

  • 128-, 160-, 256-, oder 320-Bit-Hashwerte
  • Unverbreitet
  • Offen
  • Keine gelungenen Angriffe bekannt.

Zusammenhang der Algorithmen mit der Sicherheit einer Datenbankanwendung.

Eine sichere Datenbankanwendung braucht zum speichern von Passwörtern einen starken Algorithmus wie Whirlpool. Das alleine reicht für mäßige Sicherheit, doch um eine fast bombensichere Anwendung zu programmieren, sollte man einen sog. Salt einbauen.

1
2
3
<?
hash( 'whirlpool', $salt . $password );
?>

Dieser verhindert, das die, bei schwachen Passwörtern, effektiven Rainbow-Tables benutzt werden können.

Hands On: Logitech Alto

Heute ist sie gekommen meine neue Tastatur, doch sie ist nicht nur eine gewöhnliche Tastatur, sondern ein Laptopständer und USB-Hub (mit Tücken) zugleich.

Die Logitech Alto

Ein paar fröhliche Bilder:

altoundlaptop

Alto und mein Laptop.

numpad

Numpad des Alto’s

infoboard

Infoboard mit Keyboardsperroption

usb

Der erste Eindruck ist sehr gut, der Anschlag ist leise und leicht. Die Sondertasten funktionieren ohne Treiberinstallation. Allerdings merkte ich zu spät das mein Laptop nicht drauf passt, er bleibt auf der vorgesehenen Vorrichtung nicht stehen, deswegen habe ich ein bisschen improvisiert, und den Laptop ein paar Zentimeter nach vorne versetzt wo er einen stabilen halt gefunden hatte. Desweiteren benötigt der USB-Hub ein Netzteil, das man hinzukaufen muss.

Scheinbare Sicherheit - Das Auge trügt

Es gibt Fälle, die einem vermeintlich Sicherheit vortäuschen, als Beispiel soll hier das Windows-Passwort dienen.

Einfachste Methode das Windows Passwort zu knacken:

Es müssen 2 Voraussetzungen gegeben sein, erstens muss der PC Windows XP SP 1 benutzen, denn höhere Versionen sind gepatcht, zweites bei der Installation von Windows XP durfte kein Passwort für den Account “Administrator” angegeben sein.

Wenn diese Bedingungen erfüllt sind ist man nur einen Katzensprung von Root, also Administratorrechten, an dem Opfercomputer entfernt. Der Angreifer startet das Zielsystem im abgesicherten Modus, dies erreicht man, indem man während dem Bootvorgang die F8-Taste drückt und wartet bis ein Auswahlmenü erscheint, der Rest erklärt sich von selbst. Ist der PC erstmal gebootet, braucht der Angreifer nur noch STRG+ALT+ENF drücken, um ein Loginscreen angezeigt zu bekommen, bei dem man den Benutzernamen manuell eingeben kann. Der zuvor sichergestellt passwortlose Administratoraccount kommt nun zum Einsatz, einfach “Administrator” und ein leeres Passwort eingeben und Enter drücken.

Den oben beschrieben Vorgang bekommt sogar ein Laie auf die Reihe, dazu muss man nicht versiert sein. Einfach aber verlässlich, regelmäßig Updates aufspielen, dies verhindert einen so einfachen Angriffsweg. Wie so oft gilt, eine absolute Sicherheit gibt es nicht, ein starkes, langes und vor allem abwechslungsreiches Passwort ist nie fehl am Platz. Man sollte auch bedenken wie viel Zeit man in Sicherheit verschwendet, die nie absolut vollkommen ist, des weiteren sollte man sich im Klaren sein welche Zielgruppe man abwehren will.

HDL 2 Frontend fertig gestellt, Backend folgt bald.

Lange gabs nichts mehr zu hören von dem neuen xaephoschen Flaggschiff, jetzt ist es soweit das HDL 2 Frontend ist (fast) fertig.

Was ist neu?

  • Valides XHTML
  • Schönerer Code
  • Neue, schnellere Datenbankstruktur
  • Sicheres Script
  • Neues Design
  • Verknüpfung zwischen Forum, Blog und HDL

Was fehlt noch?

  • Das Backend, also das Administrationsmenü
  • EPS (Error Protection System)
  • Integration von Javascript / AJAX Frameworks, für eine bessere Usability

Das Design trägt den namen “Weird Heaven” und hat sich gegen das sehr experimentelle “Tiescher” durchgesetzt.

HDLdesigns

Links oben: Weird Heaven

Rechts oben: The Dark - Erster aller Entwürfe

Links unten: Tiescher - Sehr experimentelle Farbwahl

Rechts unten: The Shapeless