Menu dostępności

BITS – tajny agent pobierania malware w Windows. Jak go monitorować?

Dzisiaj opiszemy kolejną metodę pobierania plików Windows Background Intelligent Transfer (w skrócie BITS). Jej wykorzystanie możemy spotkać w zaawansowanym, złośliwym oprogramowaniu używanym przez atakujących w komunikacji z serwerami C2. Udowodnimy, że jej użycie potrafi ominąć zabezpieczenia wbudowanego w Windows antywirusa- Defendera oraz pokażemy, jak można wykryć podejrzane transfery danych.

Na Kapitanie wielokrotnie pisaliśmy o różnych wbudowanych w system operacyjny Windows programach pozwalających cyberprzestępcom na niezauważalne pobieranie plików z Internetu oraz wysyłanie danych. Przykłady znajdziecie tutaj. (tzw. LOLBIN)


Krótko o BITS i zastosowaniu w serwerach C2

Część teorii i przykłady na temat BITS znajdziesz w naszym poprzednim artykule, w którym opisywaliśmy sposób pobierania malware za pomocą wbudowanego w Windows narzędzia „bitsadmin”.

Z usługi inteligentnego transferu w tle (BITS) korzystają najczęściej programiści i administratorzy systemu Windows, aby przesyłać pliki z serwerów WWW HTTP i udziałów plików SMB. Zaletą w stosowaniu przez nich BITS’a jest optymalizacja transferu, a także wykorzystanie sieci, tak aby miała ona jak najmniejszy wpływ na pracę użytkownika (jak najmniejsze obciążenie łącza). BITS radzi sobie również z przerwami w sieci, wstrzymywaniem i automatycznym wznawianiem transferów, nawet po ponownym uruchomieniu, co czyni go bardzo dobrym kandydatem do standardowych zadań związanych serwerami C2 (Command and Control) takimi jak: pobieranie, przesyłanie i eksfiltracja danych.

Oprócz narzędzia uruchamianego z wiersza linii poleceń – „bitsadmin.exe”, BITS oferuje także polecenie w PowerShell. W systemie Windows możemy także odnaleźć inne programy, które również wykorzystują BITS. Dobrym przykładem jest Desktop Image Downloader (plik DESKTOPIMGDOWNLDR.EXE) – służący do pobierania obrazów okna logowania Windows. Inne programy Windows wykorzystujące BITS znajdujące się w katalogu „c:\Windows\” to:

  • c:\Windows\SysWOW64\bitsadmin.exe
  • c:\Windows\System32\MDMAppInstaller.exe
  • c:\Windows\System32\DeviceEnroller.exe
  • c:\Windows\SysWOW64\OneDriveSetup.exe
  • c:\Windows\System32\ofdeploy.exe
  • c:\Windows\System32\directxdatabaseupdater.exe
  • c:\Windows\System32\MRT.exe
  • c:\Windows\System32\aitstatic.exe
  • c:\Windows\System32\desktopimgdownldr.exe
  • c:\Windows\System32\Speech_OneCore\common\SpeechModelDownload.exe
  • c:\Windows\System32\RecoveryDrive.exe
  • c:\Windows\System32\svchost.exe (BITS service)

Monitorowanie użycia powyższych plików wykonywalnych w systemie również powinno należeć do zadań bezpieczeństwa.

Z technicznego punktu widzenia podczas uruchomienia klienta usługi BITS ładują się w systemie biblioteki Bitsproxy.dll, qmgrprxy.dll lub Microsoft.BackgroundIntelligentTransfer.Management.Interop.dll. Serwer zaś używa procesu „svchost.exe” z wartością wiersza polecenia procesu zawierającą słowo kluczowe „BITS”) i hosting biblioteki DLL usługi qmgr.dll. Komunikacja odbywa się po protokole RPC. Szczegóły techniczne możecie znaleźć tutaj.


Jak użyć BITS w Powershell?

W celu pobrania plików z Internetu przy użyciu BITS i PowerShell możemy wykorzystać metodę Powershell „Start-BitsTransfer”. W parametrach jej wywołania podajemy link skąd mamy pobrać dane i nazwę pliku oraz ścieżkę i nazwę pliku, do której ma być zapisany pobrany plik. Poniżej przykład pobrania i uruchomienia programu 7zip.exe

Ciekawostką jest, że za każdym razem, gdy pobierany jest do docelowej lokalizacji plik (w naszym przypadku „7zip.exe”), usługa BITS tworzy jego tymczasowy odpowiednik o nazwie „BITXXX.tmp”. Dopiero po ukończeniu transferu zmienia jego nazwę na właściwą. Może to być jeden z artefaktów wykorzystania przez system BITS w monitorowaniu (oczywiście trzeba mieć włączony odpowiedni audyt plików)


Audyt aktywności usługi BITS

Dobrą informacją jest, że system Windows domyślnie posiada włączony audyt aktywności usługi BITS. W celu zapoznania się jak on wygląda musimy sięgnąć do logu „Operational” znajdującego się w źródle (Bits-Client) – Microsoft-Windows-Bits-Client:

Najważniejsze zdarzenia to:

  • EventID 3 – usługa BITS utworzyła nowe zadanie
  • EventID 4 – zadanie transferu zostało zakończone
  • EventID 5 – zadanie anulowane
  • EventID 59 – usługa BITS rozpoczęła zadanie transferu , które jest skojarzone z adresem URL http://example.com
  • EventID 60 – usługa BITS przestała przesyłać zadanie transferu , które jest skojarzone z adresem URL http://example.com. Kod stanu to 0xxxx.

Inne zdarzenia związane z wydajnością i błędami przesyłania:

Zdarzenia, takie jak 59, 60 i 61, zawierają adres URL pobierania / wysyłania (bardzo przydatne do analizy śledczej i wykrywania), a zdarzenie 3 zawiera szczegóły ścieżki procesu klienta BITS i nazwę zadania (bardzo przydatne do wykrywania nietypowych klientów BITS).

Poniżej prezentujemy przykłady zdarzeń:


Ominięcie zabezpieczeń Windows Defender

Poniżej zamieszczamy przykład z próbą pobranie przez BITS narzędzia Mimikatz, które domyślnie Windows Defender zblokował podczas pobierania przez przeglądarkę Microsoft Edge, natomiast zezwolił przez BITS z poziomu PowerShell:

Zablokowane pobieranie Mimikatz przez Microsoft Edge
Udane pobranie Mimikatz przez klienta BITS w Powershell

Wynik pobrania Mimikatz w logu BITS:


Podsumowanie

Usługa BITS stwarza ogromne możliwości pracy na transferach plików zarówno dla programistów, administratorów, ale także dla atakujących. Korzystają z niej wbudowane aplikacje Windows oraz usługi (np. Windows Update). Monitorowanie jej powinno należeć do stałych zadań Działów Bezpieczeństwa IT, ponieważ niekontrolowane jej użycie może przyczynić się do pobierania, przesyłania i ex-filtracji danych w firmie. Zalecamy dodać reguły monitorowania BITS do systemów bezpieczeństwa. Od strony sieciowej możemy także monitorować/zaobserwować aktywność BITS objawiającą się w nagłówku żądania HTTP w polu User-Agent w postaci wartości „Microsoft BITS/(numer wersji)”.

Szczegóły znajdziesz w naszym artykule tutaj.

Popularne

Czym są non-human identities (NHI)? Jak możemy je chronić i jakie zagrożenia stwarzają dla organizacji?

Czym są non-human identities (NHI)? Jak możemy je chronić i jakie zagrożenia stwarzają dla organizacji?

W dzisiejszym artykule opisujemy pewien problem istniejący w firmach i organizacjach, związany z tożsamościami nieludzkimi (non-human identities), czyli inaczej – tożsamościami niezwiązanymi z pracow...
Filtrowanie URL i DNS, dlaczego to takie ważne?

Filtrowanie URL i DNS, dlaczego to takie ważne?

Filtrowanie adresów URL ogranicza zawartość stron internetowych, do których użytkownicy mają dostęp. Odbywa się to poprzez blokowanie określonych adresów URL przed załadowaniem. Firmy wdrażają filtrowanie...
Nowe podatności w architekturze sieci 5G

Nowe podatności w architekturze sieci 5G

Nowe badania nad architekturą 5G ujawniły lukę w zabezpieczeniach modelu dzielenia sieci oraz zwirtualizowanych funkcjach sieciowych, które można wykorzystać do nieautoryzowanego dostępu do danych, a tak...
Hakerzy z Dragon Breath z nową techniką ataku

Hakerzy z Dragon Breath z nową techniką ataku

Specjaliści z Sophos wykryli niedawno złośliwą aktywność polegającą na klasycznym DLL side-loadingu, ale ze zwiększoną złożonością i dodatkową warstwą wykonania. Co więcej, dochodzenie wskazuje, że oso...
Polowanie na eskalację uprawnień w Windows: sterowniki jądra i Named Pipe pod lupą

Polowanie na eskalację uprawnień w Windows: sterowniki jądra i Named Pipe pod lupą

Podatności typu Local Privilege Escalation (LPE) pozostają jednym z kluczowych elementów realnych ataków na systemy Windows. Nawet przy poprawnie skonfigurowanym systemie i aktualnym oprogramowaniu bł...