Windows

Przejęcie kontroli przez bibliotekę DLL Podatność na ataki, zapobieganie i wykrywanie

[#116] Szybka analiza malware dla opornych (adminów) - Kamil Frankowicz

[#116] Szybka analiza malware dla opornych (adminów) - Kamil Frankowicz

Spisu treści:

Anonim

DLL oznacza biblioteki dynamiczne i są zewnętrznymi częściami aplikacji działających w systemie Windows lub w dowolnym innym systemie operacyjnym. Większość aplikacji nie jest kompletna sama w sobie i przechowują kod w różnych plikach. Jeśli jest potrzebny kod, powiązany plik jest ładowany do pamięci i używany. Zmniejsza to rozmiar pliku aplikacji przy optymalizacji wykorzystania pamięci RAM. W tym artykule wyjaśniono, co to jest przejęcie pliku DLL i jak go wykryć i zapobiec.

Co to są pliki DLL lub biblioteki bibliotek dynamicznych

Pliki DLL są bibliotekami dołączanymi dynamicznie i jak wynika z nazwy, są rozszerzeniami różnych aplikacji. Każda używana przez nas aplikacja może lub nie może używać określonych kodów. Takie kody są przechowywane w różnych plikach i są wywoływane lub ładowane do pamięci RAM tylko wtedy, gdy wymagany jest odpowiedni kod. Dzięki temu plik aplikacji nie staje się zbyt duży i nie pozwala na przechwytywanie zasobów przez aplikację.

Ścieżka do plików DLL jest ustawiana przez system operacyjny Windows. Ścieżka jest ustawiana przy użyciu Globalnych Zmiennych Środowiskowych. Domyślnie, jeśli aplikacja żąda pliku DLL, system operacyjny szuka tego samego folderu, w którym przechowywana jest aplikacja. Jeśli go tam nie ma, przechodzi do innych folderów ustawionych przez zmienne globalne. Priorytety są przypisane do ścieżek i pomaga systemowi Windows w określeniu, które foldery mają szukać bibliotek DLL. To jest miejsce przechwytywania plików DLL.

Co to jest przejmowanie DLL

Ponieważ biblioteki DLL są rozszerzeniami i są niezbędne do korzystania z prawie wszystkich aplikacji na komputerach, są one obecne na komputerze w różnych folderach zgodnie z wyjaśnieniem. Jeśli oryginalny plik DLL zostanie zastąpiony fałszywym plikiem DLL zawierającym złośliwy kod, jest znany jako Przejęcie DLL.

Jak wspomniano wcześniej, istnieją priorytety dotyczące tego, gdzie system operacyjny szuka plików DLL. Najpierw przegląda ten sam folder, co folder aplikacji, a następnie wyszukuje w oparciu o priorytety ustawione przez zmienne środowiskowe systemu operacyjnego. Zatem jeśli plik good.dll znajduje się w folderze SysWOW64, a ktoś umieszcza plik bad.dll w folderze, który ma wyższy priorytet w porównaniu z folderem SysWOW64, system operacyjny użyje pliku bad.dll, ponieważ ma taką samą nazwę jak biblioteka DLL wymagane przez aplikację. Raz w pamięci RAM może wykonać złośliwy kod zawarty w pliku i może narazić na szwank twój komputer lub sieci.

Jak wykryć przechwytywanie DLL

Najprostszą metodą wykrywania i zapobiegania przechwytywaniu plików DLL jest używanie narzędzi innych firm. Na rynku dostępnych jest kilka dobrych darmowych narzędzi, które pomagają wykryć próbę hackowania DLL i zapobiec temu.

Jednym z takich programów jest DLL Hijack Auditor, ale obsługuje on tylko aplikacje 32-bitowe. Możesz zainstalować go na swoim komputerze i skanować wszystkie aplikacje Windows, aby zobaczyć, jakie są wszystkie aplikacje podatne na przejęcie plików DLL. Interfejs jest prosty i nie wymaga objaśnień. Jedyną wadą tej aplikacji jest to, że nie można skanować aplikacji 64-bitowych.

Inny program do wykrywania przejmowania DLL, DLL_HIJACK_DETECT, jest dostępny przez GitHub. Ten program sprawdza aplikacje, aby sprawdzić, czy któryś z nich jest podatny na przechwytywanie DLL. Jeśli tak, program informuje użytkownika. Aplikacja ma dwie wersje - x86 i x64, dzięki czemu można użyć każdego do skanowania odpowiednio aplikacji 32-bitowych i 64-bitowych.

Należy zauważyć, że powyższe programy po prostu skanują aplikacje na platformie Windows w poszukiwaniu luk i nie Zapobieganie przejmowaniu plików DLL.

Jak powstrzymać przechwytywanie DLL

Problem powinien zostać rozwiązany przez programistów, ponieważ nie ma zbyt wiele możliwości, poza wzmocnieniem systemów bezpieczeństwa. Jeśli zamiast ścieżki względnej programiści zaczną używać ścieżki bezwzględnej, luka zostanie zmniejszona. Odczytywanie bezwzględnej ścieżki, systemu Windows lub dowolnego innego systemu operacyjnego nie będzie zależało od zmiennych systemowych dla ścieżki i będzie przebiegać prosto dla zamierzonej biblioteki DLL, tym samym zmniejszając szanse na załadowanie tej samej nazwy DLL w ścieżce o wyższym priorytecie. Ta metoda również nie jest odporna na awarie, ponieważ jeśli system zostanie naruszony, a cyberprzestępcy będą znać dokładną ścieżkę DLL, zastąpią oryginalną bibliotekę DLL fałszywą biblioteką DLL. Byłoby to nadpisanie pliku, aby oryginalna biblioteka DLL została zamieniona na złośliwy kod. Ale znowu cyberprzestępca będzie musiał znać dokładną ścieżkę bezwzględną wymienioną w aplikacji, która wymaga biblioteki DLL. Proces ten jest trudny dla cyberprzestępców i dlatego można na nie liczyć.

Wracając do tego, co możesz zrobić, po prostu spróbuj rozbudować systemy bezpieczeństwa, aby lepiej zabezpieczyć system Windows. Użyj dobrej zapory ogniowej. Jeśli to możliwe, użyj zapory sprzętowej lub włącz zaporę routera. Korzystaj z dobrych systemów wykrywania włamań, aby wiedzieć, czy ktoś próbuje grać z komputerem.

W przypadku rozwiązywania problemów z komputerami możesz również wykonać następujące czynności w celu zwiększenia bezpieczeństwa:

  1. Wyłącz ładowanie biblioteki DLL ze zdalnych udziałów sieciowych
  2. Wyłącz ładowanie plików DLL z WebDAV
  3. Całkowicie wyłącz usługę WebClient lub ustaw ją na ręczną
  4. Zablokuj porty TCP 445 i 139, ponieważ są one najczęściej używane w przypadku komputerów z lukami
  5. Zainstaluj najnowsze aktualizacje dla działających oprogramowanie systemowe i zabezpieczające.

Microsoft opublikował narzędzie blokujące ataki polegające na przejęciu ładunków DLL. To narzędzie zmniejsza ryzyko ataków polegających na przejmowaniu plików DLL, uniemożliwiając aplikacjom niepoprawne ładowanie kodu z plików DLL.

Jeśli chcesz dodać cokolwiek do tego artykułu, prosimy o komentarz poniżej.