
OMIGOD! OM I GOOD? Un escáner gratuito para detectar máquinas virtuales vulnerables a una de las vulnerabilidades "OMIGOD" descubiertas por el equipo de investigación de amenazas de Wiz, específicamente CVE-2021-38647.
Este repositorio contiene un escáner gratuito para detectar máquinas virtuales vulnerables a una de las vulnerabilidades "OMIGOD" descubiertas por el equipo de investigación de amenazas de Wiz, concretamente CVE-2021-38647.
Artículo original del blog de Wiz: https://www.wiz.io/blog/omigod-critical-vulnerabilities-in-omi-azure
El escáner requiere credenciales de Azure para conectarse a las API de Azure y, dado una suscripción y un grupo de recursos (o por defecto escaneará todos los disponibles), obtiene la lista de máquinas virtuales Linux e informa si la máquina podría ser vulnerable.
Asegúrate también de revisar la herramienta propia de Microsoft para este propósito: https://github.com/microsoft/OMS-Agent-for-Linux/tree/master/tools/OMIcheck
Para autenticarse contra las API de Azure, se admiten tanto azure cli (por defecto) como la autenticación interactiva del navegador; consulta el parámetro de línea de comandos --auth.
No hay una forma directa de determinar si tus máquinas son vulnerables a OMI sin ejecutar comandos en la propia máquina Linux, lo cual está soportado a través de las API de Azure usando el comando RunShellScript mediante una extensión. La herramienta propia de Microsoft (https://github.com/microsoft/OMS-Agent-for-Linux/tree/master/tools/OMIcheck) también utiliza este enfoque.
Vale la pena señalar que, incluso si la máquina virtual es vulnerable, es posible que no esté exponiendo el servidor OMI vía HTTP/HTTPS (que es lo predeterminado) y, aunque lo haga, esos puertos podrían estar bloqueados por los Grupos de Seguridad de Red de Azure y, por tanto, ser inalcanzables. Esto no es una razón para evitar aplicar parches, pero si tienes muchas máquinas virtuales Linux vulnerables, podría ser útil saber cuáles están más expuestas y priorizar tus esfuerzos.
omigood sigue este enfoque más completo y generará una salida JSON con una serie de comprobaciones que puedes activar mediante opciones de línea de comandos para determinar tu superficie de ataque.
Estas son las comprobaciones que realiza omigood:
1.13.40. Puedes consultar el script que ejecutamos aquí.-e.-r. ¡Úsala bajo tu propio riesgo!/usr/bin/id. Esta comprobación es opcional, ya que implica intentar explotar la máquina virtual. Actívala con la opción de línea de comandos -a. Úsala solo en objetivos que estés autorizado a probar. ¡Úsala bajo tu propio riesgo!El archivo de salida JSON generado contiene toda la información sobre las máquinas virtuales escaneadas: IDs, sistema operativo, grupos de seguridad de red, estado de energía, etc.
Los indicadores ('YES'/'NO') que son relevantes para las comprobaciones son:
YES si se encuentra la Extensión del Agente OMS en la máquina virtual.YES si la versión de la Extensión del Agente OMS es inferior a 1.13.40.YES si las reglas del Grupo de Seguridad de Red parecen permitir conexiones a los puertos de OMI.YES si las reglas de Seguridad Efectivas parecen permitir conexiones a los puertos de OMI. Solo con la opción de línea de comandos -e.YES si la versión del servidor OMI se obtuvo mediante script y se determinó que es inferior a 1.6.8-1. Solo con la opción de línea de comandos -r.YES si el estado del servidor OMI se obtuvo mediante script y se determinó que está escuchando en TCP y no solo en sockets UNIX. Solo con la opción de línea de comandos -r.usage: omigood_scanner.py [-h] [-v] [--auth {azurecli,interactivebrowser}] [-r] [-a] [-e] [-s SUBSCRIPTIONS]
[-g RESOURCEGROUPS] [-m VMS] -o OUTPUT
OMIGood scanner for CVE-2021-38647
optional arguments:
-h, --help show this help message and exit
-v, --verbose [OPTIONAL] Verbose mode: Displays additional debug details.
--auth {azurecli,interactivebrowser}
Authentication mode. Default: azurecli.
-r, --runscript [OPTIONAL] Run Script. Runs bash script on target VMs to check for OMI server, agent and
version. Disabled by default. Use at your own risk.
-a, --attack [OPTIONAL] Try to attack the host. Disabled by default. Use at your own risk.
-e, --effective [OPTIONAL] Check Effective Security Rules. Disabled by default. Requires higher permissions on
Azure.
-s SUBSCRIPTIONS, --subscriptions SUBSCRIPTIONS
[OPTIONAL] Comma separate list of subscriptions IDs. If not specified, it will try all.
-g RESOURCEGROUPS, --resourcegroups RESOURCEGROUPS
[OPTIONAL] Comma separated list of Resource Group names. If not specified, it will try all. If
specified, it will work only with a single subscription provided.
-m VMS, --vms VMS [OPTIONAL] Comma separated list of VM names. If not specified, it will try all. If specified,
it will work only with a single subscription and a single resource group provided.
-o OUTPUT, --output OUTPUT
JSON output file with results.
El software y los ejemplos de código disponibles en este repositorio se proporcionan "tal cual", sin garantía de ningún tipo, ya sea expresa o implícita. Úsalo bajo tu propio riesgo.
YES si el ataque a la IP Pública de la máquina virtual fue exitoso. Solo con las opciones de línea de comandos -r y -a.