A więc prototyp Twojego ransomware jest gotowy. Czas więc zająć się kampanią. Ten odcinek skupia się na tym, jak efektywnie ogarnąć dziesiątki lub setki tysięcy infekcji i tysiące wpłat od „klientów”, nie gubiąc się po drodze w wycenach okupów i poprawnie oceniając rodzaj każdego „klienta” na podstawie kluczowych danych zebranych przez Twój program.
Zacznijmy od oczywistego faktu: aby skutecznie prowadzić kampanie ransomware, potrzebujesz panelu webowego. Nie musi to być nic skomplikowanego:
- nie potrzebujesz obsługi wielu użytkowników, mechanizmu logowania itp. – w zupełności wystarczą regułki w pliku .htaccess
- nie potrzebujesz baz danych – wszystkie nowe dane powinny spływać do plików CSV (tekstowych, jedna linia na zdarzenie) działających w trybie append-only
- dziel te pliki na kawałki – najlepiej aby miały datę w nazwie, wówczas przejście do następnej doby automatycznie poskutkuje utworzeniem nowego pliku – a jeśli nie możesz, to je rotuj jakimś programem typu logrotate
- nie potrzebujesz funkcjonalności edycji – wystarczy samo wyliczanie różnych rzeczy i podgląd, ewentualną edycję zrobisz ręcznie
- nie potrzebujesz żadnego frameworka webowego – im prostsze skrypty, tym lepsze
Unikaj wzorców
Najważniejsza rzecz do zapamiętania w tym odcinku: będziesz zostawiać ślady, niezależnie od tego, jak bardzo będziesz się starać tego unikać.
Unikanie jest ważne, ale dużo ważniejsze jest, aby tych śladów nie dało się ułożyć we wzorzec działań, pokazujący Twoje prawdopodobne kolejne ruchy. Dlatego jedną z Twoich głównych zasad powinno być regularne zadawanie sobie pytania: „jak to najlepiej zrobić?” – a następnie postąpienie w inny, pozornie mniej racjonalny sposób. Właśnie po to, aby wprowadzać losowość do zostawianych śladów.
Dlatego właśnie powinieneś unikać relacyjnych baz danych czy frameworków – aby mimowolnie nie powielać rozwiązań z oficjalnej pracy, jak np. konwencje nazewnictwa tabel i pól, praca z konkretnym frameworkiem i sposób korzystania z jego możliwości, użycie rozwiązań typu ORM lub innych mapperów bazodanowych, czy sposób formatowania kodu.
Komunikacja zainfekowanych komputerów z C&C
Skoro już wiemy, że będziesz potrzebować panelu webowego, spróbujmy podzielić konkretne potrzeby, działania, zostawiane ślady i ryzyka na 4 warstwy: danych, interfejsów, algorytmów i usług.
Dane
Pamiętasz drugi odcinek tego cyklu? W punkcie 4 wymienionych było kilka przykładów danych, które możesz chcieć zbierać.
Przemyśl bardzo dokładnie, których dokładnie danych potrzebujesz (będą niezbędne, albo przynajmniej będą drastycznie przyspieszały Twoją pracę), a które będą tylko niepotrzebną ciekawostką, rozpraszającą Twoją uwagę.
Pamiętaj przy tym o pytaniu z odcinka trzeciego: atakujesz pojedyncze, losowe komputery, czy przygotowujesz większą operację: infiltrację czyjejś infrastruktury, może nawet paraliż czegoś w obcym kraju – lista potrzebnych informacji może się bardzo różnić w zależności od tego, co konkretnie chcesz zrobić.
Interfejsy
Przyjmuj dane w najprostszy możliwy sposób: zapytaniami http GET – unikaj schematów API typu REST czy SOAP, sformatowanych plików JSON czy XML, oraz zapytań POST, PUT, DELETE i innych. Wszystko to może być potraktowane jako wzorzec, dzięki któremu systemy klasy SIEM zdołają łatwo wykrywać i blokować taką komunikację.
Zapytania GET łatwiej wtapiają się w większy ruch, zwłaszcza że większość systemów automatycznie zakłada, że GET oznacza zgodnie ze sztuką pobranie danych z serwera, a nie wysłanie ich na serwer.
Staraj się też unikać SSL, albo używać połączeń SSL w trybie bez weryfikacji prawidłowości certyfikatu – który powinien być zawsze self-signed. Inaczej narażasz się na kilka niepotrzebnych ryzyk związanych z:
- datami ważności certyfikatów (Twoich i nadrzędnych) – na tym tle popełnianych jest mnóstwo błędów w oprogramowaniu biznesowym
- procesem weryfikacji posiadania domeny (rekordem DNS lub wystawieniem pliku na serwerze), który jest absolutnym minimum do wystawienia certyfikatu przez jakiegokolwiek dostawcę
- koniecznością zapłaty (nie dotyczy Let’s Encrypt)
- albo koniecznością udostępnienia przez Certbota Twoich danych (adresu mailowego, IP i innych)
Wyjątkiem jest komunikacja z usługami publicznymi typu Instagram (patrz niżej).
Powinieneś oczywiście szyfrować komunikację, ale sensowniejsze będzie zaszyfrowanie samych danych i przesłanie ich w jednym parametrze GET, jako ciąg danych zakodowanych w Base64 albo podobnym schemacie.
Sam schemat i nazwę parametru GET też warto wybierać losowo z kilku możliwości – jak również warto poza wspomnianym parametrem głównym dodać też do requesta kilka innych parametrów o losowych nazwach wartościach, które będą stanowić szum (np. p=1, ar=3 itd.).
Algorytmy – rozróżnianie „klientów”
Najważniejszą umiejętnością, jakiej będziesz potrzebować do trafnego wyceniania okupów, jest umiejętność szybkiego i względnie trafnego dzielenia klientów na użytkowników indywidualnych oraz elementy większej całości, bez konieczności manualnej analizy danych z tych komputerów.
Powinieneś być w stanie polegać na danych sieciowych zebranych i dostarczonych przez Twój program – przykłady:
- wychodzący adres IP komputera, kraj (czasem również miasto), alokacja i nazwa ISP – jeśli nie rozumiesz, o co chodzi, zobacz tą stronę
- ustawiona nazwa komputera i hostname na poziomie sieci lokalnej
- sufiks domeny w sieci lokalnej otrzymany z DHCP
- serwer(y) DNS otrzymane z DHCP – podział na publiczne, pojedynczy prywatny lub wiele prywatnych
- nazwa zalogowanego użytkownika
- wersja Windows
- informacja o ustawionych programach domyślnych, np. do obsługi poczty
Dane tego typu są niezbędne, ponieważ w dobie mechanizmów NAT z adresacją globalną dla całego kraju, stosowaną np. przez dostawców telefonii komórkowej, ciężko jest rozróżniać klientów po samym adresie IP.
Twoim celem jest natomiast odróżnienie:
- pojedynczych komputerów domowych
- niewielkich skupisk komputerów w małych-średnich firmach, z routerem klasy SOHO i najprawdopodobniej słabymi zabezpieczeniami (w większości przypadków to jest właśnie Twój target)
- dużych firm (gdzie nadal może być opłacalne atakowanie pojedynczych komputerów)
- korporacji (gdzie poza samym zaszyfrowaniem danych i „obsługą klienta” możesz być także zainteresowany infiltracją infrastruktury)
I na tym na razie poprzestańmy – w dziesiątej części dowiesz się więcej nt. tego, jak wyróżniać firmy z poszczególnych branż, chcące i mogące zapłacić więcej. Na tym etapie jednak najważniejsze jest opanowanie powyższych podstaw, aby nie zaczynać manualnego researchu tam, gdzie nie będzie to uzasadnione ekonomicznie.
Algorytmy – skalowanie
Od strony samego programu ransomware, niezwykle przydatną funkcjonalnością jest możliwość rozpraszania komunikacji – tak aby nie kontaktować się zawsze z pojedynczym adresem IP albo domeną, te bowiem mogą zostać bardzo szybko zablokowane.
Zamiast tego, rozważ kilka alternatywnych technik:
- konstruowanie nazw domen za pomocą algorytmu biorącego pod uwagę zmienne dane, np. czas – np. nazwa domeny zmienia się co tydzień
- wykorzystanie publicznych źródeł danych do komunikacji jednokierunkowej (komunikacja w drugim kierunku może odbywać się inną drogą) – np. poprzez Instagram tak, jak to opisano w czwartym odcinku
- upodobnienie używanych protokołów i schematów komunikacji do sposobu, w jaki programy antywirusowe pobierają nowe bazy wirusów (mechanizmy samodzielnie uczące się i klasyfikujące zagrożenia, nie są póki co na tyle inteligentne, aby rozpoznać, że to fake)
Oczywiście poza różnymi nazwami domen, powinny być także różne adresy IP na różnych serwerach.
Algorytmy – koordynacja działań
Trzecią rzeczą, jaką powinieneś ogarnąć w warstwie algorytmów, jest takie przemyślenie schematu komunikacji, aby móc w razie potrzeby koordynować działania – a więc np. ujawnić się na wszystkich komputerach w firmie o mniej więcej tej samej godzinie.
Usługi zewnętrzne
Nieco wyżej była mowa o wykorzystaniu wielu domen i adresów IP – oczywiście konkretne domeny możesz kupować i konfigurować dopiero wtedy, gdy będą miały być potrzebne, ale już na samym początku działalności potrzebujesz:
- znaleźć zaufanych dostawców tego typu usług (głównie „kuloodpornych” usług hostingowych)
- ogarnąć bezpieczną metodę płacenia za te usługi: z czego płacić na początku? a z czego, gdy już zaczniesz mieć przychody z kampanii?
- przećwiczyć stawianie całej maszyny z własnego obrazu z Full Disk Encryption w taki sposób, aby można było ją zdalnie odblokowywać w bezpieczny sposób
- ogarnąć efektywny (i bezpieczny!) sposób migrowania danych pomiędzy poszczególnymi serwerami, oraz Twoim prywatnym storagem (który nie powinien być dostępny dla nikogo poza Tobą)
W kolejnej części – dystrybucja manualna.
Intencją autorów ani wydawcy treści prezentowanych w magazynie PAYLOAD nie jest namawianie bądź zachęcanie do łamania prawa. Jeśli popełniłeś lub masz zamiar popełnić przestępstwo, bądź masz wątpliwości, czy Twoje działania nie będą łamać prawa, powinieneś skonsultować się z najbliższą jednostką Policji lub Prokuratury, a jeśli są one związane z pieniędzmi, dla pewności również z Urzędem Skarbowym.
Nie zezwala się na użycie treści prezentowanych w magazynie PAYLOAD, ani produktów dostępnych w sklepie PAYLOAD, do celów popełniania przestępstw lub przestępstw skarbowych.