DLL Hijacking – przejmowanie kontroli przez manipulację bibliotekami
Cyberbezpieczeństwo Hacking

💣 DLL Hijacking – przejmowanie kontroli przez manipulację bibliotekami

DLL Hijacking, znany także jako DLL Injection w kontekście przechwytywania ładowania bibliotek, to technika ataku polegająca na zmuszeniu aplikacji systemu Windows do załadowania złośliwej biblioteki DLL zamiast tej oczekiwanej.

To skuteczny sposób na osiągnięcie uruchomienia kodu z uprawnieniami aplikacji – często z wysokim poziomem dostępu, jeśli proces ma uprawnienia administratora.


🧠 Jak działa DLL Hijacking?

Windows, podczas uruchamiania aplikacji, dynamicznie ładuje potrzebne biblioteki DLL w określonej kolejności wyszukiwania.

Jeśli aplikacja odwołuje się do pliku DLL bez podania pełnej ścieżki, Windows:

  1. Szuka pliku w folderze aplikacji.
  2. Potem w katalogach systemowych (System32, Windows).
  3. Następnie w katalogach zdefiniowanych przez PATH.

👉 Jeśli napastnik umieści złośliwą bibliotekę DLL w jednym z katalogów przeszukiwanych jako pierwsze, aplikacja może nieświadomie ją załadować.

DLL Hijacking – przejmowanie kontroli przez manipulację bibliotekami
DLL Hijacking – przejmowanie kontroli przez manipulację bibliotekami

🔥 Praktyczny scenariusz ataku

  1. Ofiara pobiera aplikację z niezweryfikowanego źródła.
  2. Aplikacja wymaga DLL, np. example.dll, ale nie dostarcza jej w folderze.
  3. Napastnik tworzy własny plik example.dll, który wykonuje złośliwy kod.
  4. Umieszcza go w tym samym folderze co EXE.
  5. Podczas uruchamiania aplikacji, system ładuje złośliwą bibliotekę → wykonuje się kod atakującego.

🧪 Czym różni się DLL Hijacking od innych technik?

Technika Charakterystyka
DLL Hijacking Wymuszenie załadowania złośliwej biblioteki
DLL Injection Wstrzyknięcie DLL do działającego procesu
Side-Loading Legalna aplikacja ładuje DLL z tej samej ścieżki
Binary Planting Tworzenie fałszywych plików wykonywalnych lub DLL w dostępnych lokalizacjach
Czytaj  Sztuczna inteligencja w programowaniu: rewolucja, która zmienia zasady gry

🧬 Przykład ataku DLL Hijacking

Złośliwy kod w DLL:

#include <windows.h>

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
    if(fdwReason == DLL_PROCESS_ATTACH) {
        MessageBoxA(NULL, "Kod atakującego uruchomiony!", "Hijack", MB_OK);
    }
    return TRUE;
}

Po skompilowaniu i nazwaniu jako missing.dll, wystarczy umieścić plik w tym samym folderze co aplikacja, która tego pliku poszukuje.


🧰 Narzędzia do wykrywania i testów

  • ProcMon (Sysinternals) – monitorowanie ładowanych bibliotek DLL
  • Process Explorer – analiza aktywnych procesów i zależności DLL
  • DLLSpy / DllHijackScanner – narzędzia do skanowania aplikacji pod kątem luk hijackingu
  • CFF Explorer / PE Studio – do analizy binarek i zależności

🛡️ Jak się chronić przed DLL Hijacking?

Dla programistów:

  • 🔒 Używaj pełnych ścieżek do DLL w kodzie (LoadLibraryEx z flagą LOAD_LIBRARY_SEARCH_SYSTEM32)
  • 📦 Umieszczaj potrzebne DLL w tym samym folderze co EXE
  • 🚫 Zablokuj ładowanie DLL z niezaufanych ścieżek (SetDllDirectory(NULL))
  • 🧪 Testuj aplikacje pod kątem brakujących DLL i kolejności ładowania

Dla administratorów i użytkowników:

  • ✅ Instaluj aplikacje tylko z zaufanych źródeł
  • 🧼 Ogranicz prawa zapisu do katalogów aplikacji (brak możliwości podmiany plików)
  • 🔍 Monitoruj podejrzane biblioteki w katalogach użytkownika
  • 👮 Używaj narzędzi typu EDR / HIPS do kontroli integralności plików

🧠 Znane przypadki ataków

  • 🔐 CVE-2010-3130 – Microsoft Windows Search Path Vulnerability
  • 💼 Aplikacje Microsoft Office były narażone na DLL Hijacking przez pliki osadzone w dokumentach
  • 🧳 Wiele aplikacji turystycznych i biznesowych (np. VPN) było podatnych na hijacking przez DLL side-loading

⚠️ DLL Hijacking i złośliwe instalatory

Złośliwi aktorzy często podszywają się pod legalne aplikacje (np. Adobe, Notepad++, Chrome), tworząc fałszywe instalatory z dołączoną DLL zawierającą trojana lub backdoora. Użytkownik nieświadomie uruchamia aplikację → złośliwa DLL aktywuje się natychmiast.


💡 DLL Hijacking a oprogramowanie typu LOLBins

Techniki hijackingu bywają używane w Living off the Land Binaries (LOLBins), np.:

  • schtasks.exe, msiexec.exe, rundll32.exe – uruchamiane z nieautoryzowanymi DLL
  • Złośliwe skrypty PowerShell ładowane dynamicznie przez Add-Type lub COM
Czytaj  Rozwój i Ewolucja Technik Cryptojackingu

🔍 Jak wykrywać incydenty hijackingu?

  • 🚩 Podejrzane komunikaty w logach (np. „could not find DLL”)
  • 📊 Anomalie w logach EDR (uruchomienie DLL spoza folderów systemowych)
  • 🔗 Nieznane DLL w katalogach aplikacji (szczególnie %AppData%, %Temp%)
  • 🧠 Analiza rejestru (np. wpisy w AppInit_DLLs)

🧩 Podsumowanie

DLL Hijacking to bardzo skuteczna, a jednocześnie często niezauważana technika ataku, umożliwiająca wykonanie kodu bez potrzeby exploitowania samego binarnego pliku aplikacji. Wymaga jedynie manipulacji kolejnością ładowania DLL i uprawnień do zapisu w odpowiednim katalogu.

 

Polecane wpisy
Ewolucja technik spamowych i walka z nimi: Jak cyberprzestępcy udoskonalają swoje metody i jak się przed nimi bronić
Ewolucja technik spamowych i walka z nimi: Jak cyberprzestępcy udoskonalają swoje metody i jak się przed nimi bronić

Ewolucja technik spamowych i walka z nimi: Jak cyberprzestępcy udoskonalają swoje metody i jak się przed nimi bronić Wstęp Hacking Czytaj dalej

Weryfikacja integralności systemu Linux: Jak sprawdzić, czy Twój serwer nie został zhakowany?
Weryfikacja integralności systemu Linux: Jak sprawdzić, czy Twój serwer nie został zhakowany?

🛡️ Weryfikacja integralności systemu Linux: Jak sprawdzić, czy Twój serwer nie został zhakowany? 🧭 Wprowadzenie W dobie narastających zagrożeń w 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.