DLL Injection vs DLL Hijacking – różnice, podobieństwa i przykłady ataków
Cyberbezpieczeństwo Hacking

DLL Injection vs DLL Hijacking – różnice, podobieństwa i przykłady ataków

🧠 DLL Injection vs DLL Hijacking – różnice, podobieństwa i przykłady ataków

DLL Injection i DLL Hijacking to dwie popularne techniki używane przez atakujących (i niekiedy przez zaawansowanych administratorów lub twórców narzędzi) do wstrzykiwania złośliwego kodu do legalnych procesów systemowych lub aplikacyjnych. Pomimo podobieństw w nazwie, różnią się mechanizmem działania, momentem uruchomienia, jak i celami atakującego.


🔍 Co to jest DLL Injection?

DLL Injection to technika polegająca na dynamicznym wstrzyknięciu biblioteki DLL do działającego procesu w celu wykonania dodatkowego (zazwyczaj złośliwego) kodu w jego kontekście.

🔧 Jak działa?

  1. Napastnik uruchamia proces lub wykorzystuje istniejący.
  2. Używa funkcji API Windows, takich jak:
    • OpenProcess()
    • VirtualAllocEx()
    • WriteProcessMemory()
    • CreateRemoteThread()
  3. Te funkcje umożliwiają wstrzyknięcie i uruchomienie kodu DLL w kontekście obcego procesu.

🧪 Efekt: kod wstrzyknięty działa z tymi samymi uprawnieniami co oryginalny proces, często z wysokimi uprawnieniami.

DLL Injection vs DLL Hijacking – różnice, podobieństwa i przykłady ataków
DLL Injection vs DLL Hijacking – różnice, podobieństwa i przykłady ataków

📦 Co to jest DLL Hijacking?

DLL Hijacking polega na tym, że aplikacja podczas uruchamiania ładuje złośliwą bibliotekę DLL zamiast właściwej, ponieważ ta została wcześniej umieszczona w jednym z katalogów przeszukiwanych przez system.

🔧 Jak działa?

  1. Legalna aplikacja nie dołącza jednej lub więcej wymaganych bibliotek DLL.
  2. Windows przeszukuje katalogi w określonej kolejności (np. folder aplikacji, System32, PATH).
  3. Jeśli atakujący umieści złośliwy plik .dll o tej samej nazwie w pierwszym przeszukiwanym folderze – to on zostanie załadowany.
Czytaj  Jak działa izolacja aplikacji (sandboxing) w Windows, Linux i przeglądarkach

🧪 Efekt: kod złośliwej biblioteki jest wykonywany podczas startu aplikacji, bez potrzeby jej modyfikacji.


🆚 Główne różnice: DLL Injection vs DLL Hijacking

Cecha DLL Injection DLL Hijacking
Etap ataku Po uruchomieniu procesu Przed lub w trakcie startu aplikacji
Wymaga działania procesu ✅ Tak ❌ Nie
Modyfikacja pamięci procesu ✅ Tak ❌ Nie
Użycie API systemowych ✅ (np. WriteProcessMemory, CreateRemoteThread) ❌ (atak pasywny – wykorzystuje systemową kolejność ładowania DLL)
Złożoność Wysoka (wymaga kodu i narzędzi) Średnia (potrzebna znajomość struktury DLL i aplikacji)
Detekcja przez EDR/AV Trudniejsza do ukrycia Może być łatwiejsza do ukrycia
Wektor ataku Proces już działający System ładowania bibliotek DLL

🎯 Przykłady DLL Injection

  • Cheaty w grach – wstrzyknięcie DLL do procesu gry (np. csgo.exe) w celu modyfikacji pamięci (aimbot, wallhack).
  • Złośliwe oprogramowanie typu RAT – używa DLL Injection, aby ukryć działanie złośliwego kodu wewnątrz np. explorer.exe.
  • Testy penetracyjne – narzędzia takie jak Metasploit, Cobalt Strike i Meterpreter korzystają z DLL Injection do wstrzykiwania payloadów.

🔧 Przykład (skrótowy kod PowerShell):

Add-Type -TypeDefinition @"
using System;
using System.Runtime.InteropServices;
public class Win32 {
    [DllImport("kernel32.dll")]
    public static extern IntPtr LoadLibrary(string dllName);
}
"@
[Win32]::LoadLibrary("C:\\zlosliwa.dll")

🎯 Przykłady DLL Hijacking

  • Aplikacja korzysta z example.dll i nie dołącza jej w paczce instalacyjnej.
  • Atakujący umieszcza własny plik example.dll w tym samym folderze, co aplikacja (np. %TEMP%, %USERPROFILE%).
  • Po uruchomieniu – aplikacja ładuje złośliwą bibliotekę i wykonuje jej kod.

📌 Znane przypadki:

  • CVE-2010-2568 – słynny przypadek hijackingu w ataku Stuxnet.
  • Adobe Reader, VLC, Cisco VPN, Skype – były w przeszłości podatne na DLL Hijacking.
  • Złośliwe pakiety MSI z dołączonymi DLL używanymi w atakach APT.

🛠 Narzędzia do wykrywania

DLL Injection DLL Hijacking
Process Hacker, ProcMon, x64dbg ProcMon, Dependency Walker, CFF Explorer
PE-sieve, HollowsHunter DLLHijackScanner, Autoruns
EDR (np. CrowdStrike, SentinelOne) Sandboxing, analiza struktury aplikacji
Czytaj  Ataki na Active Directory: Powielanie bazy ntds.dit i kradzież tożsamości domeny

🧩 Wnioski

Podsumowanie
🔹 DLL Injection – aktywna technika wymagająca dostępu do procesu
🔹 DLL Hijacking – pasywna technika wykorzystująca błędy w strukturze aplikacji
🔹 Obie techniki mogą prowadzić do eskalacji uprawnień, kradzieży danych i zdalnego wykonania kodu
🔹 Deweloperzy powinni zabezpieczać aplikacje przed niekontrolowanym ładowaniem bibliotek
🔹 Red Team i Blue Team powinni znać różnice i scenariusze zastosowania obu metod

🛡️ Jak się chronić?

Deweloperzy:

  • ✅ Używaj LoadLibraryEx z odpowiednimi flagami
  • ✅ Dołącz wszystkie DLL w pakiecie instalacyjnym
  • ✅ Waliduj lokalizację i podpis DLL

Użytkownicy / Admini:

  • 🔒 Ogranicz prawa zapisu w katalogach aplikacji
  • 🔎 Monitoruj podejrzane biblioteki w folderach użytkownika
  • 🛡️ Używaj EDR i systemów HIPS

 

Polecane wpisy
Jakie ataki szyfrowane będą popularne w 2025 roku?
Jakie ataki szyfrowane będą popularne w 2025 roku?

Jakie ataki szyfrowane będą popularne w 2025 roku? Szyfrowanie stało się jednym z podstawowych narzędzi w zabezpieczaniu danych zarówno w Czytaj dalej

Jak działa darknet?
Jak działa darknet?

🕸️ Jak działa darknet? 🔍 Wyjaśnienie technicznych aspektów sieci Tor i innych technologii ukrywających tożsamość Darknet – przez jednych demonizowany, Czytaj dalej

Marek "Netbe" Lampart Inżynier informatyki Marek Lampart to doświadczony inżynier informatyki z ponad 25-letnim stażem w zawodzie. Specjalizuje się w systemach Windows i Linux, bezpieczeństwie IT, cyberbezpieczeństwie, administracji serwerami oraz diagnostyce i optymalizacji systemów. Na netbe.pl publikuje praktyczne poradniki, analizy i instrukcje krok po kroku, pomagając administratorom, specjalistom IT oraz zaawansowanym użytkownikom rozwiązywać realne problemy techniczne.