Dawid kontra goliat, czyli o tym, dlaczego tak ważne jest przestrzeganie zasad bezpieczeństwa

Kamil, mój brat, zgłosił mi, że Windows na jego komputerze zaczął piszczeć, że nie jest oryginalny. Problem tkwił w tym, że owszem, był, fizycznie kupowanym przeze mnie systemem.
Wprowadziłem wtedy klucz ponownie i uznałem, że po sprawie. Do wczoraj.
Wczoraj, używając w pewnym celu tego komputera, zauważyłem, że powiadomienie o nieoryginalności systemu wróciło. Przyznam, zaintrygowało mnie to.
To, co teraz napiszę, niech będzie dla was przestrogą.

O zagrożeniach w sieci mówi się dużo w szkołach, w telewizji, w radiu.
A mimo to ludzie zdają się to wszystko przyjmować i ignorować.
Już dawno przestałem zajmować się regularną optymalizacją komputera brata. Przyznam, straciłem do tego cierpliwość, bo śmietnik tam się robił niesamowity, setki ikon na pulpicie, instalowane i usuwane gierki z prędkością światła.
Ale myślałem, że to wszystko jest z bezpiecznych źródeł, a już na pewno nie spodziewałem się tego, co odnalazłem.

Zacznę od kilku wskazań.
Naprawiałem już tyle komputerów i tak często je optymalizowałem, że zestaw usług i procesów systemowych znam jednak niemal na pamięć.
Byłem jednak pewien, że w tym zestawie nie mieszczą się procesy o wdzięcznych nazwach: winnetwork.exe, netsvc.exe ani dnpmgr.exe.
Jeśli chodzi o usługi, tajemnicze kryptonimy "Windows network analysis Service", "Windows audio extended experience" i "Kernel Deployment SVC" brzmiały dość alarmująco.
Zwyczajowe miejsce zapisu autostartu, czyli klucz "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" wyglądał dość czysto, żadnych podejrzanych wpisów.
To samo dotyczyło odpowiednika systemowego.
Kolejne sprawdzone przeze mnie miejsce, menedżer urządzeń.
W zakładce urządzenia systemowe tajemnicze "Intel Core Thermal Manager" wyglądało cokolwiek nietypowo.
Idziemy dalej, ustawienia sieciowe i zobaczyłem to, czego się spodziewałem. systemowy Serwer Proxy ustawiony na "127.0.0.1:8080".
W tym momencie byłem już przekonany, że mam do czynienia z wyjątkowo perfidną infekcją.

W tym momencie przyszła pora na program Wireshark i sprawdzenie, skąd właściwie wziął się ten serwer Proxy. Tworzył go mój proces netsvc.exe.

Na komputerze zainstalowany był antywirus AVG. Niestety, mimo skanu nie wykrył żadnego zagrożenia. Uruchomiłem także antywirusa Sysclean i Avirę, wszystko z identycznym efektem. Skan zewnętrzny? Także nic.
Ale jeżeli to było nic, to ja jestem zakonnica.
W tej sytuacji należało zrozumieć, jak ten wirus działa.

Jak wspominałem, klucz "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" był czysty. Nie znalazłem także żadnych podejrzanych wpisów w harmonogramie zadań. W tej sytuacji usunąłem trzy rzeczone usługi i ich pliki, zresetowałem ustawienia serwera proxy, wyrzuciłem tamten sterownik i z nadzieją, że to koniec zabawy, zrestartowałem komputer.
Guzik.

Usługi na swoje miejsce wróciły, serwer Proxy ustawił się jak poprzednio, a ja pozostałem z paskudnym uczuciem, że to będzie cięższy orzech do zgryzienia.

Po pierwsze, wielka czystka.
Uznałem, że zanim zrobię cokolwiek więcej, należy pozbyć się wszystkich profili co bardziej typowych aplikacji. Nie chciałem ryzykować, że coś gdzieś przetrwa.
Ustawienia Google Chrome, Firefoxa, Internet Explorera? Wypad.

Po drugie, zaglądamy do klucza "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce". No dobra, nie był to pierwszy klucz, który sprawdziłem, ale pierwszy, w którym coś znalazłem.
Wywoływany był tu program rundll32.exe odwołujący się do biblioteki "windows.dll" i wykonujący funkcję "runwindows".
Fantazja twórców chyba nie miała granic. Taka biblioteka nie istnieje, przynajmniej w normalnym systemie, bo na komputerze Kamila, a owszem, istniała.
Zlokalizowana była w folderze %appdata%\microsoft\windows\components .
Tutaj informacja, normalnie takiego folderu nie ma.
Znalazłem w nim także kilka innych ciekawych plików o nazwie "clock.exe", "updater.exe" oraz "word.exe", jak również bibliotekę "winsecurity.dll".

Po trzecie, uruchamiamy środowisko programistyczne.
Napisałem prosty program logujący uruchomienia, jak również bibliotekę dll z funkcją runwindows logującą wywołania. Chciałem mieć pewność, że tych programów nic nie uruchomi.
Podmieniłem tym sposobem pliki w tym nieszczęsnym folderze components, a następnie wyczyściłem klucz runOnce.
Ponownie usunąłem usługi i wszystkie inne wirusowe śmieci.

Po czwarte, restart.
Wszystko wróciło. Znowu.
Prócz folderu components, w nim pozostały moje pliki, niewywołane.
ALe usługi radośnie odżyły.
W tym momencie zacząłem rozważać reinstalację systemu, ale uznałem to jednak za wyzwanie.
Sprawdzałem harmonogram, rejestr, resetowałem przeglądarki, o czym zapomniałem?
O najbanalniejszej rzeczy. O autostarcie w menu start.
Co tu mamy?
Jest sobie skrót nazwany "Microsoft Virtual Reality Service" odnoszący się do pliku "C:\program files (x86)\common files\microsoft\virtualreality\vrsvc.exe".
Także i takiego programu Windows nie ma. Skrót usunąłem, folder także.
Poczyściłem standardowo usługi, rejestry, wyczyściłem proxy, zrestartowałem i…
Proxy jest puste, usług nie ma, podejrzanych procesów nie ma.

Nie mogę mieć pewności czy czegoś nie przeoczyłem, zaraz wykonam głęboką analizę, już teraz widzę na przykład, że wirus wyłączył UAC, wszelkie szyfrowania i podobne rzeczy, ale mam nadzieję, że teraz już się go pozbyłem.

Wnioski?
Wnioski są dość ponure.
Po pierwsze, nie znam drogi instalacji tego programu ani jego działania, z całą pewnością był jednak doskonale przemyślany.
Na tym komputerze wyłączony był Windows Update, nie przeze mnie. Nie wiem jednak czy to przyczyna, czy efekt, innymi słowy czy wyłączył go Kamil i wirus wykorzystał jakąś lukę bezpieczeństwa, czy też droga propagacji była inna, a efektem działania wirusa wyłączenie aktualizacji.
Po drugie, jest niewykrywalny.
Żaden antywirus go nie rozpoznał jako zagrożenie.
Po trzecie, nawet wielu informatyków by go nie wyśledziło.
Wymagało to sporego doświadczenia, cierpliwości i dogłębnej analizy systemu. Czegoś takiego nie zrobi serwisant za 50zł.
Po czwarte, dalej nie wiem, jak ten wirus działał, niestety.
Nie wiem także, od kiedy na komputerze gościł.
Ale był najbardziej rozbudowanym i przemyślanym wirusem, z jakim się spotkałem.

To nie była faktura

Dziś na maila firmy prowadzonej przez tatę przyszła dość podejrzana faktura. Jako, że wielokrotnie uczulałem mamę na wszelakie zagrożenia czychające w sieci, skoro zobaczyła nietypowy format pliku (js), od razu mnie zawołała.
Piszę o tym, żeby was ostrzec i przy okazji przybliżyć metody ataku hakerów.

Treść maila była następująca:
Dzien dobry,
Informujemy, ze zalaczony dokument jest faktura w rozumieniu Ustawy z dnia 28.05.2018 r. o podatku od towarów i uslug. Mozna ja przechowywac w formie elektronicznej lub papierowej po wydrukowaniu.
Pawel Malecki
Asystent ds. Finansowych

Najważniejsze nagłówki wiadomości:
Temat: Faktura 28/05/2018
Data: 2018-05-28 9:20
Nadawca: "Pawel Malecki" <present@fmx20.pf.interia.pl>
Adresat: "Recipients" <present@fmx20.pf.interia.pl>;

Od razu widać po mailu, że coś jest z nim bardzo nie tak, tak po nagłówkach, jak po treści.
W załączniku znajdował się plik Javascript o nazwie faktura_RS9877H1628819P71829900001_2018_5_28_dfd348.pdf.js i rozmiarze 24735 bajtów.
Sumy kontrolne pliku:
MD5: fd5739feb1ef0577754f56ee177a2eec,
SHA1: 7d3af1a7c5e6eea2273bc27c2f7bf69060e164a2.

Zasadniczo oczywistym dla mnie było, że plik jest wirusem od samego początku, nie mogłem jednak oprzeć się pokusie jego bliższego zbadania.
Linuxie, do dzieła!

Plik został dobrze obfuskowany, czyli zamaskowany – innymi słowy jego zrozumienie zostało utrudnione tak, jak to tylko możliwe.
Nie da się jednak stworzyć żadnego programu, którego dekompilacja czy zrozumienie będzie całkowicie nieosiągalne, a kwestia dotyczy tylko czasu.
Poniżej, jako ciekawostkę, prezentuję proces działania pliku.

Po uruchomieniu plik prezentuje okno informujące, że dokument jest uszkodzony. Taaaak, bardzo to inteligentne.
Następnie samoistnie się usuwa, jednocześnie jednak wykonuje kopię do pamięci RAM, w której czeka i co 60 sekund podejmuje próbę połączenia z serwerem.
Kiedy się uda, wysyła do serwera identyfikator komputera i czeka na odpowiedź.
Jeżeli serwer odpowie, plik wykonuje otrzymany kod.

I to tyle, proste, a groźne.
Pamiętajcie, nigdy, przenigdy nie uruchamiajcie podejrzanych plików.