CTF Capture the Flag



Ähnliche Dokumente
Sicherheit in Software

Installation mit Lizenz-Server verbinden

Netzwerksicherheit Musterlösung Übungsblatt 4: Viren

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

Was meinen die Leute eigentlich mit: Grexit?

Diese Anleitung erläutert die Einrichtung des Active Directory Modus im DNS-343.

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

Python SVN-Revision 12

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

OP-LOG

Verwendung des IDS Backup Systems unter Windows 2000

Regeln für das Qualitäts-Siegel

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Luis Kornblueh. May 22, 2014

RL

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung

ICON Switzerland 2015 Praxisbeispiel Connections an der Universität Zürich

Alle gehören dazu. Vorwort

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Fotostammtisch-Schaumburg

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite

Java Kurs für Anfänger Einheit 5 Methoden

Software zur Anbindung Ihrer Maschinen über Wireless- (GPRS/EDGE) und Breitbandanbindungen (DSL, LAN)

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

NEWSLETTER // AUGUST 2015

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

Windows 10 > Fragen über Fragen

Die Post hat eine Umfrage gemacht

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

1 Vom Problem zum Programm

Windows 7/8 - Backdoor

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

FTP-Server einrichten mit automatischem Datenupload für

desk.modul : WaWi- Export

Daten am USB Stick mit TrueCrypt schützen

Zählen von Objekten einer bestimmten Klasse

msm net ingenieurbüro meissner kompetent - kreativ - innovativ

Schwachstellenanalyse 2012

Infinigate (Schweiz) AG. Secure Guest Access. - Handout -

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

Informatik Grundlagen, WS04, Seminar 13

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Firmware-Update, CAPI Update

Tutorial -

Step by Step Webserver unter Windows Server von Christian Bartl

Die neue Aufgabe von der Monitoring-Stelle. Das ist die Monitoring-Stelle:

Administrator-Anleitung

TeamSpeak3 Einrichten

Das muss drin sein. Hallo, wir sind die Partei: DIE LINKE.

Dieser Text beschreibt die Neuerungen von DaNiS und die Vorgehensweise beim DaNiS-Update.

Anleitung zur Nutzung des SharePort Utility

Programmieren was ist das genau?

Orange heisst jetzt Salt.

PHPNuke Quick & Dirty

Eine Anwendung mit InstantRails 1.7

Statuten in leichter Sprache

Virtual Private Network

Constraint-Algorithmen in Kürze - Mit der Lösung zur Path-Consistency-Aufgabe 9

Idimager ein Bildverwaltungsprogramm-DAM Software

Version 1.0 [Wiederherstellung der Active Directory] Stand: Professionelle Datensicherung mit SafeUndSave.com. Beschreibung.

Sage 200 BI Häufige Fehler & Lösungen. Version

v2.2 Die innovative Softwarelösung für kundenspezifisches Anrufmanagement Administrator-Handbuch

Java Entwicklung für Embedded Devices Best & Worst Practices!

SharePoint Demonstration

Verarbeitung der Eingangsmeldungen in einem Callcenter

Installation. Danach wählen Sie das Installationsverzeichnis für den VPN-Client aus. Stand: Erstellt: M. Döring Seite 1

Clients in einer Windows Domäne für WSUS konfigurieren

FL1 Hosting FAQ. FL1 Hosting FAQ. V1.0 (ersetzt alle früheren Versionen) Gültig ab: 18. Oktober Telecom Liechtenstein AG

Skripte. Beispiel. M. Fyta Computergrundlagen 73/93

1. License Borrowing Verfahren

Hochladen von Fotos auf die RSG-Homepage

Java: Vererbung. Teil 3: super()

Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software

Objektbasierte Entwicklung

Outlook-Daten komplett sichern

INTERNET UND MMS MIT DEM QTEK2020 MARCO 28. MÄRZ 04

Leitfaden E-Books Apple. CORA E-Books im ibook Store kaufen. Liebe Leserinnen und Leser, vielen Dank für Ihr Interesse an unseren CORA E-Books.

Lizenz Verwaltung. Adami Vista CRM

Wann benötigen Sie eine neue Lizenz-Datei mit der Endung.pkg?

Guide DynDNS und Portforwarding

Lizenzierung von System Center 2012

Bedienungsanleitung Nokia MixRadio

Komponententest. Testen von Software Systemen. Übung 02 SS 2009 Version:

Leichte-Sprache-Bilder

Anleitungen zum KMG- -Konto

C.M.I. Control and Monitoring Interface. Zusatzanleitung: Datentransfer mit CAN over Ethernet (COE) Version 1.08

Speicher in der Cloud

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

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

Test mit lokaler XAMPP Oxid Installation

Pädagogische Hochschule Thurgau. Lehre Weiterbildung Forschung

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

Fragen Arthur Zaczek. Apr 2015

Beschreibung Regeln z.b. Abwesenheitsmeldung und Weiterleitung

s zu Hause lesen

Das neue Volume-Flag S (Scannen erforderlich)

SEP 114. Design by Contract

Einrichtung des WS_FTP95 LE

Transkript:

Hans-Christian Esperer, CDA hc@hcesperer.org 21. Juni 2008

1 Versuch einer Definition Illustration... Ablauf 2 Ursachen SQL injection Buffer overflow SUID 3 Relevanz in der heutigen Zeit Punktesystem Advisories 4 Warum ein eigener CTF? Dienste schreiben ToC

CTF in der IT-Sicherheit Versuch einer Definition Illustration... Ablauf Wettbewerb 2 oder mehr Teams Klassische Sicherheitlücken Geregelter Ablauf Geschützter Bereich (VPN, lokales Netz) Standardisiert

Variationen Versuch einer Definition Illustration... Ablauf

Netzlayout Versuch einer Definition Illustration... Ablauf VPN Configuration Game- server x N; 1 x 254 10.1.0.0/16 VPN Gateway 10.100.0.0/16 10.2.0.0./16 10.100.x.x orga 10.100.x.x orga 10.100.x.x orga 10.100.x.x Team 1 10.1.0.0/16 host VM 10.1.x.x bridge vulnbox 10.1.0.3 Team 2 10.2.0.0/16 host vulnbox VM 10.2.x.x bridge 10.2.0.3 10.1.x.x 10.1.x.x 10.1.x.x 10.2.x.x 10.2.x.x 10.2.x.x

Flagge holen... Versuch einer Definition Illustration... Ablauf

... und abliefern Versuch einer Definition Illustration... Ablauf

Ursachen Ursachen SQL injection Buffer overflow SUID Gedankenlosigkeit Zeitdruck Motivationsmangel Ignoranz Wissensmangel Gesunder Menschenverstand Falsche Annahmen Mathematiker schreiben die sicherste Software ;-)

SQL injection Ursachen SQL injection Buffer overflow SUID class Email: [...] def SendEmail(self, e from, e to, e subj, e hdrs, e body): c = self.db.cursor() c.execute("select uid from users where email_to=" \ + e to + " limit 2") res = c.fetchall() if len(res) < 1: raise EmailException("Illegal recipient") if len(res) > 1: die("wtf? Serious sh*t happened; dying") c.execute("insert into emails (e_from, e_to, e_subj, " \ 10 "e_hdrs, e_body) " \ "values (%s,%s,%s,%s,%s)" % \ (e from, e to, e subj, e hdrs, e body)) self.db.commit() return "250 Yay, email sent!!"

Buffer overflow Ursachen SQL injection Buffer overflow SUID #include <stdio.h> char ADMINUSER[ ] = "root"; char *ADMINPWD = "reindeerflotilla"; #define LAUFWERK C 2 int format(int drive){puts("formatting hdd"); system("format /dev/laufwerkc");} int main(argc, argv) int argc; char** argv; { char fullname[32]; // no one has a name longer than 32 chars... char pass[20]; // who can remember long passwords, anyway? 10 int is admin = 0; int i; puts("what s your name?\n"); gets(fullname); puts("and what would your password be, Sir?"); gets(pass); if (!strcmp(adminuser, fullname) &&!strcmp(adminpwd, pass)) is admin = 1; if (is admin) format(laufwerk C); }

Ursachen SQL injection Buffer overflow SUID Dem Compiler gefällt s schon nicht...

Bis jetzt läuft s noch... Ursachen SQL injection Buffer overflow SUID

Buffer overflow Ursachen SQL injection Buffer overflow SUID

An alles gedacht? SUID Ursachen SQL injection Buffer overflow SUID Ziel: Vereinsvorstand soll /var/log/auth.log einsehen können Problem: Zugang zu /var/log/auth.log auf Mitglieder von adm beschränkt Idee: Vorstand in Gruppe adm packen? zuviele Rechte Lösung: Wir schreiben ein suid-root Binary Hint: eigentlich reicht ein sgid-adm Binary, aber suid-root ist lustiger

An alles gedacht? SUID Ursachen SQL injection Buffer overflow SUID #include <stdio.h> int main(argc, argv) int argc; char** argv; { char what[8192]; char *acmd; argc ; argv++; puts("auth.log viewer..."); setuid(0); setgid(0); if (argc) acmd = *argv; else acmd = "-f"; snprintf(what, 8192, "tail %s /var/log/auth.log", acmd); 10 system(what); }

Besser? Ursachen SQL injection Buffer overflow SUID #include <stdio.h> int main(argc, argv) int argc; char** argv; { char what[8192]; char *acmd = ""; argc ; argv++; puts("auth.log viewer..."); setuid(0); setgid(0); if (argc) if (*argv[0] == - ) if (argv[0][1] == f ) acmd = "-f"; snprintf(what, 8192, "tail %s /var/log/auth.log", acmd); 10 system(what); }

... oder so vielleicht? Ursachen SQL injection Buffer overflow SUID #include <stdio.h> #include <unistd.h> static const char AUTHFILE[ ] = "/var/log/auth.log"; int main(argc, argv) int argc; char** argv; { char what[8192]; char *acmd = ""; argc ; argv++; puts("auth.log viewer..."); setuid(0); setgid(0); 10 if (argc) if (*argv[0] == - ) if (argv[0][1] == f ) acmd = "-f"; execl("/usr/bin/tail", "/usr/bin/tail", *acmd? acmd : AUTHFILE, *acmd? AUTHFILE : NULL, NULL); system(what); }

SUID ist gefährlich Ursachen SQL injection Buffer overflow SUID system() sucht tail in $PATH Ausführender Benutzer hat volle Kontrolle über Environment execl() bekommt absoulten Pfad sicher Was macht tail? Gibt es eine Version von tail, die auf das Environment zugreift? wissen wir nicht Lösung: Environment löschen und manuell setzen Aber: Gibt es andere Elemente, die zu einem suid-root Programm durchgereicht werden? Ja. Je nach UNIX-Vendor unterschiedlich! Beispiele: File descriptors (fds) Arguments (args) Current working directory (cwd) Resource limits (rlimits) POSIX-Signals (signals) Quelle: http://cr.yp.to/qmail/guarantee.html

Heute noch relevant? Relevanz in der heutigen Zeit Punktesystem Advisories Eigentlich müsste es doch heute jeder besser wissen... BUGS:... still crashes randomly; probably has some memory leaks man Xnest Ausbruch aus XEN DOM u möglich It is possible for a corrupted file system to cause a crash. FreeBSD Manual 12.Juli 2006 Niemals fremde USB-Sticks mounten... under certain circumstances, jabberd leaks memory. This bug is very hard to fix. In the meantime use a garbage collector. April 2008

Offensive und defensive Punkte Relevanz in der heutigen Zeit Punktesystem Advisories Pro Flagge ein Punkt Jede Flagge pro Team nur einmal gültig Allgemeine Gültigkeitsdauer; Standard: 15min AP: Flaggen zählen nur als offensiv, wenn das angreifende Team den Ursprungsservice selbst am Laufen hat Ist das sinnvoll? Ausbildung von Blackhats? Jede innerhalb der Gültigkeitsdauer von keinem Team gemeldete Flagge Ein Defensivpunkt

Defensive & Advisories Relevanz in der heutigen Zeit Punktesystem Advisories Advisories können unabhängig von Flaggenabgabe und -verteidigung geschrieben werden Jedes Advisory je nach Wichtigkeit n Punkte; n N; n > 0 Sollten Advisories sofort veröffentlicht werden? Ja Nein

Beispieladvisory Relevanz in der heutigen Zeit Punktesystem Advisories

Warum ein eigener CTF? Warum ein eigener CTF? Dienste schreiben Gameserver Probleme Dienste coden macht Spaß Protokolle und Betriebssystem kennenlernen Perspektivenwechsel Lustig auf Konferenzen; große CTFs meist über VPN

Dienste schreiben Warum ein eigener CTF? Dienste schreiben Gameserver Probleme Mischung aus komplexen und einfachen Diensten Verschiedene Programmiersprachen C Scriptsprache (z.b. python, ruby, unrealscript) Binary-only Dienst DoS-Attacken möglichst unmöglich machen werden sonst ausgenutzt jeglicher Verbote zum Trotz Wohldefinierte Sicherheitslücken Auswirkungen sollten bei Entwurf bekannt sein

Gameserver Warum ein eigener CTF? Dienste schreiben Gameserver Probleme Flaggen an Dienste verteilen Flaggen von Diensten einsammeln Flag IDs vergeben Gestohlene Flaggen entgegennehmen Verwaltung von Advisories

Testscripts Warum ein eigener CTF? Dienste schreiben Gameserver Probleme Schnittstelle zwischen Gameserver und Dienst Meistens vom Dienstautor selbst geschrieben Funktionen: store IP FLAGID FLAG retrieve IP FLAGID FLAG test IP Rückgabewert entscheidend

Beispieltestscript store Warum ein eigener CTF? Dienste schreiben Gameserver Probleme #!/usr/local/bin/python [what, ip, flagid, flag] = sys.argv[1:] if what == store : s = socket.socket(socket.af INET, socket.sock STREAM) s.connect(tuple([ip, 2525])) s.send("helo score.bot\n") s.send("mail from: dood <foo@bar.xxx>\n") s.send("rcpt to: " + str(time()) + " <%s@ftwhak.com>\n" % flagid) s.send("data\nsubject: hello world\n\n%s\n.\nquit\n" % flag) f = s.makefile("r") 10 res = f.read() for i in res.split("\n"): if (len(i) > 3) and (i[0:3] == "221"): print "Flag stored!" sys.exit(0) sys.exit(1)

Beispieltestscript retrieve Warum ein eigener CTF? Dienste schreiben Gameserver Probleme #!/usr/local/bin/python [ip, what, flagid, flag] = sys.argv[1:] elif what == retrieve : s = socket.socket(socket.af INET, socket.sock STREAM) try: s.connect(tuple([ip, 1111])) s.sendall("auth user: me pwd: foobar\nget %s\nquit\n" % flagid) except: sys.exit(2) # connection failed f = s.makefile("r") res = f.read() 10 for i in res.split("\n"): if (len(i) > 3) and (i == flag): print "Flag retrieved!" sys.exit(0) # all OK sys.exit(1) # service broken

Beispieltestscript Warum ein eigener CTF? Dienste schreiben Gameserver Probleme #!/usr/local/bin/python from sys import exit, argv def store((ip, flagid, flag)): pass def retrieve((ip, flagid, flag)): pass def test((ip)): pass try: { store : store, retrieve : retrieve, test : test }[argv[1]](tuple(argv[2:])) 10 except Exception, e: print "Error: " + str(e) print "Usage: %s store retrieve IP FLAGID FLAG" % argv[0] print " %s test IP" % argv[0]

Probleme Warum ein eigener CTF? Dienste schreiben Gameserver Probleme Teams schlecht vorbereitet Keine Kenntnisse über CTF-Ablauf Netzwerk/Hardware läuft nicht wie geplant für Redundanz sorgen Lokalitäten nicht verfügbar Platzregen Strom- und/oder Netzwerkausfälle Versehentliches Steckerziehen

Upcoming CTFs Warum ein eigener CTF? Dienste schreiben Gameserver Probleme CIPHER 4 http://www.cipher-ctf.org/ DA-OPEN http://ctf.sec-tud.de/ MRMCDs111b 6. September 2008 in Darmstadt