Skip to content

Esta herramienta no está afiliada a Amazon Web Services, Inc. ni a Amazon.com, Inc., ni cuenta con su respaldo o patrocinio. AWS, Amazon Web Services, CloudTrail y GuardDuty son marcas comerciales de Amazon.com, Inc. o de sus filiales. Los demás nombres son marcas comerciales de sus respectivos propietarios.

Minería de criptomonedas en una cuenta AWS comprometida

Instancias GPU, una factura disparada, una región sin uso: confirme la criptominería en AWS con CloudTrail y Flow Logs, contenga y averigüe cómo entraron.

Publicado el 6 min de lectura

En resumen. La minería de criptomonedas suele ser el último paso de una intrusión, no el primero. Confírmela con eventos RunInstances de tipos de instancia GPU o de gran tamaño en regiones que no utiliza, a menudo precedidos de RequestServiceQuotaIncrease, CreateKeyPair y un grupo de seguridad abierto a 0.0.0.0/0; y después con VPC Flow Logs que muestren conexiones salientes de larga duración hacia puertos de pools de minería. Contenga en todas las regiones (instantánea y después terminación), desactive la credencial que lanzó las instancias y retroceda hasta el punto de entrada: es probable que la misma clave también creara un usuario de puerta trasera.

Una alerta de costes un domingo por la mañana es la forma en que se descubren muchos compromisos de AWS. La minería es ruidosa por naturaleza: necesita capacidad de cómputo, mucha, durante el mayor tiempo posible. MITRE ATT&CK la clasifica como T1496 Resource Hijacking, con T1496.001 Compute Hijacking como subtécnica.

Cómo se ve la minería en CloudTrail

La secuencia de lanzamiento es corta y repetitiva:

OrdenEventoQué revisar
1ec2:DescribeRegions, DescribeInstances en varias regionesEl atacante busca regiones sin uso
2servicequotas:RequestServiceQuotaIncreasequotaCode de las familias de vCPU / GPU, desiredValue
3ec2:CreateKeyPair o ImportKeyPairAcceso SSH a lo que viene después
4ec2:CreateSecurityGroup, AuthorizeSecurityGroupIngressPuerto 22 abierto a 0.0.0.0/0
5ec2:RunInstancesinstanceType (familias p*, g* o, sencillamente, la más grande disponible), minCount, userData
6A veces ec2:RequestSpotInstances, CreateLaunchTemplate, CreateAutoScalingGroupEscala y resiliencia

Hay variantes (tareas de ECS o Fargate, Lambda, SageMaker, Batch), pero EC2 en una región sin uso sigue siendo el clásico.

Dos detalles que conviene conocer:

  • RunInstances registra userData como <sensitiveDataRemoved> en CloudTrail, así que ahí no verá el script de instalación del minero. Recupérelo de la instancia (DescribeInstanceAttribute --attribute userData) antes de terminarla.
  • Las regiones lanzadas después del 20 de marzo de 2019 requieren activación expresa y están desactivadas de forma predeterminada (documentación de AWS); una llamada EnableRegion del atacante es en sí misma una señal.

Cómo se ve la minería en la red

Con VPC Flow Logs en la VPC del atacante (a menudo la VPC predeterminada de la región sin uso, donde nadie activó los registros de flujo, así que compruébelo), la minería aparece como:

  • conexiones salientes estables y de larga duración desde cada nueva instancia hacia las mismas pocas direcciones públicas;
  • hacia puertos de pools habituales en el software de minería (3333, 4444, 5555, 7777, 14444 y similares), aunque también existen pools en el 443;
  • volúmenes de bytes pequeños y regulares en ambos sentidos (envío de shares), no transferencias masivas;
  • una conexión SSH entrante desde la dirección del atacante poco después del arranque.

GuardDuty tiene tipos de hallazgo específicos cuando está activado en esa región, como CryptoCurrency:EC2/BitcoinTool.B y CryptoCurrency:EC2/BitcoinTool.B!DNS (tipos de hallazgos de EC2). Los atacantes lo saben, y por eso la eliminación de detectores suele preceder al lanzamiento.

Contención, por orden

  1. Desactive la credencial que llamó a RunInstances (clave o sesión de rol). De lo contrario, el atacante relanzará instancias tan rápido como usted las termine.
  2. Haga inventario de todas las regiones. aws ec2 describe-instances región por región, o EC2 Global View en la consola. Incluya las solicitudes de Spot, las plantillas de lanzamiento, los grupos de Auto Scaling, los servicios de ECS y las funciones Lambda creados durante la ventana del incidente.
  3. Preserve y después termine. Cree una instantánea del volumen de una instancia representativa y guarde sus datos de usuario para el expediente del caso; termine el resto.
  4. Elimine el andamiaje. Pares de claves, grupos de seguridad, plantillas de lanzamiento; retire las solicitudes de cuota pendientes que no haya hecho usted.
  5. Contacte con AWS Support por el uso y los cargos no autorizados. La guía de re:Post sobre actividad no autorizada describe lo que AWS espera que haya hecho antes de solicitar ayuda.
  6. Deniegue las regiones sin uso con una política de control de servicios si utiliza AWS Organizations.

Estimar los daños

El departamento financiero le pedirá una cifra antes de que haya terminado la contención. Calcúlela a partir de los registros en lugar de esperar a la factura:

  • Horas de instancia. Para cada instancia, el evento RunInstances aporta la hora de lanzamiento y el tipo; el evento TerminateInstances (el suyo) aporta el final. Multiplique por el precio bajo demanda de ese tipo en esa región.
  • Todo lo demás. Transferencia de datos saliente, volúmenes de EBS, direcciones IP elásticas y cualquier recurso creado durante la ventana. Cost Explorer agrupado por región y servicio, y filtrado a los días del incidente, muestra lo que los registros pueden haber pasado por alto.
  • Solicitudes pendientes. Un aumento de cuota aprobado después de la contención puede volver a explotarse si la credencial no se ha revocado en todas partes.

Guarde estas cifras con sus fuentes en el expediente del caso; AWS Support le pedirá los ID de recurso y las horas cuando reclame los cargos no autorizados.

Retroceda hasta el punto de entrada

Las instancias son el síntoma. Pivote sobre el principal de los eventos RunInstances:

Compruebe también qué más hizo el mismo principal antes de lanzar las instancias: la minería suele ir acompañada de robo de datos, porque el atacante ya ha pagado el coste de entrar.

En el analizador

AWS Forensics señala los lanzamientos de instancias GPU (familias p y g) por región, las solicitudes de aumento de cuota, la actividad en una región sin actividad durante el primer día de los registros, los grupos de seguridad abiertos a internet, los pares de claves creados y, a partir de los registros de flujo, las conexiones salientes aceptadas hacia puertos conocidos de pools. La lista de Remediación enumera los ID de instancia y las regiones que hay que terminar. El recorrido por un incidente ficticio termina exactamente con este patrón.

Artículos relacionados

Artículos relacionados

Lo que CloudTrail, VPC Flow Logs y los registros de acceso de S3 no guardan, dónde fallan las líneas base y cómo redactar conclusiones honestas sin evidencias.
Incidente ficticio en AWS investigado con sus registros: clave filtrada, reconocimiento, administrador oculto, GuardDuty borrado, 320 objetos de S3 y minería.
Exporte los logs de CloudTrail desde el bucket del trail, el historial de eventos o CloudTrail Lake, además de VPC Flow Logs, registros de S3, GuardDuty e IAM.

Esta herramienta no está afiliada a Amazon Web Services, Inc. ni a Amazon.com, Inc., ni cuenta con su respaldo o patrocinio. AWS, Amazon Web Services, CloudTrail y GuardDuty son marcas comerciales de Amazon.com, Inc. o de sus filiales. Los demás nombres son marcas comerciales de sus respectivos propietarios.