Quantcast
Channel: Raid-Rush:Blog » Hook
Viewing all articles
Browse latest Browse all 7

Das AusweisApp

0
0

Das AusweisApp wurde vor etwa einem Monat offiziell zum Download freigegeben und einige Tage später wieder vom Server entfernt wegen einer Sicherheitslücke. Mittels DNS Manipulation und einem Webserver mit gültigem Zertifikat konnte man über die Update Funktion des Apps eine beliebige ZIP Datei mit schädlichem Inhalt einschleusen. Klingt zwar sehr gut, finde ich aber wenig praxisrelevant, weil diese Methode einfach viel zu aufwendig ist und es nun mal viel einfachere Wege gibt einen PC mit einer schädlichen Software zu infizieren. Das BSI hat das Programm trotzdem vom Server entfernt, wahrscheinlich um zu zeigen das es ihnen ernst ist. Das dürfte aber wohl eine oder die letzte Sicherheitslücke sein, die es einem ermöglicht ohne direkten Zugriff auf den PC, das AusweisApp zu manipulieren. Offiziell wird mit der Stopfung dieser Lücke das AusweisApp „bombensicher“, die einzige Sicherheitslücke sitzt dann nämlich vor dem Bildschirm und lässt sich Malware unterjubeln.

Eine wichtige Frage die man in diesem Zusammenhang stellen sollte ist klar: Wie einfach ist es das AusweisApp zu manipulieren? Wie einfach haben es die Trojaner Entwickler. Das es möglich ist bezweifelt keiner, aber schaffen das auch einfache Scriptkiddes ohne große Kenntnisse?

Ich habe mir zum Glück rechtzeitig das AusweisApp runtergeladen und bin leider jetzt erst dazu gekommen es mal genauer anzuschauen. Leider habe ich noch keinen neuen Ausweis, aber es lassen sich schon gute Tendenzen erkennen.
Zunächst schau ich immer welche Programmiersprache eingesetzt wurde. Bei dem AusweisApp lässt sich das nicht genau sagen. Es ist auf jeden Fall ein Mix aus C++ und Java. Gewisse News Seiten haben schon bemängelt das eine alte Java Version(v1.6.0_18) mitgeliefert wird, aber auch das finde ich nicht wirklich schlimm, weil es auch hier eher unwahrscheinlich ist das jemand diese Tatsache effektiv missbrauchen kann. Was sehr auffällt sind die vielen externen Bibliotheken (DLLs). Neben den offensichtlichen DLLs wie z.B. PdfSecureAPI.dll oder msvcr80.dll gibt es auch viele Dateien mit der Endung „ols“ die in Wahrheit aber ganz normale DLLs sind z.B. siqCertMgr.ols oder siqCipher.ols. Allein der Name dieser OLS Dateien lässt schon schließen das in diesen Dateien sehr interessante Dinge passieren. Wenn man sich die Dateien mal mit dem tollen CFF Explorer anschaut und das Export Directory begutachtet findet man auch ganz tolle Sachen. Funktionen wie siqCipher_Decrypt, siqCipher_Encrypt, siqCipher_EncryptFile oder siqCipher_DecryptFile lassen schon das Herz eines jeden Malware-Entwickler höher schlagen. Ich hab keine Ahnung welche Verschlüsselung in dem neuen Ausweis eingesetzt wird und dank dieser sehr sprechenden Namen von Funktionen brauch ich das auch gar nicht wissen. Ich schau einfach mal was bei den vielen „Decrypt“ und „Encrypt“ Funktionen so rein und raus geht (z.B. mit einem Debugger) und schon wird man auch mit 0 Kryptographie Erfahrung den neuen Ausweis gut durchleuchten können. Klasse finde ich z.B. auch die DLL siqSSLClient.ols mit den vielversprechenden Funktionen wie z.B. Java_com_openlimit_net_ssl_CsiqSslPskClient_write. Die Methode hat wahrscheinlich die gleiche Funktion wie SSL_write von OpenSSL (Hint: Schaut mal meinen SFT Hook an). Man kann nur hoffen dass diese Funktion nicht dafür verantwortlich ist die Kommunikation mit dem Internet zu sichern…
CFF

DLL Injection mit API Hooking ist also ein sehr gutes Verfahren das AusweisApp zu manipulieren, da man die Funktionsadressen dynamisch mit GetModuleHandle/GetProcAddress holen kann, spielt die Version des AusweisApp auch keine Rolle. Man kann also ohne Probleme alle aktuellen und zukünftigen Versionen des AusweisApp infizieren ohne Code Anpassungen.

Fazit

Es scheint so, dass man mittels einfachem API Hooking das AusweisApp beliebig manipulieren kann. Die sehr sprechenden DLL Namen und die sehr interessant klingenden Funktionsnamen laden einen gerade dazu ein. Das tolle ist das man dafür kaum Reverse Engineering Kenntnisse braucht, die Funktionsnamen liefern quasi schon alle Details die man wissen muss, lediglich die Funktionsparameter muss man mit einem Debugger noch rausfinden, was allerdings nicht schwer ist. Das AusweisApp zu manipulieren ist also keine Kunst, das sollten selbst Scriptkiddies hinbekommen. Ich bin also sehr gespannt wie lange es dauert bis es ein Trojaner gibt der das AusweisApp angreift. Vielleicht ist es aber auch so, dass die neue Version des AusweisApp (die im Januar erscheinen soll) bereits diese einfache Manipulationsmöglichkeit nicht mehr bietet.

Links:

http://www.heise.de/newsticker/meldung/Neuer-Personalausweis-AusweisApp-mit-Luecken-2-Update-1133376.html

http://www.heise.de/newsticker/meldung/BSI-testet-neue-Version-der-AusweisApp-1138739.html

http://www.heise.de/newsticker/meldung/Elektronischer-Personalausweis-Ueberarbeitete-AusweisApp-kommt-im-Januar-1146066.html


Viewing all articles
Browse latest Browse all 7

Latest Images





Latest Images