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.