I/O Capture Treiber Framework

Download Report

Transcript I/O Capture Treiber Framework

I/O Capture Treiber Framework
Maßgeschneiderte Filtertreiber auf
Knopfdruck erstellen
08.04.2015
Viviane Zwanger
1
Motivation
• Wireshark kennt jeder:
08.04.2015
Viviane Zwanger
2
Was wäre…
…wenn man das nicht nur für TCPIP, sondern auch für jedes
andere mögliche „Gerät“ machen könnte?
Netzwerk-Traffic & Dns-requests,
Tastatur & Maus, Parallel-Port,
Serieller Port,
Kommunikation mit HobbyWetterstation...
08.04.2015
3
Was wenn
…man das nicht nur mitschneiden, sondern auch live
modifizieren könnte?
 Wie ein Wireshark mit „edit“- und „delete-“ Funktion
(und natürlich nicht auf Netzwerk beschränkt)
08.04.2015
Viviane Zwanger
4
Was kann man denn mitschneiden?
Alles! Eine kleine Bestandsaufnahme….
08.04.2015
Viviane Zwanger
5
Was kann man mitschneiden?
1. Interne Geräte:

Audio, Beep-Treiber, Grafikkarte…
2. Output an Peripherie:

serielle Schnittstelle, parallel Port/Drucker, Firewire, Tastatur, …
3. Eigenbau-Schnittstellen und Bauteile:

proprietäre Systeme mit I/O zu externen embedded devices.
4. Nicht nur reale Geräte/Schnittstellen, auch „abstrakte“ I/O:


08.04.2015
Filesystem, Kryptotreiber, Antivirustreiber und Rootkits, …
Riesiges Feld --- abstrakte Treiber gibt es SEHR viele.
Viviane Zwanger
6
Beispiel-Mitschnitt
IP-Addresse
00000001
00000002
00000003
00000004
00000005
00000006
00000007
00000008
00000009
00000010
00000011
00000012
00000013
00000014
00000015
00000016
00000017
00000018
BufferLength: 1, content:
-----begin----a
-----end----BufferLength: 1, content:
-----begin----b
-----end----BufferLength: 1, content:
-----begin----c
-----end----BufferLength: 656, content:
-----begin----GET /isapi/redir
.dll?prd=ie&pver
=6&ar=msnhome HT
TP/1.1..Accept:
00000001
00000002
00000003
00000004
00000005
Anzahl zu
sendender
Pings
Ping payload:
„abcdef…“
TTL
Länge
-----begin----c0 a8 e3 01 a0 0f 00 00 14 00 20 00 01 80 00 00
14 00 00 00 61 62 63 64 65 66 67 68 69 6a 6b 6c
6d 6e 6f 70 71 72 73 74 75 76 77 61 62 63 64 65
66 67 68 69 00 00 00 00 00 00 00 00 00 00 00 00
• Echo requests (ping) abfangen
(custom filter)
Tcp-Traffic
1. Hyperterminal: „a“, „b“, „c“
2. Internet Explorer (Msn-Seite)
Beispiel-Mitschnitt
Special
Code
„666“
(0x29a)
(rootkit
Verwendet
Auch noch zB
„777“ I/O
Pakete)
Found packet with size: 0x470
Taking: 470 size.
-----begin----9a 02 00 00 66 56 5e 80 c4 8e 5e 80 98 56 5e 80
fe 8e 5e 80 ce 56 5e 80 42 8f 5e 80 86 8f 5e 80
da a5 60 80 4e b8 60 80 08 0a 5e 80 60 06 5e 80
84 96 5c 80 34 96 5c 80 00 ac 60 80 88 a0 5a 80
18 a2 60 80 10 c9 59 80 da 44 5a 80 62 b1 5c 80
04 ed 4f 80 0e ce 5b 80 e6 ab 56 80 dc 41 53 80
ea 38 60 80 14 07 5b 80 fe 93 5e 80 a2 87 61 80
f0 d8 5e 80 88 8b 59 80 f6 89 61 80 3a 84 59 80
d0 ff 53 80 e8 69 63 80 10 26 5b 80 3a 39 60 80
94 bb 60 80 4c d1 56 80 de b9 56 80 26 a1 5c 80
5e 9e 5c 80 d2 8b 61 80 5a d2 56 80 8c bf 60 80
86 d1 56 80 fa f8 59 80 56 8f 59 80 e8 5c 5c 80
32 5c 5c 80 ac c3 60 80 3e f2 59 80 36 99 60 80
10 94 5b 80 d0 5a 5c 80 5c b8 60 80 98 dc 5e 80
7a 8f 59 80 c4 7a 63 80 14 7c 63 80 6e b2 60 80
90 aa 60 80 0e ce 5b 80 2c ad 56 80 62 90 61 80
0a 95 5e 80 32 92 61 80 12 d3 56 80 aa 78 60 80
f0 21 5b 80 a6 18 5e 80 4e b8 60 80 12 94 61 80
[…]
I/O request packet (IRP)
enthält Speicheradressen
von API Kernelfunktionen
Rootkit „Amsint32.sys“
an Userspace Executable.
Idee zusammengefasst:
Maßgeschneideter Kernel Filter Treiber.
• Hängt sich an das Ziel-Gerät (Device) an und loggt die
I/O Kommunikation.
• Anders als Wireshark kann es auch die Daten ändern
oder droppen.
08.04.2015
Viviane Zwanger
9
Ein paar Treiber-Grundlagen…
Buffergröße?
Buffered I/O Direct I/O? Neither?
Major Functions?
… *grübel*
08.04.2015
10
IRPs
• …sind I/O request packets
• … enthalten den I/O „Auftrag“ (I/O request)
• …enthalten viele interessante Daten! 
IRPs sind ziemlich große Datenpakete, gefüllt mit allem möglichem
„Krempel“ den der empfangende Treiber brauchen könnte um den I/O
request zu erfüllen.
08.04.2015
Viviane Zwanger
11
I/O Typen von IRPs
1. Buffered I/O
2. Direct I/O
3. Neither I/O
• „Auftrags“-Daten (Buffer) im IRP an unterschiedlicher Stelle versteckt.
• Es gibt einen Input und einen OUTput Buffer.
• Je nach Request wird nur einer davon verwendet oder beide.
• Art der Daten? (Zahlen, Text, Addressen?)
08.04.2015
Viviane Zwanger
12
Major / Minor Funktionen
• I/O Handler Major Function Nummer?
Z.B. READ (0x3), WRITE (0x4), DEVICE_CONTROL (0xe), POWER
(0x16)
• Minor Function?
Treiber-spezifisch
Z.B. bei TCPIP Treiber ist für TCP & UDP:
Nr 0x7 == Netzwerkdaten senden
Nr 0x3 == binden an IP-Addresse, etc…
Hört sich kompliziert an?
Soll deswegen automatisch generiert werden! 
 Besitzt Aufklärmodus (den „Sentinel“), in welchem es
Informationen sammelt (z.B. Buffergrößen, Minorfunctions,
Stärke des I/O Traffics)
 Nützlich für unbekannte Treiber
 Gegeben das Ziel konfiguriert sich der Capture-Treiber
(soweit es geht) selbstständig.
 Je besser der Benutzer sein Ziel kennt, desto besser das Ergebnis.
08.04.2015
Viviane Zwanger
14
Device Scanner
Mögliche Devices...
Verfügbare I/O-Handler
(OS: Win7)
Sentinel
Usage:
08.04.2015
Viviane Zwanger
16
I/O Capture Driver
Usage: drvmake DeviceName Major Minor bufsize hex/ascii
 TCPIP Treiber unterscheidet verschiedene Major und Minor Functions.
 zB:
Minor 0x7 : „Netzwerk-Daten senden“.
Minor 0x3 : „Bind IP-Address“
...
08.04.2015
Viviane Zwanger
17
Praktischer Teil
Kategorien
• Interne Geräte: Audio, Drucker, Beep-Treiber…
• Peripherie: serielle Schnittstelle, parallel Port, Firewire, Tastatur, …
• Eigenbau-Schnittstellen und Bauteile, falls vorhanden.
• „Abstrakte“ I/O: Filesystem, Kryptotreiber, Antivirustreiber, Rootkits, …
08.04.2015
Viviane Zwanger
18
Interne Geräte
• Vom User, Applikationen oder System erzeugt.
Z.B Audio, Grafikanzeige, Beep
• I/O Traffic Stärke relativ gut vorhersagbar
• Unter Umständen zu viel I/O!
Beispiel: Grafikanzeige & Audio sind I/O Spammer.
08.04.2015
Viviane Zwanger
19
Demo
Interne Geräte:
Systemlautsprecher
08.04.2015
Viviane Zwanger
20
Der “Systemlautsprecher”
• Ist ein sog. PIT (Programmierbarer Interrupt Timer).
• Generiert selbstätig Rechteck-Impulse, die eine Membran
zum Schwingen anregen.
• Daher physikalisch benötigt:
1) eine Frequenz f [Hz]
2) Eine Zeitdauer t [ms]
• Heutzutage auf Audiokarte umgelenkt.
Output an die Peripherie
• Vom User erzeugt. (normalerweise)
• Bekannte I/O: wieviel Traffic verursacht wird und unter
welchen Bedingungen.
Beispiele: Tastatur-Treiber verursacht nur vereinzelte I/O bei
Tastaturanschlag. Der Maus-Treiber verursacht nur I/O, wenn der User
die Maus bewegt, aber relativ viel I/O Traffic in kurzen Zeitabschnitten.
• Eher „verständliche“ Daten:
•
•
•
•
08.04.2015
DNS-requests (Netzwerk)
GET / HTTP/1.1 requests (Netzwerk)
Gedrückte Tastatur-Keys
Maus-Koordinaten.
Viviane Zwanger
22
Demo
Output an die Peripherie:
TCPIP
08.04.2015
Viviane Zwanger
23
Der “TCPIP”-Treiber
• Managed verschiedene “Devices”, u.A.:
• 1. “TCP”
• 2. “UDP”
• (Bei Vista/Win7 dazu separat: “TCP6”, “UDP6” für IPv6)
• Dazu kommt noch:
– WinXP: “RawIP”, ”IPMulticast”, “IP”
– Vista/Win7: “RawIp”, “RawIp6”, “Tdx”
Zukunft
• Schönes Online Interface?
zum generieren maßgeschneiderter Treiber.
• Bequemere Kommandozeile?
• Mehr Features?
08.04.2015
Viviane Zwanger
25
Fragen?
• We like IRPs!
08.04.2015
Viviane Zwanger
26