Co stanie się, gdy na jednym serwerze Discorda pojawi się grupa analityków złośliwego oprogramowania z misją i odrobiną wolnego czasu? Efekty może nie są imponujące, ale przynajmniej artykuł je opisujący nie będzie za długi. Zapraszamy do lektury.
Discord to aplikacja, która większości kojarzy się z prostą koncepcją serwerów gromadzących mniejsze i większe społeczności w konkretnym celu (gry, programowanie, zespoły muzyczne) czy chociażby jako nieformalny kanał komunikacji w firmie. Niestety zło nie śpi i pod pretekstem darmowej waluty czy przedmiotów do gier zbierani są również ludzie chętni na darmowe „gratisy”.
„Gratisy” te często nie są darmowe, a czasami wręcz kosztują kogoś utratę sporej ilości gotówki. W jednym z ostatnich artykułów pisaliśmy, jak pod pretekstem nagrody wynoszącej 50 zł nieświadomi użytkownicy poprzez kod QR udostępniali swoje aplikacje do wysyłki SMS-ów ludziom o niezbyt dobrych zamiarach.
Niedawno na naszym serwerze Discorda na kanale #malware jeden z użytkowników podzielił się wyłowioną ciekawostką, a kilka osób postanowiło zainteresować się tematem:
Jak wygląda analiza malware?
Analizę rozpoczęto od pobrania pliku, który był przedstawiany jako „generator kodów PaySafeCard”, ale VirusTotal miał co do tego poważne wątpliwości:
Plik umieszczono w wyizolowanym środowisku – najczęściej jest to maszyna wirtualna, która nie ma dostępu do sieci oraz zawiera dodatkowo chociażby oprogramowanie antywirusowe. W tym przypadku Windows Defender zgłosił się jako pierwszy, wykrywając, że pobrany plik wykonywalny jest koniem trojańskim.
Ale to by było przecież zbyt piękne, gdyby wszystkie wirusy świata były wykrywane automatycznie, prawda? Wystarczyło na maszynie wirtualnej wyłączyć „Ochronę dostarczaną z chmury”, by plik generatora mógł bez problemu leżeć na pulpicie i czekać na uruchomienie przez potencjalną ofiarę.
Nie pozostało nam nic innego niż za pomocą niewinnego dwukliku myszy uruchomić generator i topić się w bogactwie, wyczekując na kolejne darmowe kody paysafecard. Niestety po uruchomieniu pobranego z sieci generatora nie dostaliśmy żadnego kodu. W tle działo się za to dużo innych rzeczy.
W miejscu uruchomienia generatora pojawił się katalog, a w nim takie pliki tekstowe jak „cookies”, „downloads” czy „web_history”. Znajdywały się w nich informacje wyciągnięte bezpośrednio z przeglądarek, w tym loginy, hasła, ciasteczka, pobierane pliki i wiele, wiele innych ciekawych danych dla atakującego – bo nie można nazwać inaczej kogoś, kto pod pretekstem darmowej stówy podrzuca złośliwe oprogramowanie.
Co dalej? Jako że ikona aplikacji wskazywała na to, że jest to PyInstaller, możliwe było użycie narzędzia pyinstxtractor, które pozwala wypakować plik wykonywalny do plików o rozszerzeniu .pyc tworzonych przez interpreter języka Python. Niestety to wciąż trochę za mało, by zobaczyć coś czytelnego, ponieważ plik interpretowalny dalej jest bardziej „zrozumiały” dla komputera niż człowieka – poniżej przedstawiono, jak wygląda wypakowana funkcja startowa main z pliku main.pyc.
Drugim narzędziem potrzebnym do konwersji pliku interpretowalnego na czytelny kod języka Python jest pycdc. Niestety kompilacja narzędzia, jak i wcześniejsze wypakowanie samego kodu, wymaga wielu spełnionych zależności, takich jak odpowiednia wersja języka Python czy poprawnie skonfigurowane środowisko deweloperskie. Jednak finalnie zabawa jest warta świeczki, bo taki kod czyta się już o wiele wygodniej.
Pozostała nam część, która uważana jest często za najnudniejszą. Trzeba bowiem wszystkie pliki .pyc – plik po pliku – przejrzeć, przeanalizować i zrozumieć, co autor oprogramowania miał na myśli. Z doświadczenia jednak wiadomo, że autorzy tego typu aplikacji lubią się pochwalić tym, kto takie zaczarowane pudełeczko napisał. Nie inaczej było i tym razem, gdy po dekompilacji jednego z plików natrafiliśmy na adres repozytorium na GitHubie zawierającego „easy to use and open-source stealer”, czyli oprogramowanie wykradające dane. Teraz już było z górki, ponieważ repozytorium zawierało cały kod źródłowy i wiadomo było, gdzie i czego można się spodziewać.
Co ciekawego można znaleźć w kodzie źródłowym?
Kod źródłowy dla badaczy bezpieczeństwa to istna żyła złota. Jedni używają go do śmieszków, jak w przypadku wycieku z serwisu Albicla, inni do pokonania konkurencji. W naszym przypadku przydatne okazały się dwie rzeczy: przedstawiona w kodzie integracja z Discordem w roli serwera, do którego zgłaszają się zainfekowane hosty oraz lokalizacja pliku konfiguracyjnego, jakim był config.py.
W przykładowym pliku konfiguracyjnym znajduje się klucz „webhook”, a to znaczy, że w kodzie badanego generatora musi znajdować się adres URL. Adres ten jest używany przez rozsyłających złośliwy plik do zbierania danych od poszkodowanych. Wystarczyło więc zajrzeć do odpowiedniego pliku .pyc, aby otrzymać interesujące wartości.
Niestety, jak na złość, atakujący odrobili pracę domową z utrudniania życia badaczom bezpieczeństwa i wszystkie wartości w pliku konfiguracyjnym są zaciemnione. Na szczęście przy odrobinie magii z użyciem języka Python można było odkodować zaciemnione wartości i uzyskać adres.
Adres jest, ale co dalej? Nic wielkiego! Wystarczy zgodnie z publiczną dokumentacją Discorda wysłać zapytanie DELETE pod konkretny adres i dany webhook zostaje usunięty z infrastruktury, co powoduje odcięcie atakujących od ofiar – tak jak pisze Discord – w sposób „permanentny”.
Czy i ja mogę pomóc?
Jasne! Dołącz do naszej społeczności na Discordzie Zaufanej Trzeciej Strony i wymieniaj się wiedzą przy analizie kolejnych tego typu zagadek.
Sam zauważyłeś nieciekawą aktywność? Odwiedź #ataki i podrzuć nam otrzymany złośliwy link. Masz podejrzaną aplikację? Podziel się nią na #malware i zobacz, co ciekawego kryło się w środku. Na kanale #narzędzia dzielimy się oprogramowaniem, które naszym zdaniem jest przydatne przy podobnych akcjach, a na kanale #techniczny można znaleźć ciekawe wskazówki, jak walczyć z malware przy użyciu Pythona czy jak bezpiecznie skonfigurować router.
Dołącz do nas i stań razem z nami przeciwko internetowym złoczyńcom, tak jak Atomówki przeciw Mojo Jojo, Pepe Pan Dziobak przeciw Dundersztycowi czy Smerfy przeciw Gargamelowi.
Może nasza społeczność nie nosi peleryn, ale też nie obiecujemy nieistniejących paysafecardów.
PS. A szkolenie z OSINT-u na Discordzie tylko do środy w niższej cenie.
Komentarze
No cóż, amatorzy. Klient Tor i żądanie leci przez Tora, gdzie jest założony stosowny filtr. Pozdraaawiam.
Wow! istny cud! Szkoda, że cala wasza praca na marne, bo zachód zrobił już to samo miesiące temu XD krok w krok dziwnym trafem w taki sam sposób.
Co Ty ćpiesz typie
Jaki zachód? Miesiące temu, czyli kiedy? Czy to było *to samo*, czy podobne działanie?
Podrzuć linka i skonkretyzuj wypowiedź bo ja, jako czytelnik, nic nie rozumiem z tego, co napisałeś. Może masz rację, a z3s działa pod publiczkę, a może oczerniasz bez żadnego konkretu? Wypadałoby podpierać swoje tezy jakimiś argumentami/dowodami.
Coś kolegom nie wyszło :) Ich discord swoją drogą zmienił link z zaproszeniem xD
Badacze bezpieczeństwa powinni pójść dalej i spróbować zlokalizować nadawcę pliku. Wtedy odpowiednie organy powinny aresztować takiego debila i wsadzić do pierdla na dożywocie bez możliwości wyjścia. Wtedy taki oszust miałby potężną nauczkę. Nagłośnić taką sprawę i może przestaliby próbować iść na łatwiznę.
Chwycisz syfa, któego nie zauważysz.
Ktoś z twojego komputera wyśle „ten twój plik”. Miałbyś potężną nauczkę.
Wielki plus za użycie słowa „zaciemnienie” zamiast „zaobfuskowanie”. Przynajmniej nie czułem się jakbym czytał niebezpiecznika.
Wow. Pliczek wykrywany przez większość wirusów i WD. Normalnie profeska na maxa. Niebezpieczeństwo wysokie. Proszę się odsunąć.
zawsze uważałem, że python jest zły i niebezpieczny dlatego używam ruby
;)