42 Zbrojonych Repozytoriów GitHub ujawnia ukrytego wydawcę npm
Detection stack
- AIDR
- Alert
- ETL
- Query
Podsumowanie
Wyrafinowana kampania śledzona jako testmetest wykorzystuje złośliwe pakiety npm i skompromitowane repozytoria GitHub do kradzieży poświadczeń i automatyzacji wydania złośliwych pakietów. Atakujący polegają na polimorficznych wrapperach, natywnych dodatkach Node.js i zaszyfrowanych ładunkach, aby uniknąć wykrycia. Kampania obejmuje także infrastrukturę używaną do skanowania i wykorzystywania podatności cPanel.
Śledztwo
Badacze z JFrog Security zidentyfikowali 42 uzbrojone repozytoria GitHub oraz wiele złośliwych pakietów npm. Odkryli, że atakujący użyli techniki maskowania przez natywny dodatek, w której skompilowany .node plik odszyfrowuje ukryty ładunek w czasie wykonania. Śledztwo powiązało również tę aktywność z shellpanel skanerami celującymi w systemy cPanel przez CVE-2026-41940.
Mitigacja
Użytkownicy powinni usunąć zidentyfikowane złośliwe pakiety npm i odbudować zaatakowane systemy z zaufanych źródeł. Organizacje muszą obrócić potencjalnie skompromitowane poświadczenia, w tym GitHub, npm i tokeny do chmury. Konieczne jest również przeprowadzenie audytu repozytoriów pod kątem nieautoryzowanych plików konfiguracyjnych, takich jak .github/init.js i nieoczekiwanych punktów wykonania w package.json plikach lub Makefiles.
Reakcja
Gdy złośliwa aktywność zostanie wykryta, należy natychmiast odwołać wyeksponowane sekrety i obrócić poświadczenia. Poszukiwać mechanizmów utrzymania, takich jak net-health-checker or pkg-runtime. Przeglądać logi GitHub Actions pod kątem nieautoryzowanych przepływów pracy i monitorować systemy pod kątem odszyfrowanych ładunków zapisanych do tymczasowych katalogów.
Przepływ Ataku
Nadal aktualizujemy tę część.
Detekcje
Ukryty plik został utworzony na hoście Linux (poprzez file_event)
Podejrzane procesy potomne NodeJS [Windows] (poprzez cmdline)
Możliwe pobieranie pliku z GitHub inicjowane przez nietypowy proces (poprzez network_connection)
Użycie nohup (poprzez cmdline)
Podejrzane procesy potomne NodeJS [Linux] (poprzez cmdline)
Podejrzane wykonanie chmod wskazujące na podejrzane katalogi (poprzez cmdline)
Pobieranie do podejrzanych folderów (poprzez cmdline)
IOCs (HashSha256) do wykrycia: Poza testmetest: Natywne Maskowanie Dodatków i 42 Uzbrojone Repozytoria GitHub ujawniają ukrytego wydawcę npm
IOCs (SourceIP) do wykrycia: Poza testmetest: Natywne Maskowanie Dodatków i 42 Uzbrojone Repozytoria GitHub ujawniają ukrytego wydawcę npm
IOCs (DestinationIP) do wykrycia: Poza testmetest: Natywne Maskowanie Dodatków i 42 Uzbrojone Repozytoria GitHub ujawniają ukrytego wydawcę npm
Sprawdzenie obecności debuggera przez IsDebuggerPresent lub CheckRemoteDebuggerPresent [Dziennik Zdarzeń Bezpieczeństwa Windows]
Podejrzane tworzenie procesów i wykonanie pliku JS w lokalizacji tymczasowej [Tworzenie Procesów Windows]
Wykrywanie wykonania natywnego dodatku Node.js [Ładowanie Obrazu Windows]
Wykryto wykonanie złośliwych procesów dodatków Node [Tworzenie Procesów Linux]
Podejrzane odczyty mapy pamięci natywnego dodatku [Google Cloud Platform]
Symulacyjne Wykonanie
-
Narracja Ataku i Komendy: Przeciwnik z powodzeniem umieścił złośliwy ładunek JavaScript w katalogu tymczasowym użytkownika, nazywając go
.ncby potencjalnie naśladować plik związany z Netcat lub po prostu ukryć jego cel. Aby go wykonać, przeciwnik używa loadera wywołującegoCreateProcessAAPI Win32 do uruchamiania Hosta Skryptów Windows (wscript.exe) z plikiem tymczasowym jako argumentem. Ta konkretna sekwencja – użycie ANSI wersji API tworzenia procesów do uruchomienia skryptu z%TEMP%– to dokładny wzór, który reguła wykrywania ma przechwycić. -
Skrypt Testu Regresji:
# Skrypt Symulacyjny: Wywoływanie 'Podejrzane tworzenie procesów i wykonanie pliku JS w lokalizacji tymczasowej' # 1. Zdefiniuj ścieżki $tempPath = $env:TEMP $targetFile = Join-Path $tempPath ".nc" # 2. Utwórz przykładowy złośliwy plik JS w katalogu %TEMP% # Uwaga: Nazywamy go .nc zgodnie z wymaganiami logiki detekcji "WScript.Echo('Symulowana działalność złośliwa');" | Out-File -FilePath $targetFile -Encoding ascii Write-Host "[+] Złośliwy plik utworzony na: $targetFile" # 3. Symuluj wykonanie za pomocą wscript.exe # W prawdziwym scenariuszu, 'CallTrace' zawierający 'CreateProcessA' jest generowany # przez podlegające wywołanie API Windows używane przez ładowarkę malware. # Uruchomienie tego za pomocą PowerShell/CMD wygeneruje zdarzenie tworzenia procesów. Write-Host "[+] Wykonywanie skryptu w celu wywołania detekcji..." Start-Process "wscript.exe" -ArgumentList "`"$targetFile`"" Write-Host "[+] Wysłano komendę symulacji." -
Polecenia czyszczenia:
# Skrypt czyszczenia: Usuwanie artefaktów symulacji $tempPath = $env:TEMP $targetFile = Join-Path $tempPath ".nc" if (Test-Path $targetFile) { Remove-Item -Path $targetFile -Force Write-Host "[+] Czyszczenie zakończone sukcesem: $targetFile usunięty." } else { Write-Host "[!] Czyszczenie nieudane: Plik nie został znaleziony." }