Anwendung

Kommen wir nun zu den interessanten Teil: Die Praktische Anwendung.
Computer sind komplex und vielfältig genauso wie ihre Einsatzzwecke. Wir haben für ein Problem teilweise sehr viele Implementationen, wie z.B Microsofts Office, Open Office, KOffice, StarOffice und viele mehr, die alle im grunde das selbe Problem lösen, wir haben aber auch viele Standards, wie z.B TCP/IP, welches bei allen Computern gleich ist. Daher kann ich nicht auf alle Aspekte im Bezug auf Reverse Engineering im EDV bereich eingehen, aber ich versuche die Wichtigsten abzudecken.
Fangen wir mit etwas einfachem und nützlichem an, dazu betrachten wir mal ein paar Dateien genauer.

Dateien Analysieren

Um bestimmte Dinge genauer zu verstehen, will ich Kurz auf die Grundlagen von Dateien eingehen.
Eine Datei ist eine ein einem Dateisystem, die Verwaltung für Datenspeicher, vorliegendes Objekt, welches einen Bereich innerhalb des Datenspeichers spezifiziert, welcher die zugehörigen Daten beinhaltet.
Das heißt, wenn wir uns mit Dateien beschäftigen, sprechen wir immer von Daten, die auf irgendeinem digitalen Medium vorliegen.

Eine Datei nach aktuellem stand der Technik immer Binär gespeichert, das heißt, der komplette Inhalt wurde in Einsen und Nullen zerlegt. Das eine Datei z.B trotzdem einen Text enthalten kann, ist der Tatsache geschuldet, das der Computer alles als Zahl behandelt, so auch Text. Daher hat z.B der Buchstabe „A“ eine Nummer, die ihn spezifiziert und welche der Computer in seinem Dualen-Zahlensystem darstellen kann. Das wir nun das „A“ auch als solches erkennen, liegt daran , das man es so einprogrammiert hat, weil kaum jemand die Lust, Zeit und Wissen hat, immer irgendwelche dualen Zahlen in Buchstaben umzudenken ;-) .

Nun Wissen wir, das alles was Digital ist aus Zahlen besteht, die Binär gespeichert sind. Mit diesem Wissen können wir uns nun mit etwas mehr Praxis beschäftigen :-D

Grundsätzlich unterscheidet man zwischen „binären“ Dateien und Textdateien. Binär bedeutet, das ein Programm z.B Zahlen nicht als Text speichert sondern die Zahl direkt Binär schreibt. Eine Textdatei hingegen besteht vollkommen aus Text, so liegen auch Zahlen als Text vor.

Genug Theorie, kommen wir nun zum Reverse Engineering: Wir haben in unserem Computer Alltag so viele verschiedene Dateien, alle gekennzeichnet durch ihre Endung: Office-Dateien, Programme, Bilder, Videos und was weiß ich nicht alles.
Nun wollen wir mal sehen, was sich dahinter verbirgt. Dazu benötigen wir nur 2 zusätzliche Programme: Einen guten Texteditor(keine Office suite wie Open Office) und einen Hexeditor, was im Grunde in Programm ist, das eine Datei binär lädt und mit ein paar netten Extras es ermöglicht, das ganze halbwegs angenehm unter die Lupe zu nehmen.
Ich persönlich nutze dafür die „Aedix Suite“(Kostenlos), aber jedes andere Programm tut es auch.
Fangen wir mit etwas einfachem an: Einem Open-Document-text(*.odt), wie es Open Office standardmäßig erzeugt. Wir legen also eine neue Datei an und schreiben „Hello World“ rein.
Hello World in eine Office Datei schreiben

Nun öffnen wir es einfach mal mit einem Texteditor und
Datei mit einem Texteditor öffnen

sehen wirres zeug, das hilft uns nicht viel.
Versuchen wir es also mal mit einem Hexeditor:
Hex ansicht

Immer noch nicht so ganz zufriedenstellend. Aber immerhin ist zwischendurch mal etwas Text.
Greifen wir zu Trick 17 und ändern mal die Dateiendung von *.odt nach *.zip um:
Als Zip geöffnet

Voila, jetzt sieht es doch schon besser aus.
Zur Erklärung: Moderne Office-Dateien enthalten so viel verschiedene Objekte, Bilder, Diagramme, Tabellen und ähnliches, das es schwierig wird, diese in einem eigenen Format in einer Datei zu speichern. Daher machen es sich viele einfach und packen all diese Dateien in ein Archiv und geben dem dann eine eigene Dateiendung, dies ist aber nicht bei allen Dateien so.
Nun da wir in die Datei hereinschauen können, schauen wir uns mal eine der *.xml Dateien an, nehmen wir halt mal die „content.xml“. Versuchen wir es wieder zuerst mit unserem Texteditor:
content.xml geöffnet

Schon am Ziel, wir können die Datei lesen und sehen was darin steht und wenn wir etwas herunter scrollen, sehen wir auch unseres „hello world“.

Nun ist es ja so, das es sehr viele verschiedene Dateien gibt und nicht jede aus Text besteht oder in Zip-Archiv ist.
Um die Dateien schneller einem bestimmen Programm zuzuordnen, haben viele Dateien eine bestimmte ID am Anfang, z.B Zip-Archive ein „PK“, wie wir es in dem oben gezeigten Fall im text und Hexeditor sehen können. Anhand dieser ID, hätten wir schon sofort zum Zip-Archiv übergehen können, was aber nicht sinn der Übung war.
Nun haben wir also die Information, das viele Dateien eine ID am Anfang haben, damit man sich aber nicht unzählige davon merken muss, gibt es Programme die das können, z.B „Trid“.

Das sollte genug Wissen sein, um alle möglichen Dateien zu analysieren. gehen wir nun über zum nächsten Thema.

Netzwerke Verstehen

Netzwerke sind zu Kompliziert, als das ich hier einzelne Analysestrategien vorstellen könnte. Daher werde ich hier nur einige nützliche Programme vorstellen, die es einem Erlauben schnell und einfach schon sehr viele Informationen zu erhalten. Damit sollte es möglich sein, Fehler in Netzwerken zu finden, aber auch den Aufbau Netzwerken zu verstehen.

Konsole

Die Konsole ist des Hackers liebling und das hat sein Grund. Mit der Konsole ist man schneller und man erhält nur die Informationen, die man auch wirklich sucht. Auch sind die Befehle über die verschiedenen Betriebssystem Versionen gleich und sind auch Plattform übergreifend anwendbar, was uns etwas Lernaufwand erspart.
Unter Windows ist die Konsole erreichbar indem man die Windowstaste + R drückt und im folgenden Dialog cmd eingibt und „OK“ drückt. Unter Linux ist sie über das Menü unter dem Punkt Terminal/Konsole erreichbar.
Um die im folgenden genanten Programme besser verstehen zu können, empfielt es sich sie parallel zum Text einfach mal auszuprobieren.

ipconfig / ifconfig

Kommen wir nun zum ersten Befehl: ipconfig, bzw ifconfig unter Linux:
Ipconfig aufruf

Hier können wir nun schon viele Informationen entnehmen, ob und welche IP wir bekommen haben, in welchem Subnetz wir stecken und welches Standardgateway wir haben. Haben wir keine IP, ist kein DHCP Server vorhanden oder wir haben uns noch keine manuelle IP zugewiesen.

ping

„ping“ ist ein sehr sehr nützliches Kommando. Die Hauptaufgabe ist es, mehrere Anfragen an eine gegebene Adresse zu senden und dann auf die Antwort warten. Das klingt erstmal nicht so spektakulär, aber das muss es auch nicht sein. bevor wir nun also klären, was wir mit „ping“ so alles anfangen können, schauen wir uns erstmal an, was es so ausgibt:
ping aufruf

Der Aufruf ist einfach, ping und die Adresse, kann man sich also gut merken. Was hierbei noch nützlich ist, ist die Möglichkeit von ping eine „Web-Adresse“ wie z.B „www.proggen.org“ automatisch in eine IP umzuwandeln, sodass der aufruf von

ping www.proggen.org


und

ping 188.40.193.143


das gleiche Ergebnis liefern.
Was haben wir aber nun zurückbekommen?
Wenn wir uns das Bild ansehen, ist das erstmal eine Auflistung von 4 gleichen Texten

Antwort von 192.168.42.1: Bytes=32 Zeit<1ms TTL=64


Hieraus können wir schon einmal folgendes entnehmen: Wir bekommen eine Antwort, daher muss ein gerät im Netzwerk existieren, das diese IP hat und es hat in weniger als 1ms geantwortet, was sehr zügig ist, aber unter den Voraussetzungen(Gigabit LAN in einem kleinen, nicht ausgelasteten Netzwerk) nicht unüblich ist.
Damit kann man schon viel Anfangen: Wir können erkennen, ob ein bestimmtes Gerät überhaupt ans Netzwerk angeschlossen ist oder ob es erreichbar ist. Wir können aber auch prüfen, ob unter einer bestimmten IP etwas erreichbar ist, was Hilfreich ist, wenn man nicht weiß, welche IP ein Gerät hat. Dieses Verfahren ist nicht unüblich und es gibt für diesen Zweck extra Programme, wie z.B AngryIP, welches einfach alle IPs in einem definierten bereich „anpingt“ um zu testen, ob etwas antwortet.
Wir können aber auch aus Text erkennen, wie lange wir warten bis wir eine Antwort bekommen. Damit kann man entweder Netzwerk Engpässe erkennen, aber auch testen ob ein langsam reagierender Dienst an einem Server-Problem krankt oder das Netzwerk zu langsam ist.

Unter der Liste mit einzelnen Paketen ist zudem noch eine Statistik aufgeführt. Wenn wir uns diese genauer anschauen, sehen wir etwas von „0% Verlust“. Steht hier etwas anderes als 0%, so liegt ein Netzwerkfehler vor. Diese Statistik macht aber erst dann Sinn, wenn man über einen langen Zeitraum ping laufen lies, um die Verfügbarkeit oder die Netzwerkstabilität zu testen.
Noch etwas weiter unten sehen wir eine Auswertung der Zeiten.

nslookup

Mit nslookup testet man DNS-Namensauflösung.
Für alle die nicht Wissen was darunter zu verstehen ist: Weil sich IP Adressen wie „188.40.193.143“ nur sehr schwer merken lassen, hat man ein System aufgebaut wo man einer IP einen „Namen“ geben kann, dieses System heißt nun DNS. Weil der Computer aber mit einem Namen wie „www.proggen.org“ nichts anfangen kann, muss dieser erst wieder in eine IP umgewandelt werden, dies geschieht über einen „DNS-Server“.
Nun wie nutzt man dieses Programm den nun? Dazu schauen wir es uns einfach mal an:
nslookup aufruf

Als erstes erhalten wir Informationen darüber, welches die Aktuellen DNS-Server Einstellungen sind. Steht hier nichts, so brauchen wir gar nicht erst weitersuchen.
Haben wir aber einen DNS-Server erhalten, so können wir nun eine Adresse auflösen lassen. Dazu geben wir sie einfach nur ein, wie hier z.B proggen.org. Sobald wir mit Enter bestätigen erhalten wir eine Ausgabe darüber, welche IP sich hinter dem namen verbirgt oder eine Ausgabe das etwas schief gelaufen ist. Dies kann z.B auf Falsche DNS-Einstellungen hindeuten.

tracert

„tracert“ soll erstmal das letzte Programm sein, das ich hier vorstelle.
tracert zeigt einem alle Geräte an, die ein Netzwerkpaket passieren muss um zum Ziel zu kommen: tracert Aufruf

Dies ist nur selten hilfreich, aber da es mir persönlich schon oft genug geholfen hat, wollte ich es hier erwähnen.

Programme analysieren

Ich werde hier nicht mehr auf das Analysieren von Programmen eingehen, zum einen da es ein wirklich sehr Spezielles Thema ist, was viel Vorwissen erfordert, vor allem im bereich Programmierung, Betriebssystemen und Assembler. Desweiteren würde es den Ramen dieses Artikels sprengen.
Aber vor allem wird solches Wissen gerne missbraucht um Lizenschutzsysteme auszuhebeln und das soll nicht sinn dieses Artikels und des Wikis sein.


<<Zurück Startseite