Il team Fortinet FortiGuard Labs ha scoperto pacchetti dannosi nel repository Python Package Index (PyPI) che distribuiscono WhiteSnake Stealer.
I pacchetti contenenti i malware si chiamano nigpal, figflix, telerer, seGMM, fbdebug, sGMM, myGens, NewGends e TestLibs111. Sono stati caricati da un utente malintenzionato chiamato “WS”. I pacchetti includono codice sorgente codificato Base64 per PE (Portable Executable) o altri script Python nei file setup.py. Questo codice viene attivato quando i pacchetti vengono installati sui computer degli utenti.
Sui sistemi Windows, il virus WhiteSnake Stealer ruba informazioni e sui sistemi Linux avvia uno script Python per raccogliere dati. L’attacco prende di mira principalmente gli utenti Windows ed è collegato a una campagna precedentemente segnalata da JFrog e Checkmarx .
Il payload specifico per Windows è stato identificato come una variante del malware WhiteSnake. Questo dispone di un meccanismo anti-virtual machine che comunica con un server di comando e controllo (C2). La comunicazione avviene tramite il protocollo Tor ed è anche in grado di rubare informazioni alla vittima ed eseguire comandi.
WhiteSnake Stealer raccoglie anche dati da browser Web, portafogli di criptovaluta e applicazioni come WinSCP, CoreFTP, Windscribe, Filezilla, AzireVPN, Snowflake, Steam, Discord, Signal e Telegram.
Checkmarx attribuisce la campagna a un autore di minacce con lo pseudonimo PYTA31. Afferma che l’obiettivo finale dell’aggressore è esfiltrare dati sensibili dalle macchine prese di mira.
Alcuni dei pacchetti dannosi includono una funzionalità clipper che consente di sostituire il contenuto degli appunti con gli indirizzi dei portafogli degli aggressori per eseguire transazioni non autorizzate. Altri pacchetti mirano a rubare dati da browser, applicazioni e servizi crittografici.
Fortinet sottolinea che questa scoperta dimostra la capacità di un singolo autore di malware di distribuire più pacchetti e rubare informazioni nella libreria PyPI.
| File | Hash (sha256) | Detection |
| nigpal-0.1 setup.py | c53d1387864ea3034bc4e19af492b3e67147d3fdc1d8b9752e24600d6919e3af | PYTHON/Agent.c51b!tr |
| nigpal payload (PE) | ab75ea75d1fe5bc51ecef274a95f7b835b09a0c7c95c4227366a3d64b5dee7c0 | MSIL/WhiteSnake.C!tr |
| nigpal payload (Python) | 24e07dd8c4a6fb92d842ebc168a40505bbd0421a16c13a06571910ca7a40a5a5 | PYTHON/Agent.7f73!tr |
| figflix-0.1 setup.py | 41ff3fedb78c672c6d0e5e849f81c8be10c0767558fcfdf6f529215556354d9e | PYTHON/Agent.c51b!tr |
| figflix-0.2 setup.py | 377e8ca04aed57a10b350d9eb4a6e64818bb69b790f33db4be0fd22589c435ad | PYTHON/Agent.c51b!tr |
| figflix payload (PE) | 34e5bd67fbd9a7040dca9cae90e36013aaeda1940bb39e7fcd5d5fa9c85cadc8 | MSIL/WhiteSnake.C!tr |
| figflix payload (Python) | b2bf755c4e1336f5ab36bc679d4a86e4c0d4da7b33a26b9ec8c01e179027f66b | PYTHON/Agent.7f73!tr |
| telerer-2.0 setup.py | 3dcff80475ebfb9a3aa93f3cebd8f008ea64d857a7c53719f1ca047dfd050e1c | PYTHON/Agent.c51b!tr |
| telerer-2.1 setup.py | dc5b74c1007bbe9acce3cddf30870766867b40e7d37264b7bdaf3b5f40747c10 | PYTHON/Agent.c51b!tr |
| telerer-2.2 setup.py | f1f6501a97b9145d8dd755d25a39c1803fe54995a39fd59b2914f591d56bdc68 | PYTHON/Agent.c51b!tr |
| telerer-2.3 setup.py | 8bdc674e3a41370a2d0a997b6ca673c6d646ed580400af242980a5ec374864a2 | PYTHON/Agent.c51b!tr |
| telerer payload | 4fac457f8170e26643d0a4d8a0199e93d72872e1799e95f5c522a50754982079 | W32/Kryptik.HTVT!tr |
| seGMM-1.3.1 setup.py | ef0e1a8378d1dd9e3cfd0d59d1969b618e15ddb4bbfaf50057670842004346e8 | PYTHON/Agent.c51b!tr |
| seGMM-3.1.1 setup.py | 6fe87ab0590229d11f2d174bcf13cfbaca6f6c9dc55af84527c96de16c12c799 | PYTHON/Agent.c51b!tr |
| seGMM payload | 4fac457f8170e26643d0a4d8a0199e93d72872e1799e95f5c522a50754982079 | W32/Kryptik.HTVT!tr |
| fbdebug-0.1 setup.py | da0c21c66fd0dc42b1bcb06c9bd0d7e48b1b866720229712df64410eebd62199 | PYTHON/Agent.c51b!tr |
| fbdebug payload (PE) | d9568da21005794d80eb6572ccce47cc766ba5fe24b2b82cd4ff2cf05d8531a2 | MSIL/WhiteSnake.C!tr |
| fbdebug payload (Python) | ec9e1342b0bddbd0ef65cd37a751b3a8c3c8170cdd8cce0f0fb6815b6be26a45 | PYTHON/Agent.7f73!tr |
| sGMM-1.3.2 setup.py | 8fb72c3a6a5d96f91c3dc46541331ebf0a6cf326d2353ab6f2b1c119e9907670 | PYTHON/Agent.c51b!tr |
| sGMM payload | 94be6da31c5f896017af733a44b9ea00abbb35bce0a8dbcab776367234e4d818 | W32/ClipBanker.DE!tr |
| myGens-1.0 setup.py | f22110ea2376082651f5f0724875e6f9d083e2be0688dc06b59206c35fa50def | PYTHON/Agent.c51b!tr |
| myGens payload | 03a1621af484ff8f5c1797b25426bab656b6731dba43e31fe58fc1f1963d8484 | MSIL/Agent.ERW!tr.spy |
| NewGends-1.3 setup.py | 857bc70fb5968b9f5e257e41f4be9cdd8c7135314bf6200e2cf5b60186401e7a | PYTHON/Agent.c51b!tr |
| NewGends payload | 03a1621af484ff8f5c1797b25426bab656b6731dba43e31fe58fc1f1963d8484 | MSIL/Agent.ERW!tr.spy |
| TestLibs111-1.4 setup.py | c9e0b8c6c5140acae2b3bf003d9ae2a69abf04253b0bd932ec97c732a4b9bf97 | PYTHON/Agent.c51b!tr |
| TestLibs111-1.5 setup.py | 0e13bb49aba0878b919bc0980ce2e9e3cfa876387fcedf5af41235ab0f7a440a | PYTHON/Agent.c51b!tr |
| TestLibs111-1.7 setup.py | 14cd40cce030bfca6a4c06fdadd353b5eaa092e7f73ba65308afedc04270c9b9 | PYTHON/Agent.c51b!tr |
| TestLibs111 payload | 2b617277fc551b7500867ee009a0f80cbe6d5ee729bdfbf9b4f9d52164811082 | W32/Agent.ORR!tr.pws |