6. Mai 2015

Kenne deinen Exploit…

… oder: warum man Exploit-Code nicht einfach blind ausführen sollte.

Spoiler alarm Disclaimer: Es handelt sich hier nur um ein Täuschungsbeispiel. Bitte den Artikel ganz lesen und den verlinkten/zitierten Exploit-Code nicht ausführen (außer man mag an der „Studie“ teilnehmen).

Um eine kleine Pause sinnvoll zu nutzen bzw. weil die secuvera Arena gerade belegt war, loggte ich mich mal wieder bei XING ein. Ich scrollte über die „Neuigkeiten“ und stolpere über einen neuen Beitrag in einer von mir besuchten Gruppe für Pentester. Der Beitrag hat einen sehr spannenden, wenn nicht gar reißerischen Titel:

„Facepwn – A facebook 0Day to read private messages“

Darin enthalten ist einzig und allein ein Link, der zu einem für Exploit-Code-Veröffentlichungen sehr klassisch wirkenden Blog-Artikel führt. Enthalten sind bei den Klassikern meist

  •  ein Kurzabriss über das Thema/die Schwachstelle (ohne auf Details oder technische Zusammenhänge näher einzugehen – ist aber ein anderes Thema),
  • ein Beispiel von der Kommandozeile als Appetitanreger gefolgt von
  • Code-Schnipsel(n) und
  • Grußworten.

Soweit, so gut. Beim Lesen des verlinkten Artikels und des darin enthaltenen Codes wurde mein Pentester-Spieltrieb geweckt. Da ist Programmcode (Perl), der in HEX codierte Anteile enthält. Lass mal schnell ausführen! Ich bin ja zum Glück sensibilisiert was das Ausführen von Exploits und deren Auswirkungen angeht. Also sind wohl eher die Fragen „Was mag da wohl drin stehen?“ und „Wie funktioniert nun eigentlich das Ausnutzen technisch gesehen?“ richtig und entscheidend – nicht das blinde Ausnutzen.

Decoding. Ich gebe zu, ich bin nach all den Jahren im Bereich Pentest noch immer nicht in der Lage, Hex-Code gänzlich im Vorbeifliegen zu lesen 😐 dafür haben Tools wie EnDe ja schließlich ihre Daseinsberechtigung (an der Stelle einen netten Gruß an Achim, danke für dieses Tool).

In folgendem Quelltext-Schnipsel

my $OO0O0O=“\x57\x57\x57\x3a\x3a\x4d\x65\x63\x68\x61\x6e\x69\x7a\x65″;
my @OOO0=(„\x66\x61\x6b\x65\x20\x6e\x65\x74\x77\x6f\x72\x6b\x20\x73\x74\x61\x63\x6b\x20\x6c\x6f\x6c“);
my $OO=“\x53\x53\x4c\x5f\x76\x65\x72\x69\x66\x79\x5f\x6d\x6f\x64\x65″;
my $OOOO00=“\x76\x65\x72\x69\x66\x79\x5f\x68\x6f\x73\x74\x6e\x61\x6d\x65″;
#initiate network stack
my $OOO0O=$OO0O0O->new(ssl_opts=>{$OO=>0,$OOOO00=>0});
my $OO00O=“\x4c\x6f\x6f\x6b\x73\x20\x6c\x69\x6b\x65\x20\x79\x6f\x75\x20\x64\x65\x2d\x6f\x62\x66\x75\x73\x63\x61\x74\x65\x64\x20\x74\x68\x65\x20\x63\x6f\x64\x65\x2e\x2e\x2e“;
my $OO0=“\x54\x68\x69\x73\x20\x69\x73\x20\x61\x20\x73\x69\x6d\x70\x6c\x65\x20\x65\x78\x70\x65\x72\x69\x6d\x65\x6e\x74\x20\x74\x6f\x20\x73\x65\x65\x20\x68\x6f\x77\x20\x6d\x61\x6e\x79\x20\x70\x65\x6f\x70\x6c\x65\x20\x72\x75\x6e\x20\x74\x68\x69\x73\x20\x63\x6f\x64\x65\x20\x62\x6c\x69\x6e\x64\x6c\x79″;
my $OO0O=“\x62\x6c\x6f\x67\x20\x70\x6f\x73\x74\x20\x72\x65\x76\x65\x61\x6c\x69\x6e\x67\x20\x74\x68\x65\x20\x64\x61\x74\x61\x20\x77\x69\x6c\x6c\x20\x62\x65\x20\x70\x75\x62\x6c\x69\x73\x68\x65\x64\x20\x73\x6f\x6f\x6e\x2e\x2e\x2e\x73\x74\x61\x79\x20\x74\x75\x6e\x65\x64″;
my $OO000=“\x68\x74\x74\x70\x73\x3a\x2f\x2f\x70\x68\x6c\x34\x6e\x6b\x2e\x63\x6f\x2e\x76\x75\x2f\x69\x5f\x72\x75\x6e\x5f\x6f\x62\x66\x75\x73\x63\x61\x74\x65\x64\x5f\x63\x6f\x64\x65\x3f$target“;

steht dann (befreit um die Perl-Anteile) geschrieben:

fake network stack lol

Looks like you de-obfuscated the code…

This is a simple experiment to see how many people run this code blindly

blog post revealing the data will be published soon…stay tuned

https://url.zur.Zaehlschnittstelle/mit/zaehlscript?$target

Wer perl halbwegs interpretieren kann (oder gut kombinieren kann), kommt nun auf den Trichter: ohne Änderungen im Code wird eine Zählschnittstelle vom Urheber mit der Facebook-ID des Testobjekts gefüttert (No s**t sherlock). Sinn und Zweck ist also nicht das Ausnutzen der so reißerisch angepriesenen 0Day-Schwachstelle beim Social-Network-Gigant – es soll nur gezählt werden, wie viele den „Penn-Test“ nicht bestehen und Code im Stevie-Wonder-Modus ausführen (und damit ist nicht das Ausführen und gleichzeitige Singen gemeint… 😎 ).

Die Moral von der Geschicht‘: AFWATISAF

Ich melde mich, wenn die Statistik dazu draußen sein sollte.

/SB

Update:

Die Statistik ist veröffentlicht worden.