Web Würmer
Klein, glitschig und ekelhaft
Mario Heiderich
Vorstellung
●
    Mario Heiderich
        ●
            PHPIDS
        ●
            Trainings
        ●
            Audits und Pentests
        ●
            Secure Development
Überblick
●
    Ein wenig Geschichte
●
    Fallbeispiele
●
    Limitationen
●
    Und Wege diese zu umgehen
●
    Blick in die Zukunft
●
    Diskussion
Erste Gehversuche
●
    1999 - 2002
●
    Attacken gegen Hotmail
●
    Outlook Webaccess
●
    Ein völlig neues Thema
●
    Internet Explorer 5.5
Samy
●
    2005
●
    Just to be popular
●
    Hat funktioniert
●
    MySpace down
●
    FBI, Arrest und Auflagen
●
    2010 - und Samy ist zurück...
Yamanner
●
    2006
●
    Mailworm
●
    Adressdaten harvesten
●
    SPAM
Der Pornowurm
●
    2007
●
    1 Mio User
●
    Lediglich ein PoC
●
    XSS Attacken und persönliche Reputation
●
    Emailadresse und sexuelle Präferenzen
●
    Reported aber nie gefixt
Nduja Connection
●
    2007
●
    Mailworm
●
    Mehrere italienische Freemailer
●
    Cross Domain
●
    Nur ein PoC
Der nette Wurm
●
    2007
●
    Wordpress
●
    Heilsamer Payload
●
    Propagation via Scanning und Blogroll
●
    Große Coverage in den Medien
Jikto
●
    2007
●
    Cross Domain
●
    PoC Wurm für einen Shmoocon Talk
●
    “Geleakter” Sourcecode
●
    SOP Normalisation via Google Translate
●
    Big buzz
Diminutive Worm Contest
●
    2008
●
    “Den Kürzesten haben”
●
    Webworm aus ca. 150 Bytes als Resultat
●
    Erstmalig HTML als Wurmgerüst
●
    Contest mit Botschaft
Justin.TV und andere
●
    2008
●
    Adressdaten sammeln
●
    Logindaten als Plaintext
●
    SPAM
Rediff.com
●
    2009
●
    Mailworm
●
    60 Millionen betroffene User
●
    Nutzt kleine Lücke im HTML Filter
Reddit, Twitter,...
●
    2009
●
    Spam, SEO, Account Hijacking etc
●
    Facebook Apps running wild
●
    Orkut
●
    Und viele andere...
Mehr mehr MEHR!
●
    Quellen diverser Würmer sind online
●
    Teils mit Erläuerungen
●
    sla.ckers.org
●
    AJAX Worm Database
●
    namb.la/popular
Bilanz und Warten auf 2010
●
    Schlechter Code
●
    Lediglich String Obfuscation
●
    Potenzial noch nicht ausgereizt
●
    Meist fokussiert auf die betroffene App
●
    Mangelhafte Infrastruktur
Heutige Probleme
●
    Wenige verstehen XSS
●
    Gleiches für CSRF
●
    Und erst recht die Kombination
●
    Dabei ist's nicht so schwer
●
    Und HTTP ist immer noch an allem Schuld
●
    Oder?
Goldene Regel
●
    Remote XSS und Applikation mit Login == Wurm
●
    Auch reflektiver XSS – dank short URLs
●
    HttpOnly ist kein Hindernis
●
    Warum?
Anatomie eines Wurms
●
    Initiale XSS Lücke
●
    Data Storage
●
    Payload Propagation
●
    Wurmkopf
●
    MVC oder was?
Eigenschaften eines Wurms
●
    Was sind die wichtigsten Eigenschaften?
●
    Wie werden diese implementiert?
Klar...
●
    Propagation
●
    Payload
●
    Stealthiness
●
    Robustness
●
    Obfuscation
●
    Defence
Klassiches Design
●
    Altbekannte Prinzipien
●
    Klare Gewaltenteilung
●
    Strukturelle Schwäche
Fallbespiel
●
    Yamanner
●
    View - die Lücke im Yahoo! Mail Frontend
●
    Controller - Der Payload
●
    Model - Ein PM System einer anderen Website
●
    Sauber strukturiert - aber...
●
    Einfach zu eliminieren
Warhhol Würmer
●
    Kurzlebigkeit
●
    Instabilität
●
    Offensichtlichkeit
●
    No money shots
Wer kanns besser?
●
    Botnetze
●
    Mass SQL Injections
●
    "Binary Worms"
Vorteil Infrastruktur?
●
    P2P Architekturen
●
    Dezentrale C&C Server
●
    Obfuscation
●
    Verschlüsselung – richtig echte
●
    Rechenleistung und Plattenplatz
Zurück zum Webworm
●
    Was fehlt zum echten Wurm?
Eigentlich nichts
●
    Das Internet als Infrastruktur
●
    Verfügbar, dezentralisiert und schnell
●
    Services im richtigen Kontext sehen
●
    Alle Komponenten eines “Binary Worms” haben
    Web-Repräsentanten
Controller
●
    Business Logik
●
    Yahoo! Pipes
●
    AppJet
●
    Codepad
●
    PHP, C++, JavaScript,...
Dinge im Hintergrund
●
    AJAX Requests
●
    DOM Worker
●
    Schnittstellen zu OS und Applikationen
●
    ActiveX, PDFs, Videos,...
Model
●
    Pastebins
●
    Image Hoster
●
    Twitter, Delicious und andere
●
    Einfach dank Tagging
●
    Web-RAID und mehr...
Client Side Storage
●
    So viele APIs
●
    Bekannte wie W3C Storage APIs
●
    Und weniger bekannte Vertreter wie #userdata
●
    Oder HTML+TIME
Payload obfuscation
●
    String Obfuscation und mehr
●
    Wir hatten das bereits...
●   location.hash
●   window.name
●
    Aynwhere in DOM country
●
    Bilder, Farben, Subdomains, Dateinamen, ...
Robustness
●
    Escaping und Encoding
●
    Base64 – nicht alle User Agents
●   escape()
●   encodeURIComponent()
●
    Markup nutzen
Propagation
●
    Scanning und Fuzzing
●
    Spidering
●
    Google und Yahoo! Search API
●
    Code Search Engines
JavaScript und HTTP
●
    AJAX wenn möglich
●
    XDR
●
    Cross-Domain
●
    Lesend zum Harvesten
●
    Nicht-lesend zum Verbreiten
●   new Image().src='http://...'
Crossing the Line
●
    Requests an beliebige Domains
●
    Requests an beliebige Protokolle
●
    Requests an beliebige Ports
●
    Shodan
Wenig Limits
●
    SOP als einziges Hindernis
●
    Komplexer als man denkt
●
    Single Point of Failure
●
    2009 wie oft genau gefallen?
Und noch weiter...
●
    Intranet Würmer
        ●
            OTRS, phpMyAdmin, Plesk
●
    Würmer in Entwicklungsumgebungen
        ●
            Eclipse, Trac, ...
●
    Politische Foren und Abstimmungssysteme
●
    Mobile Botnetze via XSS
Zusammenfassung
●
    Web-Würmer können mehr
●
    Trusted User Interaction simulieren
●
    Dezentrale Controller
●
    Dezentrale und inhomogene Models
●
    Cross-Domain und Cross-Protocol
Warhol war einmal
●
    Persistente Webworms sind möglich
●
    Nur gibt es noch keinen
●
    Zeit einen zu bauen!
●
    Oder?
Rechtliches
●
    Keine einfache Lage
●
    Mehr eine völlige Blackbox – siehe §202c
●
    Gerade noch ein PoC...
●
    ...oder schon eine Straftat?
●
    Kompliziert in EU und USA
Was kann man tun?
●
    Dilemma Diversität
●
    Zuviele Kombinationen aus Services
●
    Messerblock und Säurefässchen
●
    CSE oder Exploit Search Engine?
Diskusssion
Vielen Dank!
Vielen Dank!
●
    mario.heiderich@gmail.com
●
    http://heideri.ch
●
    https://twitter.com/0x6D6172696F

Web Wuermer

  • 1.
    Web Würmer Klein, glitschigund ekelhaft Mario Heiderich
  • 2.
    Vorstellung ● Mario Heiderich ● PHPIDS ● Trainings ● Audits und Pentests ● Secure Development
  • 3.
    Überblick ● Ein wenig Geschichte ● Fallbeispiele ● Limitationen ● Und Wege diese zu umgehen ● Blick in die Zukunft ● Diskussion
  • 4.
    Erste Gehversuche ● 1999 - 2002 ● Attacken gegen Hotmail ● Outlook Webaccess ● Ein völlig neues Thema ● Internet Explorer 5.5
  • 5.
    Samy ● 2005 ● Just to be popular ● Hat funktioniert ● MySpace down ● FBI, Arrest und Auflagen ● 2010 - und Samy ist zurück...
  • 6.
    Yamanner ● 2006 ● Mailworm ● Adressdaten harvesten ● SPAM
  • 7.
    Der Pornowurm ● 2007 ● 1 Mio User ● Lediglich ein PoC ● XSS Attacken und persönliche Reputation ● Emailadresse und sexuelle Präferenzen ● Reported aber nie gefixt
  • 8.
    Nduja Connection ● 2007 ● Mailworm ● Mehrere italienische Freemailer ● Cross Domain ● Nur ein PoC
  • 9.
    Der nette Wurm ● 2007 ● Wordpress ● Heilsamer Payload ● Propagation via Scanning und Blogroll ● Große Coverage in den Medien
  • 10.
    Jikto ● 2007 ● Cross Domain ● PoC Wurm für einen Shmoocon Talk ● “Geleakter” Sourcecode ● SOP Normalisation via Google Translate ● Big buzz
  • 11.
    Diminutive Worm Contest ● 2008 ● “Den Kürzesten haben” ● Webworm aus ca. 150 Bytes als Resultat ● Erstmalig HTML als Wurmgerüst ● Contest mit Botschaft
  • 12.
    Justin.TV und andere ● 2008 ● Adressdaten sammeln ● Logindaten als Plaintext ● SPAM
  • 13.
    Rediff.com ● 2009 ● Mailworm ● 60 Millionen betroffene User ● Nutzt kleine Lücke im HTML Filter
  • 14.
    Reddit, Twitter,... ● 2009 ● Spam, SEO, Account Hijacking etc ● Facebook Apps running wild ● Orkut ● Und viele andere...
  • 15.
    Mehr mehr MEHR! ● Quellen diverser Würmer sind online ● Teils mit Erläuerungen ● sla.ckers.org ● AJAX Worm Database ● namb.la/popular
  • 16.
    Bilanz und Wartenauf 2010 ● Schlechter Code ● Lediglich String Obfuscation ● Potenzial noch nicht ausgereizt ● Meist fokussiert auf die betroffene App ● Mangelhafte Infrastruktur
  • 17.
    Heutige Probleme ● Wenige verstehen XSS ● Gleiches für CSRF ● Und erst recht die Kombination ● Dabei ist's nicht so schwer ● Und HTTP ist immer noch an allem Schuld ● Oder?
  • 18.
    Goldene Regel ● Remote XSS und Applikation mit Login == Wurm ● Auch reflektiver XSS – dank short URLs ● HttpOnly ist kein Hindernis ● Warum?
  • 19.
    Anatomie eines Wurms ● Initiale XSS Lücke ● Data Storage ● Payload Propagation ● Wurmkopf ● MVC oder was?
  • 20.
    Eigenschaften eines Wurms ● Was sind die wichtigsten Eigenschaften? ● Wie werden diese implementiert?
  • 21.
    Klar... ● Propagation ● Payload ● Stealthiness ● Robustness ● Obfuscation ● Defence
  • 22.
    Klassiches Design ● Altbekannte Prinzipien ● Klare Gewaltenteilung ● Strukturelle Schwäche
  • 23.
    Fallbespiel ● Yamanner ● View - die Lücke im Yahoo! Mail Frontend ● Controller - Der Payload ● Model - Ein PM System einer anderen Website ● Sauber strukturiert - aber... ● Einfach zu eliminieren
  • 24.
    Warhhol Würmer ● Kurzlebigkeit ● Instabilität ● Offensichtlichkeit ● No money shots
  • 25.
    Wer kanns besser? ● Botnetze ● Mass SQL Injections ● "Binary Worms"
  • 26.
    Vorteil Infrastruktur? ● P2P Architekturen ● Dezentrale C&C Server ● Obfuscation ● Verschlüsselung – richtig echte ● Rechenleistung und Plattenplatz
  • 27.
    Zurück zum Webworm ● Was fehlt zum echten Wurm?
  • 28.
    Eigentlich nichts ● Das Internet als Infrastruktur ● Verfügbar, dezentralisiert und schnell ● Services im richtigen Kontext sehen ● Alle Komponenten eines “Binary Worms” haben Web-Repräsentanten
  • 29.
    Controller ● Business Logik ● Yahoo! Pipes ● AppJet ● Codepad ● PHP, C++, JavaScript,...
  • 30.
    Dinge im Hintergrund ● AJAX Requests ● DOM Worker ● Schnittstellen zu OS und Applikationen ● ActiveX, PDFs, Videos,...
  • 31.
    Model ● Pastebins ● Image Hoster ● Twitter, Delicious und andere ● Einfach dank Tagging ● Web-RAID und mehr...
  • 32.
    Client Side Storage ● So viele APIs ● Bekannte wie W3C Storage APIs ● Und weniger bekannte Vertreter wie #userdata ● Oder HTML+TIME
  • 33.
    Payload obfuscation ● String Obfuscation und mehr ● Wir hatten das bereits... ● location.hash ● window.name ● Aynwhere in DOM country ● Bilder, Farben, Subdomains, Dateinamen, ...
  • 34.
    Robustness ● Escaping und Encoding ● Base64 – nicht alle User Agents ● escape() ● encodeURIComponent() ● Markup nutzen
  • 35.
    Propagation ● Scanning und Fuzzing ● Spidering ● Google und Yahoo! Search API ● Code Search Engines
  • 36.
    JavaScript und HTTP ● AJAX wenn möglich ● XDR ● Cross-Domain ● Lesend zum Harvesten ● Nicht-lesend zum Verbreiten ● new Image().src='http://...'
  • 37.
    Crossing the Line ● Requests an beliebige Domains ● Requests an beliebige Protokolle ● Requests an beliebige Ports ● Shodan
  • 38.
    Wenig Limits ● SOP als einziges Hindernis ● Komplexer als man denkt ● Single Point of Failure ● 2009 wie oft genau gefallen?
  • 39.
    Und noch weiter... ● Intranet Würmer ● OTRS, phpMyAdmin, Plesk ● Würmer in Entwicklungsumgebungen ● Eclipse, Trac, ... ● Politische Foren und Abstimmungssysteme ● Mobile Botnetze via XSS
  • 40.
    Zusammenfassung ● Web-Würmer können mehr ● Trusted User Interaction simulieren ● Dezentrale Controller ● Dezentrale und inhomogene Models ● Cross-Domain und Cross-Protocol
  • 41.
    Warhol war einmal ● Persistente Webworms sind möglich ● Nur gibt es noch keinen ● Zeit einen zu bauen! ● Oder?
  • 42.
    Rechtliches ● Keine einfache Lage ● Mehr eine völlige Blackbox – siehe §202c ● Gerade noch ein PoC... ● ...oder schon eine Straftat? ● Kompliziert in EU und USA
  • 43.
    Was kann mantun? ● Dilemma Diversität ● Zuviele Kombinationen aus Services ● Messerblock und Säurefässchen ● CSE oder Exploit Search Engine?
  • 44.
  • 45.
  • 46.
    Vielen Dank! ● mario.heiderich@gmail.com ● http://heideri.ch ● https://twitter.com/0x6D6172696F