Microsoft wprowadził Background Intelligent Transfer Service (BITS) w systemie Windows XP, aby uprościć i skoordynować pobieranie i przesyłanie dużych plików. Aplikacje i składniki systemu, w szczególności Windows Update, używają usługi BITS do dostarczania aktualizacji systemu operacyjnego i aplikacji, dzięki czemu można je pobierać w tle przy minimalnych zakłóceniach dla użytkownika.

Inne aplikacje współdziałają z usługą BITS w tle, tworząc zadania z jednym lub większą liczbą plików do pobrania lub przesłania. BITS działa w kontekście usługi hosta jako proces i może zaplanować transfery w dowolnym momencie. Informacje o zadaniach, plikach i stanach są przechowywane w lokalnej bazie danych.


Jak atakujący wykorzystują BITS?


Już po krótkim opisie tej usługi można sobie wyobrazić użycie jej w niepowołany sposób. Podobnie jak w przypadku wielu innych przestarzałych technologii, BITS może być używana zarówno przez legalne aplikacje, jak i przez osoby atakujące. Pisaliśmy już o jednym z przypadków jej użycia wcześniej. Gdy złośliwe aplikacje tworzą zadania BITS, pliki są pobierane lub przesyłane w kontekście procesu usługi hosta (svchost). Jest to niezwykle przydatne do omijania firewall czy AV, które mogą blokować złośliwe lub nieznane procesy, a także pomaga ukryć, która aplikacja zażądała transferu danych. Przesyłanie przez BITS można również zaplanować, co pozwala na ich realizację w określonych godzinach bez polegania na innych procesach lub harmonogramie zadań.

Transfery BITS są asynchroniczne, co może powodować sytuacje, w których aplikacja, tworząca zadanie, może nie działać po zakończeniu żądanych transferów. Aby rozwiązać ten scenariusz, można tworzyć zadania BITS za pomocą polecenia powiadamiającego, które zostanie wykonane po zakończeniu zadania lub w przypadku wystąpienia błędów. Co ciekawe, komendy powiadamiające powiązane z zadaniami BITS mogą np. uruchamiać dowolny plik wykonywalny. Atakujący wykorzystali właśnie tę funkcję jako metodę utrzymywania trwałości w systemie.

Ponieważ zawartość poleceń dla zadań BITS jest przechowywana w bazie danych, a nie w tradycyjnych lokalizacjach rejestrów, mogą zostać przeoczone przez narzędzia, które próbują zidentyfikować pliki wykonywalne i ich wywołania.
Zadania BITS można tworzyć za pomocą wywołań funkcji API lub za pomocą wiersza poleceń bitsadmin.

Na przykładach poniżej pokazano, w jaki sposób można użyć zadania BITS do pobrania pliku oraz wyzwolenia jego wykonania.

Użycie „bitsadmin” do stworzenia zadania, które pobiera i zapisuje złośliwy ładunek
źródło: fireeye.com/blog

Użycie „bitsadmin” do stworzenia zadania, które uruchamia złośliwy plik po próbie pobrania z nieistniejącego URL; źródło: fireeye.com/blog

Podgląd na drzewo procesów podczas wywołania drugiej komendy


Usługa BITS a Windows 10


Usługa Background Intelligent Transfer Service pozostała w dużej mierze niezmieniona od czasu jej wprowadzenia. System Windows 10 wprowadził jednak zmiany w architekturze usługi, w tym zupełnie nowy format bazy danych. W systemie Windows 10 baza danych QMGR jest przechowywana w formacie Extensible Storage Engine (ESE). Bazy danych ESE były używane w wielu innych produktach firmy Microsoft, w tym w Exchange, Active Directory i Internet Explorerze.

System Windows 10 przechowuje bazę danych QMGR w jednym pliku o nazwie qmgr.db. Oddzielne pliki dziennika transakcji są przechowywane w tym samym katalogu. Najnowszy dziennik transakcji jest przechowywany w pliku o nazwie edb.log i zazwyczaj występują trzy starsze dzienniki transakcji z numerycznymi przyrostkami.

Oczywiście złośliwy „feature” jest tak samo możliwy do wykonania na Windows 10, jak i na innych Windowsach.
Różnica jest taka, że w najnowszym systemie od Microsoft zapobieganie oraz ewentualna analiza incydentu związanego z BITS jest dużo trudniejsza. Wszystko dlatego, że nowy format bazy danych z zadaniami nie jest prosty do odczytania, a już na pewno nie jest możliwe monitorowanie jej zawartości przez programy AV.

Dlatego firma FireEye stworzyła specjalny parser, który umożliwia analizowanie baz danych usługi BITS. Jest on napisany w Pythonie i dostępny w repozytorium – link.


Podsumowanie


Usługa inteligentnego transferu w tle nadal zapewnia zarówno niezbędny dostęp aplikacjom Microsoft, jak i złośliwym aktywnościom wykorzystującym mechanizm powiadomień po nieudanym pobraniu. Co więcej, FireEye mówi, że kilka analiz ataków znanych ransomware wykazało, że korzystają z usługi BITS do rozprzestrzeniania się w sieci lokalnej oraz do utrzymania trwałości w środowisku.
To co możemy teraz zrobić, to czekać na odpowiedź Microsoft w tej sprawie. Jeśli usługa BITS wykorzystywana jest między innymi przez Windows Update, nie będzie to pewnie prosta do naprawy podatność.

Podziel się z innymi tym artykułem!