Postanowiłem jednak dopisać drobne uzupełnienie odnośnie poprzedniego wpisu dotyczącego łamania PassWindow.
PassWindow III: jeszcze kilka wyjaśnień
Po pierwsze z dużą dozą podejrzliwości podchodzę do rozwiązań, które mają być bezpieczne, nawet w przypadku, gdy system klienta został skompromitowany. Bardziej jestem skłonny zaakceptować system, który tego typu zabezpieczeń nie posiada i przyjąć do wiadomości, że całość jest bezpieczna wyłącznie wówczas, gdy komputer, z którego korzystam jest "czysty", niż system, który w wydumany sposób stara się ten problem rozwiązać. Tym bardziej, że często owo rozwiązanie działa wyłącznie w pewnych w pewnym idealnym świecie.
Przy opisie PassWindow pojawia się informacja, że system ten chroni przed keyloggerami. Owszem, może i rzeczywiście tak jest, jeśli pod pojęciem keyloggera rozumie się program, który jedyne co robi, to loguje naciskane klawisze (lub zapamiętuje przesłane dane, to tak dla ułatwienia). Jeśli przyjąć takie dodatkowe ograniczenia, to może i rzeczywiście PassWindow jest jakimś rozwiązaniem problemu. Tylko, że takiego założenia przyjąć nie można. Trochę przypomina mi to twierdzenie, że klawiatura wirtualna, która nie wizualizuje naciśnięcia klawisza jest lepsza, niż ta, która robi ładną animację, bo na screenie nie widać jaki klawisz został naciśnięty (patrz: Klawiaturki wirtualne są ZŁE!).
Moim zdaniem należy zastąpić pojęcie keylogger pojęciem malware i przy analizie bezpieczeństwa rozwiązania należy uwzględnić przypadek najgorszy, to znaczy, że taki malware może zrobić wszystko, nawet jeśli w tej chwili "na wolności" nie występuje malware, który konkretny atak przeprowadza. Pod pojęciem wszystko należy rozumieć oczywiście wykorzystanie możliwości, które daje fakt pracy w komputerze ofiary i praktycznie dowolnej modyfikacji zachowania systemu. Nie mówię tu natomiast o scenariuszach abstrakcyjnych jak czytanie w myślach użytkownika siedzącego przed komputerem, choć podglądanie go przy pomocy podłączonej/wbudowanej kamerki można już uwzględnić. Ktoś się skusi na napisanie takiego PoC? :)
W chwili obecnej, moim zdaniem, sensownym założeniem jest przyjęcie, że malware działający na komputerze ofiary będzie:
- widział to, co widzi użytkownik (na ekranie),
- widział to, co użytkownik pisze ("klasyczny" keylogger,
- mógł monitorować ruch wychodzący/przychodzący,
PassWindow jest mechanizmem typu challenge-response, gdzie challenge to obrazek z kreskami wyświetlany użytkownikowi (malware go widzi), response to hasło wpisane przez użytkownika (ponownie: malware je widzi), a "mechanizmem" przekształcającym challenge w response jest karta, a w zasadzie układ kresek znajdujących się na niej (której malware nie widzi, chyba, że ktoś napisze tego PoC z wykorzystaniem kamerki). Dla intruza głównym celem będzie pozyskanie danych pozwalających na "samodzielne" wygenerowanie response na kolejny challenge. Jak pokazałem w przypadku PassWindow jest to możliwe i jest to możliwe dość szybko.
W trakcie tej szybkiej analizy nie miałem niestety dostępu do konkretnego wdrożenia (ciekawe, czy już gdzieś istnieje) PassWindow, w związku z czym oparłem się na tym, co zobaczyłem na stronie. Konkretnie na animacji, z której pochodzi maska oraz pierwszy wzorek. Drugi wzorek też teoretycznie pochodzi ze strony, choć mogą występować pewne różnice, bo nie złapałem animacji w odpowiednim momencie, a nie było to aż tak bardzo kluczowe w tej chwili.
Można całą zabawę powtórzyć jeszcze raz korzystając z udostępnionego na PassWindow demo. Na razie nie mam ku temu motywacji, ale możne wrócę do tematu za jakiś czas. Chodzi mi po głowie pomysł na bardziej działającego PoC opartego na tych samych danych wejściowych (obrazek, hasło), ale już w postaci działającego kodu, a nie hackowania przy pomocy Inkscape i podobnych do gry w szachy dywagacji.