Dlaczego warto wykrywać tinyshell w swojej infrastrukturze

nfsec.pl 1 rok temu

1

7 listopada 2022 roku główny programista kryptowaluty Bitcoin – Luke Dashjr poinformował na swoim koncie Mastodon, iż ktoś nieautoryzowany uzyskał dostęp do jego serwera Linux. Doprowadziło to do ukierunkowanego napadu na jego kryptowalutę, a także kradzież jego klucza PGP. Badacz bezpieczeństwa Taha Karim otrzymał od Luka kopię znalezionych na serwerze próbek publikując niedawno ich analizę. Początkowy wektor infekcji serwera przez cały czas pozostaje niepotwierdzony, ponieważ padło parę podejrzeń w tym podłączenie szkodliwego nośnika bezpośrednio do serwera. W ramach ataku rzekomo skradziono 200 BTC o wartości na ten czas 3,6 miliona dolarów. Nie jest też jasne, w jaki sposób atakujący przeskoczyli z serwera na stację roboczą (lub odwrotnie).

Podczas przeprowadzonej analizy wyodrębniono dwa narzędzia: DARKSABER – nieco zmodyfikowany wariant TinyShell, który jest otwartym oprogramowaniem typu backdoor, zapewniając zdalne wykonanie powłoki, a także przesyłanie plików. Warto zauważyć, iż backdoor ten jest trudny do zmodyfikowania lub przejęcia kontroli (w przypadku wykrycia) bez znajomości tajnego klucza, który jest używany do uwierzytelniania i szyfrowania komunikacji klient – serwer przy użyciu algorytmu szyfrowania AES-CBC-128 (odbywa się weryfikacja dla wszystkich wysłanego / odebranego pakietu). SHADOWSTRIKE – zwrotna powłoka TCP na platformę *nix napisana w języku Perl również oparta o otwarty i znany skrypt autorstwa pentestmonkeyperl-reverse-shell. Posiada on ciekawą opcję ustawiania nazwy procesu pod którą ukrywa się skrypt maskując sesję „mrocznego operatora”.

Ciekawy aspekt stanowi tutaj wykorzystanie właśnie TinyShell, ponieważ narzędzia oparte na tym rozwiązaniu były wykorzystywane przez wiele grup APT (ang. Advanced Persistent Threat) począwszy od takich jak APT31, PassCV, ChamelGang lub grupy UNC, jak UNC1945 lub UNC2891 oraz liczne ataki ukierunkowane od 2012 roku (nie tylko na platformy Linux).

Poniżej znajduje się przykładowa reguła YARA pozwalająca wykryć TinyShell w systemie Linux:

rule TinyShell { meta: author = "Mandiant " strings: $sb1 = { C6 00 48 C6 4? ?? 49 C6 4? ?? 49 C6 4? ?? 4C C6 4? ?? 53 C6 4? ?? 45 C6 4? ?? 54 C6 4? ?? 3D C6 4? ?? 46 C6 4? ?? 00 } $sb2 = { C6 00 54 C6 4? ?? 4D C6 4? ?? 45 C6 4? ?? 3D C6 4? ?? 52 } $ss1 = "fork" ascii fullword wide $ss2 = "socket" ascii fullword wide $ss3 = "bind" ascii fullword wide $ss4 = "listen" ascii fullword wide $ss5 = "accept" ascii fullword wide $ss6 = "alarm" ascii fullword wide $ss7 = "shutdown" ascii fullword wide $ss8 = "creat" ascii fullword wide $ss9 = "write" ascii fullword wide $ss10 = "open" ascii fullword wide $ss11 = "read" ascii fullword wide $ss12 = "execl" ascii fullword wide $ss13 = "gethostbyname" ascii fullword wide $ss14 = "connect" ascii fullword wide condition: uint32(0) == 0x464c457f and 1 of ($sb*) and 10 of ($ss*) }

Detekcja:

FILE: /root/tsh/tshd SCORE: 70 TYPE: ELF SIZE: 63720 FIRST_BYTES: 7f454c4602010100000000000000000003003e00 / MD5: 9cbfbbd7a5df3fb77d110062a905b90d SHA1: f361a0398992624eb000ebabc09ca875ed57a269 SHA256: 1f889871263bd6cdad8f3d4d5fc58b4a32669b944d3ed0860730374bb87d730a CREATED: Thu Feb 2 19:33:12 2023 MODIFIED: Thu Feb 2 19:33:12 2023 ACCESSED: Thu Feb 2 20:02:28 2023 REASON_1: Yara Rule MATCH: TINYSHELL SUBSCORE: 70 DESCRIPTION: not set REF: - AUTHOR: Mandiant MATCHES: Str1: c60048c6400549c6400149c640064cc6400253c6400745c6400354c640083dc6400446c6400900 Str2: c60054c640034dc6400145c640043dc6400252

Więcej informacji: Trellix Insights: UNC2891 performing unauthorized cash withdrawals

Idź do oryginalnego materiału