Panchan – botnet p2p oraz robak SSH

nfsec.pl 2 lat temu

P

anchan to nowy malware odkryty przez zespół Akamai, który od marca 2022 uruchomił swoją aktywność. Został napisany w języku Go, aby wykorzystać wbudowane funkcje współbieżności (goroutines) do przyśpieszenia szybkości rozprzestrzeniania się i uruchamiania złośliwych modułów. Dostaje się on do systemów Linux poprzez atak typu brute force na usługę SSH. Lista użytkowników (np. „ubuntu”, „root”, „user”, „debian”, „pi”) i haseł jest wcześniej ustalona. Oprócz „podstawowego” ataku słownikowego na SSH (który jest powszechny w większości znanych robaków) – ta odmiana przechwytuje również klucze SSH w celu rozprzestrzeniania się po innych systemach w sieciach wewnętrznych i zewnętrznych (ang. lateral movement). Szuka on konfiguracji i kluczy SSH w katalogu domowym użytkownika ($HOME). Odczytuje klucz prywatny ze ścieżki $HOME/.ssh/id_rsa i używa go do próby uwierzytelniania na dowolnym adresie IP znalezionym w pliku $HOME/.ssh/known_hosts. Jest to dość nowatorska metoda zbierania danych uwierzytelniających, która nie występowała wcześniej w złośliwych programach łamiących hasła SSH.

Po odgadnięciu danych dostępowych i pomyślnym uwierzytelnieniu Panchan tworzy ukryty folder o losowej nazwie w głównym katalogu użytkownika i kopiuje się do tego „ukrytego” folderu pod nazwą xinetd dzięki sftp np.:

/root/.1994343289646751801/xinetd

Następnie uruchamia skopiowaną binarkę na docelowej maszynie (używając nohup) i przekazuje jej listę peerów przez wiersz poleceń. Po udanej infekcji złośliwe oprogramowanie inicjuje żądanie HTTPS typu POST do webhooka serwera Discord, który prawdopodobnie służy do monitorowania ofiary:

https://discord.com/api/webhooks/954739777134014514/mlkP-UocEi6FOR8dm5nByY5c7hxOaRxDbI...

Protokół P2P botnetu jest dość prosty. Wszystko jest przesyłane w postaci plaintext przez port TCP 1919. Wszystkie jego serwery nasłuchują na tym porcie, a choćby tworzą reguły iptables zezwalające na taki ruch sieciowy:

sh -c "iptables -D INPUT -p tcp --dport 1919 -j ACCEPT" sh -c "iptables -A INPUT -p tcp --dport 1919 -j ACCEPT"

Monetyzacja odbywa się poprzez wykorzystanie dwóch minerów – xmrig oraz nbhash. Obie binarki minerów są zakodowane w BASE64 wewnątrz głównej binarki malware i są z niej wyodrębniane oraz uruchamiane w czasie jej wykonywania. Jest jednak pewna nowość tutaj, ponieważ koparki w ogóle nie są zapisywane na dysk. Zamiast tego wykorzystywana jest funkcja memfd_create() do tworzenia mapowanego w pamięci pliku z binarną zawartością koparki. Dzięki temu można je uruchomić bezpośrednio z pamięci bez identyfikowalnej ścieżki na systemie plików. Z konfiguracji, którą badacze wyodrębnili wygląda na to, iż Panchans wykorzystuje NiceHash dla swoich puli wydobywczych (ang. mining pool) oraz portfeli (ang. wallets). Portfele NiceHash nie są portfelami blockchain, więc nie można zobaczyć ich szczegółów transakcji i kopania, aby ocenić rzeczywiste przychody.

Mechanizm persystencji polega na skopiowaniu się do ścieżki /bin/systemd-worker (IoC) i utworzeniu usługi systemd o tej samej nazwie. Moduł ukrywania swojej obecności nazywa się antitaskmanager, ale wbrew swojej nazwie nie ingeruje w działanie menedżera zadań. Zamiast tego nieustannie poszukuje procesów narzędzi top i htop. Po ich znalezieniu kończy działanie aktualnie uruchomionych procesów kopania kryptowalut. Mimo, iż procesy mogą gwałtownie zniknąć to połączenia w stanie TIME_WAIT na wychodzące porty 3380 i 3387 mogą wskazywać na ruch do puli wydobywania kryptowalut. Co interesujące sama centralna usługa przechwytuje wysyłane do niej sygnały zakończenia procesu (SIGTERM – 0xF i SIGINT – 0x2) i ignoruje je. To sprawia, iż zgaszenie złośliwego systemu jest trudniejsze, ale nie niemożliwe, ponieważ sygnał SIGKILL nie jest przechwytywany.

Poniżej znajduje się skrypt, który gwałtownie wykrywa obecność Panchan po charakterystycznych cechach opisanych wcześniej:

#!/usr/bin/env sh echo "Panchan's mining rig Detection Script by Akamai Threat Labs" persist=false binary=false listening_port=false systemctl list-units --full -all | grep -q "systemd-worker.service" && { persist=true echo "[*] Panchan persistence service detected" } find /.* -maxdepth 1 -name xinetd -type f | grep -q "xinetd" && { binary=true echo "[*] Panchan binary path detected" } netstat -lno | grep -wq 1919 && { listening_port=true echo '[*] Listening on port 1919' } if $persist || $listening_port || $binary; then echo "[*] There is evidence of Panchan malicious activity on this machine." exit 1 else echo '[*] The machine seems to not be infected with Panchan' exit 0 fi

Na podstawie aktywności tego botnetu należy rozważyć następujące zalecenia:

  • Konta shell wystawione na dostęp z internetu (i nie tylko) powinny używać bezpiecznych i złożonych haseł (jeśli muszą ich używać) – najlepiej pochodzących z generatorów haseł i utrzymywanych w menedżerach. Malware w automatycznym trybie działania wykorzystuje bardzo ograniczoną liczbę domyślnych kombinacji nazwy użytkownika i hasła, które nie powinny być skonfigurowane na żadnej maszynie produkcyjnej. Tworzenie silnych haseł może znacznie ograniczyć wpływ złośliwego oprogramowania.
  • Zastosować ochronę przed zbieraniem adresów z known_hosts.
  • Tam, gdzie to możliwe skonfigurować funkcję MFA. Użycie MFA uniemożliwia nieautoryzowaną próbę logowania choćby po odgadnięciu hasła. W przypadku SSH bardzo łatwo wykonać to dzięki Google Authenticator dostępnego dla systemów Android oraz iOS.
  • Monitorowanie aktywności zasobów maszyn wirtualnych. Botnety takie jak Panchan, których celem jest cryptojacking zwiększają wykorzystanie zasobów maszyny do nietypowych poziomów utrzymujących się przez dłuższy czas. Stałe monitorowanie zużycia procesora oraz monitoring domen DNS do popularnych adresów kopalni pozwala na szybkie zauważenie kopania kryptowalut.
  • Segmentacja sieci. jeżeli posiadamy maszyny, które muszą mieć otwarte usługi SSH na internet, mądrze jest kontrolować, kto może łączyć się z nimi z internetu, a także z kim mogą łączyć się w sieci wewnętrznej. Skonfigurowanie tych kontroli dostępu zmniejsza wpływ, jaki może mieć skompromitowana maszyna na naszą sieć, a także zmniejsza ogólną powierzchnię ataku.

Więcej informacji: Panchan’s Mining Rig: New Golang Peer-to-Peer Botnet Says “Hi!”

Idź do oryginalnego materiału