B
adacze bezpieczeństwa odkryli wysoce inwazyjne, chińskie narzędzie inwigilacyjne wykorzystujące Berkeley Packet Filter (BPF). Złośliwe oprogramowanie, nazwane BPFDoor, może być obecne na „tysiącach” systemów Linux, a jego kontroler pozostał prawie całkowicie niezauważony przez producentów zabezpieczeń punktów końcowych, mimo iż jest używany od co najmniej pięciu lat. Jest to już drugi rodzaj złośliwego systemu wykorzystującego BPF w Linuksie do ukrytej inwigilacji, który został ujawniony w tym roku, po odkryciu przez Pangu Lab w lutym 2022 r. backdoora NSA o nazwie Bvp47. Wówczas badacz bezpieczeństwa Kevin Beaumont zasugerował, iż BPF (lub rozszerzony BPF – eBPF) jest wykorzystywany przez innych aktorów stanowiących zagrożenie. Beaumont, który wcześniej pracował w firmie Microsoft, ostrzegał wtedy przed konsekwencjami niebezpieczeństwa związanym z wprowadzeniem eBPF na inne platformy poza Linuksem: „Naprawdę, naprawdę mam nadzieję, iż Microsoft opracował model zagrożenia, co się stanie z bezpieczeństwem, gdy wprowadzi eBPF do podstawowego systemu operacyjnego” (firma Microsoft w marcu 2021 roku zapowiedziała projekt open source, aby umożliwić działanie eBPF w systemie Windows 10 / Server 2016 i nowszych).
Pierwotnie BPF był używany do wysokowydajnego śledzenia pakietów i analizy sieci. w tej chwili jednak eBPF umożliwia sandboksowe wykonywanie kodu wewnątrz jądra systemu operacyjnego, co czyni go znacznie potężniejszym – a także znacznie bardziej użytecznym narzędziem dla atakującego. Programy eBPF mogą być wykorzystywane do śledzenia, instrumentacji, podpinania wywołań systemowych, debugowania oraz przechwytywania i filtrowania pakietów. Mechanizm ten przyciąga coraz większą uwagę specjalistów od bezpieczeństwa ofensywnego.
W zeszłym tygodniu Kevin umieścił w serwisie VirusTotal próbkę, która gwałtownie została potwierdzona, jako kontroler BPFDoor. Badacze bezpieczeństwa: Ben Jackson i Will Bonner z PwC śledzą go od 2021 roku. Według raportu PwC Threat Intelligence, implant ten był aktywnie wykorzystywany przez powiązaną z Chinami grupę APT znaną jako Red Menshen:
Zaobserwowano, iż aktor stanowiący zagrożenie atakuje dostawców usług telekomunikacyjnych na Bliskim Wschodzie i w Azji, a także podmioty z sektora rządowego, edukacyjnego i logistycznego, wykorzystując niestandardowego backdoora, którego określamy jako BPFDoor. To tylne wejście obsługuje wiele protokołów do komunikacji z serwerem C2, w tym TCP, UDP i ICMP, dzięki czemu aktor może korzystać z różnych mechanizmów interakcji z implantem.
Implant ten jest na tyle interesujący, iż pozwala on na wprowadzeniu tylnej furtki do systemu w celu zdalnego wykonania kodu, bez otwierania żadnych nowych portów sieciowych czy reguł zapory ogniowej. Na przykład, o ile webaplikacja nasłuchuje już na porcie 443 (https), to on również może nasłuchiwać i reagować na tym samym porcie. Dzieje się tak, ponieważ wykorzystuje on filtr pakietów BPF. Operatorzy mają dostęp do klienta, który umożliwia im komunikację z implantem dzięki hasła, co pozwala na korzystanie z funkcji zdalnego przesyłania poleceń. Działa to za pośrednictwem sieci prywatnych i publicznych. Ponieważ PDFDoor nie otwiera żadnych przychodzących portów sieciowych, nie używa wychodzącego C2 i zmienia nazwy własnych procesów w Linuksie (więc na przykład polecenie: ps aux pokaże przyjazną nazwę) jest wysoce nieuchwytny i dobrze spisuje się w inwigilacji.
Zidentyfikowaliśmy również, iż aktor wysyła polecenia do ofiar BPFDoor za pośrednictwem wirtualnych serwerów prywatnych (VPS) hostowanych u znanego dostawcy oraz iż te VPS-y są z kolei administrowane przez skompromitowane routery znajdujące się na Tajwanie, które aktor wykorzystuje jako tunele VPN. Większość zaobserwowanych przez nas aktywności Red Menshen miała miejsce od poniedziałku do piątku (nie zaobserwowaliśmy żadnej w weekendy), a większość komunikacji odbywała się między godziną 01:00, a 10:00 UTC. Schemat ten sugeruje, iż aktor działa konsekwentnie od 8’miu do 9’ciu godzin, z realistycznym prawdopodobieństwem, iż pokrywa się to z lokalnymi godzinami pracy.
Implant jest stosowany od wielu lat i do tej pory pozostawał niezauważony. Istnieją wersje dla systemów Linux, pudełek Solaris SPARC i innych. Na przykład wersja dla systemu Solaris po raz pierwszy została umieszczona w bazie VirusTotal w 2019 roku. Beaumont stworzył kolekcję indykatorów dla tego implantu, jednak należy zauważyć, iż każda instalacja ma unikalny hash, dlatego polowanie na skróty plików nie jest dobrym pomysłem. Z kolei Florian Roth odpowiedzialny m.in. za Sigma Rules oraz Thor Scanner ujawnił kod źródłowy BPFDoor z 2018 roku. Powstały również reguły (1, 2) YARA pozwalające na identyfikację implantu. W dodatku jeżeli spojrzymy na analizę tego narzędzia w piaskownicy to stałym elementem jest tworzenie i usuwanie pliku: /dev/shm/kdmtmpflush. Swoją analizę przeprowadził również Craig Rowland odkrywając, iż implant podczas startu zaczyna pisać do ścieżki /var/run/haldrund.pid; próbuje maskować się za różnymi nazwami procesów np.:
/sbin/udevd -d /sbin/mingetty /dev/tty7 /usr/sbin/console-kit-daemon --no-daemon hald-addon-acpi: listening on acpi kernel interface /proc/acpi/event dbus-daemon --system hald-runner pickup -l -t fifo -u avahi-daemon: chroot helper /sbin/auditd -n /usr/lib/systemd/systemd-journaldPo infekcji usuwa się z dysku pozostawiając jedynie powiązanie z działającym procesem (co zawsze jest złą wiadomością); zajrzenie do katalogu /proc/$PID/fd pokazuje deskryptor pliku, który aktywnie przechwytuje ruch pakietów; patrząc na kod, można stwierdzić, iż posiada on funkcję backdoora z szyfrowaniem (RC4) oraz także możliwość modyfikacji reguł iptables, aby umożliwić dostęp za zapory w razie potrzeby. Potwierdzeniem tego może być analiza techniczna dotycząca komunikacji sieciowej BPFdoor, która została przeprowadzona przez Tristana Pourcelota z firmy ExaTrack (zajmującej się badaniem zagrożeń i reagowaniem na incydenty). Tristan zauważył, iż złośliwe oprogramowanie posiada funkcję, która wyodrębnia z pakietów sieciowych (ich pierwsze dwa bajty muszą zaczynać się od: UDP i ICMP 0x7255; TCP 0x5293) ciągi poleceń i porównuje je z zestawem zakodowanych nazw, takich jak:
- justtryit
- justrobot
- justforfun
Jeśli fraza zostanie dopasowana nastąpi uruchomienie powłoki nasłuchującej (ang. bind shell) na portach od 42391 do 42491 zaatakowanego hosta lub jeżeli fraza zostanie dopasowane do:
- socket
- sockettcp
To nastąpi uruchomienie powłoki zwrotnej do źródłowego adresu IP podanego w pakiecie sieciowym. Standardowo implant wyśle też znak „1” (zakodowany jako 0x31) do źródłowego adresu IP. Zarówno powłoka nasłuchująca, jak i powłoka zwrotna mają zmienioną nazwę (często na: /usr/libexec/postfix/master). Atakującemu po zalogowaniu udostępniane jest też „czyste” środowisko z ustawionymi zmiennymi:
PROMPT HISTFILE=/dev/null (aby nie zapisywać poleceń w .bash_history) MYSQL_HISTFILE=/dev/null PS1=[\u@\h \W]\\$ HOME=/tmp lub HOME=/Jednak należy mieć na uwadzę, iż niektóre z najnowszych wariantów nie używają już prostych słów kluczowych takich jak: socket, ale haszy MD5. Może to sugerować, iż aktorzy udoskonalają swoje implanty, aby były bardziej zabezpieczone. jeżeli implant uruchomi, którykolwiek typ powłoki to będzie szyfrował swój ruch przy użyciu algorytmu RC4. Używanym kluczem jest po prostu odebrane polecenie wspomniane wyżej (sockettcp / justforfun lub hash).
Tim Nary z SnapAttack napisał już w języku Python skaner, który umożliwia wykrywanie implantu: skoro BPFdoor posiada swego rodzaju „tryb monitora”, który czeka na „magiczny pakiet”, a nie będzie on zawierał poprawnego hasła (case 1 lub case 2 w switch(cmp)) odeśle on pakiet UDP typu heartbeat na podany adres IP i port z wspomnianym znakiem: „1”. Można to wykorzystać do skanowania sieci w poszukiwaniu i identyfikacji skompromitowanych maszyn.
Więcej informacji: BPFDoor: Chinese tool almost undetected for FIVE years is second BPF-based attack this year, BPFDoor — an active Chinese global surveillance tool, BPFDoor (malpedia), BPFDoor – An Evasive Linux Backdoor Technical Analysis