W sieci pojawił się opis ciekawego konia trojańskiego napisanego w Pythonie prawdopodobnie przez Polaka. Na podstawie dostępnych wskazówek zidentyfikowaliśmy już ponad 100 tysięcy zainfekowanych nim plików EXE.
Firma Palo Alto Networks opisała dzisiaj interesujący przypadek złośliwego oprogramowania, na które od pewnego czasu natrafiała w sieciach polskich firm i instytucji. Pliki były rozprowadzane między innymi w serwisie Chomikuj.pl. Zidentyfikowaliśmy konta odpowiedzialne za udostępnianie zainfekowanych plików i skala zjawiska zrobiła na nas duże wrażenie.
PWOBot
PWOBot, bo tak nazwali go odkrywcy, napisany jest w całości w Pythonie a następnie skompilowany do pliku EXE. Najstarsze ślady jego wczesnych wersji sięgają zdaniem badaczy do końca roku 2013. Odnaleziono ślady istnienia 12 różnych wersji a kulminacja ataków przypadała na drugą połowę roku 2015. Poszczególne wersje różnią się w niewielkim stopniu, wprowadzają jedynie drobne optymalizacje.
Złośliwy program zaczyna od poszukiwań swojej wcześniejszej wersji i jeśli taką znajdzie to ją usuwa. Następnie tworzy na dysku swoją kopię pod nazwą pwo[numer wersji] i dopisuje jej uruchomienie do odpowiedniego klucza w rejestrze. Na ślady wpisów w rejestrach odpowiadających tej definicji natrafiliśmy np. na forum Elektrody w czerwcu 2014, serwisie wklej.org w lutym 2014 czy na forum FixitPC w styczniu 2014. Sam program posiada budowę modułową i dysponuje następującymi możliwościami:
- pobieranie i uruchamianie wskazanych plików wykonywalnych
- uruchamianie serwera WWW na zainfekowanym komputerze
- zapisywanie naciskanych klawiszy
- kopanie BTC za pomocą procesora lub karty graficznej
- wykonywanie kodu Pythona
- odpytanie wskazanego adresu URL
Program posiada także dwa pliki konfiguracyjne. Jeden z nich wskazuje podstawowe parametry działania takie jak np. nazwy plików EXE pod którymi uruchomione są poszczególne moduły, a drugi informacje o serwerach C&C. Serwery C&C znajdują się w sieci Tor – złośliwy kod zawiera także odpowiednie pliki obsługujące te połączenia. Próbki z ostatniej kampanii z sierpnia 2015 łączą się także z domenami
tracking.huijang.com api.olakmonitoring.com
260 tysiecy zainfekowanych plików
Zaczynając naszą analizę od kilku nazw plików zawierających złośliwy kod szybko zlokalizowaliśmy konta w serwisie Chomikuj.pl, które zawierały próbki konia trojańskiego dołączone do przeróżnych programów użytkowych. Zauważyliśmy także pewne cechy wspólne tych kont, które pozwoliły na zlokalizowanie ich większej liczby. Jak do tej pory namierzyliśmy 7 kont które zawierają praktycznie wyłącznie pliki EXE zainfekowane opisywanym koniem trojańskim. Te konta to Kimaoson, KuroMan29, KarolKrol, OranzowyBol, be36ber, soneaakarin oraz Paolapopo. W sumie te 7 kont zawiera 262 314 plików o łącznej objętości dokładnie 99,99 GB. Przypadek czy precyzyjnie zaplanowany projekt?
Kto za tym wszystkim stoi
Doświadczeni analitycy z laboratorium z3s, którzy na polskim złośliwym oprogramowaniu zęby zjedli, zgodnym chórem podejrzewają o współudział osobę stojącą za innowacyjnym koniem trojańskim Banatrix (oraz jego późniejszymi odmianami) lub kogoś, kto wzoruje się na jego metodach działania. Opinia ta wynika przede wszystkim z wyboru metody dystrybucji konia trojańskiego. Źródło Banatrixa długo umykało badaczom – w końcu okazało się, że jednym z kanałów dystrybucji były zainfekowane pliki w serwisach torrentowych. Autor kampanii pobierał popularne pirackie oprogramowanie (np. Photoshop, Tibia czy Nero), do każdego pliku EXE doklejał swój kawałek kodu i – prawdopodobnie cudzymi rękoma – propagował w sieci na popularnych serwisach torrentowych. Tu mamy do czynienia z podobną akcją, choć na dużo większą skalę. Wybór takiej metody dystrybucji bardzo utrudnia zadanie badaczom – bez aktywnego rozsyłania konia trojańskiego trudniej ustalić metodę infekcji, a same ofiary dużo mniej chętnie przyznają się do instalowania pirackiego oprogramowania. O efektywności tej metody niech świadczy fakt, że dopiero po ponad 2 latach pojawił się w sieci pierwszy opis PWOBota.
Drugim istotnym podobieństwem jest stworzenie własnego złośliwego kodu, rzadko spotykane na naszym rynku, gdzie dominują gotowe konie trojańskie z HackForums.net. Nie znamy wielu przypadków autorskiego konia trojańskiego w naszym kraju – ten zdecydowanie wybija się ponad codzienność. Autora tradycyjnie zapraszamy do kontaktu – bez wątpienia może opowiedzieć wiele ciekawych historii.
Komentarze
Zerknąłem na te pliki i one mają często poniżej 0,5 Megabajta. Czy zostały utworzone przez py2exe (są zbyt małe) czy to wersja pythona związana z C# (kiedyś to zwali IronPython).
Często wirusy są w plikach zip udających książki. Np. tutaj:
http://chomikuj.pl/farango/Literatura+faktu/Wdowy+smole*c5*84skie,4980439024.zip(archive)
Bo te małe pliki to jedynie downloadery pobierające docelowy payload po http. Chociaż na chodniku można znaleźć również docelowe binarki zbudowane pyinstallerem. One mają już rozmiary >7M (7-20M)
jest wiecej opcji, sprawdz chociazby cos takiego jak „nuitka”
respekt na dzieli kolo ma!!
Admini chomikuj chyba czytają z3s, bo wszystkie konta już poblokowane ;)
mysle ze ekipa z3s poinformowała chomikuj.pl o takiej szerokiej dystrybucji i wskazala namierzone konta, to raczej logiczne.
Odkąd to administratorzy chomikuj to rwą do zgłoszeń. Na chomikuj pełno kont oszustów. Przykładowe:
http://chomikuj.pl/aboone1221
http://chomikuj.pl/dpetrilis,13
Mają w plikach powsadzane linki do stron wyłudzających pieniądze z smsów. Mimo próśb, żeby zainteresowali problemem: blokowaniem chomików i usunięcia treści z portalu to nie bardzo. A niestety głupich nie sieją, a normalne chomiki rozwlekają po swoich kontach te pliki i pewnie ludzie wysyłają sms, żeby dostać nieistniejące pliki, a w zamian to dostaną wirusy.
W ogóle mi nie szkoda tych co się na to nabierają. Chcieli kraść a sami zostali okradzeni.
Mają rozmach. A jak z jego wykrywalnością, skanowanie plików z chomikuja na virustotal wystarczy?
W C++ zajęło by tylko 60kb po UPX
Prawdopodobnym powodem użycia Pythona była chęć obniżenia poziomu wykrywalności – jak widać działało dość długi czas.
W jaki sposób użycie pythona może obniżyć poziom wykrywalności?
Języki programowania pozwalają zrobić jedną rzecz na wiele sposobów. Języki wysokopoziomowe dodatkowo to ułatwiają.
Jeśli zrobisz coś odpowiednio inaczej to masz dużą szansę, że wzorzec antywirusa wyszukujący określonego kodu/instrukcji nie zadziała.
Tłumaczenie z Pythona na C dorzuca sporo kodu Python’a do tego co chcemy zrobić. Dodatkowo Python tłumaczy różne operacje inaczej niż napisało by się to w czystym C. I na koniec w prostszy sposób można napisać inny kod robiący to samo co kod łapany przez antywirusa.
I tak i nie. To o czym mówisz tyczy się już znanych próbek złośliwego oprogramowania. Nieznane próbki mogą być wykrywane
tylko po tym co próbują zrobić. Czy napiszesz program w C czy w Pythonie, będzie się posługiwać tymi samymi wywołaniami systemowymi.
Jakoś wątpię by głównym powodem napisania tego w Pythonie była
chęć obniżenia wykrywalności.
Doklejenie się do pliku exe również nie jest niczym wybitnym, więc nie przesadzałbym z tym, że stworzenie własnego trojana
to jakaś wybitna sztuka. Po prostu ludzie zajmujący się tym
by wyłudzać pieniądze nie są na tyle techniczni by robić
takie rzeczy samemu, ot cała prawda.
Wykrywalności to nie chyba koniecznie, przynajmniej na pewnym etapie – chociaż wykorzystanie języków emulowanych/interpretowanych ma jakiś sens w przypadku gdy np atak jest wycelowany w komputer który dany interpreter posiada (np warto napisać wirusa w Javie gdy atakujemy komputer mając pewność że ma jave i wiemy że większość rozwiązań `av` bazujących na emulacji jej nie ma) ale wydaje mi się że wykorzystanie języków bazujących na maszynach wirtualnych/interpretatorach ma przede wszystkim tę zaletę że w wielu przypadkach utrudnia analizę, dużo ludzi zna x86/64, ARM czy inne architekrtury ale każdy język pośredni to dodatkowa warstwa abstrakcji (Byte Code etc). Natomiast ogólnie sądzę że łatwo popaść w paranoje, większość ludzi związanych z informatykom programuje dzisiaj w językach wysokiego poziomu więc pyton/java czy c# to może być dla nich bardziej naturalne środowisko niż inne i gdyby ktoś na prawdę chciał osiągnąć dobre ratio nie wykrywalności za pomocą języków bazujących na VM czy innej dodatkowej warstwie abstrakcji to po prostu napisałby własną implementacje VM
Wydaje mi się, że dobrze trafiłeś. Osoba pisząca to cudo zapewne uczyła się programować w ostatnich latach.
Zaciemnianie kodu poprzez użycie VM jest słabe. W znacznej większości przypadków nie potrzeba nawet odpalać debugera, żeby zauważyć czy coś prowadzi „podejrzaną działalność”.
No właśnie nie wiem, bo jak się tak zastanowić to wykorzystanie języków pośrednich może być irytujące na pewnym etapie np w przypadku dropperów/loaderów (run-pe) bo na dłuższą metę to chyba tak się jakoś składa że większość z tych języków jest łatwa w dekompilacji a z punktu widzenia detekcji bazującej na jakiś wirtualkach/sandboxach/etc to chyba i tak największą uwagę ma to w jaki sposób dana próbka wchodzi w interakcje z systemem operacyjnym, natomiast jeżeli wziąć pod uwagę czysto analityczny aspekt (RE) to własna implementacja VM (a jeszcze lepiej wielokrotna) jest ciężka do analizy przez ludzi z zewnątrz bo muszą rozebrać interpreter.
Natomiast w wielu przypadkach jest prawdopodobnie tak że ktoś używa danego języka bez kalkulacji bo czemu nie, albo właśnie lepiej się w nim czuje
Fajny artykul. Ale przydalaby sie dodatkowa informacja, czy trojan jest wykrywalny przez jakies antywirusy. Przyczepie sie takze do sformuowania ze program Tibia jest programem pirackim.
Tu masz listę sum sha256 części wspomnianych plików: https://github.com/pan-unit42/iocs/blob/master/pwobot/hashes.txt. Możesz sobie wyrywkowo sprawdzić na VT.
Pierwszą moją myślą po przeczytaniu, że trojan został napisany w Pythonie było – nareszcie coś „portable” napisali na różne systemy. Później niestety jak zwykle się rozczarowałem. Może ktoś po przeczytaniu mojego wpisu postanowi dopieścić jakimś malware użytkowników innych systemów niż Windows? Kasy z tego wielkiej może nie będzie ale za to jaki rozgłos i sława w podziemiu. Nie zachowujcie się jak rozwydrzone korporacje. No i nie liczy się infekcja Linuksa działającego pod Windowsem.
Formaty plików wykonywalnych nie są kompatybilne, więc co najwyżej taki trojan mógłby obsługiwać kilka wybranych systemów.
Wirusy na Linuksa istnieją i nie jest to żadna nowość.
Pisze się je prawie tak samo jak pod Windows, jednak możliwość ich rozprzestrzenienia jest bardziej ograniczona.