13. August 2007

Vista Treiber Teil 1

Category: Hacking,Produkte — Christian @ 17:47

Microsoft hat mit Vista im 64-Bit Modus strenge Richtlinien eingeführt, welche Treiber von Vista in den Kernel geladen werden und welche nicht. Die wichtigste Anforderung von Kernel-Mode Treibern ist, dass alle Treiber von Microsoft digital signiert werden müssen (KMCS – Kernel Mode Code Signing). Die vollständigen Anforderungen beschreibt Microsoft in den Driver Signing Requirements for Windows.

Microsoft begründet diese Anforderung damit, ihre Kunden vor bösartigem Programmcode schützen zu wollen. Kernel-Mode Rootkits, die nicht über eine digitale Signatur verfügen, werden nicht mehr in den Vista Kernel geladen und können daher auch ihre Schadwirkung nicht mehr entfalten. Im Grunde eine sinnvolle Funktion. Aber mit einem Haken. Microsoft lässt den Kunden keine Wahl mehr, ob sie andere Treiber vielleicht doch laden wollen. Gut, es gibt eine spezielle Boot-Option mit der man diese Anforderung deaktivieren kann, aber diese Option muss bei jedem Neustart mit angegeben werden. Außerdem funktioniert eine Reihe anderer Software (hauptsächlich Mediensoftware) nicht, wenn Vista ohne KMCS gestartet wurde. Praktisch ist daher nicht wirklich nutzbar. Bei Windows XP möchte das Betriebssystem ebenfalls einen signierten Treiber und wenn die Signatur fehlt, bekommt der Anwender einen Hinweis, kann sich aber entscheiden den Treiber doch noch zu installieren. Bei Vista geht nichts mehr.

Die Firma Linchpin Labs hat nun am 20.07.2007 einen signierten Treiber namens Atsiv veröffentlicht, der mit einem eigenen PE-Loader ausgestattet ist und damit beliebige, auch unsignierte Treiber und Bibliotheken in den Vista-Kernel nachladen kann. Aus der Beschreibung von Linchpin Labs:

Atsiv is a command line tool that allows the user to load and unload signed or unsigned drivers on 32 bit (x86) and 64 bit (x64) versions of Windows XP, Windows 2K3 and Windows Vista. Atsiv is designed to provide compatibility for legacy drivers and to allow the hobbyist community to run unsigned drivers without rebooting with special boot options or denial of service under Vista.

Als Anwender oder Entwickler ist das eine praktische Sache. Man kann so Treiber für eigene Hardware entwickeln oder andere Erweiterungen programmieren, ohne auf die Signatur von Microsoft angewiesen zu sein. Das hilft, weil es eine Reihe von Treibern auch für aktuelle Hardware gibt, die nicht digital signiert ist. Diese Hardware kann vom Anwender mit Hilfe des Atsiv-Moduls genutzt werden. Das hilft auch, weil es die geschlossene Vista-Plattform für Funktionen öffnet, die Microsoft vielleicht nicht vorgesehen hat, die ich als Anwender vielleicht aber machen möchte.

Bereits am 03.08.2007 hat Microsoft reagiert. Scott Field, der Windows Security Architect schreibt in seinem Blog, welche Maßnahmen Microsoft dagegen ergriffen hat: Das an Linchpin Labs ausgestellte Zertifikat wurde am 02.08.2007 zurückgezogen. Auf Drängen von Microsoft hat Verisign das Zertifikat auf die Revocation List gepackt, das Zertifikat wird folglich nicht mehr anerkannt. Das Microsoft Sicherheitsteam hat das gesperrte Zertifikat zusätzlich in die Kernel-interne Sperrliste aufgenommen, die mit dem nächsten Update aktualisiert wird. Das Update der internen Sperrliste erfordert allerdings einen Systemreboot. Und damit nicht genug, der Atsiv-Treiber wird von Microsoft Defender als Schadprogramm eingestuft und vom System des Benutzers entfernt.

Spätestens jetzt bekomme ich Bauchschmerzen. Es ist eine Sache, wenn z.B. mein Virenscanner ein Programm wie Cain & Abel, das sich auf meinem Rechner befindet, als Schadprogramm charakterisiert und mir anbietet es zu entfernen. Die Wahl darüber bleibt schließlich weiterhin bei mir und ich kann meinem Virenscanner beibringen dieses (und andere Hackingtools) auf meinem Rechner zu ignorieren. Vista gibt mir diese Möglichkeit nicht mehr. Das Zertifikat wurde gesperrt und der Treiber ist damit nicht mehr funktionsfähig. Nur um das klarzustellen, eigene Treiber im Betriebssystem sind eine vollkommen legale und legitime Angelegenheit. Dabei handelt es sich weder um einen Urheberrechtsverstoß (solange die verwendete Vista-Version legal erworben wurde), noch um einen Lizenzverstoß (da 3rd-Party Treiber ja generell erlaubt sind). Trotzdem verbietet Microsoft es mit über technische Maßnahmen, das Betriebssystem so zu nutzen wie ich möchte. Ohne, dass ich gefragt wurde, werde ich als Anwender bevormundet.

Oder mit den Worten von Peter Gutmann: the longest suicide note in history.

12. August 2007

CCC Camp: monochrom’s Taugshow #12

Category: CCC,Hacking — Christian @ 01:01

In der Taugshow (österreichisch für Talkshow) von monochrom war ich nur so ca. 45 Minuten. Irgendwie fand ich das nicht so ganz lustig. Die Show war auch nicht wirklich gut besucht, da sind einige Plätze leer geblieben. Ich habe mir ja etwas mehr Show erhofft, so im Sinne des RFID-Songs auf dem CCC aber dann wurde es nach Überwindung der technischen Schwierigkeiten erstmal doch eine recht zähe Talkshow, die ich nicht komplett angekuckt habe.

Egal. Das RFID-Video von YouTube kommt hier jedenfalls rein:

CCC Camp: Black Ops 2007

Category: CCC,Hacking — Christian @ 00:45

Der notorische Dan Kaminsky mit seinen jährlichen Black Ops. Ich frage mich ja, was er dann auf dem Congress im Dezember bringt, weil da kann er seine Black Hat Slides nicht schon wieder recyceln. Das gab übrigens ganz schön Buh-Rufe von den Zuhörern, dass auf den Slides nicht mal „Black Hat Conference“ durch „Chaos Communication Camp“ ausgetauscht war. Ich frag mich ja, was eigentlich originäre Arbeit von Dan in den Präsentationen ist und was er so zugetragen bekommt. Beim Thema Flash-Vulnerabilites fand ich den Vortrag von Fukami inhaltlich um Klassen besser. Nur die Show und das gehampel auf der Bühne hat Dan besser drauf.

Angriffe mit Flash und DNS Rebinding

Jedenfalls hat Dan das Thema Flash und DNS Rebinding wieder aufgegriffen und ein wenig genauer erklärt. Das Problem wurde wohl erstmals 1996 als Princeton Attack veröffentlicht und für Flash von Dan Boneh von der Stanford University genauer untersucht. Zurückzuführen lässt sich das alles auf die „Same Origin Policy“, die davon ausgeht, dass eine Datenquelle mit einem Rechnernamen identisch ist. Nur stammen die Daten von einer IP-Adresse und der Rechnername aus DNS. Und die DNS-Einträge lassen sich schnell mal ändern. Zu einem Zeitpunkt zeigt www.example.com auf einen Webserver und lädt die Flash-Applikation, zu einem späteren Zeitpunkt (nur Sekunden später) auf eine private interne IP-Adresse und führt einen Angriff aus. Damit lässt sich natürlich sehr schön jede Firewall umgehen.

Dan unterscheidet zwischen Angriffen Level 1 (nur der Browser ist betroffen), Level 2 (Web-Plugins werden zum Angriff verwendet) und Level 3 (Plugins mit Socket-Funktion werden verwendet, Angriffe in das LAN sind möglich). Sockets finden sich beispielsweise in Flash und Java. Java war übrigens das Originalziel der Princeton Attacke von ’96.

Für das DNS-Rebinding sieht Dan als alter DNS-Hacker drei Möglichkeiten:

  1. Temporal: Die TTL wird auf 0 gesetzt, dann darf der DNS-Server eigentlich nicht cachen. Einige DNS-Server implementieren jedoch eine Minimum-TTL (meist so etwa 5 Minuten) und ignorieren eine TTL=0.
  2. Spatial: Man kann für einen DNS-Namen mehrere IP-Adressen angeben. Allerdings hat man dann keine Kontrolle, welche IP-Adresse der Browser wann verwendet. Aber man kann ja mehrfach versuchen.
  3. Ridiculous: Mit Hilfe von CNiping, d.h. der Verwendung von CNAME anstatt direkten IP-Adressen lässt sich ein Eintrag im DNS-Cache auch überschreiben, wenn die TTL noch nicht abgelaufen ist. Da kann man was mit anfangen.

Und nun setzt Dan ein paar Bausteine zusammen. Dazu verwendet er den Browser mit einer speziellen Flash-Anwendung, den Angreifer, der über den Browser in das lokale Netz eindringen will und einen speziellen Proxy (Slirpie). Dabei handelt es sich um einen Multiprotokoll-Server, der TCP-Stream von/zum Flash, HTTP für den Browser, DNS für das Rebinding und XML-Socket zur Kontrolle der Policy unterstützt. Anscheinend hat Dan sowas programmiert, leider jedoch nicht veröffentlicht.

Mit einem Rückgriff auf Slirp (1995) und PPTP ist es damit möglich, VPN über den Browser einzurichten, wobei der Browser nicht als VPN-Client sondern als VPN-Gateway dient. Scary!

Provider Hostality

Der zweite Teil des Vortrags beschäftigt sich mit der Thematik eines neutralen Netzes. Welche Möglichkeiten gibt es, um eine Provider zu entdecken, der einzelne Webseiten in seinem Netz bevorzugt transportiert und andere Seiten ausbremst oder noch schlimmer Content manipuliert in dem z.B. Werbeeinblendungen verändert werden.

Hier gab es ein paar interessante Ideen, z.B. über einen transparenten Proxy, der alle Seiten cached zu ermitteln, ob der Provider irgendwas manipuliert. Als geeignetes Werkzeug bietet sich ein Sniffer im Browser an, hier hat Dan etwas mit dem Namen „Inspector Pakket“ gebastelt aber leider auch noch nicht veröffentlicht.

Mal sehen, was davon demnächst als reale Software auftaucht. So ein Metasploit als Flash im Browser um die Angriffe von innen auszuführen wäre schon cool 🙂

11. August 2007

CCC Camp: Know your compiler

Category: CCC,Hacking — Christian @ 23:48

Fefes ersten Vortrag habe ich ja leider verpasst, aber zum zweiten Vortrag bin ich dann doch rein, obwohl ich anfangs ein wenig skeptisch war. Ein paar Sachen muss man Fefe jedoch neidlos zugestehen … was C angeht hat er richtig Ahnung. Die Kernaussage war dafür recht schlicht: „Lesbarer Code ist wichtiger als Optimierung“.

Don’t use Inline

  • das macht der Compiler von alleine wo es sinnvoll ist
  • in modernen Compilern ist da eine sehr gute Optimierung

Range checks

  • kann man immer machen
  • optimiert der Compiler gegebenenfalls automatisch weg wo sie unnötig sind

Strength Reduction

  • der Compiler macht automatisch shifts draus

Sizeof

  • optimiert der Compiler automatisch, auch bei mehrfachem Einsatz
  • keine „magic numbers“ verwenden

Tail recursion

  • kann man in eine nichtrekursive Funktion auflösen
  • macht der gcc automatisch
  • nicht icc und sun-cc

Aliasing

  • der Compiler muss hier sehr vorsichtig optimieren
  • (außer der gcc, der optimiert alles weg, aber dafür hat Fefe ja einen Bugreport geschrieben)
  • hier ist manuelle Optimierung möglich (aber lohnt sich kaum)

Dead Code

  • Compiler/Linker kann Code bzw. Objectfiles weglassen
  • Beim kompilieren von Bibliotheken jede Funktion in ein eigenes Objectfile packen

Inline Assembler

  • braucht man praktisch nie
  • ist blöd zu debuggen
  • besser nicht (lohnt sich auch kaum bei modernen Compilern)

Shifting

  • schwer in C zu programmieren
  • optimiert der Compiler automatisch

Pre- vs. Post-Operation

  • auch hier kaum noch Optimierungsmöglichkeiten

Memory Hierarchien

  • hier lässt sich am meisten tunen
  • ein Cache Miss schlägt mit 250 CPU-Cycles Penalty zu buche
  • das ist meist der teuerste Schaden und am wichtigsten zu optimieren

Aha … also gute Neuigkeiten für Spaghettiprogrammierer wie mich … einfach weitermachen, der Compiler optimiert das schon. 🙂

CCC Camp: ZERT: VML, ANI and Third-party Patches

Category: CCC,Hacking — Christian @ 23:14

Gil Dabah, u.a. Autor des diStorm Disassembler hat in diesem Vortrag die Möglichkeiten des Binary Patchings am Beispiel von zwei Microsoft Lücken (VML, ANI) vorgestellt und dabei ein wenig Werbung für seinen Arbeitgeber ZERT (Zeroday Emergency Response Team) gemacht. Insgesamt war der Vortrag aber sehr ausgewogen, er hat nicht nur auf Vorteile des Binary Patchings hingewiesen sondern auch auf die möglichen Probleme und Gefahren und es den Teilnehmern überlassen, daraus ihren Schluss zu ziehen. Der Vortrag hat mir auch aus diesem Grund recht gut gefallen.

Patching wird von Gil definiert als Änderung von Daten oder Code, die das Verhalten eines Programms verändern. Das vielleicht bekannteste Beispiel von Binary Patching sind Game Cracks, nach deren Anwendung sich ein Spiel ohne zugehörige CD bzw. Registrierungscode spielen lässt.

Typische Probleme beim Patchen von Binaries sind:

  • verschiedene Binary Versionen
  • Code Änderungen / Verschiebungen des Programmcodes im Binary
  • Kein Platz im Binary für Zusatzcode
  • Konkurrierendes Hot Patching von Microsoft
  • Windows File Protection, das Änderungen an Systembibliotheken verhindert
  • Virenscanner Probleme (modifizierte Binaries)

Insgesamt ist daher das Ändern von Systemdateien gar nicht so einfach. Der Binärpatch kann auf verschiedene Art erzeugt werden:

PE-Patching

  • Ein Portable Executable Binary ist ein komplettes ausführbares Programm unter Windows.
  • Beim PE-Patching wird das komplette Programm angepasst, was auch Änderungen der PE-Struktur erfordert
  • In kurzer Zeit nicht verläßlich durchzuführen, da meist größere Änderungen erforderlich sind
  • Insgesamt sehr aufwendig

Per-Version Patching

  • Jede einzelne Version eines Binaries wird passend gepatcht
  • Benötigt alle vorhandenen Programmversionen
  • Wenn einzelne Versionen unbekannt sind, kann der Patch nicht angewandt werden

Hot Patching Bytes

  • Möglich, wenn der Patch nur an wenigen Stellen angewandt werden muss
  • 7 Bytes sind oft nicht genug

Spot Patching

  • Einfach, da lediglich Search & Replace verwendet wird
  • Geht nicht, wenn z.B. die Patch-Signatur nicht statisch ist

Eine Lücke, für die ZERT einen Patch entwickelt hat ist die VML (Vector Markup Language) Lücke, ein Zeroday, der am 19.09.2006 von Adam Thomas von Sunbelt Software gefunden wurde. Die Lücke wurde zu diesem Zeitpunkt aktiv im Internet genutzt, um in Systeme einzubrechen. der VML-Bug ist ein einacher Stack-based Buffer Overflow in der Datei VGX.DLL, die von allen Internet Explorer 6 Versionen in Windows XP SP2 verwendet wird. DEP (Data Execution Prevention) würde vor dem Exploit schützen, wird jedoch standardmäßig beim IE nicht verwendet. Der Angriff benötigt lediglich fehlerhafte Attribute in der VML-Fill-Methode und ist daher einfach auszuführen. Ein typischer „surf and geht owned“-Exploit.

<v.rect><v.fill method=“AAAAAAA…“></v.fill></v.rect>

Das Patchen des VML-Binaries ging relativ einfach vonstatten, da VGX.DLL eine In-proc DLL ist die registriert und deregistriert werden kann. Der Ablauf erfolgt dann wie folgt:

  1. Einlesen der VGS.DLL
  2. Finden der Signatur
  3. Patchen des Binaries
  4. Speichern der gepatchten PATCHEDVGX.DLL
  5. Deregistrieren der VGX.DLL
  6. Registrieren der PATCHEDVGX.DLL

Beim ANI-Fehler musste zum Patchen eine andere Methode angewandt werden, da die USER32.DLL sich so nicht ändern lässt. Die verwendete Technik nennt sich in-memory patching:

  1. Mittels knownDLLs die Patch-DLL jedem Prozeß hinzuladen
  2. Im RAM die USER32.DLL finden und patchen

Allerdings wird diese Technik in 64 Bit Vista nicht mehr funktionieren, da nur signierte Bibliotheken geladen werden können.

Fazit und Risikomanagement:

  • Don’t use 3rd-party patches!
  • Do you trust patches from people that don’t own the source code?
  • What about liability and vendor support?
  • If not patched, you are already vulnerable!
  • Do you want to stay unprotected?
  • ZERT supplies source code of the patches

Am Ende bleibt es halt doch immer dem Sicherheitsbeauftragten und dem Administrator überlassen zu entscheiden, was sie tun wollen.

CCC Camp: Twisting timing in your favour

Category: CCC,Hacking — Christian @ 21:01

Lisa Thalheim hat im Vortrag Twisting Time ein paar Probleme konkurrierender Programme vorgestellt. Dabei ging es um typische Programmierfehler, die zu Concurrency Bugs führen. Ursache sind entweder Programme oder Threads von Programmen, die parallel (simultaneously) ablaufen können und entweder gemeinsam auf eine Ressource zugreifen oder miteinander kommunizieren müssen. Hier treten leicht schwer zu findende und unregelmäßig auftretende Fehler auf.

Der Vortrag selbst war eigentlich ein reiner Grundlagenvortrag, von meiner Einschätzung her das Niveau eines Proseminars an der Uni. Für Leute, die damit noch nie zu tun hatten sicher interessant, da alle Grundlagen erklärt wurden, für Programmierer die sich damit schon beschäftigt hatten eher langweilig, da außer ein paar anschaulichen Source Code Abschnitten nichts wirklich neues vorgestellt wurde. Im Zusammenhang mit dem Stichwort „Twisting Time“ hätte ich mir vielleicht auch noch einen Hinweis auf zeitkritische Sidechannel-Angriffe vorstellen können.

Typische Fehler sind:

  • Deadlocks (das Programm hängt komplett)
  • Livelocks (das Programm hängt in einer Endlosschleife)
  • Fehlerhafte Kommunikation
  • Fehler in der gemeinsamen Datennutzung
  • Race Conditions

Race Conditions sind für den Angreifer in der Regel am interessantesten.

Die Ursachen für Race Conditions sind praktisch immer drei Hauptursachen:

  • Vergessene Locks in konkurrierenden Zugriffen
  • File System Races (TOCTOU-Fehler)
  • Signal Races

Race Condition am Beispiel eines Ringpuffers


    #define CELLS 32
    int rbf[CELLS];
    int rbf_idx = 0;
    uint32_t num_elems;
    void rbf_store( int data ) {
        if (rbf_idx == CELLS)
            rbf_idx = 0;
        rbf[rbf_idx] = data;
        rbf_idx++;
        num_elems++;
    }

Wenn dieser Code konkurrierend abläuft, kann es passieren, dass die if-Abfrage des ersten Threads einen rbf_idx-Wert kleiner CELLS ergibt, danach wird dieser Thread angehalten, ein zweiter Thread für die if-Abfrage durch, ebenfalls mit einem Wert in rbf_idx kleiner CELLS, der erste Thread schreibt folglich in den Puffer und erhöht den Index, anschließend schreibt der zweite Thread in den Buffer (wobei damit der reservierte Speicherbereich bereits überschritten wird) und erhöht den Index. Da rbf_idx jetzt bereits größer ist als CELLS, wird in Zukunft immer über den eigentlich reservierten Speicher des Buffers hinaus geschrieben. Ursache für diesen Fehler ist ein vergessener Lock, der den Bereich rbf_store sichert, da dieser Bereich nur einmal konkurrierend betreten werden darf.

Locking Fehler liegen entweder an komplett fehlenden Locks bzw. fehlender Synchronisation, da sich der Entwickler der Konkurrenz nicht bewusst war oder inkonsequentem Einsatz, bei dem einzelne Funktionen nicht richtig gesichert werden.

File System Race Condition


    $TempDir = $Config{'tmpdir'} . "logwatch." . $$ . "/";
    if ( -d $TempDir ) { rmdir ($TempDir); }
    if ( -e $TempDir ) { unlink ($TempDir); }
    mkdir ($TempDir,0700);

Bei File System Race Conditions handelt es sich praktisch immer um TOCTOU-Fehler (Time Of Check vs. Time Of Use). Ein Zustand wird zu einem Zeitpunkt A geprüft und das Wissen über diesen Zustand zu einem Zeitpunkt B verwendet, ohne zu beachten, dass sich dieser Zustand auf einem Multithreaded-System in der Zwischenzeit geändert haben kann. TOCTOU-Fehler treten besonders gerne bei temporären Dateien auf und sind sehr schwer zu vermeiden, da es in Unix keine atomare (d.h. nicht unterbrechbare Aktion) zum Prüfen und Anlegen einer Datei gibt. Exploits sind oft über Symlinks möglich, die Präsentation gibt hier ein cleveres Beispiel einer temporären Syslog-Datei verlinkt auf /root/.bash.

Signal Races

Signal Races sind die dritte Klasse häufiger Race Conditions und am schwierigsten zu verstehen. Dabei werden Signal-Handler konkurrierend eingesetzt, beispielsweise beim Beenden von Programmen oder Schreiben von Logfiles. Der klassische Fehler ist der Aufruf einer non_reentrant Funktion (d.h. einer Funktion die z.B. aufgrund interner Variablen nicht konkurrierend mehrfach aufgerufen werden darf) oder die Verwendung von non_reentrant Signal Handlers.

Signal Races findet man beispielsweise im Zusammenhang mit sigaction() und nicht offensichtlich erkennbar mehrfach genutzten Ressourcen (z.B. libc-Funktionen mit internen statischen Variablen die bei konkurrierenden Aufrufen überschrieben werden). In C++ kann man nach Singletons wie instanceOf suchen.

Die sehenswerte Präsentation (PDF, 1.0 MB) enthält die kompletten Source Code Beispiele.

CCC Camp: Practical RFID Attacks

Category: CCC,Hacking — Christian @ 20:06

Auf dem Camp wurde der Vortrag zu RFID von Milosch Meriac, dem Hauptentwickler der RFID-Hardware und von Henryk Plötz gehalten, der an der Software schraubt. Der Vortrag war recht ähnlich zum RFID-Vortrag von Harald Welte und Milosch Meriac auf dem letzten Congress.

RFID-Standards

Als Einleitung wurde wieder der RFID-Standard ISO 14443 vorgestellt, der Proximity Integrated Circuit Cards (PICC) definiert. Der Standard beschreibt im Detail
1. Physical Characteristics
2. RF Power & Signal Interface
3. Initialization & Anti-collision
4. Transmission Protocol

Hauptsächlich gibt es zwei verschiedene Kartentypen, Typ A, die Mifare-Karten von Phillips und Typ B, die z.B. bei ePassports zum Einsatz kommen. ISO 14443 setzt Amplitude Shift Keying (ASK) Modulation ein, die so kodierten Signale des Receivers (PDC) sind aus 5-10 m empfangbar, die Antwortsignale der Karte (PICC) liegen 60-80 dB unter der Signalstärke des Senders und sind typischerweise aus maximal 2 m empfangbar. Ein Anti-Collision-Protokoll soll unterschiedliche Karten in Reichweite des Empfängers trennen. Dazu werden UIDs (Unique Identifier mit 4, 7 oder 10 Byte) verwendet. Auf dem Congress im Dezember gab es dazu einen interessanten Vortrag einer holländischen Gruppe, die durch gezielte Erzeugung von Kollisionen einzelne Karten ausblenden konnte.

Kartentypen

ISO 14443A

  • 16×4 = 64 Byte Speicher
  • 10 Byte Read-Only Factory-Programmed, davon 7 Byte UID
  • 6 Byte PROM, davon 2 Byte Lock-Bits
  • 48 Byte nutzbarer Speicher
  • Keine Verschlüsselung
  • Keine Security-Funktionen außer der UID

Mifare Classic

  • Weitverbreiteter Standardtyp
  • 1-4 KB Speicher
  • Proprietärer Stream-Cipher („Crypto1“) mit 48 Byte Schlüssellänge, bisher nicht gebrochen
  • 4 Byte UID
  • ACLs für einen Speicherbereich für Geldwerte auf den nur mit INCREASE/DECREASE-Kommandos zugegriffen werden kann
  • Multiple User-Areas mit unterschiedlichen Schlüsseln
  • Multi-Application-fähig

Mifare DESfire

  • Mifare Classic-kompatibel
  • DES/3DES Verschlüsselung
  • 7 Byte UID

T=CH

  • In ISO 14443-4 definiert
  • APDUs vergleichbar zu kontaktbasierten Karten nach ISO 7816
  • Wird in vielen ePassports verwendet

Hardware

Milosch hat sehr schön die benötigte Hardware beschrieben, im einfachsten Fall reicht eine triviale Kupferspule mit LED und Kondensator. Für die komplexeren Angriffe gibt es einen von ihm entwickelten RFID Sniffer/Sender, mit dem auch trivial Replay-Angriffe möglich sind. Die benötigte Hardware kann man entweder bei www.OpenPCD.org fertig kaufen oder anhand der Anleitungen und Vorlagen selbst bauen.

Work in Progress

Ein paar Sachen funktionieren noch nicht ganz:

  • Anticollision tut noch nicht so 100%, aber daran arbeitet das Team
  • Bereitstellen von Mifare-Samples um die Verschlüsselung zu brechen
  • OpenPDC/OpenPICC OS nach FreeRTOS portieren

Und für folgendes benötigen die Jungs dringend Hilfe:

  • Brechen der Mifare-Verschlüsselung
  • OpenPCD und OpenPICC in ein Standalone-Sniffer/Replay-Gerät kombinieren
  • RFID Fuzzing Suite

Hier kann jeder mithelfen!

CCC Camp: Jetzt sind wir alle kriminell

Category: CCC,Hacking,Politik — Christian @ 00:00

Seit jetzt, heute, Mitternacht gilt der neue § 202c StGB.

Bildnachweis: Chaos Computer Club

10. August 2007

CCC Camp: Remote Forensic Software

Category: CCC,Hacking — Christian @ 22:47

Marco Gehrcke gab in seinem Vortrag Online Search zu Beginn einen Überblick über die Diskussion zum Bundestrojaner, inzwischen Remote Forensic Software genannt, in den USA und in Deutschland. Interessant der Vergleich einer Hausdurchsuchung, die öffentlich erfolgen muss und einer Rechnerdurchsuchung, die geheim bleiben soll. Hier bestehen erhebliche verfassungsrechtliche Bedenken. Ich möchte die angesprochenen wichtigen Punkte nur mal in Stichwörtern zusammenfassen, es gibt genug Sekundärliteratur, die genauere Informationen liefert.

Begründung für den Trojaner:

  • Verschlüsselung verhindert Strafverfolgung

Funktionen des Trojaner:

  • Standort- bzw. IP-Adressbestimmung um Anonymisierungsdienste auszuschalten
  • Aufzeichnung aller eingetippten Daten und gelesenen Dokumente
  • Keylogger-Funktionen zum Auslesen von Passwörtern und Encryption Keys

Problem: Wie kommt der Trojaner auf den Rechner

  • Installation vor Ort durch herkömmlichen Einbruch
  • Definierte Schwachstellen durch die Betriebssystemhersteller

Gefahren:

  • Zu wenig Ressourcen für die Polizei, um geeignete Software für alle Betriebssystem-Versionen zu entwickeln (OpenBSD-User sind immun?)
  • Antivirus-Software erkennt die Remote Forensic Software nicht, Virenschreiber bauen auf diesen Funktionen auf
  • Hintertüren im Betriebssystem können z.B. durch Kriminelle missbraucht werden
  • Strafverfolgungsmöglichkeiten werden auf Bagatellstraftaten ausgedehnt (z.B. einfache Urheberrechtsverletzungen)
  • Verletzung der staatlichen Souveränität bei grenzüberschreitenden Ermittlungen
  • Durchsuchungen erfolgen heimlich (wie bei der Gestapo oder Stasi) und nicht mehr öffentlich wie das unser Grundgesetz fordert

Online Durchsuchungen verletzen elementare Grundrechte. Die notwendige Abwägung von Sicherheit gegenüber Freiheit scheint hier nicht erfolgt zu sein. Dazu gab es von Marco Gercke ein schönes Zitat: „Es ist nicht Aufgabe des Staates dafür zu sorgen, dass jedes noch so kleine Verbrechen effizient verfolgt werden kann.“

Was wäre die Alternative?

  • Verbot anonymer Kommunikation
  • Verbot von verschlüsselter Kommunikation

Gercke argumentierte nun, bevor diese Verbote kommen, sei eine gelegentlich stattfindende Online-Durchsuchung mit Richtervorbehalt das kleinere Übel. Ich denke hier genau umgekehrt. Die Online-Durchsuchung scheint von vielen, gerade technisch kaum versierten Mitbürgern akzeptiert zu werden, weil sie nicht verstehen worum es sich dabei handelt und vor allem, dass es sich um einen massiven Angriff auf die grundgesetzlich geschützten Bürger- und Freiheitsrechte handelt. Es steht zu befürchten, dass gerade auch durch die um Zuge des letzten G8-Gipfels in Heiligendamm erfolgte Ausweitung der Definition der „Terroristischen Vereinigung“ (§ 129a StGB) praktisch jeder Demonstrant unter Verdacht steht und damit heimlich durchsucht werden kann. In der ehemaligen DDR genügten dazu „Westkontakte“ in der Bundesrepublik zukünftig wohl „Demonstrationskontakte“. Ein Verbot von verschlüsselter Kommunikation würde jedoch auch der letzten Oma mit Internetbanking klar machen, dass hier etwas grundlegend verkehrt läuft. Der öffentliche Aufschrei würde folglich auch den sitzhaftesten Bundesinnenminister aus dem Amt rollen. Und das wäre dann das kleinstmögliche Übel.

CCC Camp: Umsetzung der Vorratsdatenspeicherung im TKG

Category: CCC,Hacking,Politik — Christian @ 22:35

Andreas Gietl berichtete über den Entwurf des neuen Telekommunikationsgesetzes und die Auswirkungen auf die Kommunikation. Die relevanten Gesetzesartikel sind:

§ 110 TKG-E

Enthält die Pflicht zur Speicherung von Kommunikationsdaten

§ 113a TKG-E

Enthält die diversen Regelungen zur Speicherung:

  • Dienstanbieter muss für 6 Monate speichern
  • DSL/Dialin-Anbieter müssen speichern
  • WLAN-Anbieter wohl nicht, da es keine Teilnehmerkennung gibt
  • Im Mobilfunk müssen IMSI, IMEI und Standortdaten gespeichert werden
  • Bei E-Mail Kommunikation müssen Absender, Empfänger, IP-Adressen und jeder Abruf gespeichert werden
  • Inhaltsdaten werden nach Abs. 8 nicht gespeichert
  • Löschung einen Monat nach Ablauf der Speicherpflicht
  • Anonymisierungsdienste werden praktisch verboten, da diese Dienste die Identitäten vor und nach der Anonymisierung speichern müssen
  • Allerdings ist die Rechtsprechung nicht einig, ob Anonymisierungsdienste ein Telekommunikations- oder ein Mediendienst sind

§ 113b TKG-E

  • Zweckbindung (Straftaten, erhebliche Gefahren, Nachrichtendienste)
  • Zitiergebot

§ 110g StPO-E

  • richterliche Anordnung
  • bei erheblichen Straftaten

§ 161/163 StPO i.v.m. § 113 TKG

  • Staatsanwaltliche Ermittlungen
  • Beschränkt auf sowieso gespeicherte Daten
  • Abgestufter Schutz, wenn Daten sowieso z.B. zu Abrechnungszwecken gespeichert werden dann ist das über den Staatsanwalt zulässig, für den Abruf der Daten aus § 113a TKG-E ist die richterliche Anordnung aus § 110g notwendig.

Die Vorratsdatenspeicherung widerspricht jedoch der Rechtsprechung des Bundesverfassungsgerichts zu Art. 10 GG (Volkszählungsurteil: Speicherung von persönlichen Daten ohne konkreten Zweck ist unzulässig). Die Bundesregierung versucht daher offensichtlich den Verfassungsverstoß über den Umweg einer EU-Richtlinie zu legitimieren. Bisher gibt es dazu die Solange-Urteile, die im Kern sagen, solange EU-Recht gleichen Rechtsstandards wie das Grundgesetz genügt, mischt sich das Bundesverfassungsgericht nicht ein. Die Vorratsdatenspeicherung könnte laut Gietl daher entweder ein Solange-3- oder ein JetztReichts-1-Urteil provozieren.

Ausgang: Unklar.

Weitere Informationen: www.andreas-gietl.de