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?
- Napastnik uruchamia proces lub wykorzystuje istniejący.
- Używa funkcji API Windows, takich jak:
OpenProcess()VirtualAllocEx()WriteProcessMemory()CreateRemoteThread()
- 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.

📦 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?
- Legalna aplikacja nie dołącza jednej lub więcej wymaganych bibliotek DLL.
- Windows przeszukuje katalogi w określonej kolejności (np. folder aplikacji,
System32,PATH). - Jeśli atakujący umieści złośliwy plik
.dllo tej samej nazwie w pierwszym przeszukiwanym folderze – to on zostanie załadowany.
🧪 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 StrikeiMeterpreterkorzystają 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.dlli nie dołącza jej w paczce instalacyjnej. - Atakujący umieszcza własny plik
example.dllw 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 |
🧩 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
LoadLibraryExz 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






