Einzelnen Beitrag anzeigen
Alt 24.02.2008, 17:29   #8 (permalink)
Pilzkopf
Extrem Tweaker
 
Benutzerbild von Pilzkopf
 

Registriert seit: 14.03.2006
Beiträge: 2.409

Pilzkopf ist ein wunderbarer AnblickPilzkopf ist ein wunderbarer AnblickPilzkopf ist ein wunderbarer AnblickPilzkopf ist ein wunderbarer AnblickPilzkopf ist ein wunderbarer AnblickPilzkopf ist ein wunderbarer AnblickPilzkopf ist ein wunderbarer AnblickPilzkopf ist ein wunderbarer Anblick

Standard AW: Steam wurde verändert!! Wird evt Steam Account geklaut?

Zitat:
Zitat von Hack-Page
Firewall ByPass - Wie funktioniert das?
Hintergedanken und Methoden im Laufe der Zeit

Alles fing damit an, dass der Wunsch entstand, Firewalls umgehen zu können. Also setzten sich diverse Programmierer daran, eine Methode zu entwickeln, wie man an Firewalls vorbeikommt. Schon schnell kam man auf die Idee, man könne ja einfach so tun, als sein man ein Vertrautes Programm. Anfängliche Versuche, einfach die Datei zu ersetzen und danach die Originaldatei zu starten (Server kopiert firefox.exe zu firefox1.exe, kopiert sich zu firefox.exe und startet nach dem Aufruf firefox1.exe), wurden schnell durch CRC32-Checks der Dateien zerstört. Also musste eine andere Methode her, die den CRC32-Check von firefox.exe gleich aussehen ließ und trotzdem uns selbst in firefox.exe verschaffte. Dadurch entstand die erste Serienreife Methode, die DLL-Injection. Sie funktionierte ganz einfach - der "richtige" Server war eine DLL und wurde über LoadLibrary aus firefox.exe aufgerufen. Ein Beispielcode dafür (ASM):

<Source Code entfernt, muss ja nich gleich Public werden xD>

Jedoch blockten Firewalls es schnell, dass über CreateRemoteThread LoadLibraryA aufgerufen wird.
Also haben unsere Programmierer noch etwas mehr nachgedacht und kamen zum nächsten Quantensprung im Firewall-Bypassing, FWB+.
Im Grunde genommen war FWB+ sehr viel einfacher als die alte DLL-Injection, und sie brauchte keine DLL mehr.

<Auch hier war C++ Code>

Schnell widerrum sperrten Firewalls CreateRemoteThread und WriteProcessMemory vollständig, beziehungsweise legten Filter darauf.
Gegen WriteProcessMemory gibt es zwar inzwischen Alternativen, allerdings sind diese oft sehr kompliziert (siehe: GhostWriting @ rootkit.com). Eine simple Alternative ist es, ZwWriteVirtualMemory zum schreiben zu verwenden, da viele Firewalls nur WriteProcessMemory hooken und nicht die zugrundeliegende ZwWriteVirtualMemory-Funktion. Für CreateRemoteThread wurde schnell ersatz gefunden: SetThreadContext.
Damit wird kein neuer Thread erstellt, sondern der "Original-Thread" nur weitergeleitet.

Das Beispiel dafür sieht genau gleich aus wie das vorhergehende, nur müssen wir in der .data Section folgendes hinzufügen:

<Noch mehr Code>

Und der CreateRemoteThread-Aufruf muss ersetzt werden mit:

<Und wieder Code...>

Jedoch auch SetThreadContext wurde bald gehookt. Weil langsam die Mittel ausgingen, ging man dazu über, Userland-Unhooking-Tools (ring3) und Kernel-Unhooking-Tools (ring0) zu schreiben. Diese Sources wären jedoch etwas zu groß für dieses Tutorial, und deshalb schließe ich hiermit.

Ich hoffe, es hat gefallen!

Tutorial (C) by <Sag ich net...>
Genauer werd ich hier nicht werden, ich hab das ganze aus nem Nonpub-Forum, und der Code usw. wird auch erstmal Nonpub bleiben...

MfG, Olli
http://hwbot.org/signature/u31911.png

Main Rig: Phenom X4 955BE @ Stock | 4GB DDR3 1066 GEIL RipJAWS | Biostar TA890FXE | XFX ATI Radeon HD5770 1GB | Windows 7
Ausweich PC: AMD Athlon XP 2400+ | ECS K7S5A | ELSA Erazor III 32MB | Windows XP
Pilzkopf ist offline   Mit Zitat antworten