0
DLL-I NJECTION   UND   BLABLA ... LOOK   AT   THE   PRETTY   HOUSE  -->
C ONTENT <ul><li>Haxxing </li></ul><ul><ul><li>DLL-Injection </li></ul></ul><ul><ul><li>Detours </li></ul></ul><ul><ul><li...
G OAL <ul><li>Das Ziel ist die Erstellung eines Programms, das den Status eines anderen Programms auslesen und entsprechen...
U NDERCOVER <ul><li>Wie kommt man in ein anderes Programm &quot;rein&quot;? </li></ul><ul><li>--> DLL-Injection durch Wind...
W INDOWS  API <ul><ul><li>Stellt Funktionen bereit, um mit Windows zu interagieren </li></ul></ul><ul><ul><li>#include <wi...
DLL-I NJECTION <ul><ul><li>DLLs sind libraries, die zur Laufzeit geladen werden können </li></ul></ul><ul><ul><li>DLLs hab...
W INDOWS  H OOKS <ul><li>In computer programming, the term hooking covers a range of techniques used to alter or augment t...
W INDOWS  H OOKS <ul><ul><li>Einfach aufzusetzen </li></ul></ul><ul><ul><li>Nötig: Hook-Procedure (Callback) </li></ul></u...
I NSIDE <ul><ul><li>Wir sind drin, was nun? </li></ul></ul><ul><ul><li>Problem: DllMain wird nur ein Mal ausgeführt. </li>...
W INDOWS  M ESSAGES <ul><ul><li>Alles läuft über Messages </li></ul></ul><ul><ul><li>OS gibt den Fenstern Befehle oder Inf...
T HE  W INDOW  P ROCEDURE <ul><ul><li>Empfangene Messages werden an die Window Procedure dispatched </li></ul></ul><ul><ul...
W INDOWS  M ESSAGES <ul><li>Es ist möglich, Messages selbst vom eigenen Programm aus an ein beliebiges Fenster im System z...
S UBCLASSING <ul><li>Subclassing  is a technique that allows an application to intercept and process messages sent or post...
GUI H AXXING <ul><ul><li>Spy++ (Visual Studio) </li></ul></ul><ul><ul><li>UI Spy (Windows SDK) </li></ul></ul>
E XKURS : T EXT  A USLESEN <ul><ul><li>Microsoft Research: Detours </li></ul></ul><ul><ul><li>Assembler-Library (or so I'm...
 
A SSEMBLING   THE   COMMUNICATION <ul><ul><li>Master-Slave Architektur </li></ul></ul><ul><ul><ul><li>Master ist unser Pro...
J AVA  N ATIVE  I NTERFACE <ul><ul><li>ermöglicht Java, Funktionen in einer dll zu callen </li></ul></ul><ul><ul><li>mit e...
U SING  JNI <ul><ul><li>Java Methoden als &quot;native&quot; (ohne Body) deklarieren </li></ul></ul><ul><ul><li>Mit javah ...
U SING  JNI - R EVERSE <ul><ul><li>Ein JNI call übergibt der dll einen Pointer zum &quot;JNI Environment&quot; und einen z...
F INAL   ARCHITECTURE <ul><ul><li>Master-Programm in Java </li></ul></ul><ul><ul><ul><li>Injiziert Slave ins Target </li><...
J AVA   MOUSE / KEYBOARD   CONTROL <ul><ul><li>Wir müssen die Maus und Tastatur kontrollieren können </li></ul></ul><ul><u...
Upcoming SlideShare
Loading in...5
×

DLL-Injection

925

Published on

Published in: Self Improvement
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
925
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "DLL-Injection"

  1. 1. DLL-I NJECTION UND BLABLA ... LOOK AT THE PRETTY HOUSE -->
  2. 2. C ONTENT <ul><li>Haxxing </li></ul><ul><ul><li>DLL-Injection </li></ul></ul><ul><ul><li>Detours </li></ul></ul><ul><ul><li>Windows Hooks </li></ul></ul><ul><ul><li>Windows Messages </li></ul></ul><ul><ul><li>Subclassing </li></ul></ul><ul><ul><li>UISpy, Spy++ </li></ul></ul><ul><ul><li>JNI </li></ul></ul>
  3. 3. G OAL <ul><li>Das Ziel ist die Erstellung eines Programms, das den Status eines anderen Programms auslesen und entsprechend darauf reagieren kann. </li></ul>
  4. 4. U NDERCOVER <ul><li>Wie kommt man in ein anderes Programm &quot;rein&quot;? </li></ul><ul><li>--> DLL-Injection durch Windows Hooks </li></ul>
  5. 5. W INDOWS API <ul><ul><li>Stellt Funktionen bereit, um mit Windows zu interagieren </li></ul></ul><ul><ul><li>#include <windows.h> von Windows SDK </li></ul></ul><ul><ul><li>Für uns wichtig sind z.B. </li></ul></ul><ul><ul><ul><li>Namen von Fenstern abfragen </li></ul></ul></ul><ul><ul><ul><li>Text aus Textboxen lesen </li></ul></ul></ul><ul><ul><ul><li>Position von Fenstern abfragen und setzen </li></ul></ul></ul><ul><ul><ul><li>... </li></ul></ul></ul>
  6. 6. DLL-I NJECTION <ul><ul><li>DLLs sind libraries, die zur Laufzeit geladen werden können </li></ul></ul><ul><ul><li>DLLs haben eine art &quot;main&quot;-Funktion (DllMain), die immer aufgerufen wird, wenn </li></ul></ul><ul><ul><ul><li>die DLL in einen Prozess oder Thread geladen wird </li></ul></ul></ul><ul><ul><ul><li>die DLL wieder entladen wird </li></ul></ul></ul><ul><ul><li>D.h. wir müssen unsere DLL irgendwie in den gewünschten Prozess laden </li></ul></ul><ul><ul><ul><li>Registry </li></ul></ul></ul><ul><ul><ul><li>AllocMemory/WriteMemory </li></ul></ul></ul><ul><ul><ul><li>Windows Hooks </li></ul></ul></ul>
  7. 7. W INDOWS H OOKS <ul><li>In computer programming, the term hooking covers a range of techniques used to alter or augment the behavior of an operating system, of applications, or of other software components by intercepting function calls or messages or events passed between software components. Code that handles such intercepted function calls, events or messages is called a &quot;hook&quot;. </li></ul><ul><li>-Wikipedia </li></ul>
  8. 8. W INDOWS H OOKS <ul><ul><li>Einfach aufzusetzen </li></ul></ul><ul><ul><li>Nötig: Hook-Procedure (Callback) </li></ul></ul><ul><ul><li>Wir tun nichts in der Hook-Procedure </li></ul></ul><ul><ul><li>Nebeneffekt: Ausführende DLL wird in alle &quot;gehookten&quot; Prozesse geladen. </li></ul></ul><ul><ul><li>Remember DllMain... </li></ul></ul>
  9. 9. I NSIDE <ul><ul><li>Wir sind drin, was nun? </li></ul></ul><ul><ul><li>Problem: DllMain wird nur ein Mal ausgeführt. </li></ul></ul><ul><ul><li>Wir hinterlassen dem Programm also einen kleinen Spion, mit dem wir später Kontakt aufnehmen können. </li></ul></ul>
  10. 10. W INDOWS M ESSAGES <ul><ul><li>Alles läuft über Messages </li></ul></ul><ul><ul><li>OS gibt den Fenstern Befehle oder Informationen </li></ul></ul><ul><ul><li>Werden von Fenstern interpretiert </li></ul></ul><ul><ul><li>Sichtbar mit Spy++ </li></ul></ul><ul><ul><li>Eigentlich Enums </li></ul></ul><ul><ul><li>Können bis zu 2 Parameter mitführen </li></ul></ul>
  11. 11. T HE W INDOW P ROCEDURE <ul><ul><li>Empfangene Messages werden an die Window Procedure dispatched </li></ul></ul><ul><ul><li>Die Message wird über eine switch-Anweisung identifiziert und behandelt </li></ul></ul>
  12. 12. W INDOWS M ESSAGES <ul><li>Es ist möglich, Messages selbst vom eigenen Programm aus an ein beliebiges Fenster im System zu senden. Es ist sogar möglich, eigene Messages zu definieren. </li></ul><ul><li>Dies wollen wir ausnützen, und so mit unserem Spion kommunizieren. </li></ul><ul><li>Wenn wir doch nur unseren Spion dazu bringen  </li></ul><ul><li>könnten, sich Messages anzuhören... </li></ul>
  13. 13. S UBCLASSING <ul><li>Subclassing  is a technique that allows an application to intercept and process messages sent or posted to a particular window before the window has a chance to process them. </li></ul><ul><li>- MSDN </li></ul><ul><li>Wir machen also unsere eigene Window Procedure und setzen sie vor die eigentliche. </li></ul>
  14. 14. GUI H AXXING <ul><ul><li>Spy++ (Visual Studio) </li></ul></ul><ul><ul><li>UI Spy (Windows SDK) </li></ul></ul>
  15. 15. E XKURS : T EXT A USLESEN <ul><ul><li>Microsoft Research: Detours </li></ul></ul><ul><ul><li>Assembler-Library (or so I'm told) </li></ul></ul><ul><ul><li>Kann einzelne Funktionen &quot;Umleiten&quot; </li></ul></ul><ul><ul><li>Tiefe Windows Funktionen als Bottlenecks (z.B. DrawText) </li></ul></ul><ul><ul><li>Methode: </li></ul></ul><ul><ul><ul><li>Funktion abfangen </li></ul></ul></ul><ul><ul><ul><li>Argumente &quot;nach Hause&quot; senden </li></ul></ul></ul><ul><ul><ul><li>Ursprüngliche Funktion aufrufen </li></ul></ul></ul><ul><ul><li>Man kann aber auch Spass damit haben </li></ul></ul>
  16. 17. A SSEMBLING THE COMMUNICATION <ul><ul><li>Master-Slave Architektur </li></ul></ul><ul><ul><ul><li>Master ist unser Programm </li></ul></ul></ul><ul><ul><ul><li>Slave sitzt im Target </li></ul></ul></ul><ul><ul><li>Slave reagiert auf Befehle </li></ul></ul><ul><ul><li>Kommunikation durch Windows Messages </li></ul></ul><ul><ul><li>Achtung: HWNDs bei jedem Start anders </li></ul></ul><ul><ul><li>FindWindow </li></ul></ul><ul><ul><li>Problem: Master ist in Java geschrieben </li></ul></ul>
  17. 18. J AVA N ATIVE I NTERFACE <ul><ul><li>ermöglicht Java, Funktionen in einer dll zu callen </li></ul></ul><ul><ul><li>mit ein bisschen Aufwand auch umgekehrt </li></ul></ul><ul><ul><li>nicht gerne gesehen </li></ul></ul><ul><ul><li>JVM &quot;schluckt&quot; Messages </li></ul></ul><ul><ul><li>Window Procedure benötigt </li></ul></ul><ul><ul><li>Window benötigt </li></ul></ul><ul><ul><li>Lösung: Erstelle leeres Dummy-Fenster  als Empfänger (und Sender) von Messages </li></ul></ul>
  18. 19. U SING JNI <ul><ul><li>Java Methoden als &quot;native&quot; (ohne Body) deklarieren </li></ul></ul><ul><ul><li>Mit javah Header erstellen </li></ul></ul><ul><ul><li>Header in cpp einbinden und Methoden implementieren </li></ul></ul><ul><ul><li>Als dll kompilieren </li></ul></ul><ul><ul><li>Mit LoadLibrary in Java einbinden </li></ul></ul><ul><ul><li>In Java lassen sich nun die native methoden callen </li></ul></ul>
  19. 20. U SING JNI - R EVERSE <ul><ul><li>Ein JNI call übergibt der dll einen Pointer zum &quot;JNI Environment&quot; und einen zur aufrufenden Klasse </li></ul></ul><ul><ul><li>jni.h stellt Funktionen bereit, um damit auf die aufrufende Klasse zuzugreifen </li></ul></ul>
  20. 21. F INAL ARCHITECTURE <ul><ul><li>Master-Programm in Java </li></ul></ul><ul><ul><ul><li>Injiziert Slave ins Target </li></ul></ul></ul><ul><ul><ul><li>Initialisiert Dummy-Window </li></ul></ul></ul><ul><ul><li>Slave grast die GUI nach Views ab und erlangt Pointers zu deren Models </li></ul></ul><ul><ul><li>Master sendet requests über JNI </li></ul></ul><ul><ul><li>Slave bearbeitet requests und sendet Antwort an Dummy </li></ul></ul><ul><ul><li>Dummy pusht in Master hinein </li></ul></ul><ul><ul><li>Master enthält KI und führt Mausclicks aus </li></ul></ul>
  21. 22. J AVA MOUSE / KEYBOARD CONTROL <ul><ul><li>Wir müssen die Maus und Tastatur kontrollieren können </li></ul></ul><ul><ul><li>Robot-Klasse </li></ul></ul><ul><ul><li>Tipp: Perlin Noise </li></ul></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×