PointBlank: PyPI RAT oculta su servidor C2 en un servicio JSON-Bin.

PointBlank: un RAT (troyano de acceso remoto) de Python con todas las funciones que ejecutaba su canal de comandos a través de un servicio gratuito de alojamiento de notas.

TL; DR

Un paquete PyPI llamado control gcli Se lanzó una herramienta completa de acceso remoto a Windows: registro de pulsaciones de teclas, captura de cámara web y micrófono, monitoreo del portapapeles, acceso a credenciales del navegador, control de pantalla, persistencia, elevación de privilegios y, según se anunciaba, "más de 140 comandos". No ocultaba lo que era: el propio resumen de PyPI del paquete lo describía como una "herramienta de acceso remoto a través de npoint.io".

El detalle en el que vale la pena detenerse es esa frase. "a través de npoint.io." En lugar de llamar a un servidor dedicado, el implante utilizaba npoint[.]io (un servicio gratuito y legítimo para alojar pequeños documentos JSON) como su relé de comando y control. El operador escribe comandos en un contenedor JSON; el implante consulta ese contenedor, ejecuta los comandos y devuelve los resultados. No hay dominio propiedad del atacante que bloquear, ni IP nueva que marcar: el tráfico se dirige a un servicio que los desarrolladores usan a diario.

Se publicaron seis versiones en aproximadamente trece horas y media, cada una más capaz que la anterior. Cada una de ellas fue calificada. ml_predicted_safe Un clasificador automatizado, antes de la revisión manual, reclasificó a la familia como maliciosa.

Anatomía de ataque

control gcli instala el paquete de importación gcli, un código base de Python de 35 módulos. No hay tiempo de instalación. hooks — nada funciona durante instalación de pipLa funcionalidad reside en los propios módulos, que se invocan una vez que se ejecuta la herramienta, y la estructura de los módulos se asemeja a una hoja de especificaciones del producto:

Área de capacidadMódulos
Vigilancia del huéspedkeylog, webcam, audio, clipboard, desktop, monitoring
Acceso a credenciales y datosbrowser, forensics, fileops, transfer, users
Afianzamiento y escaladapersistence, elevator, registry, security
Reconocimiento de host y redsystem, processes, network_config, wifi, bluetooth, netutils
Comando y controlclient, host, session, protocol, npoint, crypto, encrypt

El canal de comandos es la parte interesante. La mayoría de las herramientas de acceso remoto llegan a un servidor que controla el operador: una dirección IP, un dominio, un proveedor de alojamiento que puede ser denunciado y desconectado. control gcli en cambio trata a un Servicio gratuito de JSON-bin como punto de entrega seguro. La función de npunto El módulo lee y escribe pequeños documentos JSON en npoint[.]io a través de HTTPS ordinario; el criptomonedas/cifrar Los módulos encapsulan las cargas útiles intercambiadas para que el contenido del contenedor no sean comandos en texto plano. El efecto es un relé cifrado y mediado:

  • El operador introduce una instrucción (encriptada) en un contenedor JSON.
  • El implante, que se ejecuta en el equipo de la víctima, consulta ese contenedor, lo descifra, ejecuta uno de sus controladores de comandos y escribe el resultado (encriptado).
  • Para un monitor de red, la víctima simplemente está hablando con npoint[.]io — un servicio con una razón legítima para aparecer en el tráfico de desarrolladores.

Aquí no hay descarga de segunda etapa ni cargador ofuscado: la funcionalidad se entrega completa, en Python legible, y lo único que se "oculta" es la elección del relé y el cifrado de las cargas útiles retransmitidas.

Vale la pena explicar por qué un punto de entrega seguro basado en JSON es operativamente atractivo, porque explica por qué esperamos volver a ver este patrón:

  • Ningún punto final propiedad del operador. No hay ningún dominio C2 que registrar, ningún VPS que alquilar y nada que un defensor o registrador pueda confiscar. Eliminación del PARA DOS no toca el canal; eliminación del canal significa pedirle a un software como servicio (SaaS) de propósito general que supervise un documento entre millones.
  • Lavado de reputación. El tráfico HTTPS saliente hacia un servicio de desarrollo conocido no conlleva ninguna de las penalizaciones de reputación que implicaría un dominio nuevo o una dirección IP sin procesar. Muchas configuraciones de filtrado de salida lo permiten implícitamente.
  • Asincronía y negación. Un modelo de sondeo —el implante obtiene un documento a intervalos regulares en lugar de mantener una conexión abierta— genera un tráfico que se asemeja a un sondeo periódico de la API, no a una sesión interactiva. El cifrado del contenido del documento implica que incluso un analista que encuentre el archivo verá texto cifrado, no una lista de comandos.
  • Rotación trivialCambiar a una carpeta diferente, o a un servicio de notas/pegado completamente distinto, es un cambio de configuración de una sola línea para el operador. Cualquier lista de bloqueo vinculada al relé específico queda obsoleta en el momento de su envío.

La contrapartida que acepta el operador es el rendimiento y la latencia: un relé de conexión directa es más lento y tiene menor ancho de banda que una conexión directa. Para un implante de vigilancia y control que principalmente emite comandos cortos y recopila resultados a lo largo del tiempo, esta contrapartida es fácil de asumir.

Cronograma

La situación se agravó rápidamente. Las marcas de tiempo de creación de tickets para las versiones señaladas sitúan todo el arco observado en aproximadamente trece horas y media, y el recuento de pruebas del escáner aumentó junto con el código, pasando de un par de sitios señalados en la primera versión a catorce en la última.

VersiónVisto por primera vez (UTC)Nota:
0.1.02026-07-21 12:59Carga inicial; superficie mínima marcada
0.5.02026-07-21 18:01La capacidad se amplía
0.2.02026-07-21 18:03(La numeración de las versiones no es monótona con el orden de carga)
0.6.02026-07-22 00:44Conjunto de módulos más amplio
0.7.02026-07-22 01:58Kit de herramientas casi completo
0.7.12026-07-22 02:28Último modelo; 35 módulos, capacidad total

Las versiones no se publicaron en orden estricto, pero la dirección es clara: una primera versión reducida, seguida de una rápida iteración hacia la versión 0.7.1 con todas las funciones. Este es el modelo de un proyecto en desarrollo activo que se publica en un registro público a medida que crece, no un lanzamiento único.

Indicadores de compromiso

Todos los indicadores que se muestran a continuación se confirmaron cotejándolos con el contenido del paquete en el disco y con un análisis determinista de indicadores de la versión 0.7.1; ninguno es especulativo.

TipoIndicador
Paquete (PyPI)gcli-control, versiones 0.1.0, 0.2.0, 0.5.0, 0.6.0, 0.7.0, 0.7.1
Paquete de importacióngcli
relé C2npoint[.]io (Envío seguro mediante JSON-bin; cargas útiles cifradas)
Repositorio indicadogithub[.]com/gcli-control/gcli
Huella conductualMódulos de vigilancia ubicados en el mismo lugar: keylog, webcam, audio, clipboard, browser, además de persistencia, elevador y una capa de comandos cliente/host/protocolo en un solo paquete
Instale hooksNinguno: la funcionalidad se ejecuta en tiempo de ejecución de la herramienta, no durante la instalación.

Nota del defensor: La señal duradera más fuerte no es el dominio (un host de retransmisión rota trivialmente) sino el dar forma a: un único paquete que agrupa tres o más primitivas de vigilancia de host distintas y Enruta un bucle de comando/respuesta a través de un servicio público de alojamiento de contenido. Bloqueo npoint[.]io Para la mayoría de las tiendas, implementar una solución directa resulta poco práctico; es mucho más eficaz alertar sobre un proceso inesperado que capture los dispositivos de entrada y se comunique con un servicio JSON-bin.

Comportamiento observado y encuadre

Dos cosas hacen que esta muestra sea inusual, y ambas son hechos observables más que inferencias sobre la motivación.

Se publicitó solo. El resumen del paquete distribuido en PyPI enumeraba las capacidades en lenguaje sencillo: acceso remoto, control de escritorio, gestión de usuarios, cámara web, audio, registrador de pulsaciones de teclas, persistencia, datos del navegador, WiFi, registro, "más de 140 comandos". No se intentó hacer pasar el código como un asistente de compilación, un envoltorio de CLI o una utilidad de agente de IA, que es el disfraz más común que vemos en los registros públicos. Si esa apertura refleja una herramienta de equipo rojo publicada sin controles de acceso o algo más es una cuestión que el contenido del paquete por sí solo no resuelve; lo que es seguro es que cualquier persona con un kit de herramientas de vigilancia y acceso remoto funcional y de propósito general podía instalarlo. pepita.

Se basaba en la confianza en un servicio benigno. El uso de npoint[.]io ya que el relé es la técnica definitoria. Es un ejemplo de un patrón más amplio: enrutar C2 a través de un SaaS legítimo (sitios de pegado, contenedores JSON, chat web).hooks(documentación en la nube) para que el tráfico malicioso se confunda con la actividad normal del desarrollador y no haya ningún punto final propiedad del operador que pueda ser interceptado. Las cargas útiles en el relé estaban cifradas, por lo que el contenido del contenedor no se interpretaría como comandos para un observador casual.

Las señales que transmite la editorial son débiles y genéricas. El paquete declaró un Autor de “colaboradores de gcli” y una licencia MIT, y apuntó su página de inicio y campos de repositorio a github[.]com/gcli-control/gcliNada de esto constituye una verificación: una cadena de autor es texto libre, una cabecera de licencia MIT no tiene coste alguno y una URL de repositorio en los metadatos del paquete es una afirmación, no una prueba de procedencia. El patrón —un nombre completamente nuevo, un autor colectivo genérico y una organización/repositorio autorreferencial creado en torno al paquete— es el aspecto que tiene un proyecto cuando se crea específicamente para albergar el código, en lugar de una herramienta ya establecida a la que se le ha añadido una función de control remoto. Anotamos estas observaciones; son coherentes con una distribución diseñada para un propósito específico, pero no la establecen por sí solas.

Describimos esta acción como maliciosa en función de su capacidad y método de entrega: un implante completo y ejecutable de acceso remoto y vigilancia, distribuido en un índice de paquetes público con un relé encubierto. No atribuimos un objetivo ni un motivo.

Impacto, tendencias y qué pueden hacer los defensores

Un punto ciego para el triaje basado en el disfraz. Muchas claves de clasificación de paquetes automatizadas en el disfraz señales de malware típico del registro — blobs ofuscados, tiempo de instalación hooks, frases cortas para la obtención de credenciales. Un paquete que es simplemente abiertamente una RATACon un código limpio y legible y sin gancho de instalación, no presenta ninguna de esas señales y puede eludir las heurísticas que esperan ocultación. Las señales que detectan de forma fiable esta clase son estructurales en lugar de basadas en el disfraz: un censo de capacidades (cuántas primitivas de vigilancia de host distintas coexisten en un paquete) y un análisis de la forma del C2 (un bucle de comando/respuesta enrutado a través de un servicio de alojamiento de contenido de propósito general). Esas comprobaciones se activan independientemente de cuán honesto o ofuscado El embalaje es.

La tendencia del SaaS como C2. El abuso de un servicio de alojamiento legítimo como punto de entrega no autorizado no es nuevo, pero sigue funcionando porque el coste de bloquear el servicio es alto y el de cambiar de proveedor es prácticamente nulo. Cabe esperar que esto ocurra con más frecuencia. Las defensas de red dirigidas a dominios maliciosos específicos caducan inmediatamente; las reglas de comportamiento («este proceso lee el portapapeles y la cámara web y luego se comunica con una API de alojamiento de notas») no.

Un croquis de detección de hormigón. La regla duradera no nombra npoint[.]io En absoluto. Combina dos observaciones que son comunes individualmente pero raras en conjunto en un entorno de desarrollo o de integración continua normal:

alerta cuando un solo proceso, dentro de una sesión, ambos:
(A) accede a una primitiva de vigilancia del host: dispositivo de entrada (gancho de teclado/ratón), cámara, micrófono, captura de pantalla, bucle de lectura del portapapeles o un almacén de credenciales del navegador ("Login Datos" / "Estado local" / DPAPI); Y
(B) realiza solicitudes salientes a un servicio público de alojamiento de contenido / pegado / JSON-bin / chat-webhook y luego las envía para su revisión, independientemente del servicio específico en (B).

Ninguna de las dos partes resulta sospechosa por sí sola: muchas herramientas legítimas capturan pantallas y muchas envían datos JSON a una API de alojamiento. La señal reside en la conjunción dentro de un proceso efímero, y esta sobrevive a cualquier rotación del relé.

Pasos prácticos para los equipos:

  • Considere las instalaciones de paquetes públicos en los hosts de desarrollo y de integración continua como un límite de ejecución, no como una conveniencia: un RAT en un agente de compilación es un RAT con su Secretos.
  • Prefiera los espejos internos incluidos en la lista de permitidos; un paquete cuyo nombre literalmente significa control remoto y que describe un registrador de pulsaciones de teclas nunca debería resolverse en un índice corporativo.
  • Alerta sobre el combinación — captura de dispositivo de entrada o pantalla más tráfico saliente a un servicio de contenido/pegado/JSON-bin — en lugar de en cualquier primitivo individual, que tiene usos benignos de forma aislada.
  • No confíe en una puntuación automática de "seguridad" como veredicto final para paquetes con amplia capacidad de acceso al host; remítalos a una revisión humana.

La familia de paquetes ha sido clasificada como maliciosa y se ha solicitado su eliminación del registro. Dado que un servidor C2 basado en relés no deja ningún host propiedad del operador que pueda ser atacado, el valor defensivo duradero reside en la huella digital de comportamiento mencionada anteriormente, y no en ninguna entrada individual de la lista de bloqueo.

sca-tools-software-herramientas-de-analisis-de-composicion
Priorice, solucione y proteja sus riesgos de software
Obtén tu cuenta gratuita.
Sin tarjeta de crédito.

Asegure el desarrollo y entrega de software

con la suite de productos Xygeni