Analiza złośliwego dokumentu PDF używanego do instalacji SpyEye

Data publikacji: 08/04/2011, CERT Polska

Jak przekonaliśmy się kilka dni temu, złośliwe dokumenty PDF pozostają jedną z popularnych metod rozprzestrzeniania się malware’u typu banker-trojan. Złośliwy dokument PDF, o którym pisaliśmy, wykorzystuje lukę w programie Adobe Reader do przeprowadzenia włamania na komputerze użytkownika, który go otworzył, po czym instaluje w systemie trojana SpyEye.

Jeśli użytkownik kliknie na załącznik PDF, program Reader rozpocznie jego ładowanie i przetwarzanie. Struktura dokumentu PDF jest drzewem obiektów, z jednym obiektem typu Root jako korzeniem. Reader przetwarza kolejne obiekty, zgodnie z ich kolejnością i pozycją w drzewie. Część obiektów to skrypty JavaScript, które mogą być wykonywane przez silnik EScript (silnik JavaScript’owy firmy Adobe).

Możemy użyć narzędzia pdfid do wyświetlenia informacji na temat obiektów zawartych w dokumencie.

Na pierwszy rzut oka wydaje się, że dokument nie zawiera żadnych skryptów JavaScript. Jest to jednak nieprawda, ponieważ w skompresowanych strumieniach (stream) ukryte są skrypty, które exploit wykorzysta do przeprowadzenia włamania. Są one zazwyczaj zaciemnione i trudne do zinterpretowania. Tak samo jest i w tym przypadku (fragment zdekompresowanego kodu widoczny na rysunku poniżej).

Skrypt dołączony do dokumentu zostanie zdekompresowany i wykonany. Posłuży on do umieszczenia shellcodu w pamięci za pomocą techniki „heap spray”. Kiedy nastąpi włamanie, procesor ofiary rozpocznie wykonywanie tego właśnie kodu.

Jak dokładnie dochodzi do przejęcia kontroli nad przetwarzanym kodem? Biblioteka AcroForm.api zawiera błąd, który to umożliwia. W trakcie przetwarzania obiektu AcroForm (widocznego w listingu programu pdfid), wykonywany algorytm zakończy się przedwcześnie, powodując skok do biblioteki icucnv34.dll.

Biblioteka ta zostanie wykorzystana przez exploit typu ROP (o exploitach tegu typu pisaliśmy w grudniu), który wcześniej został umieszczony w pamięci przez skrypt JavaScript (shellcode umieszczony w pamięci programu Reader jest widoczny na rysunku poniżej).

Jakie będą konsekwencje włamania? Przekonaliśmy się o tym przeprowadzając kontrolowane włamanie na laboratoryjnym komputerze. Exploit ładuje biblioteki systemowe potrzebne do prowadzenia transmisji w sieci Internet i próbuje połączyć się z naszego komputera ze zdalnym serwerem i pobrać oraz uruchomić plik EXE. Jest to bot SpyEye, który będzie następnie wykorzystywany do infiltrowania komputera ofiary i kradzieży jej danych (np. haseł bankowych).

Jak się zabezpieczyć przed takim atakiem?

Aby zabezpieczyć się przed włamaniami tego typu, należy przestrzegać kilku reguł. Przede wszystkim nie należy otwierać załączników w wiadomościach e-mail od nieznanych osób (oczywiście, czasem niestety możemy otrzymać maila od zaufanej osoby, która została już zainfekowana – w takiej sytuacji należy uważnie patrzeć, czy treść tego maila nie jest podejrzana). Dodatkowo dobrą praktyką jest wyłączenie obsługi JavaScript przez program Reader.

Jeśli w przyszłości Reader zapyta nas o pozwolenie na wykonywanie skryptów JavaScript zawartych w dokumencie, możemy mu odmówić.