PointBlank: PyPI RAT ukrywa C2 w usłudze JSON-Bin

PointBlank: w pełni funkcjonalny Python RAT, który uruchamiał swój kanał poleceń za pośrednictwem bezpłatnej usługi hostingu notatek

TL; DR

Pakiet PyPI o nazwie sterowanie gcli dostarczył kompletne narzędzie do zdalnego dostępu dla systemu Windows: rejestrowanie naciśnięć klawiszy, przechwytywanie obrazu z kamery internetowej i mikrofonu, monitorowanie schowka, dostęp do poświadczeń przeglądarki, sterowanie ekranem, trwałość, podnoszenie uprawnień i reklamowane „ponad 140 poleceń”. Nie ukrywał, czym jest: w podsumowaniu pakietu w PyPI opisano je jako „narzędzie do zdalnego dostępu za pośrednictwem npoint.io".

Warto zatrzymać się na tym szczególe, czyli na tym zdaniu „poprzez npoint.io.” Zamiast dzwonić do dedykowanego serwera domowego, implant został użyty npoint[.]io (bezpłatna, legalna usługa do hostowania małych dokumentów JSON) jako przekaźnik poleceń i kontroli. Operator zapisuje polecenia do pliku JSON; implant odpytuje ten plik, wykonuje polecenia i zapisuje wyniki. Brak domeny należącej do atakującego do zablokowania, brak nowego adresu IP do zgłoszenia: ruch trafia do usługi, z której programiści korzystają każdego dnia.

Sześć wersji opublikowano w ciągu około trzynastu i pół godziny, każda lepsza od poprzedniej. Każda z nich została oceniona ml_predicted_safe przez automatyczny klasyfikator, a następnie ręczny przegląd ponownie zaklasyfikował rodzinę jako złośliwą.

Anatomia ataku

sterowanie gcli instaluje pakiet importowy gcli, 35-modułowa baza kodu Pythona. Brak konieczności instalacji hooks — nic nie działa podczas instalacja pipsaMożliwość ta znajduje się w samych modułach, wywoływanych po uruchomieniu narzędzia, a układ modułów przypomina arkusz specyfikacji produktu:

Obszar możliwościModuły
Nadzór hostakeylog, webcam, audio, clipboard, desktop, monitoring
Poświadczenia i dostęp do danychbrowser, forensics, fileops, transfer, users
Przyczółek i eskalacjapersistence, elevator, registry, security
Rekonesans hosta i siecisystem, processes, network_config, wifi, bluetooth, netutils
Dowodzenie i kontrolaclient, host, session, protocol, npoint, crypto, encrypt

Kanał poleceń jest interesującą częścią. Większość narzędzi zdalnego dostępu dociera do serwera kontrolowanego przez operatora — adresu IP, domeny, dostawcy hostingu, który można zgłosić i wyłączyć. sterowanie gcli zamiast tego leczy bezpłatna usługa JSON-bin jako punkt zrzutu, punkt n moduł odczytuje i zapisuje małe dokumenty JSON npoint[.]io przez zwykły protokół HTTPS; Crypto/Szyfrowanie Moduły opakowują wymieniane ładunki, dzięki czemu zawartość binów nie jest poleceniami w postaci zwykłego tekstu. Efektem jest pośredniczony, szyfrowany przekaźnik:

  • Operator umieszcza (zaszyfrowaną) instrukcję w pojemniku JSON.
  • Implant uruchomiony na komputerze ofiary sprawdza zawartość tego pojemnika, odszyfrowuje go, uruchamia jeden ze swoich programów obsługi poleceń i zapisuje (zaszyfrowany) wynik.
  • Dla monitora sieci ofiara po prostu rozmawia npoint[.]io — usługa, która ma uzasadniony powód, aby pojawiać się w ruchu programistycznym.

Nie ma tu żadnego pobierania na drugim etapie ani zamaskowanego programu ładującego: możliwości są dostarczane w całości, w czytelnym Pythonie, a jedynym „ukryciem” jest wybór przekaźnika i szyfrowanie przekazywanych ładunków.

Warto wyjaśnić, dlaczego martwy adres JSON-bin jest atrakcyjny pod względem operacyjnym, ponieważ wyjaśnia to, dlaczego spodziewamy się ponownego zaobserwowania tego wzorca:

  • Brak punktów końcowych będących własnością operatora. Nie ma domeny C2 do zarejestrowania, nie ma VPS do wynajęcia ani niczego, co obrońca lub rejestrator mógłby przejąć. pakiet nie dotyka kanału; usunięcie kanał oznacza poproszenie uniwersalnego oprogramowania SaaS o nadzorowanie jednego dokumentu spośród milionów.
  • Pranie brudnej reputacji. Wychodzące połączenie HTTPS do znanej usługi deweloperskiej nie wiąże się z żadnymi karami za reputację, jakie wiążą się ze świeżą domeną lub surowym adresem IP. Wiele konfiguracji filtrowania ruchu wychodzącego domyślnie na to zezwala.
  • Asynchroniczność i zaprzeczalność. Model sondowania – implant pobiera dokument w określonych odstępach czasu, zamiast utrzymywać otwarte gniazdo – generuje ruch, który wygląda jak okresowe sondowanie API, a nie sesja interaktywna. Szyfrowanie zawartości dokumentu oznacza, że ​​nawet analityk, który znajdzie kontener, zobaczy tekst zaszyfrowany, a nie listę poleceń.
  • Trywialny obrótPrzejście do innego kontenera lub całkowicie innej usługi notatek/wklejania to jednolinijkowa zmiana konfiguracji dla operatora. Każda lista bloków przypisana do konkretnego przekaźnika jest nieaktualna w momencie wysyłki.

Kompromis, na który godzi się operator, to przepustowość i opóźnienie: przekaźnik typu dead-drop jest wolniejszy i ma niższą przepustowość niż połączenie bezpośrednie. W przypadku implantu do monitoringu i kontroli, który głównie wydaje krótkie polecenia i gromadzi wyniki w czasie, taki kompromis jest łatwy do zrealizowania.

Oś czasu

Rodzina szybko się rozrosła. Znaczniki czasu utworzenia zgłoszenia dla wersji oznaczonych flagą wskazują, że cały obserwowany łuk trwał około trzynastu i pół godziny, a liczba dowodów w skanerze rosła wraz z kodem – od kilku oznaczonych witryn w pierwszej wersji do czternastu w najnowszej.

WersjaPierwsze zaobserwowane (UTC)Note
0.1.02026-07-21 12:59Pierwsze przesłanie; minimalna oznaczona powierzchnia
0.5.02026-07-21 18:01Możliwości się rozszerzają
0.2.02026-07-21 18:03(numeracja wersji nie jest monotoniczna w stosunku do kolejności przesyłania)
0.6.02026-07-22 00:44Szerszy zestaw modułów
0.7.02026-07-22 01:58Prawie kompletny zestaw narzędzi
0.7.12026-07-22 02:28Najnowsze; 35 modułów, pełna funkcjonalność

Numery wersji nie zostały opublikowane w ścisłej kolejności, ale kierunek jest jasny: najpierw mała wersja, a następnie szybka iteracja w kierunku w pełni funkcjonalnej wersji 0.7.1. Tak wygląda projekt w fazie aktywnego rozwoju, który jest w miarę rozwoju umieszczany w rejestrze publicznym, a nie jednorazowa aktualizacja.

Wskaźniki kompromisu

Wszystkie poniższe wskaźniki zostały potwierdzone na podstawie zawartości pakietu na dysku oraz deterministycznego skanowania wskaźników wersji 0.7.1; żaden z nich nie jest spekulatywny.

TypWskaźnik
Pakiet (PyPI)gcli-control, wersje 0.1.0, 0.2.0, 0.5.0, 0.6.0, 0.7.0, 0.7.1
Pakiet importowygcli
Przekaźnik C2npoint[.]io (JSON-bin dead-drop; szyfrowane ładunki)
Podane repozytoriumgithub[.]com/gcli-control/gcli
Odcisk palca behawioralnegoWspółlokalizowane moduły nadzoru: keylog, webcam, audio, clipboard, browser, a także trwałość, windę i warstwę poleceń klienta/hosta/protokołu w jednym pakiecie
Zainstalować hooksBrak: funkcja działa w czasie pracy narzędzia, a nie podczas instalacji

Uwaga obrońcy: najsilniejszym trwałym sygnałem nie jest domena (host przekaźnikowy obraca się trywialnie), ale kształt:pojedynczy pakiet łączący trzy lub więcej odrębnych prymitywów nadzoru hosta oraz kieruje pętlą polecenia/odpowiedzi przez publiczną usługę hostingu treści. Blokowanie npoint[.]io jest to po prostu niepraktyczne dla większości sklepów; o wiele bardziej niezawodne jest powiadamianie o nieoczekiwanym procesie, który przechwytuje urządzenia wejściowe i komunikuje się z usługą JSON-bin.

Obserwowane zachowanie i kadrowanie

Dwie rzeczy sprawiają, że ta próbka jest niezwykła: są to obserwowalne fakty, a nie wnioski na temat motywów.

Samo się reklamowało. Podsumowanie pakietu opublikowane na platformie PyPI wymieniało możliwości w prostym języku — zdalny dostęp, sterowanie pulpitem, zarządzanie użytkownikami, kamera internetowa, dźwięk, keylogger, trwałość, dane przeglądarki, Wi-Fi, rejestr, „ponad 140 poleceń”. Nie było żadnej próby podszywania się pod program pomocniczy do kompilacji, wrapper CLI ani narzędzie agenta AI, co jest częstszym przebraniem, jakie widzimy w rejestrach publicznych. Czy ta otwartość odzwierciedla narzędzie red team opublikowane bez kontroli dostępu, czy coś innego, to pytanie, którego sama zawartość pakietu nie rozstrzyga; pewne jest, że działający, uniwersalny zestaw narzędzi do zdalnego dostępu i nadzoru był możliwy do zainstalowania przez każdego, kto posiadał… pypeć.

Opierało się na zaufaniu do nieszkodliwej usługi. Korzystanie z npoint[.]io Ponieważ przekaźnik jest techniką definiującą. Jest to przykład szerszego wzorca — kierowanie C2 przez legalną platformę SaaS (strony wklejania, kontenery JSON, czaty internetowe)hooks(dokumentacja w chmurze), dzięki czemu złośliwy ruch wtapia się w normalną aktywność programistów i nie ma możliwości przejęcia punktu końcowego należącego do operatora. Ładunki na przekaźniku były szyfrowane, więc zawartość binów nie byłaby interpretowana jako polecenia przez przypadkowego obserwatora.

Sygnały wydawcy są słabe i ogólne. W pakiecie zadeklarowano Autor „współtwórców gcli” i licencji MIT, a także wskazał pola swojej strony głównej i repozytorium na github[.]com/gcli-control/gcli. Nic z tego nie jest weryfikacją: ciąg autora to dowolny tekst, nagłówek licencji MIT nic nie kosztuje, a adres URL repozytorium w metadanych pakietu to deklaracja, a nie dowód pochodzenia. Ten wzorzec – zupełnie nowa nazwa, ogólny autor zbiorowy i organizacja/repozytorium samoreferencyjne utworzone wokół pakietu – to wygląd projektu, który jest tworzony specjalnie do przenoszenia kodu, a nie jako ugruntowane narzędzie, które przypadkiem rozwinęło funkcję zdalnego sterowania. Zapisujemy to jako obserwacje; są one spójne z dystrybucją celowo stworzoną, ale same w sobie jej nie ustanawiają.

Opisujemy dyspozycję jako złośliwą na podstawie możliwości i sposobu dostarczenia: kompletny, działający implant zdalnego dostępu i nadzoru, dystrybuowany na publicznym indeksie pakietów z ukrytym przekaźnikiem. Nie określamy celu ani motywu.

Wpływ, trendy i możliwości obrońców

Martwy punkt w przypadku selekcji ukierunkowanej na przebranie. Wiele zautomatyzowanych kluczy do segregacji pakietów przebranie sygnały typowe złośliwe oprogramowanie rejestru — zaciemnione bloby, czas instalacji hooks, jednolinijkowe hasła do zbierania danych uwierzytelniających. Pakiet, który jest po prostu otwarcie SZCZUR, z czystym, czytelnym kodem i bez haka instalacyjnego, nie przedstawia żadnych z tych sygnałów i może ominąć heurystykę, która oczekuje ukrycia. Sygnały, które niezawodnie wykrywają tę klasę, są strukturalne, a nie oparte na maskowaniu: spis możliwości (ile odrębnych prymitywów nadzoru hosta współistnieje w jednym pakiecie) i analiza kształtu C2 (pętla polecenie/odpowiedź kierowana przez uniwersalną usługę hostingu treści). Te kontrole są uruchamiane niezależnie od tego, jak uczciwy lub zamaskowane opakowanie jest.

Trend SaaS-as-C2. Nadużywanie legalnej usługi hostingowej jako „ślepej uliczki” nie jest niczym nowym, ale wciąż działa, ponieważ koszt obrony związany z blokowaniem usługi jest wysoki, a koszt ataku związany ze zmianą usługi bliski zeru. Spodziewaj się więcej takich przypadków. Obrona sieciowa ukierunkowana na konkretne domeny z błędami szybko się starzeje; reguły behawioralne („ten proces odczytuje dane ze schowka i kamery internetowej, a następnie komunikuje się z API hostingu notatek”) – nie.

Szkic wykrywania betonu. Trwała zasada nie nazywa npoint[.]io W ogóle. Łączy dwie obserwacje, które są pojedynczo powszechne, ale łącznie rzadkie na normalnym hoście deweloperskim lub CI:

alert, gdy w ramach jednej sesji pojedynczy proces spełnia oba warunki:
(A) uzyskuje dostęp do pierwotnego urządzenia do monitorowania hosta — urządzenia wejściowego (hak klawiatury/myszy), kamery, mikrofonu, przechwytywania ekranu, pętli odczytu schowka lub magazynu danych uwierzytelniających przeglądarki ("Login Dane" / "Stan lokalny" / DPAPI); ORAZ
(B) wysyła żądania wychodzące do publicznej usługi hostowania treści/wklejania/JSON-bin/czatu-webhook, a następnie zgłasza je do przeglądu, niezależnie od konkretnej usługi w (B).

Żadna z tych dwóch części sama w sobie nie jest podejrzana: wiele legalnych zrzutów ekranu narzędzi i wiele publikuje JSON-y w API hostingowym. Połączenie wewnątrz jednego krótkotrwałego procesu jest sygnałem i przetrwa każdą rotację przekaźnika.

Praktyczne kroki dla zespołów:

  • Instalacje pakietów publicznych na hostach deweloperskich i CI traktuj jako granicę wykonywania, a nie wygodę — RAT na agencie kompilacji to RAT z Twoimi sekretami.
  • Preferuj wewnętrzne serwery lustrzane umieszczone na liście dozwolonych; pakiet, którego nazwa dosłownie pochodzi od zdalnego sterowania i który opisuje keyloggera, nigdy nie powinien znajdować się w indeksie korporacyjnym.
  • Alert na połączenie — urządzenie wejściowe lub przechwytywanie ekranu plus ruch wychodzący do usługi treści/wklejania/JSON-bin — a nie na pojedynczym prymitywie, który w izolacji ma nieszkodliwe zastosowania.
  • Nie opieraj się na automatycznej ocenie „bezpieczny” jako ostatecznym werdykcie w przypadku pakietów z szerokimi możliwościami dostępu do hosta; skieruj je do przeglądu przez człowieka.

Rodzina pakietów została sklasyfikowana jako złośliwa i skierowana do usunięcia z rejestru. Ponieważ serwer C2 oparty na przekaźniku nie pozostawia żadnego hosta należącego do operatora w leju, trwała wartość obronna znajduje się w powyższym odcisku palca behawioralnego, a nie w żadnym pojedynczym wpisie na liście blokowanych.

sca-tools-oprogramowanie-narzędzia-analizy-kompozycji
Określ priorytety, rozwiąż problemy i zabezpiecz zagrożenia związane z oprogramowaniem
Załóż darmowe konto.
Nie wymagamy karty kredytowej.

Zabezpiecz swoje oprogramowanie i dostarczanie

z pakietem produktów Xygeni