Netzwerksicherheit. Teil 2: Buffer Overflows und andere Gemeinheiten. Martin Mauve, Björn Scheuermann und Philipp Hagemeister

Größe: px
Ab Seite anzeigen:

Download "Netzwerksicherheit. Teil 2: Buffer Overflows und andere Gemeinheiten. Martin Mauve, Björn Scheuermann und Philipp Hagemeister"

Transkript

1 Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten Martin Mauve, Björn Scheuermann und Philipp Hagemeister Sommersemester 2015 Heinrich-Heine-Universität Düsseldorf Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 1

2 echo-server Implementieren Sie einen Server (in C), welcher den Client begrüßt. Sie können die Hilfsfunktionen short network2short(const char*) und void short2network(char*, short) verwenden, außerdem alle C-Funktionen wie malloc und memcpy. Skizzieren Sie alleine oder zu zweit den Code. Sie haben fünf Minuten. char* message = receive(); // Ihr Code hier send(...,...); // const char*, size_t Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 2

3 echo-server: Lösung char* inbuf = receive(); unsigned short length = network2short(inbuf); char* outbuf = malloc( length); short2network(outbuf, 3 + length); memcpy(outbuf + 2, "Hi ", 3); memcpy(outbuf , inbuf + 2, length); send(outbuf, length); Sehen Sie ein Problem? Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 3

4 Angriff Was passiert, wenn der Angreifer einfach weniger Bytes schickt, als er vorgibt? char* inbuf = receive(); unsigned short length = network2short(inbuf); char* outbuf = malloc( length); short2network(outbuf, 3 + length); memcpy(outbuf + 2, "Hi ", 3); memcpy(outbuf , inbuf + 2, length); send(outbuf, length); Angreifer kann Speicher des echo-servers auslesen! Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 4

5 Exploits Die Daten, die ein Angreifer sendet, nennt man auch ein Exploit. Der obige Bug ist unter dem Namen Heartbleed bekannt: heise.de News-Meldung vom Der GAU für Verschlüsselung im Web: Horror-Bug in OpenSSL Ein äußerst schwerwiegender Programmierfehler gefährdet offenbar Verschlüsselung, Schlüssel und Daten der mit OpenSSL gesicherten Verbindungen im Internet. Angesichts der Verbreitung der OpenSource-Bibliothek eine ziemliche Katastrophe. [...] Die Entdecker der Lücke sprechen vom Heartbleed Bug, weil der Fehler in der Heartbeat-Funktion gefunden wurde. [...] Durch eine fehlende Überprüfung eines Speicherzugriffs kann ein Angreifer dabei bis zu 64 KByte der Gegenstelle auslesen [...] Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 5

6 heise.de News-Meldung vom Adobe warnt vor Zero-Day-Lücke in Flash und Reader Eine ungepatchte Lücke in Adobes Flash Player lässt sich nach Angaben des Herstellers ausnutzen, um Schadcode in ein System zu schleusen und zu starten. Die Lücke wurde offenbar bereits aktiv bei gezielten Angriffen ausgenutzt, wobei die Opfer allerdings nicht auf eine präparierte Webseite gelockt wurden, sondern per Mail ein infiziertes Excel-Dokument erhielten. Darin war als Objekt laut Adobe eine präparierte swf-datei eingebettet, die der Flash Player beim Öffnen des Dokuments abspielte. [...] Nach Angaben von Kaspersky läuft der bei den bisherigen Attacken benutzte Exploit zwar unter Windows XP, nicht aber unter Windows 7 was an den zusätzlichen Sicherheitsfunktionen (DEP, ASLR) liegt. Adobe arbeitet an einem Patch [...] Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 6

7 heise.de News-Meldung vom Windows-Lücke nach 17 Jahren gefunden [...] Nach der ungepatchten Lücke im Internet Explorer wurde nun noch eine Lücke in Windows bekannt, durch die Anwender mit eingeschränkten Rechten an System-Rechte gelangen können und zwar vermutlich auf allen 32-Bit-Windows-Versionen von Windows NT 3.1 bis einschließlich Windows 7. [...] Ursache des Problems sind Fehler in der 1993 eingeführten Virtual DOS Machine (VDM) [...] Tavis Ormandy hat in der Umsetzung einige Schwachstellen gefunden, durch die ein nicht-privilegiertes 16-Bit-Programm mit mehreren Tricks den zu jedem Prozess gehörenden Kernel-Stack manipulieren kann. Damit ist es möglich, eigenen Code mit Systemrechten auszuführen. Ormandy hat zu der Lücke auch einen Exploit veröffentlicht [...]. Im Test der heise-security-redaktion öffnete der Exploit unter Windows XP und Windows 7 eine Eingabeaufforderung im System-Kontext, also mit den höchsten Rechten. [...] Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 7

8 Software-Schwachstellen Mit Exploits werden Fehler in Programmen ausgenutzt, um diese dazu zu bringen, etwas falsches zu tun Mit Heartbleed kann ein Angreifer Daten auslesen aber eigentliches Ziel: Befehle auf einem fremden Rechnersystem ausführen Es geht also darum, fremder Software Instruktionen unterzuschieben Unsere Frage hier: Wie funktioniert so etwas eigentlich? Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 8

9 Angriffe auf Maschinencode-Ebene In diesem Kapitel: Sicherheitslücken auf Maschinencode-Ebene Ziel: Manipulierte Eingabedaten (lokal oder über ein Netzwerk) verändern den Programmfluss und die ausgeführten Instruktionen Grundlage für eine große Zahl von Angriffen und ein klassisches Malware-Einfallstor Der Klassiker: Buffer Overflows Typisches Ziel: Starten einer Shell (= Eingabeaufforderung) Warum eine Shell? Erlaubt das Ausführen beliebiger Kommandos mit den Rechten des Benutzers, der sie gestartet hat (also den Rechten des geknackten Programms!) Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 9

10 Angriffe auf Maschinencode-Ebene Um solche Angriffe zu verstehen, ist solides Grundlagenwissen über die Funktionsweise von Rechner und Betriebssystem notwendig Insbesondere: Zusammenhang (und Unterschiede) zwischen Hochsprachen, Assembler und Maschineninstruktionen Rolle von Compiler, Assembler und Linker Assembler-Programmierung Ausführbare Programme im Speicher, inkl. Speichermanagement (Segmente, Stack,...) Obwohl Sie das natürlich alle perfekt beherrschen ( Info 2!), wiederholen wir die wichtigsten Aspekte noch einmal kurz ;-) Alles geht aber nicht also bitte selbständig nachlesen und Kenntnisse auffrischen! Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 10

11 Assembler Assembler-Instruktionen werden vom Assembler in Instruktionen des Befehlssatzes des Prozessors übersetzt 1 Assembleranweisung = 1 Maschineninstruktion (anders als bei Hochsprachen!) Eine Instruktion besteht aus einem Opcode und einer variablen Zahl von Operanden Für viele Architekturen (insbes. für x86) gibt es mehrere Assemblersprachen codieren denselben Instruktionssatz (also dieselben Maschineninstruktionen), aber mit anderer Schreibweise Vorsicht Falle: teilweise gemeine Unterschiede im Detail (Reihenfolge der Operanden,...) hier: gas-syntax (= AT&T-Syntax) Standard der GNU-Tools unter Unix (Achtung: NASM in Info 2!) [Bartlett: Programming from the Ground Up, Bartlett Publishing, 2004 (freies E-Book)] [Blum: Professional Assembly Language, Wiley, 2005] Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 11

12 Zur Sicherheit noch einmal: Dies ist keine vollständige Einführung/Referenz in die Assembler- oder Systemprogrammierung! Nachlesen und Erweitern bzw. Auffrischen der eigenen Kenntnisse auch über die Folien hinaus (!) ist erwünscht und notwendig! Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 12

13 x86-instruktionssatz Wir verwenden den Intel x86-instruktionssatz (IA-32) Ab bis heute, auch aktuelle AMD-Prozessoren Sehr mächtiger CISC-Instruktionssatz Inzwischen sind 64-Bit-Erweiterungen (ursprünglich von AMD entworfen) weit verbreitet vom Prinzip her sehr ähnlich wir beschränken uns hier auf 32-Bit-Instruktionen Hier speziell: Linux-Umgebungen mit der C-Standardbibliothek glibc und den GNU-Tools (gcc, gas, ld, gdb,...) Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 13

14 Einige Instruktionen Der x86-befehlssatz stellt eine sehr große Zahl von Instruktionen zur Verfügung, u. a. für Arithmetische Operationen (add, sub,...) Logische Operationen (and, or, xor, not,...) Vergleiche (cmp,...) Zuweisungen (mov,...) Sprünge (jmp, jz, je, jnbe,...) Stack-Operationen (push, pop,...) Funktionsaufrufe (call, ret, enter, leave,...)... Für Details und zum Nachschlagen: IA-32-Dokumentation! [Intel 64 and IA-32 Architectures Software Developer s Manuals, GNU Assembler-Syntax: ] Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 14

15 x86-registersatz EAX, EBX, ECX, EDX sind allgemeine 32-Bit-Register, aber: EAX: Berechnungen EBX: Zeiger (Pointer) ECX: Schleifen EDX: Mult/Div, 64 Bit mit EAX 8- und 16-Bit-Teilregister separat ansprechbar ESI, EDI: String-Operationen EBP, ESP: Base/Stack Pointer EIP: Instruction Pointer (= Program Counter, PC) EFLAGS: Prozessorstatuswort Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 15

16 Suffixe Beispiel GAS verwendet Suffixe hinter Instruktionsnamen, um Operandengrößen festzulegen Optional, wenn sich die Operandengröße aus den Operanden ergibt Aber immer sinnvoll (zur Fehlervermeidung!) Suffixe sind: b: Byte (8 Bit) w: Wort (2 Byte, 16 Bit) l: Doppelwort (4 Byte, 32 Bit) movl %eax, %ecx kopiert 4 Byte von Register EAX nach Register ECX movl $3, 17 schreibt den Wert 3 an Speicheradresse 17 Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 16

17 Operanden Operaden können... in einem Register stehen direkt angegeben werden (als Konstante, Immediate ) movl $3,%eax (Wert 3 ins Register EAX) im Speicher stehen; Speicheradressen können dann... konstant angegeben werden movl 3,%eax (Inhalt von Speicheradr. 3 nach EAX) in einem Register stehen movl $0x12,(%eax) (Wert 18 an die Adr. in EAX) aus Registern errechnet werden movl 8(%eax),%ebx (Inhalt von Adr. EAX+8 nach EBX) movl -4(%eax,%ebx,2),%ecx (Inhalt von Adresse 4 + EAX + EBX 2 nach ECX) Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 17

18 Labels Beispiel Mit Labels können einzelne Stellen im Assemblerquelltext benannt bzw. markiert werden Das Label kann dann an anderen Stellen an Stelle eines konstanten Wertes verwendet werden Beim Übersetzen ersetzt der Assembler bzw. Linker das Label durch die Speicheradresse der Instruktion oder Daten, auf die das Label zeigt Sei buffer ein weiter oben definiertes Label. movl buffer, %eax lädt 4 Bytes aus dem RAM ab Adresse buffer in EAX movl $buffer, %eax kopiert die Adresse (!) von buffer nach EAX Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 18

19 Segmente Beispiel Eine Übersetzungseinheit (also i. d. R.: Quelldatei) kann aus mehreren (Speicher-)Bereichen Segmenten bestehen Die wichtigsten:.text: enthält ausführbare Instruktionen.data: enthält Variablen mit vordefinierten Werten.bss: enthält Variablen ohne vordefinierten Wert.section.data wert1:.byte 0x20 ; ein Byte mit Wert 0x20 reservieren.section.text movb wert1, %bl... Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 19

20 Speicherreservierungen im Datensegment Beispiel Wenn (normalerweise im Datensegment) Konstanten reserviert werden, kann dies mit unterschiedlichen Datentypen erfolgen Die wichtigsten:.byte,.short,.int/.long,.float,.double,.ascii,.asciz/.string.byte 0x55, 0x56, 0x57 reserviert drei Bytes mit Werten 0x55, 0x56, 0x57.short 0x1234 reserviert zwei Bytes mit Werten 0x34 und 0x12 (Little Endian!).ascii "Hello World!\n" reserviert 13 Bytes mit einer Zeichenkette.asciz "Hello World!\n" reserviert 14 Bytes mit einer nullterminierten Zeichenkette Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 20

21 Hausaufgabe (bis Do, 9. April 2015) Bereiten Sie sich darauf vor, Ihren Kommilitonen in fünf Minuten zu erklären, wie ein Funktionsaufruf in Assembler bei Verwendung der C-Aufrufkonvention funktioniert. Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 21

22 Im GNU-C-Compiler (gcc) kann man in C-Programme GAS-Assembler-Instruktionen einbetten ( Inline Assembly ): int main() { asm ( "movl %eax, %ebx;" "movl $0x4711, %eax;" ); return 0; } Hausaufgabe (Übungsblatt 2) a) Schreiben Sie eine C-Funktion, die ausschließlich mit solchen Assembler-Instruktionen eine (hartcodierte) 32-Bit- Ganzzahl (z. B. 0xFEAFFECA) ins Register EAX lädt, dann die Byte-Reihenfolge der Zahl umkehrt und das Ergebnis in EBX ablegt. b) Übergeben Sie das Ergebnis in eine C-Variable und geben Sie es nach dem Assembler-Block (in C) mit printf hexadezimal aus. Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 22

23 Der Stack Im Daten- oder BSS-Segment fest definierte Speicherbereiche reichen nicht immer aus Wenn rekursive Funktionsaufrufe möglich sein sollen, müssen lokale Variablen, Parameter usw. für jeden Aufruf separat gespeichert werden Hierfür wird der Stack verwendet Der Stack ist ein Speicherbereich, in dem dynamisch Daten abgelegt werden können Beginnt bei hoher Speicheradresse, wächst nach unten Elementare Operationen: push: Ablegen eines Wertes auf dem Stack pop: Herunternehmen des letzten Wertes vom Stack Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 23

24 Der Stack Der Stack hat einen Anfang, hier beispielsweise bei Adresse 0x2000 Er hat ab dem Prozessor üblicherweise eine Breite von 4 Byte Man kann auch kürzere Daten auf den Stack legen, richtet diese dann aber an 4-Byte-Grenzen aus Das ESP-Register (Extended Stack Pointer) zeigt auf den letzten Stackeintrag Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 24

25 Der Stack Beispiel (0) EAX = 0x EBX = 0x ESP = 0x C Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 25

26 Der Stack Beispiel (1) EAX = 0x EBX = 0x ESP = 0x C Nächste Instruktion: pushl %ebx Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 26

27 Der Stack Beispiel (2) EAX = 0x EBX = 0x ESP = 0x Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 27

28 Der Stack Beispiel (3) EAX = 0x EBX = 0x ESP = 0x Nächste Instruktion: pushl $0xDEADBEEF Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 28

29 Der Stack Beispiel (4) EAX = 0x EBX = 0x ESP = 0x Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 29

30 Der Stack Beispiel (5) EAX = 0x EBX = 0x ESP = 0x Nächste Instruktion: popl %eax Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 30

31 Der Stack Beispiel (6) EAX = 0xDEADBEEF EBX = 0x ESP = 0x Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 31

32 Funktionsaufrufe Für einen Funktionsaufruf müssen (u. a.) geregelt werden: wie Parameter übergeben werden wie der Rückgabewert übergeben wird wie die Rücksprungadresse gemerkt wird Die Aufrufkonvention legt fest, wie das geschieht Wir konzentrieren uns hier auf die sog. C-Aufrufkonvention (C Calling Convention, cdecl) Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 32

33 Rücksprungadresse Man könnte eine Funktion einfach durch eine jmp-instruktion anspringen Problem: Woher soll die Funktion am Ende wissen, wohin zurückgesprungen werden soll? Wir müssen uns die Adresse der ersten Instruktion hinter dem Sprung in die Funktion merken Das geschieht auf dem Stack also: 1 Adresse der ersten Instruktion hinter dem Sprung auf den Stack legen 2 dann in die Funktion springen 3 am Ende der Funktion die Rücksprungadresse vom Stack holen und dort hinspringen Funktioniert auch bei geschachtelten Funktionsaufrufen: Rücksprungadressen werden auf dem Stack gestapelt! Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 33

34 call und ret EIP kann nicht direkt gelesen oder geschrieben werden! call funktionsanfang 1 ESP um 4 verringern 2 Adresse des Befehls direkt hinter call (= Inhalt des Registers EIP) an die Adresse in ESP schreiben 3 Sprung zur Adresse funktionsanfang ret 1 Register EIP vom Stack laden (von der Adresse in ESP) 2 ESP um 4 erhöhen Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 34

35 Beispiel: Funktionsaufruf movl $0x10, %eax movl $0x20, %ebx call max # Die größere Zahl soll # in ecx gespeichert werden... max: cmpl %ebx, %eax # Der Vergleich jl bgr movl %eax, %ecx # Rückgabe über ecx jmp ende bgr: movl %ebx, %ecx ende: ret Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 35

36 Parameterübergabe Bei der C-Aufrufkonvention werden Parameter auf dem Stack übergeben. Ablauf: 1 Aufrufer legt Parameter auf den Stack (push) 2 Aufrufer ruft die Funktion auf (call) 3 Funktion wird bearbeitet 4 Funktion kehrt mit ret zurück 5 Aufrufer nimmt Parameter vom Stack (addl wert,%esp) Parameter werden in umgekehrter Reihenfolge auf den Stack abgelegt: der erste Parameter zuletzt Übergabe von Zeigern: Speicheradresse übergeben! So kann man auch C-Funktionen zum Beispiel aus der C-Standardbibliothek direkt aus Assembler aufrufen Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 36

37 Beispiel: Parameterübergabe nach C-Konvention pushl $0x10 pushl $0x20 call max addl $8, %esp # Parameter auf den Stack # Funktion aufrufen # Parameter vom Stack nehmen... max: movl 8(%esp), %ebx # Achtung, Rücksprungadresse cmpl 4(%esp), %ebx # liegt auch auf dem Stack! jl bkl movl %ebx, %eax # Rückgabe über eax jmp ende bkl: movl 4(%esp), %eax ende: ret Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 37

38 Beispiel: Aufruf von printf Ein Aufruf von printf( X = %d, x) in Assembler:.section.data x:.int 100 format:.asciz "X = %d\n" #.asciz => nullterminiert.section.text... pushl x pushl $format call printf addl $8, %esp... # x auf den Stack legen # Adresse (!) von format auf den Stack # Funktion aufrufen Ausgabe: X = 100 Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 38

39 Registernutzung Integer- und Pointer-Rückgabewerte werden im Register EAX zurückgegeben Bei längeren Rückgabewerten werden EAX und EDX kombiniert In der C-Aufrufkonvention wird erwartet, dass einige Register nach Rückkehr aus einer Funktion wieder ihren alten Wert beinhalten Diese (u.a. EBP, EBX, EDI, ESI) werden vor Verwendung mit push gesichert und danach mit pop wiederhergestellt Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 39

40 Lokale Variablen und EBP Lokale Variablen liegen ebenfalls auf dem Stack Wenn sich ESP innerhalb einer Funktion ändert, wird es aber schwierig, auf die Parameter und die lokalen Variablen zuzugreifen Deshalb gibt es ein weiteres Spezialregister: EBP markiert den Beginn einer Funktion auf dem Stack bei Funktionseintritt wird der alte Wert von EBP auf den Stack gelegt und so gespeichert danach wird EBP der Wert von ESP zugewiesen dann wird Platz für lokale Variablen geschaffen: Subtrahiere von ESP die Größe der lokalen Variablen bei Funktionsende werden die lokalen Variablen vom Stack gelöscht und der alte Wert von EBP wiederhergestellt Dies muss die Funktion selbst erledigen (kann enter und leave verwenden) Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 40

41 Der Stack beim Funktionsaufruf Beispiel Wie verändern sich der Stack und die Werte von EBP und ESP bei jeder Instruktion im folgenden Code-Ausschnitt? pushl 0xAFFEAFFE pushl 0xDEADBEEF call func addl $8, %esp... func: pushl %ebp movl %esp, %ebp subl $4, %esp... addl $4, %esp popl %ebp ret Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 41

42 Parameter- und Variablenzugriffe Wie wird ein Zugriff auf den ersten (zweiten, dritten,...) Parameter der aktuellen Funktion üblicherweise aussehen? (Kopieren Sie diesen Parameter nach EAX!) 1. Parameter: movl 8(%ebp), %eax 2. Parameter: movl 12(%ebp), %eax 3. Parameter: movl 16(%ebp), %eax... Wie sieht ein entsprechender lokaler Variablenzugriff aus? 1. Variable: movl -4(%ebp), %eax 2. Variable: movl -8(%ebp), %eax... Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 42

43 Stack Frame Mit Stack Frame bezeichnet man den Bereich auf dem Stack, der zu einer Funktion gehört Das ist der Bereich vom alten EBP bis zum ESP: alter EBP gesicherte Register-Inhalte lokale Variablen sonstiges Übergebene Parameter und Rücksprungadresse gehören zum Stackframe der aufrufenden Funktion! darüber, ob das sinnvoll ist, kann man zugegeben streiten Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 43

44 Bestimmung effektiver Adressen mit lea Wenn x eine Variable auf dem Stack ist, wie kann man die Adresse von x berechnen, um sie dann als Parameter übergeben zu können? Mühsam: EBP in EAX laden dann Offset zum Speicherplatz von x addieren Einfacher mit lea (load effective address): leal op2, op1 op2 muss eine Speicherreferenz sein, z. B. -4(%ebp) davon wird die Speicheradresse berechnet und das Ergebnis in op1 gespeichert es wird nicht der Inhalt dieser Speicheradresse in op1 gespeichert, sondern die Adresse selbst! Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 44

45 Beispiel: lea... movl $10, -4(%ebp) # x = 10 leal -4(%ebp), %eax # Adr. von x bestimmen pushl %eax # Adr. von x auf den Stack call red addl $4, %esp... red: enter $0,$0 # Abkürzung fürs Anpassen von EBP/ESP movl 8(%ebp), %eax subl $5, (%eax) leave # entspricht: mov %ebp,%esp; pop %ebp ret Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 45

46 Von der Hochsprache zum Maschinencode Was macht gcc, wenn er für eine.c-datei aufgerufen wird? 1 Der C-Präprozessor (cpp) wird ausgeführt Resultat: eine.c-datei 2 Dann wird kompiliert: C-Programm wird in Assembler-Programm übersetzt Resultat: eine.s-datei (in gas-syntax) 3 Jetzt wird assembliert (mit gas): Assembler-Programm wird in Prozessorinstruktionen umgesetzt Resultat: eine.o-datei Relocatable hier stehen endgültige Speicheradressen noch nicht fest 4 Schließlich werden alle benötigten Dateien und Bibliotheken zusammengelinkt (mit ld): Resultat: ausführbares Programm Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 46

47 Beispiel: Von C zu Assembler #include <stdio.h> int main() { printf("hello World!\n"); return 0; } Übersetzen mit gcc hello.c -S -m32 Ergebnis: hello.s Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 47

48 Beispiel: Von C zu Assembler.file "hello.c".section.rodata.lc0:.string "Hello World!".text.globl main.type main: leal 4(%esp), %ecx andl $-16, %esp pushl -4(%ecx) pushl %ebp movl %esp, %ebp pushl %ecx subl $4, %esp movl $.LC0, (%esp) call puts movl $0, %eax addl $4, %esp popl %ecx popl %ebp leal -4(%ecx), %esp ret.size main,.-main.ident "GCC: (GNU) (Ubuntu ubuntu4)".section.note.GNU-stack,"",@progbits Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 48

49 Disassembler Ein Disassembler kann die Maschineninstruktionen in einem Programm in Assembleranweisungen zurückübersetzen Dabei geht normalerweise einiges verloren: Labels und Kommentare sind im Maschinencode nicht mehr enthalten Aber der Weg über den in den Debugger gdb eingebauten Disassembler kann interessant sein: wenn mit der Option -g kompiliert wurde......dann kann gdb gezielt einzelne Funktionen des fertig übersetzten Programms disassemblieren hierfür zunächst gdb programmname aufrufen dann mit disas funktionsname eine Funktion disassemblieren gdb kann mit dem Befehl quit beendet werden gdb kann noch viel mehr es lohnt sich, sich damit vertraut zu machen! Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 49

50 Beispiel: Disassembler $ gcc -g -o hello hello.c -m32 $ gdb hello GNU gdb 6.8-debian Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later < This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i486-linux-gnu"... (gdb) disas main Dump of assembler code for function main: 0x <main+0>: lea 0x4(%esp),%ecx 0x <main+4>: and $0xfffffff0,%esp 0x b <main+7>: pushl -0x4(%ecx) 0x e <main+10>: push %ebp 0x f <main+11>: mov %esp,%ebp 0x <main+13>: push %ecx 0x <main+14>: sub $0x4,%esp 0x <main+17>: movl $0x ,(%esp) 0x c <main+24>: call 0x80482d4 <puts@plt> 0x <main+29>: mov $0x0,%eax 0x <main+34>: add $0x4,%esp 0x <main+37>: pop %ecx 0x a <main+38>: pop %ebp 0x b <main+39>: lea -0x4(%ecx),%esp 0x e <main+42>: ret End of assembler dump. (gdb) quit $ Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 50

51 Hausaufgabe (Übungsblatt 2) Bestimmen Sie für das Assemblerprogramm zum Umkehren der Bytereihenfolge, das Sie für die Aufgabe auf Folie 22 erstellen, den (hexadezimalen) Maschinencode. Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 51

52 Ein erster Buffer Overflow Betrachten Sie folgende C-Funktion: void read() { char buf[8]; printf("please give me some input: "); gets(buf); printf("thanks! You said: %s\n", buf); } Wie lang darf die Benutzereingabe maximal sein? Was passiert, wenn der Benutzer mehr als 7 Zeichen eingibt? Zu lange Eingaben werden auf dem Stack über das Ende des für buf reservierten Bereiches hinaus geschrieben. Andere Werte werden überschrieben ein Buffer Overflow! Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 52

53 Stack im Beispiel Wie sieht der Stack im Beispiel beim Aufruf von gets() aus? Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 53

54 Das ganze C-Programm #include <stdio.h> void read() { char buf[8]; printf("please give me some input: "); gets(buf); printf("thanks! You said: %s\n", buf); } void callme() { printf("congratulations!\n"); } int main(char* argc, char** argv) { read(); } Ist eine Eingabe in read() möglich, bei der die (eigentlich nie ausgeführte) Funktion callme() angesprungen wird? Idee: Platziere die Startadresse von callme() so in der Eingabe, dass sie über die Rücksprungadr. geschrieben wird Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 54

55 Shellcode-Exploits Normalerweise möchten wir nicht eine existierende Funktion im Programm anspringen, sondern eigene Befehle einschleusen Insbesondere: eine Shell starten! Im Folgenden betrachten wir deshalb Techniken, die dies ermöglichen und Schutzmechanismen dagegen Zunächst: Klassische Buffer-Overflow-Exploits mit sog. Shellcode auf dem Stack Danach: Andere Möglichkeiten, an eine Shell zu kommen Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 55

56 Weiteres Vorgehen 1 Wie sieht Assembler-/Maschinencode aus, der eine Shell startet? 2 Wie können wir diesen Maschinencode einschleusen? 3 Wie bringen wir ein verwundbares Programm dazu, den Code anzuspringen? [Aleph One: Smashing The Stack For Fun And Profit, Phrack 7(49), 1996] Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 56

57 Was passiert hier? movl $1, %eax movl $0, %ebx int $0x80 Das ist ein Linux-Systemaufruf: Systemaufruf Nr. 1 (übergeben in EAX) mit einem Parameter (Wert 0, übergeben in EBX) dann Software-Interrupt 0x80 auslösen syscall 1 = Prozess beenden (hier mit Exit-Code 0) Achtung: Systemaufrufe sind direkte Aufrufe von Kernel-Funktionen nicht verwechseln mit Aufrufen der C-Standardbibliothek! Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 57

58 Syscall 0xB: execve Im Folgenden wichtig: der Linux-Systemaufruf execve Eine Möglichkeit, ein Programm zu starten Systemaufruf Nr. 11 (0xB), erwartet drei Parameter in EBX: Adresse eines nullterminierten Strings mit dem Pfad der ausführbaren Datei übergeben in ECX: Adresse eines char*-arrays (= ARGV des aufgerufenen Programms) in EDX: Adresse eines Environments (= Liste von Umgebungsvariablen im einfachsten Fall 0x ) Ein einfacher Programmaufruf mit execve entspricht in C: char *name[2]; char *env[1]; name[0] = "/pfad/zum/programm"; name[1] = 0; env[0] = 0; execve(name[0], name, env); // EBX=name[0], ECX=name, EDX=env Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 58

59 execve in Exploits Typische Benutzung in Exploits: lege nullterminiert /bin/sh im Speicher ab (ab Adr. x) lege im Speicher (an Adr. y) die Adresse x gefolgt von 0x ab setze EAX = 0xB setze EBX = x setze ECX = y setze EDX auf eine Adresse, an der 0x steht (z. B. EDX = y + 4) löse int $0x80 aus Dies wäre eine einfache Form von sogenanntem Shellcode: Maschinencode, der eine Shell (/bin/sh) startet Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 59

60 Shellcode auf dem Stack Idee: Wir schreiben Maschinencode zum Starten einer Shell auf dem Stack und überschreiben die Rücksprungadresse so, dass er angesprungen wird Also alles Wesentliche in den Puffer packen: String /bin/sh Maschinencode für execve-aufruf Versuchen wir s! Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 60

61 Erster Shellcode Konstruktionsidee für den Shellcode (schematisch): Dabei müssen wir die richtigen Adressen einsetzen Und zwar die Adressen auf dem Stack im überlaufenden Puffer Je nachdem, wo der Stackframe gerade liegt, können die Adressen verschieden sein! Und jetzt? Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 61

62 Shellcode mit unbekannter Startadresse Wir lösen das in zwei Schritten: 1 Zunächst kümmern wir uns um die Rücksprungadresse 2 Danach um die unbekannte Adresse des Strings /bin/sh Ideen für das erste Problem? Wir werden intelligent raten müssen Ungefähr abschätzen kann man die Adresse durch Beobachten des lokalen Programms: Wo liegt der Stack Frame der angegriffenen Funktion üblicherweise. Aber reicht eine ungefähre Rücksprungadresse? Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 62

63 NOP Sleds Wenn wir bei der Rücksprungadresse auch nur ein Byte daneben liegen, wird der Shellcode nicht richtig ausgeführt Idee: Wir füllen den Bereich vor den wichtigen Instruktionen mit NOPs (Maschinencode: 0x90) Instruktion NOP ( No Operation ) tut gar nichts :-) Wir schreiben dann einen Schätzwert in die Rücksprungadresse......von dem wir hoffen, dass er irgendwo in dieser NOP Sled (auch: NOP Slide, NOP Ramp) landet Wird ab dort ausgeführt, landen wir im Shellcode! Funktioniert um so besser, je größer der Puffer ist ( mehr NOPs!) Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 63

64 Unbekannte Adresse des Strings An die Adresse von /bin/sh zu kommen ist schwieriger Hier tut es keine ungefähre Lösung Idee: Wir besorgen uns die Adresse zur Laufzeit Wie könnte das gehen? (Tipp: Welche Instruktion schreibt eine Adresse auf den Stack?) Idee: call-instruktion verwenden! Wie sieht hierzu jetzt der Shellcode aus? Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 64

65 Adressbestimmung mittels call call start # relativer Sprung: 16 Byte vorwärts.string "/bin/sh" # nullterminiert (insges. 8 Byte).int 0 # 4 Null-Bytes.int 0 # 4 Null-Bytes start: popl %ebx # Rücksprungadr. vom Stack movl %ebx, 8(%ebx) movl $0xb, %eax lea 8(%ebx), %ecx lea 12(%ebx), %edx int $0x80 call start wird vom Assembler in eine call-instruktion mit relativem Sprung um 16 Byte nach vorne übersetzt. Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 65

66 Das folgende C-Programm springt den im String shellcode übergebenen Maschinencode an: char shellcode[] = "\x90\x90\x90\x90\x90\x90..."; void run_shellcode() { int* ret; ret = (int*)(&ret) + 2; *ret = (int)shellcode; } int main() { run_shellcode(); } Hausaufgabe (Übungsblatt 2) (a) Verstehen Sie, wie und warum das C-Programm funktioniert. (b) Fügen Sie den Maschinencode zum Shellcode auf der vorangegangenen Folie 65 in den String shellcode ein und testen Sie das Ergebnis. Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 66

67 Null-Bytes in der Eingabe Man könnte meinen, wir wären fertig... Aber betrachten wir den assemblierten Maschinencode: ASSEMBLER MASCHINENCODE call start e string "/bin/sh" 2f e 2f int int start: popl %ebx 5b movl %ebx, 8(%ebx) 89 5b 08 movl $0xb, %eax b8 0b lea 8(%ebx), %ecx 8d 4b 08 lea 12(%ebx), %edx 8d 53 0c int $0x80 cd 80 Dieser Maschinencode enthält jede Menge Null-Bytes! Übergeben wir das als Eingabe, wird beim Umkopieren in den Puffer das erste 0-Byte als String-Ende interpretiert Der Code landet dann nicht (komplett) da, wo er hin soll! Wie werden wir die Null-Bytes los? Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 67

68 Abhilfe: Instruktionen ersetzen! Idee: Ersetze Instruktionen mit problematischem Maschinencode durch gleichwertige Alternativen movl $0xb, %eax ist ein Problem. Wodurch könnten wir das ersetzen? xorl %eax, %eax movb $0xb, %al 31 c0 b0 0b Erreicht das gleiche, Maschinencode enthält keine Nullen mehr! Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 68

69 Abhilfe: Instruktionen ersetzen! (2) Die call-instruktion enthält ebenfalls 0-Bytes. Wie können wir das lösen? Das Problem ist der Sprung-Offset (+16 Byte) Dieser wird als 32-Bit-Wert codiert daher die 0-Bytes call-varianten mit 8-Bit-Operaden gibt es nicht aber ein solches jmp gibt es jmp alleine hilft aber auch nicht weiter wir brauchen call ja wegen der Rücksprungadresse Idee: negativer Offset (und dadurch keine 0-Bytes mehr) bei call durch geschicktes Kombinieren mit jmp jmp j2 eb 02 j1: jmp start eb 15 j2: call j1 e8 f9 ff ff ff Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 69

70 Abhilfe: Instruktionen ersetzen! (3) Was machen wir mit den 9 Null-Bytes hinter /bin/sh? Idee: Wir schreiben sie erst zur Laufzeit Ersetzen durch harmlose Zeichen im Shellcode und Hinzufügen von Instruktionen, die die betreffenden 9 Bytes mit Nullen überschreiben Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 70

71 Hausaufgabe (Übungsblatt 2) (a) Erstellen Sie den vollständigen Shellcode ohne Null-Bytes als Assembler-Quellcode. (b) Übersetzen Sie ihn in Maschinencode. (c) Testen Sie ihn im C-Programm von Folie 66. Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 71

72 Hausaufgabe (Übungsblatt 3) Betrachten Sie das untenstehende C-Programm. Sie finden eine bereits übersetzte Version davon ( hackme2 ) in ihrer VM im Verzeichnis 02-exploit. Bringen Sie es dazu, eine Shell zu starten! #include <stdio.h> #include <string.h> void do_something(char * name) { char buf[1024]; strcpy(buf, "Please hack me, "); strcat(buf, name); strcat(buf, "."); puts(buf); } int main(int argc, char ** argv) { if (argc < 2) puts("please enter your name as a command line parameter."); else do_something(argv[1]); return 0; } Tipps: Mit dem Befehl./hackme2 $(./exploit) starten Sie hackme2 so, dass die Ausgabe eines anderen Programms (namens exploit) als erste Kommandozeilenoption an hackme2 übergeben wird. Schreiben Sie ein passendes Programm exploit! Falls Sie selber kompilieren: Setzen Sie die gcc-option -fno-stack-protector! Das deaktiviert... Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 72

73 Schutzmechanismen und Gegenangriffe Wir haben bis jetzt einfache Pufferüberläufe kennen und verstehen gelernt Dies ist ein altes und lange bekanntes (aber dennoch nach wie vor aktuelles!) Problem Wegen der großen Bedeutung dieser Lücken wurde eine Reihe von Schutzstrategien entwickelt Davon schauen wir uns jetzt ein paar an und lernen bei der Gelegenheit gleich noch ein paar andere Angriffstechniken kennen Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 73

74 (Foto: J. Winkler) Früher wurden in Bergwerken Kanarienvögel eingesetzt, um bei geringen Sauerstoffkonzentrationen frühzeitig zu warnen. Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 74

75 Überwachen des Stacks: Stack Canaries Idee: Lege beim Funktionseintritt direkt unter die Rücksprungadresse ein spezielles Datenwort (Stack Canary) auf den Stack......und überprüfe am Funktionsende (vor dem ret), ob es unbeschädigt ist Ein Pufferüberlauf, der die Rücksprungadresse überschreibt, wird vorher auch den Canary überschreiben Bei fehlgeschlagenem Canary-Test wird nicht ret ausgeführt, sondern das Programm beendet Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 75

76 Stack Canaries Die Kunst dabei: Wähle den Canary so, dass der Angreifer ihn nicht reproduzieren kann Zwei gängige Varianten sind: Canaries aus speziellen Steuerzeichen (üblicherweise Null-Zeichen, Carriage Return, Line Feed, EOF); diese lassen sich oft nicht einschleusen ein zufällig beim Programmstart generierter Wert (der im Programm möglichst sicher aufbewahrt wird) Viele Compiler unterstützen inzwischen Stack Canaries (u. a. GCC: an- bzw. ausschalten geht mit den Optionen -fstack-protector und -fno-stack-protector) Bei einigen Betriebssystemen ist das auch standardmäßig aktiv (z. B. in Ihrer Ubuntu 8.04-VM!) Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 76

77 Stack Canaries umgehen Stack Canaries machen das Leben schwerer, lassen sich aber häufig doch umgehen Z. B. können andere Zeiger auf dem Stack ausgenutzt werden Beispielsituation: void xyz() { int *p; char buf[8];... gets(buf);... read_integer_from_user(p);... } Wie sieht der Stack aus? Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 77

78 Stack Canaries umgehen void xyz() { int *p; char buf[8];... gets(buf);... read_integer_from_user(p);... } Idee: Überschreibe mit einem Überlauf von buf den Inhalt von p...und damit die Adresse, an die später die vom Benutzer eingelesene Zahl geschrieben wird Im einfachsten Fall: Überschreibe p mit der Adresse, an der die Rücksprungadresse liegt und lies dann in *p eine neue Rücksprungadresse ein Der Stack Canary bleibt dabei intakt! [Bulba and Kil3r, Bypassing StackGuard and StackShield, Phrack 10(56), 2000] Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 78

79 Heap Overflows Außerdem liegen nicht alle Puffer immer auf dem Stack Pufferüberläufe lassen sich auch anderswo ausnutzen! Beispielsweise ist das auch auf dem Heap möglich: typische Implementationen von malloc und free speichern Verwaltungsinformationen am Anfang reservierter und freier Speicherblöcke in diesen Headern stehen Informationen wie etwa Zeiger auf den nächsten/vorangegangenen Heap-Speicherblock oder Längenangaben für die Blöcke Wenn ein Puffer auf dem Heap überläuft, können Verwaltungsinformationen nachfolgender Blöcke überschrieben werden. Folge: Zunächst gar keine... Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 79

80 Heap Overflows... aber spätere malloc/free-aufrufe greifen auf die Daten zu und entnehmen ihnen beispielsweise die Position anderer Header Eine falsche Adresse des nächsten freien Blocks kann dann z. B. dazu führen, dass an ganz anderer Stelle Daten überschrieben werden...z. B. die Rücksprungadresse... [Anonymous, Once upon a free(), Phrack 11(57), 2001] [Michel Maxx Kaempf, Vudo An object superstitiously believed to embody magical powers, Phrack 11(57), 2001] Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 80

81 Sauberes Programmieren Der einfachste Schutz: sauberes Programmieren Immer Pufferlängen überprüfen! Also z. B. immer strncpy statt strcpy, fgets statt gets,... Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 81

82 Sauberes Programmieren Sauber Programmieren ist leicht gesagt... Der Teufel steckt im Detail! Was ist zum Beispiel hier falsch? void xyz() { char buf[128]; fgets(buf, sizeof buf, stdin); printf(buf); } Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 82

83 Formatstring-Verwundbarkeiten Es gibt einen kleinen, aber wesentlichen Unterschied zwischen printf("%s", buf); und printf(buf); Im ersten Fall ist buf ein String-Parameter. Im zweiten Fall ist buf der Formatstring! Angenommen in buf kommen printf-formatstring- Anweisungen vor (z. B. %s, %u, %x usw.) Im ersten Fall werden sie einfach ausgegeben im zweiten Fall wird buf als Formatstring interpretiert! Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 83

84 Formatstring-Verwundbarkeiten Zunächst könnte man meinen, printf(buf) ist vor allem deswegen eine schlechte Idee, weil es nicht richtig funktioniert, wenn Prozentzeichen in buf vorkommen Das war die allgemeine Meinung bis ca. Mitte 2000 Dass es nicht funktioniert ist auch richtig; aber das ist nicht das Hauptproblem... Es wird interessant, sobald ein Angreifer den Inhalt von buf (teilweise) bestimmen kann Was wird ausgegeben, wenn der Benutzer ein oder mehrere Male z. B. %x in buf einfügt? [scut: Exploiting Format String Vulnerabilities, 2001] Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 84

85 Formatstring-Angriffe: Auslesen des Stacks Jede Formatstring-Steueranweisung gehört zu einem Parameter von printf Diese Parameter sucht printf auf dem Stack oberhalb des Zeigers auf den Formatstring (C-Aufrufkonventionen!) Enthält der Formatstring mehr Steueranweisungen als Parameter übergeben wurden, wird das, was auf dem Stack liegt, als Parameter interpretiert! Wird z. B. ein Formatstring wie %x%x%x%x... eingeschleust, dann werden entsprechend viele Stack-Worte ausgegeben Damit kann man an Informationen kommen, die für Angriffe hilfreich sein können, z. B. Inhalte lokaler Variablen Adresse des Stacks (alter EBP!) Stack Canaries... Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 85

86 Formatstring-Angriffe: Segmentation Faults Das ist noch lange nicht alles! Man kann durch Formatstrings auch ein Programm zum Absturz bringen Ideen, wie? Ein Formatstring %s%s%s%s... interpretiert jedes Datenwort auf dem Stack als Startadresse eines Strings Es wird versucht, von all diesen Adressen die Strings zu lesen und auszugeben Früher oder später wird eine ungültige Adresse gelesen Die Folge ist ein Segmentation Fault Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 86

87 Formatstring-Angriffe: Lesen beliebiger Adressen Wenn der Formatstring selbst auf dem Stack liegt, können wir sogar von beliebigen Speicheradressen lesen! Idee: 1 an eine Stelle im Formatstring die Zieladresse als 4-Byte-ASCII-String einbauen 2 so viele Stack-Worte (z. B. mit %x oder %u) abarbeiten bis wir an dieser Stelle im Formatstring selbst ankommen 3 dann mit einem %s die im Formatstring codierte Adresse als String-Startadresse interpretieren und ab dort bis zum ersten Null-Zeichen ausgeben Aufbau eines solchen Formatstrings (schematisch) z. B. so: ADDR%x%x%x%x...%s Anzahl der %x-sequenzen hängt davon ab, wie weit es auf dem Stack bis zu ADDR ist Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 87

88 Formatstring-Angriffe: Beispiel #include <stdio.h> char secret[] = "geheim"; // at 0x int main() { char buf[128]; int printed = 0; fgets(buf, sizeof buf, stdin); printed = printf(buf); return printed; } Wie sieht der Stack beim Aufruf von printf bei Eingabe fghi%u%s ( ) aus? Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 88

89 Formatstring-Angriffe: Stack-Layout (0) Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 89

90 Formatstring-Angriffe: Stack-Layout (1) Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 90

91 Formatstring-Angriffe: Stack-Layout (2) Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 91

92 Formatstring-Angriffe: Stack-Layout (3) Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 92

93 Formatstring-Angriffe: Stack-Layout (4) Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 93

94 Formatstring-Angriffe: Stack-Layout (5) Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 94

95 Formatstring-Angriffe: Stack-Layout (6) Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 95

96 Formatstring-Angriffe: Tricks mit %n Die Formatstring-Steuersequenz %n interpretiert den zugehörigen Parameter als Adresse eines Integers und schreibt in diesen Integer die Anzahl der bis dahin beim Abarbeiten des Formatstrings ausgegebenen Zeichen! Ahnen Sie, was wir damit tun können? Das lässt sich nutzen, um an beliebige Speicheradressen beliebige Werte zu schreiben! Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 96

97 Formatstring-Angriffe: Schreiben in den Speicher Grobe Idee: Baue wie beim Lesen beliebiger Adressen die Zieladresse in den Formatstring (auf dem Stack) ein Wie gehabt dorthin z. B. mit %u vorarbeiten......und gleichzeitig dafür sorgen, dass genau so viele Zeichen ausgegeben werden, wie es dem zu schreibenden Wert entspricht Kann man gezielt z. B. durch die Variante %???u erreichen: damit wird eine Zahl mit??? Stellen (also??? Zeichen!) ausgegeben Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 97

98 Schreiben mit Formatstrings: Beispiel Ziel: 0xAF an Speicherstelle 0x schreiben. Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 98

99 Schreiben mit Formatstrings: Beispiel (1) Ziel: 0xAF an Speicherstelle 0x schreiben. Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 99

100 Schreiben mit Formatstrings: Beispiel (2) Ziel: 0xAF an Speicherstelle 0x schreiben. Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 100

101 Schreiben mit Formatstrings: Beispiel (3) Ziel: 0xAF an Speicherstelle 0x schreiben. Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 101

102 Schreiben mit Formatstrings: Beispiel (4) Ziel: 0xAF an Speicherstelle 0x schreiben. Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 102

103 Schreiben mit Formatstrings: Beispiel (5) Ziel: 0xAF an Speicherstelle 0x schreiben. Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 103

104 Formatstring-Angriffe: Schreiben in den Speicher Weil die Zahl ausgegebener Zeichen nicht beliebig in die Höhe getrieben werden kann, können so zunächst nur relativ kleine Werte geschrieben werden Idee: Schreibe nacheinander mehrere überlappende Ganzzahlen an um 1 Byte verschiedene Adressen So bleibt von jeder nur das niedrigstwertige Byte erhalten Durch geschicktes Anordnen lassen sich beliebige Byte-Sequenzen erzeugen! Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 104

105 Formatstring-Angriffe: Schreiben in den Speicher Weil die Zahl ausgegebener Zeichen nicht beliebig in die Höhe getrieben werden kann, können so zunächst nur relativ kleine Werte geschrieben werden Idee: Schreibe nacheinander mehrere überlappende Ganzzahlen an um 1 Byte verschiedene Adressen So bleibt von jeder nur das niedrigstwertige Byte erhalten Durch geschicktes Anordnen lassen sich beliebige Byte-Sequenzen erzeugen! Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 104

106 Formatstring-Angriffe: Schreiben in den Speicher Weil die Zahl ausgegebener Zeichen nicht beliebig in die Höhe getrieben werden kann, können so zunächst nur relativ kleine Werte geschrieben werden Idee: Schreibe nacheinander mehrere überlappende Ganzzahlen an um 1 Byte verschiedene Adressen So bleibt von jeder nur das niedrigstwertige Byte erhalten Durch geschicktes Anordnen lassen sich beliebige Byte-Sequenzen erzeugen! Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 104

107 Formatstring-Angriffe: Schreiben in den Speicher Weil die Zahl ausgegebener Zeichen nicht beliebig in die Höhe getrieben werden kann, können so zunächst nur relativ kleine Werte geschrieben werden Idee: Schreibe nacheinander mehrere überlappende Ganzzahlen an um 1 Byte verschiedene Adressen So bleibt von jeder nur das niedrigstwertige Byte erhalten Durch geschicktes Anordnen lassen sich beliebige Byte-Sequenzen erzeugen! Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 104

108 Formatstring-Angriffe: Schreiben in den Speicher Weil die Zahl ausgegebener Zeichen nicht beliebig in die Höhe getrieben werden kann, können so zunächst nur relativ kleine Werte geschrieben werden Idee: Schreibe nacheinander mehrere überlappende Ganzzahlen an um 1 Byte verschiedene Adressen So bleibt von jeder nur das niedrigstwertige Byte erhalten Durch geschicktes Anordnen lassen sich beliebige Byte-Sequenzen erzeugen! Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 104

109 Formatstring-Angriffe: Zusammenfassung Können bei allen Befehlen auftreten, die Formatstrings benutzen Wenn es dumm läuft und entsprechende Fehler in einem Programm existieren, werden sehr weitgehende Angriffe möglich Vorstellbar ist z. B. das Einbetten von Shellcode in einen auf dem Stack abgelegten Formatstring der zugleich auf die Rücksprungadresse entsprechend überschreibt, so dass der Shellcode angesprungen wird Das könnte man sogar so hinkriegen, dass ein Stack Canary unbeschädigt bleibt! In gewisser Weise sind Formatstring-Angriffe also sogar mächtiger und damit gefährlicher als klassische Pufferüberläufe! [ Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 105

110 Den Stack (Heap,...) nicht ausführbar machen Aktuelle (64-Bit-)CPUs können einzelne Speicherseiten in der Seitentabelle der virtuellen Speicherverwaltung als nicht ausführbar markieren Dies kann vom Betriebssystem genutzt werden, um Datenbereiche (wie den Stack) nicht-ausführbar zu machen Ein Sprung an eine solche Adresse löst dann einen Segmentation Fault aus Also lässt sich kein Code auf den Stack einschleusen und anspringen Viele Namen dafür: DEP, NX, W X (Write-XOR-Execute), PaX, XD,... Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 106

111 JIT Spraying ActionScript, C#, Java, JavaScript,... soll performant ausgeführt werden Darum: Nicht (nur) interpretieren, sondern just in time zu Maschinencode kompilieren und direkt anspringen Speicherseiten mit Maschinencode müssen ausführbar sein! [Blazakis: Interpreter Exploitation: Pointer Inference and JIT Spraying, http: // Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 107

112 JIT Spraying Funktionsweise Wie können wir hier eigenen Code einschleusen? Maschinencode versetzt anspringen: Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 108

113 JIT Spraying Limitierungen Adresse des eingeschleusten Codes schwer vorhersagbar (mehr dazu später) JIT-Compiler (bislang) nur in Webbrowser Adobe Flash PDF-Reader Java.NET Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 109

114 Angriffe ohne eingeschleusten Code Kein JIT-Compiler? Dann müssen wir wohl ohne eigenen Maschinencode auskommen......dafür gibt es genug Möglichkeiten. :-) Besonders mächtig sind z. B. Return-to-libc-Angriffe Idee: überschreibe die Rücksprungadresse mit Adressen von Funktionen aus der C-Standardbibliothek durch noch weiteres Überschreiben des Stack können diesen Funktionen sogar Parameter übergeben werden Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 110

115 Return-to-libc-Angriffe Besonders raffinierte Variante: basteln eines vollständig künstlichen Stacks mit vielen Rücksprungadressen kann dann viele Aufrufe in die Standardbibliothek beliebig hintereinander ausführen Unter Windows gab es Angriffe, die durch das Auslösen geeigneter Funktionsaufrufe DEP ausgeschaltet haben :-) Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 111

116 Verwendung beliebiger Einsprungpunkte Als Einsprungadressen können dabei nicht nur die Anfangsadressen von Funktionen dienen: man kann prinzipiell an eine beliebige Stelle in eine Funktion hinein springen...und so z. B. nur die letzten paar Maschineninstruktionen vor einem ret ausführen 2007 wurde gezeigt, dass die Enden von Funktionen in der GNU libc ausreichen, um beliebige Berechnungen auszuführen Vorgeschlagen und demonstriert wurde sogar ein Compiler, der Programme in eine Folge von solchen Rücksprungadressen übersetzt! [Shacham: The Geometry of Innocent Flesh on the Bone: Return-into-libc without Function Calls (on the x86), CCS 07] Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 112

117 Adressbereichs-Randomisierung Um die Rücksprungadresse gezielt modifizieren zu können, müssen Angreifer die Zieladresse kennen Das Betriebssystem bzw. der Linker können die Startadressen der einzelnen Speicherbereiche von ausführbaren Programmen randomisieren: Address Space Layout Randomization (ASLR) Wähle also zufällige Startadressen für Bereiche wie Stack Code- und Datensegment Heap Einsprungadressen für Bibliotheksfunktionen usw. In vielen modernen Betriebssystemen implementiert In unserer Ubuntu-VM ist ASLR ausgeschaltet Test: cat /proc/sys/kernel/randomize_va_space Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 113

118 Auslesen von Adressen Formatstring-Attacken liefern Rücksprungadressen (gibt Aufschluss über die Lage des Codesegmentes und/oder Bibliothekseinsprungpunkte) Zeiger auf den Heap oder Stack in lokalen Variablen... Speicheradressen können in Hochsprachen (ActionScript, JavaScript, Python,...) preisgeben werden durch hashcode-werte Reihenfolge von Objekten in Mengen und Maps Debug-Methoden [Blazakis: Interpreter Exploitation: Pointer Inference and JIT Spraying, Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 114

119 Auslesen von Adressen in Python Beispiel: Python >>> help(id) id(object) -> integer Return the identity of an object. This is guaranteed to be unique among simultaneously existing objects. (Hint: it s the object s memory address.) >>> vlname = Netzwerksicherheit >>> id(vlname) $ gdb python $(pidof python) (gdb) x/s x14 0xb7cf5604: "Netzwerksicherheit" Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 115

120 Raten von Startadressen Ein 32-Bit-Adressraum lässt nur wenig Spielraum für die Randomisierung Das liegt vor allem an Alignment-Anforderungen, zum Beispiel muss der Stack an einer durch 16 teilbaren Adresse anfangen der Heap auf einer Speicherseitengrenze (glatte 4 KiB) anfangen usw. Das lässt nur relativ wenige Möglichkeiten (also eine geringe Entropie) Aus Performancegründen werden oft nicht-kryptographische Zufallsgeneratoren verwendet Es wurde gezeigt, wie Angreifer in vielen Fällen durch geschicktes Raten ans Ziel kommen können [Shacham, Page, Pfaff, Goh, Modadugu, Boneh: On the Effectiveness of Address-Space Randomization, CCS 04] Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten 116

121 Speicher-Checks sind ohne weitere Optimierungen (JIT) langsam(er) Performante High-Level-Sprachen sind nicht immer verfügbar Netzwerksicherheit Ein Teil (kleiner) 2: Buffer Overflows Code-Teil und anderemuss Gemeinheiten immer in Assembler 117 Sichere Programmierung Wie kann man Speichermanagement-Schwachstellen vermeiden? In einer abstrakteren Programmiersprache (z.b. Java oder Python) programmieren

Netzwerksicherheit. Teil 2: Buffer Overflows und andere Gemeinheiten. Philipp Hagemeister. Sommersemester 2017 Heinrich-Heine-Universität Düsseldorf

Netzwerksicherheit. Teil 2: Buffer Overflows und andere Gemeinheiten. Philipp Hagemeister. Sommersemester 2017 Heinrich-Heine-Universität Düsseldorf Netzwerksicherheit Teil 2: Buffer Overflows und andere Gemeinheiten Philipp Hagemeister Sommersemester 2017 Heinrich-Heine-Universität Düsseldorf Netzwerksicherheit Teil 2: Buffer Overflows und andere

Mehr

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

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

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

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

TeamSpeak3 Einrichten

TeamSpeak3 Einrichten TeamSpeak3 Einrichten Version 1.0.3 24. April 2012 StreamPlus UG Es ist untersagt dieses Dokument ohne eine schriftliche Genehmigung der StreamPlus UG vollständig oder auszugsweise zu reproduzieren, vervielfältigen

Mehr

Zwischenablage (Bilder, Texte,...)

Zwischenablage (Bilder, Texte,...) Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen Menü Macro WinIBW2-Macros unter Windows7?... 1 Macros aufnehmen... 1 Menübefehle und Schaltflächen in Macros verwenden... 4 Macros bearbeiten... 4 Macros löschen... 5 Macro-Dateien... 5 Macros importieren...

Mehr

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

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

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

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

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

Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging Das Beispiel orientiert sich am selben Code, der im Teil 1 der Serie verwendet wurde. Text Styles: Shell Prompt mit

Mehr

Backup der Progress Datenbank

Backup der Progress Datenbank Backup der Progress Datenbank Zeitplandienst (AT): Beachten Sie bitte: Die folgenden Aktionen können nur direkt am Server, vollzogen werden. Mit Progress 9.1 gibt es keine Möglichkeit über die Clients,

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Peter Koos 03. Dezember 2015 0 Inhaltsverzeichnis 1 Voraussetzung... 3 2 Hintergrundinformationen... 3 2.1 Installationsarten...

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

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express

Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Howto Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Peter Bitterlich Markus Langer 12. Oktober 2012 Zusammenfassung Dieses Dokument erklärt Schritt für Schritt die Installation

Mehr

Eine Einführung in die Installation und Nutzung von cygwin

Eine Einführung in die Installation und Nutzung von cygwin Eine Einführung in die Installation und Nutzung von cygwin 1 1. Woher bekomme ich cygwin? Cygwin ist im Internet auf http://www.cygwin.com/ zu finden. Dort lädt man sich die setup.exe in ein beliebiges

Mehr

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()

Mehr

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern 1 Einleitung Lernziele Symbolleiste für den Schnellzugriff anpassen Notizenseiten drucken eine Präsentation abwärtskompatibel speichern eine Präsentation auf CD oder USB-Stick speichern Lerndauer 4 Minuten

Mehr

icloud nicht neu, aber doch irgendwie anders

icloud nicht neu, aber doch irgendwie anders Kapitel 6 In diesem Kapitel zeigen wir Ihnen, welche Dienste die icloud beim Abgleich von Dateien und Informationen anbietet. Sie lernen icloud Drive kennen, den Fotostream, den icloud-schlüsselbund und

Mehr

In 15 einfachen Schritten zum mobilen PC mit Paragon Drive Copy 10 und Microsoft Windows Virtual PC

In 15 einfachen Schritten zum mobilen PC mit Paragon Drive Copy 10 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

Wählen Sie bitte START EINSTELLUNGEN SYSTEMSTEUERUNG VERWALTUNG und Sie erhalten unter Windows 2000 die folgende Darstellung:

Wählen Sie bitte START EINSTELLUNGEN SYSTEMSTEUERUNG VERWALTUNG und Sie erhalten unter Windows 2000 die folgende Darstellung: Installation Bevor Sie mit der Installation von MOVIDO 1.0 beginnen, sollten Sie sich vergewissern, dass der Internet Information Server (IIS) von Microsoft installiert ist. Um dies festzustellen, führen

Mehr

Mikrocomputertechnik. Adressierungsarten

Mikrocomputertechnik. Adressierungsarten Adressierungsarten Ein Mikroprozessor bietet meist eine Reihe von Möglichkeiten, die Operanden für eine Rechenoperation zu bestimmen. Diese Möglichkeiten bezeichnet man als Adressierungsarten. unmittelbare

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

Windows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen

Windows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen Windows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen Das können wir Ihnen versprechen: An der neuen Taskleiste in Windows 7 werden Sie sehr viel Freude haben. Denn diese sorgt

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

Einführung in die technische Informatik

Einführung in die technische Informatik Einführung in die technische Informatik Christopher Kruegel chris@auto.tuwien.ac.at http://www.auto.tuwien.ac.at/~chris Betriebssysteme Aufgaben Management von Ressourcen Präsentation einer einheitlichen

Mehr

Speichern. Speichern unter

Speichern. Speichern unter Speichern Speichern unter Speichern Auf einem PC wird ständig gespeichert. Von der Festplatte in den Arbeitspeicher und zurück Beim Download Beim Kopieren Beim Aufruf eines Programms Beim Löschen Beim

Mehr

Leichte-Sprache-Bilder

Leichte-Sprache-Bilder Leichte-Sprache-Bilder Reinhild Kassing Information - So geht es 1. Bilder gucken 2. anmelden für Probe-Bilder 3. Bilder bestellen 4. Rechnung bezahlen 5. Bilder runterladen 6. neue Bilder vorschlagen

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

Installation von Updates

Installation von Updates Installation von Updates In unregelmässigen Abständen erscheinen Aktualisierungen zu WinCard Pro, entweder weil kleinere Verbesserungen realisiert bzw. Fehler der bestehenden Version behoben wurden (neues

Mehr

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung Anleitung zur Daten zur Datensicherung und Datenrücksicherung Datensicherung Es gibt drei Möglichkeiten der Datensicherung. Zwei davon sind in Ges eingebaut, die dritte ist eine manuelle Möglichkeit. In

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

Programme im Griff Was bringt Ihnen dieses Kapitel?

Programme im Griff Was bringt Ihnen dieses Kapitel? 3-8272-5838-3 Windows Me 2 Programme im Griff Was bringt Ihnen dieses Kapitel? Wenn Sie unter Windows arbeiten (z.b. einen Brief schreiben, etwas ausdrucken oder ein Fenster öffnen), steckt letztendlich

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

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt Inhaltsverzeichnis Aufgabe... 1 Allgemein... 1 Active Directory... 1 Konfiguration... 2 Benutzer erstellen... 3 Eigenes Verzeichnis erstellen... 3 Benutzerkonto erstellen... 3 Profil einrichten... 5 Berechtigungen

Mehr

Informatik I Tutorial

Informatik I Tutorial ETH Zürich, D-INFK/D-BAUG Herbstsemester 2015 Dr. Martin Hirt Daniel Jost Informatik I Tutorial Dieses Tutorial hat zum Ziel, die notwendigen Tools auf dem eigenen Computer zu installieren, so dass ihr

Mehr

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

Mehr

Sichern der persönlichen Daten auf einem Windows Computer

Sichern der persönlichen Daten auf einem Windows Computer Sichern der persönlichen Daten auf einem Windows Computer DIRECTION DES SERVICES IT SERVICE DIT-MI DIREKTION DER IT-DIENSTE DIENSTSTELLE DIT-MI 1/9 1 Inhaltsverzeichnis 2 Einleitung... 3 3 Outlook Daten...

Mehr

Wie halte ich Ordnung auf meiner Festplatte?

Wie halte ich Ordnung auf meiner Festplatte? Wie halte ich Ordnung auf meiner Festplatte? Was hältst du von folgender Ordnung? Du hast zu Hause einen Schrank. Alles was dir im Wege ist, Zeitungen, Briefe, schmutzige Wäsche, Essensreste, Küchenabfälle,

Mehr

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Wenn der Name nicht gerade www.buch.de oder www.bmw.de heißt, sind Internetadressen oft schwer zu merken Deshalb ist es sinnvoll, die Adressen

Mehr

Handbuch ECDL 2003 Professional Modul 2: Tabellenkalkulation Vorlagen benutzen und ändern

Handbuch ECDL 2003 Professional Modul 2: Tabellenkalkulation Vorlagen benutzen und ändern Handbuch ECDL 2003 Professional Modul 2: Tabellenkalkulation Vorlagen benutzen und ändern Dateiname: ecdl_p2_02_03_documentation.doc Speicherdatum: 08.12.2004 ECDL 2003 Professional Modul 2 Tabellenkalkulation

Mehr

Schritt-Schritt-Anleitung zum mobilen PC mit Paragon Drive Copy 10 und VMware Player

Schritt-Schritt-Anleitung zum mobilen PC mit Paragon Drive Copy 10 und VMware Player 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

Ich möchte eine Bildergalerie ins Internet stellen

Ich möchte eine Bildergalerie ins Internet stellen Ich möchte eine Bildergalerie ins Internet stellen Ich habe viele Fotos von Blumen, von Häusern, von Menschen. Ich möchte zu einem Thema Fotos sammeln, eine Vorschau erstellen und die Fotos so in der Größe

Mehr

TechNote. Produkt: TWINFAX 7.0 (ab CD_24), TWINFAX 6.0 Modul: SMTP, T611, R3 Kurzbeschreibung: Briefpapier- und Mailbodyunterstützung

TechNote. Produkt: TWINFAX 7.0 (ab CD_24), TWINFAX 6.0 Modul: SMTP, T611, R3 Kurzbeschreibung: Briefpapier- und Mailbodyunterstützung Produkt: TWINFAX 7.0 (ab CD_24), TWINFAX 6.0 Modul: SMTP, T611, R3 Kurzbeschreibung: Briefpapier- und Mailbodyunterstützung Diese Anleitung hilft Ihnen, das nachfolgend geschilderte Problem zu beheben.

Mehr

Step by Step Webserver unter Windows Server 2003. von Christian Bartl

Step by Step Webserver unter Windows Server 2003. von Christian Bartl Step by Step Webserver unter Windows Server 2003 von Webserver unter Windows Server 2003 Um den WWW-Server-Dienst IIS (Internet Information Service) zu nutzen muss dieser zunächst installiert werden (wird

Mehr

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

Mehr

Guide DynDNS und Portforwarding

Guide DynDNS und Portforwarding Guide DynDNS und Portforwarding Allgemein Um Geräte im lokalen Netzwerk von überall aus über das Internet erreichen zu können, kommt man um die Themen Dynamik DNS (kurz DynDNS) und Portweiterleitung(auch

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

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Internet online Update (Internet Explorer)

Internet online Update (Internet Explorer) Um Ihr Consoir Beta immer schnell und umkompliziert auf den aktuellsten Stand zu bringen, bieten wir allen Kunden ein Internet Update an. Öffnen Sie Ihren Internetexplorer und gehen auf unsere Internetseite:

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

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

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

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

I.1 Die Parrot Assemblersprache

I.1 Die Parrot Assemblersprache I.1 Die Parrot Assemblersprache Die virtuelle CPU Parrot ermöglicht die Verarbeitung der Parrot Assemblersprache (PASM). Zum Einstieg soll ein erstes Beispiel die Ausführung einer PASM-Datei zeigen. Legen

Mehr

EXPANDIT. ExpandIT Client Control Kurzanleitung. utilities. be prepared speed up go mobile. Stand 14.11.07

EXPANDIT. ExpandIT Client Control Kurzanleitung. utilities. be prepared speed up go mobile. Stand 14.11.07 ExpandIT Client Control Kurzanleitung Stand 14.11.07 Inhaltsverzeichnis ExpandIT Client Control 3 Installationshinweise 3 System-Voraussetzungen 3 Installation 3 Programm starten 6 Programm konfigurieren

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen bei Zahlen entschlüsseln Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren

Mehr

Übung 9 - Lösungsvorschlag

Übung 9 - Lösungsvorschlag Universität Innsbruck - Institut für Informatik Datenbanken und Informationssysteme Prof. Günther Specht, Eva Zangerle Besprechung: 15.12.2008 Einführung in die Informatik Übung 9 - Lösungsvorschlag Aufgabe

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Grundlagen. Kapitel 1

Grundlagen. Kapitel 1 Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die

Mehr

Praktikum IT-Sicherheit

Praktikum IT-Sicherheit IT-Sicherheit Praktikum IT-Sicherheit - Versuchshandbuch - Aufgaben Angriffstechniken In diesem Versuch werden verschiedene Angriffstechniken anhand von Beispielen vorgestellt. Die Ausarbeitung der Übungen

Mehr

crm-now/ps Webforms Webdesigner Handbuch Erste Ausgabe

crm-now/ps Webforms Webdesigner Handbuch Erste Ausgabe crm-now/ps Webforms Webdesigner Handbuch Erste Ausgabe crm-now/ps Webforms: Webdesigner Handbuch Copyright 2006 crm-now Versionsgeschichte Version 01 2006-08-21 Release Version crm-now c/o im-netz Neue

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

Das Persönliche Budget in verständlicher Sprache

Das Persönliche Budget in verständlicher Sprache Das Persönliche Budget in verständlicher Sprache Das Persönliche Budget mehr Selbstbestimmung, mehr Selbstständigkeit, mehr Selbstbewusstsein! Dieser Text soll den behinderten Menschen in Westfalen-Lippe,

Mehr

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

Über die Internetseite www.cadwork.de Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt. Internet, Codes und Update ab Version 13 Um Ihnen einen möglichst schnellen Zugang zu den aktuellsten Programmversionen zu ermöglichen liegen Update-Dateien für Sie im Internet bereit. Es gibt drei Möglichkeiten

Mehr

In 15 Schritten zum mobilen PC mit Paragon Drive Copy 11 und VMware Player

In 15 Schritten zum mobilen PC mit Paragon Drive Copy 11 und VMware Player PARAGON Technologie GmbH, Systemprogrammierung Heinrich-von-Schritthan-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

INSTALLATION VON INSTANTRAILS 1.7

INSTALLATION VON INSTANTRAILS 1.7 INSTALLATION VON INSTANTRAILS 1.7 InstantRails 1.7 ist ein Paket, das Ruby, Rails, Apache, MySQL und andere Tools, z.b. phpmyadmin in vorkonfigurierter Form enthält. Das Paket muss in einem Verzeichnis

Mehr

Das Handbuch zu KNetAttach. Orville Bennett Übersetzung: Thomas Bögel

Das Handbuch zu KNetAttach. Orville Bennett Übersetzung: Thomas Bögel Orville Bennett Übersetzung: Thomas Bögel 2 Inhaltsverzeichnis 1 Einführung 5 2 KNetAttach verwenden 6 2.1 Hinzufügen von Netzwerkordnern............................ 6 3 Rundgang durch KNetAttach 8 4 Danksagungen

Mehr

Kleines Handbuch zur Fotogalerie der Pixel AG

Kleines Handbuch zur Fotogalerie der Pixel AG 1 1. Anmelden an der Galerie Um mit der Galerie arbeiten zu können muss man sich zuerst anmelden. Aufrufen der Galerie entweder über die Homepage (www.pixel-ag-bottwartal.de) oder über den direkten Link

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

1. Software installieren 2. Software starten. Hilfe zum Arbeiten mit der DÖHNERT FOTOBUCH Software

1. Software installieren 2. Software starten. Hilfe zum Arbeiten mit der DÖHNERT FOTOBUCH Software 1. Software installieren 2. Software starten Hilfe zum Arbeiten mit der DÖHNERT FOTOBUCH Software 3. Auswahl 1. Neues Fotobuch erstellen oder 2. ein erstelltes, gespeichertes Fotobuch laden und bearbeiten.

Mehr

FrogSure Installation und Konfiguration

FrogSure Installation und Konfiguration FrogSure Installation und Konfiguration 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis...1 2 Installation...1 2.1 Installation beginnen...2 2.2 Lizenzbedingungen...3 2.3 Installationsordner auswählen...4 2.4

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

Beheben von verlorenen Verknüpfungen 20.06.2005

Beheben von verlorenen Verknüpfungen 20.06.2005 Vor folgender Situation ist sicher jeder Solid Edge-Anwender beim Öffnen von Baugruppen oder Drafts schon einmal gestanden: Die Ursache dafür kann sein: Die Dateien wurden über den Explorer umbenannt:

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

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

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online

Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online Themen heute Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online Besprechung des 3. Übungsblattes Aufgabe 3 Speicherplätze für Mikrocode-Anweisungen

Mehr

Registrierung am Elterninformationssysytem: ClaXss Infoline

Registrierung am Elterninformationssysytem: ClaXss Infoline elektronisches ElternInformationsSystem (EIS) Klicken Sie auf das Logo oder geben Sie in Ihrem Browser folgende Adresse ein: https://kommunalersprien.schule-eltern.info/infoline/claxss Diese Anleitung

Mehr

Das Einzelplatz-Versionsupdate unter Version Bp810

Das Einzelplatz-Versionsupdate unter Version Bp810 Das Einzelplatz-Versionsupdate unter Version Bp810 Grundsätzliches für alle Installationsarten ACHTUNG: Prüfen Sie vor der Installation die aktuellen Systemanforderungen für die neue BANKETTprofi Version.

Mehr

DriveLock 6. DriveLock und das Windows Sicherheitsproblem mit LNK Dateien. CenterTools Software GmbH

DriveLock 6. DriveLock und das Windows Sicherheitsproblem mit LNK Dateien. CenterTools Software GmbH 6 DriveLock und das Windows Sicherheitsproblem mit LNK Dateien CenterTools Software GmbH 2010 Copyright Die in diesen Unterlagen enthaltenen Angaben und Daten, einschließlich URLs und anderen Verweisen

Mehr

Hex Datei mit Atmel Studio 6 erstellen

Hex Datei mit Atmel Studio 6 erstellen Hex Datei mit Atmel Studio 6 erstellen Es werden generell keine Atmel Studio Dateien ins Repository geladen, da jeder seine Dateien an anderen Orten liegen hat und weil nicht jeder das Atmel Studio 6 benutzt.

Mehr

Visual Basic Express Debugging

Visual Basic Express Debugging Inhalt Dokument Beschreibung... 1 Projekt vorbereiten... 1 Verknüpfung zu Autocad/ProStructures einstellen... 2 Debugging... 4 Autocad/ProSteel Beispiel... 5 Dokument Beschreibung Debuggen nennt man das

Mehr

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: 24.09.2014)

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: 24.09.2014) Handbuch NAFI Online-Spezial 1. Auflage (Stand: 24.09.2014) Copyright 2016 by NAFI GmbH Unerlaubte Vervielfältigungen sind untersagt! Inhaltsangabe Einleitung... 3 Kundenauswahl... 3 Kunde hinzufügen...

Mehr

Erstellen einer digitalen Signatur für Adobe-Formulare

Erstellen einer digitalen Signatur für Adobe-Formulare Erstellen einer digitalen Signatur für Adobe-Formulare (Hubert Straub 24.07.13) Die beiden Probleme beim Versenden digitaler Dokumente sind einmal die Prüfung der Authentizität des Absenders (was meist

Mehr

Überprüfung der digital signierten E-Rechnung

Überprüfung der digital signierten E-Rechnung Überprüfung der digital signierten E-Rechnung Aufgrund des BMF-Erlasses vom Juli 2005 (BMF-010219/0183-IV/9/2005) gelten ab 01.01.2006 nur noch jene elektronischen Rechnungen als vorsteuerabzugspflichtig,

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

12. Dokumente Speichern und Drucken

12. Dokumente Speichern und Drucken 12. Dokumente Speichern und Drucken 12.1 Überblick Wie oft sollte man sein Dokument speichern? Nachdem Sie ein Word Dokument erstellt oder bearbeitet haben, sollten Sie es immer speichern. Sie sollten

Mehr

Backup Premium Kurzleitfaden

Backup Premium Kurzleitfaden Info Memeo Backup Premium bietet viele fortschrittliche automatische Backup-Funktionen und ist großartig für Benutzer von Digitalkameras und für Anwender, die bis zu 50.000 Dateien mit Backups sichern

Mehr

2. Word-Dokumente verwalten

2. Word-Dokumente verwalten 2. Word-Dokumente verwalten In dieser Lektion lernen Sie... Word-Dokumente speichern und öffnen Neue Dokumente erstellen Dateiformate Was Sie für diese Lektion wissen sollten: Die Arbeitsumgebung von Word

Mehr

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me Bevor Sie die Platte zum ersten Mal benutzen können, muss sie noch partitioniert und formatiert werden! Vorher zeigt sich die Festplatte

Mehr

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife Praktikum Ingenieurinformatik Termin 2 Verzweigungen (if-else), printf und scanf, while-schleife 1 1. Import/Export von Eclipse-Projekten 2. Verzweigungen (if-else-anweisung) 3. printf und scanf 4. Übungsaufgaben

Mehr

Installationsanleitung INFOPOST

Installationsanleitung INFOPOST Um mit dem Infopost-Manager effektiv arbeiten zu können, sollte Ihr PC folgende Mindestvoraussetzungen erfüllen: RAM-Speicher: mind. 2 GB Speicher Festplatte: 400 MB freier Speicher Betriebssystem: Windows

Mehr