728 x 90

Ransomware od podstaw – część 1, techniki pisania, kompilacji i ukrywania kodu

Ransomware od podstaw – część 1, techniki pisania, kompilacji i ukrywania kodu

W tym cyklu artykułów krok po kroku omówimy różne zagadnienia i ryzyka związane z tworzeniem własnego ransomware. Na początek narzędzia związane z wyborem narzędzi i kompilacją programów.

1. Język programowania i kompilacja

  • Jaki język? Zwykłe C, czy coś wyższego poziomu?
  • Radzisz sobie z obsługą pamięci i stosu w C, czy potrzebujesz do tego celu jakichś bibliotek wspomagających?
  • Jakich modułów CRT chcesz użyć i dlaczego?
  • Co jeśli w docelowym systemie nie ma zainstalowanych odpowiednich bibliotek DLL? Jak zamierzasz sprowokować ich instalację?
  • Jaki kompilator? Czy wiesz, jakie metadane nt. systemu, czy swojej własnej licencji, osadza on w plikach wynikowych?
  • Jakie IDE? Czy sprzęganie w jakikolwiek sposób IDE z „produkcją” jest dobrym pomysłem w przypadku ransomware?

2. Ukrywanie kodu przed antywirusami

  • Co zrobić, aby Twój własny antywirus nie wykrył i nie wysłał Twojego programu do analizy jako potencjalnie niebezpiecznego?
  • Jakie znasz narzędzia do pakowania i szyfrowania programów wykonywalnych? Których z nich chcesz użyć i dlaczego?
  • Jakie znasz narzędzia do zaciemniania kodu? Których z nich chcesz użyć i dlaczego?
  • A może warto zaimplementować własną technikę polimorfizmu, nawet bardzo prymitywną i kodującą tylko niektóre fragmenty kodu?
  • Jak chcesz walczyć z próbami debugowania i rozpracowywania Twojego kodu przez analityków i konkurencję?

3. Zaawansowanie techniki walki z antywirusami

Podstawowe techniki ukrywania, w postaci pakowania i szyfrowania programów, blokowania zrzutów pamięci itp., zapewne wystarczą do stworzenia prostego ransomware, który wykona z sukcesem jedną kampanię, może dwie, szyfrując zaatakowane komputery, ale zostanie dość szybko wykryty i rozpracowany.

Jeśli Twoim celem jest coś bardziej zaawansowanego, np. tworzysz na zlecenie rządu oprogramowanie, które ma skutecznie zaatakować inny kraj w nietrywialny sposób, jak najdłużej pozostając niewykryte w silnie ufortyfikowanych środowiskach, potrzebujesz bardziej zaawansowanych technik ukrywania, m.in. takich jak opisane tutaj.

Zacznij jednak od podstaw:

  • Czy wgłębiałeś się kiedyś, jak właściwie działa heurystyka w programie antywirusowym?
  • Wiesz, jaka jest rola linkera w procesie kompilacji?
  • Wiesz, jak działają makra i kompilacja warunkowa w C/C++?
  • Potrafisz napisać wyrażenie regularne, które wstawi Twój kod w środek obcego modułu z kodem C/C++?
  • Potrafisz za pomocą makr i kompilacji warunkowej zrobić to tak, aby przy każdej kompilacji Twój kod był wstawiany w inne, losowe miejsce?

4. Zaawansowanie techniki walki z mechanizmami SIEM

Zainfekowanie prywatnego komputera, nawet z aktualnym i agresywnie skonfigurowanym programem antywirusowym jest z reguły dość proste. Ale co z tymi w korporacjach, o wiele mocniej zabezpieczonymi, a zarazem zawierającymi te dane, które są Twoim faktycznym celem?

  • Czy pracowałeś kiedykolwiek z mechanizmami klasy SIEM? Widziałeś jak działają w praktyce?
  • Jak wykryć obecność takiego systemu? (podpowiedź: każdy system tej klasy należy „obsłużyć” osobno)
  • Na jakie działania programu lub użytkownika reaguje taki system?
  • Więc jak to się dzieje, że taki system nie „zamula” komputera? Albo inaczej: jakie zdarzenia taki system analizuje dokładniej, a jakie mniej dokładnie (np. tylko zliczając) albo w ogóle?

5. A może po prostu kupić gotowe rozwiązanie?

A co jeśli nie jesteś programistą, ani nie masz budżetu na wynajęcie programisty? Jakie masz wówczas opcje?

  • Może kupić gotowy ransomware as a service, napisany, konfigurowany i obsługiwany przez inną osobę, gdzie Twoja rola sprowadzi się głównie do „lokalizacji”? Gdzie coś takiego kupić? Jakie są wady i zalety istniejących na czarnym rynku rozwiązań?
  • A może jakieś nieco starsze rozwiązanie, ale z kodem źródłowym i pełnym dostępem do wszystkich elementów? Wówczas nadal musisz się zająć konfiguracją i np. szyfrowaniem plików wykonywalnych, ale to przecież zajęcia na poziomie szkoły średniej… Czy pójście w tym kierunku ma sens i kiedy?
  • A nie ma czegoś gotowego za darmo, np. na Githubie? Widziałem jakieś przykłady, ale czy to się nadaje do realnej pracy?

W kolejnej części – algorytmy i klucze szyfrujące.


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.