Neue Seiten

Posted by admin - 07/03/10 at 12:03 am

Ich habe heute mein altes Laptop angeschmissen und habe mir die ganzen Dateien angeschaut, die sich mit der Zeit dort angesammelt hatten. Es hat sich angefühlt wie eine Zeitreise. Bilder, Scripte, Notizen, Backups usw. Da ist mir aufgefallen, dass ich in der Zeit ziemlich viele kleine (und nützliche?) Programme geschrieben habe. Ich habe mal eine extra Page hier auf dem Blog dafür erstellt. Außerdem habe ich alte Exploits von mir gefunden (SQL Injection und co). Dafür wurde auch eine Page errichtet!

Und für mein aktuelles Interesse, das Analysieren von proprietären Formaten, wurde auch eine Page kreiert :-) Nun sollte man nicht mehr alle meine Posts lesen müssen, um zu wissen, was ich alles erschaffen habe.

Es ist nicht viel, aber vielleicht erfreut das Eine oder Andere irgendjemanden.

If you enjoyed this article please consider staying updated via RSS. Links to your own social media pages could be added here.

Darwintag

Posted by admin - 12/02/10 at 11:02 pm

Darwin-Fisch

Man erkennt es nicht ganz auf dem Bild, aber das soll einen Fisch mit Beinen darstellen. Es ist heute der Darwin-Tag (na, feiert jemand?).

Und es ist wieder Freitag, da könnte ich ja mal wieder bloggen. Ich finde es zwar blöd, ohne ein interessantes Thema irgendwas zu schreiben. Aber ich werde es einfach mal versuchen:

Die Woche über war ich täglich in der Fahrschule. Es wird langsam Zeit für meinen Führerschein. Ich hatte mit 18 angefangen, habe aber lange rumgetrödelt (habe das alles vernachlässigt). Nun bin ich schon 19 und bin immernoch nicht in die Theorieprüfung reingegangen (was sich wohl übernächste Woche ändern wird :-) ).  Wenn ich endlich ein Auto und einen (legalen) Führerschein habe, kann ich mir die 4 Stunden Fahrt täglich in die Fachhochschule und zurück sparen (dauert dann insgesamt nur etwa 50 Minuten). Außerdem habe ich dann Möglichkeiten öfter im Labor und beim Chaosdorf (zum ersten mal) vorbeizuschauen. Vielleicht treffe ich dann auch endlich mal Kabel (und h0yt3r, tmh etc.). Kurz gefasst: ich wäre freier!

Was den unteren Blogeintrag von mir angeht: Bitte nehmt nicht alles wörtlich! Es ist echt unglaublich, wieviel Resonanz das erzeugt hat. Tut wirklich gut zu wissen, dass viele Leute sich damit identifizieren können. :-) Zögert nicht weiterhin eure Erlebnisse mir per Email mitzuteilen. Ich lese das alles sehr gerne!

Zurück zu dem heutigen Thema: Darwin. Es ist erstaunlich wie wenig ich von der Schule über Evolution mitgenommen habe, obwohl ich mich noch daran erinnern kann, jahrelang das Thema im Biologie Unterricht gehabt zu haben. Vor ein paar Monaten als mir das aufgefallen war, stellte ich mir die Frage: Warum? Warum habe ich nichts davon behalten?

Da fiel mir etwas auf: Wir hatten damals im türkisch Unterricht einen ziemlich religiösen Lehrer. Wir haben die türkische Sprache gelernt und nebenbei Religionsunterricht genossen. In der selben Zeit lernten wir etwas über die Evolutionstheorie im Biologie Unterricht. Ich kann mich noch sehr gut an einen Hinweis meines Türkischlehrers erinnern: “Evolution ist eine Lüge! Ihr solltet aber nicht so dumm sein, und den Biologieunterricht verweigern; ihr müsst da durch. Lernt das alles, aber betet vorher zu Gott und erzählt ihm, dass ihr nichts davon glaubt.”

Anders als viele jetzt meinen, war er kein schlechter Mensch. Nur ein typisch religiöser Mensch. Wir mochten diesen Mann sehr. In der damaligen Schule war das typische Szenario: die ausländische Mitschüler wurden (unbewusst) ausgegrenzt. Oder viel eher: die Ausländer haben sich (bewusst) von anderen ausgegrenzt und eigene Gruppen gebildet. Das zeigt sich schon dadurch, dass bei Grillfeiern mit der Schulklasse die Muslime ihr Fleisch selbst kaufen sollten und ähnlichem. Selbst nach so vielen Jahren gibt es zahlreiche Barrieren, die man garnicht mitbedenkt. Und dieser türkischlehrer war einer der wenigen, die uns verstanden. Einer der wenigen türkischen Lehrer die großen Einfluss auf uns hatten. Wir dachten, er versteht uns besser, da er uns näher steht, und uns deswegen besser helfen kann. Ich habe also diesem Mann mehr Vertrauen geschenkt, als jedem anderen. Was er sagte, wurde nicht hinterfragt. Und obwohl dort draußen in der Welt viel Uneinigkeit über den Koran und dessen Interpretation herrschte, schien dieser Mensch alles beantworten zu können.

Als er uns erzählte, die Evolution sei eine Lüge, und sie einfach ins lächerliche zog, waren wir uns auch alle darüber einig, dass die Theorie gänzlich falsch sein musste. “Wenn Menschen aus Affen abstammen, wieso werden dann jetzige Affen nicht zu Menschen? Das ist lächerlich!”, wir kicherten natürlich alle über die Dummheit der Evolutionisten. Es muss ziemlich einfach sein, junge Schüler zu beeinflussen.

Und nun sind mehrere Jahre verflogen und ich beschäftige mich wieder mit diesem Thema. Wieso habe ich es so einfach abgelehnt? Wieso habe ich nicht gerade die Aussagen dieses Mannes hinterfragt? Es ist ziemlich einfach, Menschen zu beeinflussen wenn sie einem vertrauen. Wenn man die einzige Vertrauensperson ist. Die Menschen brauchen wohl mindestens einen Menschen, dem sie bedingungslos alles glauben können; der in ihren Augen immer ehrlich ist.

Okay, anderes Thema: OTRKEY. Ich mache Fortschritte. Ich bin gerade dabei herauszufinden wie die Authentifizierung mit dem Server funktioniert. Es scheint viel Obfuscation verwendet zu werden. Außerdem wird der Hash der MAC-Adresse und der lokalen IP-Adresse verschlüsselt mitgesendet. Wieso? Ich könnte mir vorstellen, dass sie damit Statistiken erstellen, oder es soll eine Art DRM sein? Wie auch immer; sobald mein Decrypter fertig ist, wird niemand gezwungen seine MAC-Adresse oder IP-Adresse mitzusenden (wenn auch nur als Hash). Ich habe momentan nicht die leiseste Ahnung, was für ein Verschlüsselungsalgorithmus verwendet wird, und welcher Schlüssel. Der Code ist leider leer von String-Verweisen [häufig stehen Strings in der exe-Datei die mir Hinweise darauf geben, welcher Algorithmus verwendet wird], sodass ich seit Tagen die Zeit damit verbringe, die CALLs zu benennen. An einigen Stellen sind pfiffige Debugger-Detektoren eingebaut. Ein wirklich sehr nettes Target. Falls ihr weitere Dateiformate und Protokolle kennt, die auf Security-by-Obscurity beruhen, zögert nicht es mir mitzuteilen.

Ich hoffe ich kriege das alles noch fertig, bevor meine Klausurphase (mitte März) beginnt. Sonst wäre ich sehr unkonzentriert beim Lernen. Es sind nur noch wenige Wochen, und ich habe fast keine Ahnung von den ganzen Themen. Wird langsam Zeit, dass ich meinen Arsch bewege.

If you enjoyed this article please consider staying updated via RSS. Links to your own social media pages could be added here.

Fünf Monate

Posted by admin - 05/02/10 at 10:02 pm

Das hier wird wieder ein Weischspülposting. Aber ich scheiss drauf. Ich ziehe mich jedesmal hierhin zurück wenn ich mich schlecht fühle.

Ich lasse gerade meine Finger diese Zeilen weinen. Die Tränen erzeugen einen Blur-Effekt vor meinen Augen. Sie tropfen auf das Notebook, fließen über die Tastatur und trocknen. Meine Finger tanzen über der Tastatur und bilden Wörter auf meinem Blog. Die Wände in diesem Zimmer schreien mich schon seit Stunden an.

Und schon wieder überkommt mich die Lust auf die Straße zu rennen und jedem meinen Mittelfinger zu zeigen. Den Leuten die mich nett finden in die Fresse zu schlagen. Ich bin nicht Mr.Niceguy. Ich will einen Tag den gewaltlosen Widerstand vergessen und jedem ins Gesicht spucken der es verdient hat.

Ich habe heute etwas gelernt. Ich habe eine neue Erfahrung gemacht, obwohl ich diese bereits seit langer Zeit hier auf dem Blog beschreibe: wir bilden uns im Kopf alle eine Fassade voller Lügen um uns die Welt erträglicher zu machen. Als würden wir das Schwierigkeitslevel in einem Spiel einstellen. Und das habe ich die letzten 5 Monate getan. Ich habe einer Person Eigenschaften zugeschrieben, die sie garnicht hat. In dieser Zeit wurde ich von den Menschen bitter enttäuscht. Ich fühle mich bei der Anwesenheit von anderen Menschen nicht mehr wohl. Ich fühle mich nicht “ich selbst”. Ich muss mich verstellen. Lügen. Ich muss der sein, den sie von mir erwarten. Sie mögen diese Hülle von mir sehr gerne. Aber das bin ich nicht. Ich bin jemand komplett anderes. Wenn ich nicht wissen würde, dass sie alle wegrennen würden, wenn sie den wahren Menschen in mir kennen lernen würden, müsste ich nicht mehr lügen. Ich bin ein Schauspieler und die Welt ist meine Bühne.

Ich möchte die Obama Maske absetzen und aufhören dauernd zu grinsen als wäre ich ständig glücklich. Das bin ich nicht. Ich möchte endlich _echten_ Spaß am Leben. Ich möchte nicht mehr träumen. Ich möchte raus aus diesem Zimmer mit Wänden aus Watte. Ich will kalte Wände. Ich möchte, dass es mir weh tut wenn ich meinen Kopf dagegen schlage. Ich möchte mich, verdammt nochmal, nur lebendig fühlen.

Ich fühle mich gerade, als ob ich auf einer Brücke stehen würde. Nachts. Ich breite meine Arme aus wie auf der Titanic. Ich spüre den Wind und das Adrenalin durchringt mich bei dem Gedanken, dass ich jeden moment fallen könnte. Ich definiere das Maß meiner Freiheit durch die Höhe von der ich falle. Vielleicht bin ich wirklich mein Leben lang nur ein Wartender auf einer Brücke. Ich träume ständig davon zu springen, aber schaffe es nicht. Doch kurz vor dem Tod werde ich fliegen. Ich werde grinsen, während meine Arme weit ausgebreitet nicht mehr nach konstanten Objekten ringen, sondern einfach die Leere genießen. Ich werde dem Ende ins Auge sehen, und verdammt nochmal lächeln, bevor ich endlich erlöst werde. Freiheit. Das Wort hat mir schon immer viel bedeutet, und ich kann es heute immernoch nicht definieren.

Kennt ihr die Situation, wenn sich die Probleme alle ansammeln, um urplötzlich aus euch herausgebrüllt zu werden? Ich brülle. Verdammt, und wie ich brülle.Ich hatte schonmal so eine Situation, vor 2 Jahren. Wenn ich mir den Eintrag so durchlese, lasse ich das alles real und schmerzvoll revue passieren und spüre wieder die Gefühle von damals.

Wie immer, umrundet mich sehr laute Musik. Ich habe Angst morgen ohne Musik wieder aufzuwachen, und mit meinen Gedanken allein zu sein. Ich hoffe, einige können sich mit dem Text hier identifizieren.

Damit der ganze Posting nicht jämmerlich wird: Erwartet in den nächsten Tagen einen neuen Decrypter! Ich bin momentan mittendrin OTRKEY zu öffnen. Wenigstens fühle ich mich bei solchen Projekten im gewissen Maße nützlich.

Siehst du alter? Du hast 5 Sekunden einen Fehler gemacht; bei mir hat es 5 Monate gedauert. Wir sind wieder auf dem selben Niveau. Gute Besserung man, das wird schon!

If you enjoyed this article please consider staying updated via RSS. Links to your own social media pages could be added here.

Salzwasser Sauger

Posted by admin - 17/01/10 at 03:01 pm

Düm Di Dum Düm, trararara DIIING. Ich wollte schon immer einen eigenen Introsong haben! Wer komponiert eines für mich? *liebschau*

Mir war gestern langweilig, also nahm ich ein Programm ausseinander! Ich wusste, dass meine Motivation nicht sehr stark war, deswegen wollte ich heute nur ein einfaches Programm operieren. Ich weiß leider nicht mehr von wem der Tipp kam, aber mir fiel eine gewisse Warez Seite ein, die ihre Angebote auf FTP-Server hochluden. Dafür wird ein eigens konstruierter Leecher verwendet. Auf der Webseite (die übrigens genauso hässlich ist wie das Programm) lädt man sich eine verschlüsselte “Mirror-File” herunter, die nur ein paar KB groß ist. Mit dem Leecher kann dieser nun geöffnet werden.

Saltwater - Leecher

Saltwater - Leecher

Wisst ihr nun, was ich mit hässlich meinte?

Die verschlüsselten Dateien haben die Endung “.swl”, deswegen rede ich hier von SWL-Dateien. Wie jeder Reverser weiß, wird zuerst das Programm auf die übliche Art benutzt. Wir klicken unten auf “Open”, es öffnet sich ein Dialogfenster und wir wählen unsere SWL-Datei aus. Nun lädt das Programm diese Datei, und zeigt uns den Inhalt an, sodass wir mit einem Druck auf “Download” das Herunterladen starten können.

So weit, so gut. Ich knackse kurz meine Finger, feuchte meine Lippen an, hole tief Luft, schaue auf die Uhr, merke mir die Zeit, gehe kurz auf die Toilette, hol mir von der Küche eine Tüte Erdnussflips und freue mich auf den Abend.

Als aller erstes will ich schauen, ob das Programm gepackt ist. Dafür verwende ich PEiD. Den entdeckten Packer lasse ich mir durch ein Stück Software automatisch entfernen, denn mir fehlt echt die Lust auf manual unpacking (und das Einlesen in das Thema erst!).

Nun kann ich es ganz bequem in meinen Debugger OllyDbg laden und anfangen. Ich mache mir natürlich Gedanken, wie ich am besten vorgehen soll, um das Geheimnis des Dateiformates zu befreien. Ich werde hier mal die übliche Vorgehensweise von mir schildern:

  1. Dateiformat in einem Hexeditor ansehen um eine ungefähre Idee davon zu kriegen, wie die Datei strukturiert sein könnte.
  2. Herausfinden, an welcher Codestelle der Dateiinhalt eingelesen wird
  3. Herausfinden an welchem Punkt der komplette Inhalt entschlüsselt wurde
  4. Zwischen diesen beiden Stellen an interessant aussehenden Stellen Breakpoints setzen
  5. Etwas im Code tracen (während der Ausführung) um ein Gefühl dafür zu bekommen, was (ungefähr) geschieht
  6. Nach Mustern im Code suchen, die mir Aufschluss darüber geben, WIE entschlüsselt wird (Algorithmus, Schlüssel, etc.)
  7. Wichtige CALLs dokumentieren und benennen um ein besseres Verständnis für den Codeablauf zu haben. Alles was nach einem Schlüssel aussieht, in einer Text-Datei vormerken.
  8. Vermutung aufstellen, und bestätigen durch eine Scriptsprache freier Wahl. Beispielsweise Rijndael im ECB Modus auf die Datei anwenden, und schauen ob das Resultat gut aussieht.
  9. Wenn das allgemeine Verständnis für die Verschlüsslung da ist, einen Decrypter schreiben.

Der erste Schritt ist sehr einfach und ziemlich interessant! In einem Fall war es mir sogar mal möglich, allein durch das Ansehen des Dateiformates im Hexeditor herauszufinden wie es verschlüsselt wurde (ein einfacher XOR mit dem ersten Byte der Datei). Aber hier siehts nicht so aus:

HxD zeigt uns den Inhalt der Datei

Fast die vollständige Datei sieht verkrüppelt aus. Sieht nach Verschlüsselung aus (wer hätte das gedacht?). Allerdings befindet sich am Ende eine Webadresse und eine lange Zahl. Die sehen ziemlich wichtig aus! Eventuell ist es der Schlüssel (oder der Schlüssel wird damit generiert, oder es wird an die Seite versendet und dieser gibt uns den Key, oder es ist ein IV, oder oder oder ….). Wir müssen unbedingt solche Vermutungen aufstellen, damit uns später in dem Flut von Assemblercode Muster auffallen. Wenn wir die Webadresse aufrufen, wird uns eingeredet, es wäre ein 404. Schade, vermutlich wird diese Zahl per POST gesendet, oder so ähnlich.

Mehr ist aus dem alleinigen Ansehen des Dateiinhalt nicht zu entnehmen. Also gehen wir zu Schritt 2 über. Wir müssen herausfinden, an welcher Codestelle die Datei geöffnet wird. So wissen wir die ungefähre Stelle von der Entschlüsselung. Nun, betrachten wir noch einmal, was passiert wenn wir auf “Open” drücken. Es erscheint ein ein Öffnen-Dialog. Wieso versuchen wir nicht genau an dieser Stelle das Programm zu stoppen? Dieser Öffnen-Dialog scheint so ziemlich einzigartig zu sein.

Viele Windowsprogrammierer kennen bereits die API GetOpenFileName. Damit erstellt man dieses schöne Öffnendialog-Fenster das vielen Windows-Usern bekannt ist. Genau dort will ich ansetzen. Also tippe ich unten in die Commandbar von OllyDbg “bp GetOpenFileNameA”. Jetzt kann ich mir sicher sein, dass ich genau dann breake, wenn das Programm die Datei auswählt. Ich lass das Programm laufen, und genau so kommt es!

Schritt 3 ist nicht unbedingt Notwendig, aber dennoch hilfreich. Nach dem Öffnen der Datei zeigt das Programm eine MessageBox. Aha! Dort können wir auch breaken. “bp MessageBoxA”. Halleluja!

In Schritt 4 sollen wir nun interessante Stellen suchen. Dafür bediene ich mich der String-Suchfunktion von Ollydbg. Ich scrolle etwas rum, und finde süße Dinge wie “TDCP_twofish”. Das sieht nach der DCPCrypt Bibliothek für Delphi aus. Und “twofish” ist der Name des Algorithmus! Und von “SHA1″ ist auch die Rede. Eine Hashfunktion, auch schön! Also breake ich an den Stellen, wo diese Strings referenziert werden.

In Schritt 5 und Schritt 6 kann man Stundenlang verweilen. Es macht Spaß zu sehen, wie der Entwickler das Programm entworfen und programmiert hat. Man versteht langsam, wieso er jenes und anderes getan hat. Wenn man verfolgt, was mit den Strings passiert die eingelesen werden, dann erlangt man ziemlich schnell Erfolge. Einer meiner Tricks, um zu verfolgen was mit dem Dateiinhalt geschieht, ist es den Anfang der Datei so zu ändern, dass daraus ein String entsteht (ansonsten wäre es ein binärer Inhalt). Beispielsweise ändere ich die ersten Bytes zu “INHALT” und füge ein 00-Byte hinzu. Nun wird mir Ollydbg immer diesen String anzeigen, wenn irgendwo der Dateiinhalt referenziert wird. Ich trace also gemütlich durch den Code und knabbere ein paar Snacks.

Nach einiger Zeit bringe ich in Erfahrung, dass anscheinend ein Hash von etwas gebildet wird. Der Hash ist 20 Bytes lang. MD5 kann es nicht sein, denn dieses hätte eine Länge von 16 Bytes. Aus Erfahrung weiß ich, dass es sich bei 20 Bytes eigentlich immer um SHA handelt. Aus den Strings entnehme ich folgende (für viele merkwürdig erscheinende) Zeile:

ASCII “abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq”

Wenn man nach dem String googlet, wird man zahlreiche Indizien dafür finden, dass diese merkwürdige Anreihung von Buchstaben etwas mit SHA zu tun hat. Da kann ich euch aufklären: Viele der kryptografischen Bibliotheken verwenden einen sogenannten “SelfTest” um sich selbst auf Funktionalität zu testen. Dabei wird der Hash von einem bekannten String erstellt, und mit der (vorgefertigten) richtigen Lösung verglichen. Sind beide gleich, funktioniert die Bibliothek. Und um SHA zu testen, wird (unter anderem) der oben genannte String verwendet. Ich setze also einen Breakpoint in den CALL wo dieser String gelinkt ist, in guter Hoffnung, dass die Library sich bei der initialisierung automatisch selbst testet.

Da ich weiß, dass hier DCPCrypt verwendet wird, bediene ich mich einer sehr guten Methode, um alle wichtigen CALLs zu benennen. Somit wären wir also im siebten Schritt. Ich suche nach Mustern im Code! Zuerst lade ich mir die aktuellste Version dieser Kryptobibliothek herunter. Ich sehe mir die Datei DCPsha1.pas an, um nach einem einfach aussehenden Muster zu suchen. Ich finde die folgende Codezeile:

class function TDCP_sha1.GetHashSize: integer;
begin
Result:= 160;
end;

Das sieht doch sehr schön aus! Eine kurze Funktion, die auch noch mit einer ungewöhnlichen Zahl arbeitet. Diese Funktion gibt die Hashgröße in Bits an, aber das braucht uns eigentlich nicht interessieren (160 Bits / 8 ergibt 20 Bytes, die Größe unseres Hashes!). Nun wollen wir uns überlegen, wie wohl diese obige Funktion in Assembler aussehen könnte. Wenn wir absolut keinen Plan davon hätten, könnten wir uns die Delphi IDE installieren und ein Beispielprogramm mit dieser Library kompilieren (mit zusätzlichen Debuginformationen) und uns dann im Debugger das Resultat anschauen.

Ich kann mir aber bereits denken, wie es in Assembler aussieht. Und zwar so:

mov eax, 0A0
ret

So ungefähr. Also suche ich einfach in Olly nach dieser ersten Zeile. Rechtsklick->Search for->command->”mov eax, 0A0″. Olly wird fündig!

Die aller erste Zeile zeigt meinen Fund (die Funktion "GetHashSize")

Weiter unten sieht man noch einen Teil des SelfTest-Strings. Wir sind also tatsächlich im Code von SHA. Wir drücken nun die Doppelpunkt-Taste auf der Tastatur, und benennen diesen CALL mit “TDCP_sha1.GetHashSize”. Der ein oder andere wird sich nun fragen “Wieso wollen wir unbedingt diese Codestelle wissen?”. Der Grund ist einfach: Die restlichen Funktionen der SHA-Klasse müssen (eigentlich) in der gleichen Reihenfolge wie im Code hier zu finden sein! Im Sourcecode von DCPCrypt folgt nun “TDCP_sha1.SelfTest”. Und “oh Wunder!”, in OllyDBG sehen wir auch direkt nach der GetHashSize Funktion den SelfTest String. Es stimmt also!

Wir machen einen Rechtsklick auf GetHashSize. Find Refernces to->Selected Command. Von den Resultaten wählen wir das Unmarkierte. Wir finden uns an so einer Stelle wieder:

Eine Auflistung aller Methoden, die diese Klasse bietet

Das sieht leer und düster aus. Aber da wir bereits eine dieser Stellen auf unsere GetHashSize-Methode zurückführen können, haben wir eine Ahnung wie wir den Rest der Funktionen benennen können. Wir wählen den nächsten “dd dump.*****” in der Liste, klicken Enter und hüpfen zum nächsten CALL. Es ist der SelfTest. Also benennen wir diesen. Dann gehen wir zum nächsten dd-Eintrag und bennen ihn mit “Init”. Denn dieser wäre die nächste Methode im Source-Code gewesen. Am Ende erhalten wir eine wunderbar dokumentierte Liste:

Methoden, die nun nicht mehr anonym sind! Sie wurden alle mit den richtigen Namen beschmückt.

An wichtigen Stellen setze ich hier ein Breakpoint. “Init”, “Update” und “Final”. So kann ich verfolgen, aus welchem String ein Hash erzeugt wird.

Ich lasse das Programm nun laufen, wähle meine verschlüsselte SWL-Datei und breake bei einem der Methoden. Ich kann den Registern entnehmen, welche Daten/Parameter/Argumente der Methode mitgegeben wurden. So entnehme ich ihm die Information, dass aus dem folgenden String ein SHA1-Hash gebildet wird:

0×010203 + “PWsaltwaterPW” + 0×030201

Es scheint ein konstanter Wert zu sein. Ein Passwort, dass in die EXE eingebrannt wurde. Vermutlich wird der Hash als Key für die Verschlüsselung verwendet. Der Hash der sich ergibt, ist also immer konstant folgender Wert: EB EA FB E3 B6 7F 8E 98 19 EE C8 AC 7C 7A 1C CF 3A FB 4D BA

Das ist cool! Ich muss den Schlüssel also nicht selbst berechnen! (Trotzdem irgendwie langweilig und monoton ….). Ich schreibe mir diesen Key also auf, damit es mir nicht verloren geht, und ich die ganze Suche von vorne starten muss.

Plötzlich fällt mir nach einigen Minute auf, dass ich die SWL-Datei nicht mehr öffnen kann. Das Programm teilt mir mit, dass die Zeit abgelaufen sei! Wie bitte? Die Webseite des Leechers sagt mir folgendes:

Achtung:
SWL-Dateien können nur innerhalb von 60 Minuten nach Empfang geöffnet werden. Es spielt aber keine Rolle, wie lange sie dann geöffnet bleiben.

Aha! Da wir gerade eben herausgefunden haben, dass das Programm einen konstanten Key verwendet, kann ich mir sicher sein, dass nicht der Server uns einen temporären Key liefert, zum entschlüsseln dieser Datei. Es ist also der Leecher selbst, der Clientseitig entscheidet, dass wir die Datei nicht mehr verwenden dürfen. Und genau dafür war wohl die URL und die Nummer am Ende der SWL-Datei. Ich patche also kurz die Codestelle, sodass ich alle SWL-Dateien unendlich lange verwenden kann. Das wäre schonmal aus der Welt!

Wenn wir uns an die String-Funde von gerade erinnern: Es war die Rede von Twofish! Also lassen wir unsere Vermutung von dem Krypto-ANALyzer in PEiD bestätigen. Und dieser ist genau unserer Meinung: Es wird der Twofish-Algorithmus verwendet. Wir gehen genauso vor, wie gerade. Wir suchen nach Mustern. Ich öffne ein paar SourceCodes von DCPCrypt, und suche nach schönen Zeilen, die einzigartig sind.

class function TDCP_blockcipher64.GetBlockSize: integer;
begin
Result:= 64;
end;

Also suche ich nach:

mov eax, 080
retn

und ich lande genau an der richtigen Codestelle. Nun gehe ich genauso vor, wie bei SHA1. Und am Ende habe ich so einiges dokumentiert:

Die Methoden der Verschlüsselung wurden revealed!

Ich breake natürlich an allen interessanten Stellen (so gut wie allen oben genannten). Und ich finde heraus, dass DecryptCBC aufgerufen wird. Somit weiß ich mit sehr hoher Wahrscheinlichkeit dass der CBC-Modus benutzt wird. Nachdem ich bei “Init” und “InitStr” breake (leider auf dem Bild nicht zu sehen), sehe ich im EDX Register den Schlüssel. Und, wie hätte man es sonst erwartet, ist es der Hash den wir oben berechnet hatten!

Schritt 8 => Unsere Vermutung ist also, dass der Dateiinhalt per Twofish entschlüsselt wird. Und der Key ist der konstante Hash, den wir oben herausgefunden hatten. Nun holen wir uns irgendeine Scriptsprache, für die es eine fertige Twofish-Bibliothek gibt. Leider hat es das weder Python (jedenfalls keine funktionierende) noch Ruby. Aber PHP hat mcrypt. Also greiffe ich auf PHP! Ich hatte keine Lust auf PHP, und die Einarbeitung in MCrypt, also habe ich mir schnell von den Beispielcodes etwas zusammenkopiert. Den Decrypter braucht ja sowieso niemand.

Ich finde nur noch kurz heraus, wie die Daten im Plaintext strukturiert sind, damit man sie auslesen kann (alle Daten sind per 0×01 voneinander getrennt. Ganz easy!) und es entsteht (Schritt 9) ein Decrypter:

Entschlüsselt, und sortiert ausgegebener Inhalt der SWL-Datei

Schachmatt! SWL wurde geknackt! :-)

Download

Ein Teil dieses Blogeintrages wurde auf der Toilette verfasst. Normale Menschen lesen Zeitung auf dem Klo. Geeks bloggen. Vermutlich einer der Gründe wieso ich so viel Scheisse auf dem Blog produziere (Ah, ich liebe Wortspiele!)

If you enjoyed this article please consider staying updated via RSS. Links to your own social media pages could be added here.

Genesis

Posted by admin - 01/01/10 at 06:01 pm

Wir befinden uns im Jahre 1999

Ich befinde mich gerade in meiner Grundschulklasse. Mein Klassenlehrer liest ein Buch vor, während wir unser Pausenbrot verdrücken. Da ist diese eine Sabrina neben mir. Sie ist hübsch, nett und sehr klug. Manchmal stelle ich mir vor, sie würde sich zu mir drehen, und mir ihre Liebe gestehen. Wir würden heiraten und Kinder kriegen. Jedesmal wenn sie ausversehen ihr Bein an mir reibt, füttert mich mein Hirn mit Dopamin. Glück ist nur unter Drogen möglich.

In der großen Pause bin ich schweigsam und schieße lieber Fußbälle an die Wand, als mit den anderen zu spielen.

Zurück in der Klasse erzählt der Klassenlehrer etwas über so genanne “Computer”. Er hat zwei dieser Dinger in die Klasse geschleppt und aufgebaut. Sie stehen in der hinteren Ecke. Er erzählt uns, dass derjenige der zuerst mit allen Aufgaben fertig ist, an die Computer gehen darf. Ich weiß nicht mehr, ob mich so ein Computer überhaupt neugierig gemacht hat. Ich war mehr der kleine Super Nintendo und Playstation Spieler.

Nach einer kurzen Weile habe ich alle Aufgaben fertig. Also setzt mich der Lehrer an einen Computer. Er drückt einen Knopf, unten an so einem eckigen Teil. Und der Monitor, welchen ich damals für den ganzen Computer hielt, zeigt das Bootlogo von Windows 95. Nach dem Bootvorgang darf ich einige Sätze und Vokabeln von einem Blatt auf den Computer übertragen. Dafür wurde ein einfaches Textverarbeitungsprogramm benutzt.

Und es machte mir riesen Spaß! Ich tippte wie wild auf der Tastatur, und liebte es, wie ganze Sätze am Computerbildschirm erschienen. Ich wurde immer schneller beim Tippen. Nach einer Weile brachte ich eine Aufgabe, die eigentlich 15 Minuten dauern sollte, in 5 Minuten fertig.

Ich war so stolz auf mich. Zuhause fing ich an, meine Mutter anzubetteln. Ich wollte auch unbedingt einen Computer. Wir waren nicht gerade eine reiche Familie, und Computer waren ziemlich teuer. Ich erinnere mich noch an Sachen wie “Wenn du mir einen Computer kaufst, werde ich für immer glücklich sein!” die ich ihr eintrichterte. Das sagte ich ihr jedesmal. Als ich einen Gameboy wollte, ein Super Nintendo, eine Playstation und vieles andere. Natürlich machte mich keines davon tatsächlich für immer glücklich.

Ich nervte vermutlich stark genug, bis meine Eltern sich entschlossen, mir einen Computer zu kaufen. 2500DM, ein Computer der Marke Schneider. Mit Drucker, Scanner, Monitor und allem drum und dran. Ich schaute wie gebannt auf den Monitor, während mein Onkel Windows 98 installierte. Ich weiß noch wie mein Vater zu mir flüsterte “Schau mal, er ist ein Computer Experte, er verdient sein Geld damit!”. Und ich weiß nicht was er im MS-DOS Modus gemacht hat, aber er tippte komische Sachen auf eine schwarze Oberfläche. Ich fand das so faszinierend. Ich wollte genauso wie er, alles über den Computer wissen. Das Teil sah so mächtig aus. Wie ein Monster Truck den man gebannt ansieht, und sich fragt, wie man ein solches Gerüst unter Kontrolle halten will.

Nach der Installation des Systems waren wir bereit für den ersten Start. Ich erinnere mich noch sehr gut, wie mein Vater mir das erste und einzige mal, etwas über den Computer beibrachte. Er zeigte mir, wohin man drücken muss, damit der Computer sich anschaltet. Mehr wurde mir über den Computer nicht beigebracht. Eines Tages saß ich also alleine vor diesem Monster. Es war das erste mal, dass ich ihn benutzen wollte. Ich hatte die ganze Zeit sehr viel Angst, etwas kaputt zu machen. Ich setzte mich also an den Rechner, suchte den Knopf und betätigte ihn. Der Sound des bootens, dieses gepiepse, erinnert mich heute an das Starten eines Autos. Eine ganze Welt die es zu bereisen gilt, öffnet sich dir.

Ich experimentierte also sehr viel mit diesem Computer herum, und lernte immer mehr Sachen kennen. So langsam wusste ich, wie man Programme startet und bedient. Und ich hatte alles selbst durch learning-by-doing erlernt. Ich war so stolz auf mich. Ich installierte Spiele aus dem Computer-Bild-Spiele Magazin und zockte Tagelang. So langsam hatte ich diese Maschine unter Kontrolle. Meine Macht darüber weitete sich jeden Tag immer mehr aus.

Nach einiger Zeit entdeckte ich das Internet. Ein Modem, Kabel und ich war im Internet. Es war teuer, langsam und ich durfte nicht lange im Netz bleiben. Aber ich liebte es im Internet irgendetwas zu lesen. Ich glaube manchmal, ich könnte jede Information finden, nur indem ich danach suche. Später sah ich bei meinem Onkel wie er per Kazaa Musik aus dem Internet lud. Also tat ich das selbe und fand das total cool. Jetzt wusste ich, woher die ganzen gebrannten Lieder und Spiele herkamen.

Ich verbrachte immer mehr Zeit mit dem Computer. Ich hörte nach einer Weile auf, zum Fußballtraining zu gehen. Und nach 6 Jahren Spielzeit (mit 12 Jahren) war ich komplett von sportlichen Aktivitäten unabhängig. Die Sucht fing an.

Jahr 2005

Heute vor genau fünf Jahren entdeckte ich eine Webseite die verschiedene, vermeintlich illegale, Programme anbot, mit denen man angeblich Personen ausspionieren könne. Keines der Programme lieferte mir die gewollten Resultate. Ihr kennt das; man möchte beispielsweise die Adresse einer Person eingeben, auf einen Button drücken, und ihn “hacken”. Dabei wusste man nichteinmal, was “hacken” bedeutet, und was beim “hacken” eigentlich passiert.

Ich gab nicht auf, und konzentrierte mich weiter darauf, irgendwann sowas cooles mit dem Computer zu können. Ich konnte damals ja bereits Windows 98 in und auswendig. Kannte jeden Trick, jede Einstellungsmöglichkeit. Aber ich hörte nicht auf, daran zu glauben, dass man mit einem Internetzugang mehr anrichten konnte, als nur Webseiten zu besuchen. Man hörte doch im Fernsehen immer von diesen gefährlichen Hackern.

Wenig später stieß ich auf ein paar angebliche Underground Seiten. Das hörte sich schon ziemlich kriminell und total cool an. Um mich auf dem Forum dort anzumelden, benötigte ich einen Nicknamen. Ich hatte bis dahin bereits immer “Eddy Sino” als Fakenamen benutzt. Aber ein Nickname war das nicht gerade. Also nahm ich einfach “eddy” und fügte hinten mein Alter hinzu. So entstand “eddy14″.

Die Inhalte dieser Webseiten, die unzähligen Tutorials die ich in mich kippte und das Wissen der Personen mit denen ich schrieb, formten mich zu dem, der ich heute bin.

Ich lernte das Programmieren in Delphi und schrieb alle meine Programme darin. Ich lernte viel mehr über den Computer, als ich erwartet hatte. Und jedesmal öffnete sich mir eine weitere Tür, voller Wissen die ich aufsaugen musste. Es wurde mir klar, dass ich doch nicht so viel über den Computer wusste, wie ich annahm.

Jahr 2006

Es war wieder genau am 01.01ten des nächsten Jahres. Also heute vor vier Jahren. Ich experimentierte gerade mit Exploits herum und versuchte zu verstehen wie sie funktionieren. Und plötzlich hatte ich meinen ersten Erfolg. Es war ein Woltlab Burning Board 2.3.1 Exploit den ich benutzte. Es gelang mir, und ich konnte den Hash bei milw0rm cracken lassen. Ich war im Admin-Panel der Webseite, und ich spürte das Adrenalin. Holy Crap, dafür hat sich die ganze Mühe gelohnt. Es war fantastisch. Die Leute kamen gerade herein, um Sylvester und gleichzeitig meinen Geburtstag zu feiern. Das war das tollste Geschenk überhaupt.

Es bannte mich nur noch stärker an den Computer.

In den folgenden Jahren verbesserte ich meine Kenntnisse. Ich saß Tag und Nacht an dem Rechner. Ich konnte Nachts nicht schlafen. Manchmal debuggte ich sogar im Traum. Ich fühlte mich großartig. Man erzählt einem zwar immer, die Schulnoten würden schlechter werden, je länger man vor dem Computer sitzt. Aber bei mir war das genau gegenteilig. Meine Deutschkenntnisse verbesserten sich rasant. Ich war beeindruckt; ich sprang von einer 5 auf eine 2. Ich wurde in Mathematik immer besser. Ich entwickelte so langsam eine Liebe für die Logik. Bald musste man sich ein Wahlpflichtfach aussuchen. Ich entschied mich für Informatik. Obwohl der Lehrer mich nicht sehr mochte, und ironischerweise mich immer doppelt fragte, ob ich etwas verstanden hätte, kam ich mir trotz allem total cool vor. Denn dort saßen Schüler, die genauso die Chance hatten gut zu werden und genau in meinem Alter waren. Und dennoch war ich besser als sie. Auch wenn das arrogant klingt; sowas macht einen glücklich. Wenn man merkt, dass man immerhin in einer Sache mehr zu bieten hat als andere.

Genauso erging es mir auf dem späteren Berufskolleg. Ich nahm an, dass mich dort Menschen erwarten, die mindestens genauso viel Ahnung von Computern haben wie ich. Denn, wer bin ich schon? Im Grunde, weiß ich sehr wenig über Computer. Aber natürlich hatten die meisten keine Ahnung davon. Hatten nur mal gehört, dass Informatiker viel Geld verdienen.

Da war ich also nun. Ein kleiner Nerd der die Lehrer belehrt.

Jahr 2010

Und gerade liege ich hier auf meinem Bett, während die anderen etwas futtern. Schreibe auf meinem Blog, mit meinem Laptop auf dem Schoß.

Was wäre wohl passiert, wenn ich nie einen Computer bekommen hätte? Was für ein Mensch wäre ich geworden? Diese immer wiederkehrenden Fragen quälen mich.

Mittlerweile ändert sich aber meine Interessenrichtung. Ich wollte schon immer Geheimnisse lüften. Ich wollte alles logisch erklären können. Und Computer ermöglichen genau das. Aber ich glaube, momentan tendiere ich mehr in Richtung Naturwissenschaften. Physik, um genau zu sein. Es ist eine Möglichkeit für mich, die Welt logisch zu beschreiben. Das fühlt sich toll an. Mein Kopf dazu zu benutzen, mehr zu tun als mir der Computer erlaubt.

Aber wer weiß? Was mache ich wohl in 10 Jahren? Vielleicht verweile ich immernoch hier, und blogge.

Ich würde sehr gerne lesen, wie ZiuX, Five-Three-Nine, Nemo und die anderen angefangen haben!

If you enjoyed this article please consider staying updated via RSS. Links to your own social media pages could be added here.

Chronische Misanthropie

Posted by admin - 27/11/09 at 08:11 pm

Jährlich erneut berichte ich davon. Und jährlich erneut ist es ein grausamer Tag.

Ich weiß garnicht, wie ich meinen unmut in Zeilen fassen soll. Es liegen 20€ vor mir auf dem Tisch. Geld, das ich zu diesem Feiertag (das man “Opferfest” schimpft) bekommen habe, obwohl ich mich mündlich dagegen gewehrt habe. Aus Höflichkeit liegt es dann doch auf meinem Tisch. Dreckiges Geld. Blutiges Geld. Erbärmlich, wie ich bin, verstecke ich es hinter dem Teller, aus dem ich zuvor Cornflakes gegessen hatte. Ich will es weder sehen, noch wegschmeissen. Ich könnte es spenden, an Tiere. Aus egoistischer Sicht wäre das reizvoll; ein reines Gewissen für einen kleinen Preis. Aber wer weiß schon, wer das Geld bekommt? Und wofür es ausgegeben wird? Letztenendes ist jeder von uns Machtgeil.

Was denkt ihr, wenn ihr an ein Opferfest denkt? Kommt euch nicht auch das klischeehafte Bild eines Urvolkes in den Sinn, welches Menschen an Masten bindet und es dem Vulkangott zum Speisen opfert ? Zumindest mir kommen diese Gedanken. Ich verbinde es mit primitiven Handlungen, ohne jeglichen Sinn. Irgendwelche Völker die darauf hoffen, dass ein übernatürliches Wesen ganz heiss darauf wartet, dass eines seiner selbst erschaffenen Geschöpfe, für ihn wieder getötet wird. Ist unsere Lebensweise wirklich so unnatürlich geworden, dass wir nach so vielen Jahren immernoch das Opfern in der Kultur festigen, nur um nicht zugeben zu müssen, dass wir als Menschen garnicht mehr in der Lage sind, natürlich zu Leben?

Die Natur möchte von uns als Lebewesen etwas ganz anderes. Es ist weder natürlich zu operieren, noch Computer zu benutzen, noch Bücher zu lesen, noch Kleidung zu tragen, noch Alten- und Behindertenheime zu errichten, noch Menschenrechte einzuführen. Medizin ist nicht “natürlich”. Nichtmal scheissen können wir auf natürliche Weise. Es scheint so, als ob uns die Intelligenz mehr zur Last gefallen ist, als es uns geholfen hat. Vielleicht werden wir uns in naher Zukunft wünschen, uns nicht so sehr entwickelt zu haben. Wie einfach wäre das Leben gewesen, wenn wir nicht versuchten, das Leben zu verstehen, sondern es einfach nur zu leben. Wir sind so irritiert davon, dass wir sogar Selbstmordgedanken haben. Wo sind unsere Selbsterhaltungstriebe ?

So sehr wir auch versuchen der Natur gerecht zu werden, letzendlich leben wir als Menschen doch alle unnatürlich. Und wir sind glücklich damit. Gebt es zu, ihr seid weder “natürlich” noch lebt ihr “naturnah”. Wir haben uns unsere eigene Welt, mit eigenen Regeln kreiert; wir leben danach, und es scheint zu funktionieren.

Dennoch klammern wir uns an Rituale; fragen nicht nach, hinterfragen nicht, suchen nicht, deuten nicht, informieren uns nicht. Wir tun es einfach; weil es jeder tut, weil es immer getan wurde und weil es immer getan wird.

Das gilt nicht nur für das Opferfest.

Nebenan laufen im Fernsehen die türkische Nachrichten. Wieder sind Tiere auf die Straßen gerannt. Schon wieder mussten dutzende erschossen werden.

Vor einigen Jahren, als ich noch zu klein war, um das Gesehene zu deuten, war ich live bei einer Schlachtung dabei. In der Türkei, während der Sommerferien. Meine Familie versteckte sich förmlich im Haus, um das Tier nicht zu sehen, während es aus niederwertigen Gründen ins Gras beissen muss. Zum letzten mal. Jemand fängt das Tier, fesselt es. Während es schreit, und eine Vorahnung zu haben scheint, dass gleich etwas passieren wird, richtet der Schächter das Messer auf, und schneidet einen sauberen Schnitt durch den Hals des Tieres. Gerade war es noch am Leben, hat gefuttert. Jetzt liegt es nur noch da, ohne Kopf. Blut fließt. Man nennt es “dreckiges Blut”. (Erinnert mich ein wenig daran, dass man bis ins 20te Jahrhundert glaube, dass das Menstruationsblut giftig sei.) Was die meisten nicht wissen ist, dass es noch einige Sekunden bei vollem Bewusstsein ist. Was es wohl jetzt denkt?

Es wird gewitzelt, dass das Tiere angeblich zu wenig gegessen hätte, und deswegen nur wenig Fleisch hergebe. Wirklich sehr humorvoll, angesichts der Tatsache, dass hinten ein Schaf ohne Kopf rumliegt.

Aber hey, so barbarisch ist das ganze ja garnicht. Und sinnlos auch nicht. Das Fleisch wird an arme Menschen gespendet. Nur, wieso gerade Fleisch? Wieso nicht etwas, wofür kein Tier sterben muss? Wer kommt auf den skurrilen Gedanken, dass man zwangsweise ein Tier töten muss, um einen Menschen satt zu kriegen? Die Menschen vor 1400 Jahren? Sehr wahrscheinlich!

Es ist nicht zu leugnen, dass Fleisch ein sehr guter Lieferant für sehr viele Vitamine ist. Aber in einer Zeit, in der wir sogar Menschen ohne Beine das Laufen beibringen können, sollten wir da nicht ein Stückchen darüber nachdenken, wieso wir immernoch Tiere essen?

Selbst ein Teil der Pythagoräer (der Satz des Pythagoras sollte jedem ein Begriff sein!) lebte vor rund 2500 Jahren vegetarisch. Sogar diese hatten Probleme mit der damaligen Gesellschaft. Tieropfer waren üblich. Um von der Gesellschaft nicht ausgegrenzt zu werden, war es durchaus erlaubt, dennoch Tiere zu opfern. Die gleichen Probleme habe ich 2500 Jahre später immernoch. Ich sehe hier keine Entwicklung.

Die Leute priesen die Barmherzigkeit Gottes an, wie erbarmungsvoll er doch ist, und wie vergebend. Wo ist seine Liebe für die Tiere? Gelehrte erzählen mir, es wäre die Aufgabe eines Nutztieres, von Gott höchstpersönlich auferlegt, für uns zu sterben. Sie seien stolz darauf….

Wer von uns Menschen würde noch an Gott glauben, wenn dieser einem sagen würde, man würde nur Leben, um am Ende geschlachtet zu werden? Einige ganz sicherlich; man siehts ja an den Selbstmordattentätern, wofür sie alles bereit sind, nur um Gott zu dienen. Benutz deinen Kopf. Du bist nicht lustig, wenn du Witze über die “Körnerfresser” machst. Du bist auch nicht mitfühlend, wenn du behauptest, du könntest kein Fleisch essen, wenn du dem Tier beim Sterben zugesehen hast. Du handelst rassistisch, wenn du deine Katze Zuhause beschützt, und Katzenessende Japaner für Abschaum hälst, aber weiterhin (ohne das Recht dazu) Rindfleisch isst. Und du bist auch nicht einfallsreich, wenn du den Beitrag hier durchliest, und den Kommentar bringst “Ich habe jetzt Lust auf ein Steak”. Das ist einfach nur krank.

Dein Gott ist nicht barmherzig, wenn er dir befiehlt Tiere zu töten. Dein Gott ist nicht allwissend, wenn er nicht weiß, dass man sich heutzutage auch ohne Fleisch ernähren kann.

Du lebst nicht natürlicher, wenn du weiterhin Fleisch isst. Weil dein Leben nicht natürlich ist! Ein Löwe jagt seine Beute selbst, tötet es mit seinen Krallen und Zähnen und verspeist es dann, so wie es ist. Es wird nichts gebraten, nichts desinfiziert und gereinigt. Seine Beute wurde nicht künstlich befruchtet, oder künstlich ernährt. Es wurde nicht in Käfige gesperrt und gezüchtet. Der Löwe ist nicht einmal in der Lage, über sein Handeln nachzudenken! Er kauft sein Essen auch nicht im Supermarkt. Wie kannst du dich für Menschenrechte einsetzen, dich gegen den Rassismus wehren, Delfinessende Japaner verurteilen, aber weiterhin unrechtmäßig Tiere essen?

Die Tiere brauchen keinen Schutz. Sie brauchen Rechte.

Verdammt. Ich hasse uns Menschen. Dass wir so blind sind. So grausam. So egoistisch.

Kommentare sind ausgeschaltet. Ich will nichts davon lesen, dass ihr Biofleisch kauft. So einfach werde ich es euch nicht machen, euer Gewissen zu bereinigen. Es geht hier nicht um euer Karma. Es geht um Unrecht.

*update* Da mich nun doch ein dutzend Leute wegen diesem Beitrag angeschrieben haben, möchte ich einige Misinterpretationen von der Welt räumen: In diesem Beitrag beleidige ich *nicht* die Moslems. Ich übe allerhöchstens Kritik; aber viel eher zeige ich einfach nur, wie ich über dieserlei (Opferfest und weitere) Rituale denke. Ihr könnt mir weiterhin gerne mit der Hölle drohen, das macht mir nichts aus. Desweiteren behaupte ich *nicht* dass der Veganismus eine natürliche Ernährungsweise ist. Viel eher will ich aufzeigen, dass es das eben nicht ist (beispielsweise, da B12 supplementiert werden muss), ABER dass diese Tatsache dennoch keine Rolle spielt. Denn letztenendes leben wir alle kein Stück “natürlich” (ja, darüber kann man wiederum streiten). Ich glaube *nicht* dass der Mensch Pflanzenfresser ist, und es ist mir bewusst, dass der Mensch einen Teil seines heutigen Fortschrittes sicherlich seinem Fleischkonsum zu verdanken hat. Das entschuldigt aber nicht, dass wir weiterhin so leben. Und noch ein letztes: in diesem Blog geht es *nicht* nur um Computersicherheit, sondern auch über meine Gedanken (das sollte denen klar sein, die mich schon länger verfolgen … ein Blick in die Kategorieliste hätte aber auch geholfen!). Ich bitte euch, nicht jeden Satz wörtlich zu nehmen, es ist immer etwas Raum für Interpretationen gelassen.

If you enjoyed this article please consider staying updated via RSS. Links to your own social media pages could be added here.

Tanz der Algorithmen

Posted by admin - 07/11/09 at 07:11 pm

Ich fange mit meinen berühmt berüchtigten Worten an: Mir war mal wieder langweilig.

Um genau zu sein, hatte ich wieder Lust, geheime Systeme zu erforschen. Systeme, die ich nicht erforschen darf, und nicht soll. Wie mir mal ein weiser Türke anvertraute: Wir Türken haben einen großen Drang, genau das zu tun, was Verboten ist. Es liegt uns allen im Blut, um es mal mit den Worten des dritten Reiches zu sagen.

Ich blogge heute mal wieder etwas in Richtung Reverse Engineering von proprietären Systemen. Ich werde versuchen, etwas mehr Lehrreiches in mein Posting einzubringen. Also: Aufpassen! :)

Wie in meinem letzten Posting bereits angedeutet, geht es diesmal um Anti-Leech. Ich zitiere mal eine einzige Zeile, die ausreicht, um meine dunklen Augen zum Leuchten zu bringen:

With help of Anti-Leech you can protect your file links using an encrypted communication which will make it impossible for people to see where they actually download from and leave you in total control!

Ein müdes lächeln beschmückt mein Gesicht. Nicht, weil ich meinen Gegner unterschätze, sondern weil ich wirklich müde bin! Ein bisschen Recherche zeigt mir, dass bereits im Jahre 2005 ein Decrypter existierte. Der Programmierer hat anscheinend das Java Plugin von Anti-Leech decompiled, und nachgebaut. Aber ich möchte nocheinmal verlauten lassen, dass ich das alles nur just4fun mache (wen erinnern diese Worte auch, an das hier?). Und nicht, weil meine Arbeit für irgendjemanden wichtig ist.

Ich habe mir also erst einmal angeschaut, was dieses Anti-Leech denn genau ist: Es ist ein Browser-Plugin. Installiert man es, kann man spezielle Downloads, die per Anti-Leech geschützt sind, herunterladen. Der Sinn und Zweck ist, den Ort der Datei geheimzuhalten. Vermutlich ist der Grund, sich vor Abuse zu schützen. Die Dateien sind wohl illegal, und liegen auf Freehostern, die nichts davon wissen. Aber Anti-Leech kann noch mehr: detailierte Statistiken über Downloads, Passwortschutz und Traffickontrolle. Wer macht das ganze Zeug denn total irrsinnigerweise Clientseitig? Ein Server kann das alles, ohne dass der Besucher ein Plugin installieren muss, der auch noch einzig und allein auf Windows Betriebssystemen läuft. Kerckhoff würde lachen. Um mehr über Security by Obscurity zu erfahren, lese meinen alten Post über SFT.

Also habe ich mir das Plugin runtergeladen, installiert und erstmal probiert. Ich kenne nur eine Seite, die Anti-Leech noch benutzt. Mal schnell die Seite aufgerufen, einen Download gestartet, und gestaunt was passiert. Das Plugin erzeugt in meinem Firefox einen neuen Content, der mich den Downloadordner der Datei bestimmen lässt. Ein Button betätigen, und schon wird die Datei heruntergeladen. Die Datei selbst ist auch verschlüsselt, aber mit einem ganz anderen Programm. Dem FLP Loader. Laut meiner damaligen Twitter Nachricht, hatte ich das FLP Format bereits am 12ten Juli diesen Jahres dokumentiert. Die halbe Arbeit war also schon erledigt.

Der nächste Schritt wäre nun, zu prüfen ob das Plugin die einfachste aller Möglichkeiten verhindert: Mit einem Sniffer nachschauen, woher die Datei runtergeladen wird. Es kommt unerwartet: der Sniffer wird nicht erkannt. So einfach wäre die Sicherheit bereits gebrochen. Oder einfach, indem ich dem System ein Proxy schalte, oder einen Sniffer auf einem anderen Rechner im LAN (eventuell sogar auf dem Router?) installiere. Vermutlich auch, wenn ich die HTTP Aufrufe des Programmes einfach redirecte.

Wie auch immer, ich wollte was ganz anderes: Assembler! Eine Tatsache bestätigt meinen Ruf als Freak: Wenn ich Hunger bekomme, dann steigt meine Lust auf das Programmieren sowie das Hacken immens. Ich werde Hungrig nach beidem.

Und ich war hungrig. Man, war ich hungrig, ich hätte ein ganzes Sojapferd verdrücken können. Ich war ein Drogensüchtiger, der die Volumenregelung seines Musikplayers genauso dosiert wie das Volumen seiner Heroinspritze. Gangstas Paradise verführt mich in eine phantastische Welt voller sprechender Schlangen, wovon eines, eine Frau zu dem Genuss einer Frucht verleitet, woraufhin ein bärtiger Magier mich zum Leben auf der Erde verdammt, auf das meine ganze Rasse leide.

Phantasie hilft Zusammenhänge zu verstehen, in einer Welt voller Befehle und Zahlen. Also starte ich den Mainstreamdebugger schlechthin: Ollydbg. Wie Einstein schon einst feststellte, braucht man nur Stift, Papier und seinen Verstand um die Welt zu erforschen. Deswegen stelle ich mir eine schöne Welt vor, in der ich genau das tun kann:

Reverse Engineering im Real-Life

Reverse Engineering im Real-Life

Also fange ich an zu debuggen. Das blöde an diesem Programm ist: es ist ein Plugin. Eine DLL. Ich kann sie zwar in meinen Olly laden, aber ausführen kann ich sie nicht. Also debugge ich meinen Firefox Browser, switche per Kontextmenü zu der DLL und schaue mir vorerst ein paar Strings an.

RSA_private_decrypt returned error

Aha. Sieht ja sehr interessant aus. Vielleicht ein Asymmetrisches Verschlüsselungsverfahren? Das wäre nice, bisher hatte ich damit nichts zu tun! Um einen Blick für RSA Code zu bekommen, habe ich mich in diverse Spezifikationen eingelesen, und mir C Code dazu angeschaut. Mit dem Gedanken, dass ich Codeteile eventuell später beim Debuggen entdecke, und somit meine Vermutung bestätigen kann, dass es sich hier um RSA handelt.

Leider kam heraus, dass dies nicht der Fall ist. Ein paar Breakpoints, und einigen Analysen später, fand ich folgendes heraus: Der Client sendet eine ganz normale GET Anfrage an den Anti-Leech Server (der “normale” Link zur Download Datei, den jeder zu Gesicht bekommt). Allerdings mit einer speziellen Regelung. Es wird ein neuer Eintrag in den Header der HTTP Abfrage eingefügt:

X-AL-User-Agent: ALNN/1.0

AL steht sehr wahrscheinlich für “Anti-Leech”. Erst dann reagiert der Server mit der entsprechenden Antwort, die folgende Zeile im Header enthält:

X-AL-Location: scramble:[Verschlüsselter Inhalt]

Der Inhalt ist nur eine Zeile lang. meistens genau 60 Zeichen lang. Ich habe also als nächstes in den Strings nach dem besagten “scramble”, sowie “X-AL-Location” gesucht, und überall einen Breakpoint gesetzt, wo es nett aussieht. Um noch die Bereiche davor zu analysieren, habe ich einen Breakpoint auf CreateFile erstellt. So sollte es mir möglich sein, genau dann zu breaken, wenn die Datei fertig runtergeladen wurde.

Nun hatte ich eine ungefähre Vorstellung davon, wo genau sich die “geheime” Stelle im Code befindet.

Die Untersuchung der Descramble Funktion führte auf das folgende Ergebnis: Im verschlüsselten String befinden sich einige Stellen, die so aussehen wie: “%35″. Jeder Bereich, der mit einem Prozentzeichen begann, und zwei darauffolgende Zahlen beinhaltete, wurde von der Descramble Funktion seziert. Es ist eigentlich ganz simple. Solche Werte werden einfach (in diesem Fall) durch den ASCII Wert von “35″ ersetzt. So ergibt sich am Ende der normale Ciphertext. Nun gilt es herauszufinden, welcher Verschlüsselungsalgorithmus verwendet wurde, und welcher Schlüssel.

Und genau das ist es, was mir so viele Schmerzen im Arsch bereitet hat (um es mal schlecht übersetzt zu sagen). Die Verzweiflung bringt einen dazu, verrückte Sachen zu tun. Neben mir lag ein Stift, dessen Abdruck man einfach Wegwischen kann. Und vor mir war mein Kleiderschrank. Es kam wie es kommen musste:

Kleiderschrank als Notepad

Mein Kleiderschrank als Notepad

Die Werbung für die Piratenpartei ist unbeabsichtigt! :P

Nun sah ich nur flüchtig über die Verschlüsselungsmethoden hinüber, und hatte ein paar Vermutungen:

Es ist:

-DES

-Triple-DES

-Blowfish

-RSA

-Lupus

Da es niemals Lupus ist, konnte ich das schon rausstreichen. :D

Nachdem ich das Verschlüsselungsverfahren genauestens erforscht und dokumentiert hatte, war ich mir über eines sicher: Es konnte nicht RSA sein. Denn der Schlüssel berechnet sich auf eine Weise, die sehr untypisch (wenn nicht sogar unmöglich) für RSA ist. Mit MD5 aus einem konstanten Wert, dem IV sowie dem Datum, den wir per HTTP selbst mitsenden. Letzteres vermutlich auf Grund der Obfuscation. In Python könnte man es so beschreiben:

  1. const_iv = “\x14\x3f\x71\xfb”
  2. m = hashlib.md5()
  3. m.update(“/dlm_download.php/[FILENAME]&id=[ID]&dyn=[NUMBER]&changename=&netpumperquery=1&mirror=0″)
  4. m.update(“Sat, 31 Oct 2009 22:43:28 GMT”)
  5. a = hashlib.md5()
  6. a.update(m.digest())
  7. a.update(“\x4A\x29\xD1\x8B\xAD\x5B\x58\x79\x35\x8E\x21\x68\x84\xA6\x7C\xB4\x38\xDE\x5B\xF0\x96\x53\x98\xBF\xA3\x07\x91\xF6\x76\x59\x9F\x6D”)
  8. a.update(const_iv)

Wie man im Code sieht, existiert ein IV. Das heißt also, es ist kein ECB Modus.

So blieb nur noch DES, Triple-DES und Blowfish übrig. Der Grund für diese starke Eingrenzung liegt daran, dass ich bemerkt habe, dass es ein block cipher ist. Und zwar einer, mit der Blocklänge von 64 Bit. Eigentlich war ich mir bereits sicher, dass es kein Blowfish ist. Der Krypto ANALyzer von PEiD zeigte mir, dass in der Datei irgendwo die S-Box von DES existiert. Und genau diese wurde von dem Verschlüsselungsalgorithmus referenziert. Vermutung also: Es ist DES, oder Triple-DES. Ich kam mir mittlerweile wie Dr. House vor, der versucht, eine Krankheit zu identifizieren. Ironischerweise verspürte ich Schmerzen an meinem Bein. Das war ein Zeichen Gottes! (Oder es lag daran, dass mein Fahrrad kaputt war, und ich deswegen 3 Stunden zu Fuß laufen musste … Hm, nein sicher nicht, es war garantiert ein Zeichen!)

Um nun den Rest herauszufinden musste ich nur schauen, wie lang der Key ist. Wenn es nur 8 Bytes sind, dann ist es DES (sehr wahrscheinlich). Ansonsten (falls 16 oder 24 Bytes) ist es wohl Triple-DES. Nun, der Key ist aber 32 Bytes lang. Das passt weder zu DES, noch zu Triple-DES. Einige Strings gaben mir aber Hoffnung: Es wurde wohl die Crypto API von OpenSSL verwendet. Nun konnte ich dort nachschauen, ob eine nicht-standartisierte Funktion programmiert wurde, um längere Keys zu verwenden.

Die einzige Möglichkeit die sich erübrigt ist: DES_xcbc_decrypt. Dieser verwendet wohl einen Key, variabler Länge. Da aber dieser Modus von keiner Python Library implementiert wurde, sank meine Motivation auf 0, um einen Decrypter zu schreiben. Nach so vielen Wochen der Arbeit, sollte igendwann Schluss sein. Ich kann also nicht verifizieren, ob meine Vermutung stimmt. Das wäre der letzte Punkt gewesen, um die Doku von Anti-Leech komplett zu machen.

Somit beende ich meine Arbeit an diesem Verschlüsselungssystem, mit dem Gewissen, dieses Target (wenigstens größtenteils) auch besiegt zu haben :) Falls ich den Decrypter irgendwann fertigschreibe, nenne ich es “Leech-Toaster” (der obligatorische Dank an dieser Stelle an n4pster-3D*).

Grüße gehen natürlich auch an kugelfisch (wann kommen mal wieder neue Posts von dir?) dem ich unter anderem verdanke, dass ich mich überhaupt für proprietäre Formate und Protokolle interessiere :)

If you enjoyed this article please consider staying updated via RSS. Links to your own social media pages could be added here.

Müde

Posted by admin - 12/10/09 at 07:10 pm

Ich hatte eigentlich versprochen, jeden Freitag etwas zu bloggen. Aber ich hatte in den letzten Tagen weder die Zeit, noch die Themen um mein Versprechen zu halten!

Ich habe im Moment auch nichts mehr zu berichten. Ich habe mir natürlich wieder ein Target ausgesucht; diesmal ist es ein Verschlüsselungssystem in Plugin Form: Anti-Leech. Dieses Plugin ist eigentlich tot. Ich kenne nur noch ein Projekt, welches Gebrauch davon macht. Aber es geht mir ja (wie immer) nicht um die Notwendigkeit meiner Arbeit, sondern einfach um den Spaß!

Ich habe bereits Anti-Leech gebrochen, mir fehlen nur noch 1-2 Details um einen Decrypter fertig zu stellen. Dann kann ich wieder was in Richtung Security/Reversing bloggen.

Würde das Studium nur nicht so viel Zeit beanspruchen! Aber in der FH läuft alles soweit gut, eigentlich. In der Mensa gibt es leider nichts zu futtern für mich, deswegen erfreue ich mich umso mehr in der Bibliothek an den unmengen an Büchern. Ganz plötzlich habe ich großes Interesse an Mathematik. Ich habe in den letzten Tagen mehrere Bücher verschlungen, die versuchen, die Natur mit Mathematik zu erklären. Wunderschön! Plötzlich scheint die Welt wieder an Farbe zu gewinnen, da ich nun weiss, dass ich wohl einfach nur akzeptieren muss, dass nicht alles so schön symmetrisch ist, wie die Mathematik und der Mensch es gerne haben würde.

Aber wenn man Freunde hat, die Kilometer weit von dir weg wohnen, und trotzdem deine Blog URL in den Boden schreiben, dann kann man ruhig wieder lächeln! :)

Eddys-Blog.6x.to auf dem Boden

Eddys-Blog.6x.to auf den Boden geschrieben

Etwas zu spät, aber wollte nur mal an das vergangene Wui Treffen 2009 erinnern. Ich liebe euch, Nazrek und Blacky! :D

Ich werde jetzt schlafen gehen. So müde …

If you enjoyed this article please consider staying updated via RSS. Links to your own social media pages could be added here.

Vicdani ret

Posted by admin - 24/08/09 at 06:08 pm

Ich freue mich seit Wochen auf meine Ferien. Jetzt ist der Moment, wo ich sie geniessen kann, da ich nun auch endlich an meiner Fachhochschule angenommen wurde.

Aber seit Tagen sitze ich hier in meinem Zimmer, stelle mir selbst Fragen in meinem Kopf. Viele Fragen die meine Realitätswahrnehmung beeinflussen, da sie nicht beantwortet werden können. Ich fühle mich wie mehrfach angeschossen eine Klippe hinunterstürzend; meine Händen ringen nach Standfestigkeit. So hilflos.

Die Welt hat seine Farben verloren. Plötzlich fehlt die Bewegung in meiner Umgebung. Nichts tanzt mehr zu der Melodie der Schönheit. So geschmacklos wie stilles Wasser. Was übrig bleibt, ist nur noch die kalte Wahrheit. Ungeschmückt. Ungelogen.

Brennend; nah an der Kapitulation. Ich möchte lernen. Fragen brennen sich in mein Gewissen. Grauenhafte Bilder suchen mich Heim und irren in meinem Gewissen; sie sprechen zu mir nicht mit Worten, sondern mit schmerzhaften Bissen. Ich rede wieder in Rätseln. Ausschnitte aus Tierquälerei-Videos und Videos über Steinigung von Frauen in islamischen Ländern verfolgen mich. Mir kommen seit Jahren immer wieder die Tränen, egal wie spontan die Bilder wieder vor meinem inneren Auge auftauchen. So hoffnungs- und hilfslos. Sterbebereit. Als wäre ich Schuld an allem.

Die Probleme der Welt stapeln sich in meinen eigenen Stack, darauf wartend nach der Reihe wieder da rausgeholt zu werden. Manchmal möchte ich einfach das Licht dimmen, mich wie ein Irrer in eine Ecke setzen, Kopf zwischen die Beine, an meinen Haaren feste ziehen und ein Foto von mir machen, und diese dann wieder zerreissen nur um meine Verzweifelung auszudrücken. Dabei habe ich es gut; ich kann mit Leichtigkeit überleben. Wer will ich sein, der seine mickrigen Problemen, über die der Hungernden stellt?

Ich will rausrennen, schreiend, und Allen meinen Mittelfinger zeigen. Ich will Abends im Regen auf einer starkbelebten Straße liegen und einfach die Menschen um mich herum vergessen. Einfach mal abschalten. Ich höre bereits die Tropfen an der Straße prasseln, und spüre den kalten Boden an meinem Gesicht.

Wenn ich etwas ändern will, fühle ich mich beobachtet. Als hätte jeder Quark ein Auge. Sie beobachten und verfolgen mich. Stimmen von toten Physikern und Hackern scheinen meine Taten zu kommentieren; als ob ich an paranoider schizophrenie leiden würde. Ich habe Angst einen Fehler zu machen, weil sie mich sehen. Weil sie Hoffnung in mich gesetzt haben.

Ich war gestern Abend draußen auf der Straße. Um 4 Uhr morgens. Ich habe einen Katzenkampf gehört, und wollte sichergehen, dass meiner Cat nichts passiert ist. Ich stand Barfuß und mit Schlafanzug mitten auf der Straße. Schaute dann beim Zurückkehren ins Haus nach oben, und sah die Sterne. Man, so schöne Sterne habe ich seit Jahren nicht mehr gesehen. Seit Jahren. Wie kann das sein? Sie sind so gut wie jede Nacht zu sehen.

Vielleicht habe ich mein Leben einfach ganz falsch angefangen. Vielleicht hätte ich niemals meiner Neugierde eine Chance geben sollen. Und vielleicht täte es mir besser, mich regelmäßig sinnlos zu besaufen. Wer will ich schon sein? Irgendein Jugendlicher der mal wieder deprimiert ist. Ich möchte keinen Spaß, ich möchte etwas bewegen.

If you enjoyed this article please consider staying updated via RSS. Links to your own social media pages could be added here.

Again and again

Posted by admin - 07/08/09 at 11:08 am

Ich bin momentan ziemlich im Stress.

Die Einschreibungen an der Fachhochschule in Gelsenkirchen laufen nicht so gut. Musste 2 mal hinfahren (das sind insgesamt 8 stunden Fahrt, 40€ Kosten, und 4 Stunden in-der-schlange-warten). Beim ersten mal fehlte mir etwas, also erstmal zurückgefahren nach Hause. Und für noch einen Tag frei genommen (vom Praktikumsbetrieb) um am nächsten Tag wieder zur FH zu fahren.

Dort angekommen, wurde mir weiß gemacht, ich müsse erst das Praktikum beenden, um mich dort einschreiben zu können. Auf der Internetseite steht da zwar etwas ganz anderes, aber nungut. Sie tut auch nur ihren Job. Also mache ich noch die nächste Woche über Praktikum, dann habe ich 14 Wochen komplett, und dann wird mir (hoffentlich) die Einschreibung gelingen, sodass ich am 21. September dort “Angewandte Informatik” studieren kann. Falls irgendein Leser hier, sich dort auch eingeschrieben hat: freut euch auf ein Treffen mit mir! :D

Dann gibt es in der FH noch das Institut für Internet Sicherheit. Dort habe ich mal vor etwa einem Jahr, 3 Wochen Praktikum gemacht. Und die sind da alle ziemlich cool. War ziemlich beeindruckt, als ich jemanden dort sah, der eine Präsentation über SQL Injections vorbereitete. Ich selbst durfte nur ein paar Regular Expressions in einem C++ Code abändern (das Programm war eine Art Logger/Honeypot, der keine persönlichen Daten speichert, sondern nur, wie oft versucht wird, auf ein Service zuzugreiffen usw.). Danach hatten die ziemlich coole Diagramme erstellt, und hatten so “Frühwarnsysteme”. Und auch einige Ausdrucke, wann und wie lange große Webseiten wie yahoo, google etc. nicht mehr erreichbar waren. Soweit ich das noch in Erinnerung habe.

Was aber ziemlich lustig ist, sind die Live-Hacking Auftritte von denen. Vor einem (großen?) Publikum wird live vorgeführt, wie Trojaner einen PC übernehmen, oder wie WEP geknackt wird etc. Ziemlich lame. Und auch wenn ich nichts gegen die öffentliche Aufklärungsarbeit habe, scheint mir das alles nur wegen der Famegeilheit und der Steigerung des eigenen Egos zu existieren. Denn wirkliche Informationen wie man soetwas verhindert, scheint da nicht wirklich aufgezeigt werden (soweit ich das bisher gesehen habe!). Okay, aber da sollte ich mich bei einigen Beiträgen erstmal an die eigene Nase fassen :D (hey, ich gebe mir Mühe, die Leute wirklich aufzuklären!)

Immerhin, sieht das nach einer spaßigen Zukunft aus für mich. Und wie angeboren, kreiere ich bereits Ideen, wie ich eines der Live-Hacking Auftritte übernehmen kann, sodass mittendrin in der Show, auf der Leinwand mein Schriftzug erscheint. *augenglänzen*

Ich wünschte, ich könnte euch ein interessanteres Thema bieten, aber leider ist im moment nicht viel mehr drin :S Ich habe bald endlich genug Geld um mir ein Arduino Board zu kaufen. Oder endlich mal Lust wieder Windows zu booten, um mich um Otrkey zu kümmern. Jenachdem gibts dann hier wieder was “interessantes” zu lesen :-) Bis dahin könnt ihr euch die Zeit mit diesem Reverse-Engineering Comic vertreiben, welches ich gerade gefunden habe, und es so ähnlich vorgeht wie ich :)

R.I.P. lil Sandy <- ein Todesfall in nazrek’s Familie. Das tut mir leid für dich man! Alles beste wünsche ich dir!

If you enjoyed this article please consider staying updated via RSS. Links to your own social media pages could be added here.