VirusTotal es un portal en línea, propiedad de Google, que utiliza muchos motores antivirus para detectar virus y malware. Proporciona un servicio de API que utiliza Wazuh para escanear archivos hash, nombres de dominio, direcciones IP o URL. Para esta integración usamos el wazuh-integratord
componente que se ejecuta en el administrador de Wazuh. Consulte nuestra documentación de VirusTotal para obtener más información sobre esta integración.
En este caso de uso, monitoreamos un directorio en tiempo real y hacemos un escaneo VirusTotal a cada archivo nuevo o modificado recientemente. Si un archivo se clasifica como malicioso, se desencadena una respuesta activa y se elimina el archivo.
Configuración de la integración de VirusTotal
Inserte su clave API y habilite la integración de VirusTotal en el administrador de Wazuh agregando la siguiente configuración en /var/ossec/etc/ossec.conf
.
<ossec_config>
<integration>
<name>virustotal</name>
<api_key>${your_virustotal_api_key}</api_key>
<rule_id>100200,100201</rule_id>
<alert_format>json</alert_format>
</integration>
</ossec_config
En este ejemplo, limitamos el escaneo a archivos nuevos o modificados recientemente en /root
directorio debido a limitaciones en las consultas por minuto al usar una cuenta de aplicación gratuita. Para hacerlo, creamos reglas personalizadas para monitorear el /root
y utilícelos para activar la integración de VirusTotal.
Agregue las siguientes reglas personalizadas a /var/ossec/etc/rules/local_rules.xml
.
<group name="syscheck,pci_dss_11.5,nist_800_53_SI.7,">
<!-- Rules for Linux systems -->
<rule id="100200" level="7">
<if_sid>550</if_sid>
<field name="file">/root</field>
<description>File modified in /root directory.</description>
</rule>
<rule id="100201" level="7">
<if_sid>554</if_sid>
<field name="file">/root</field>
<description>File added to /root directory.</description>
</rule>
</group>
Configuración de Active Response para eliminar archivos maliciosos
Una vez que VirusTotal identifica un archivo como una amenaza, Wazuh activará una respuesta activa para eliminar el archivo del sistema
Configuración del administrador de Wazuh
Agregue los siguientes bloques al administrador de Wazuh /var/ossec/etc/ossec.conf
archivo.
<ossec_config>
<command>
<name>remove-threat</name>
<executable>remove-threat.sh</executable>
<timeout_allowed>no</timeout_allowed>
</command>
<active-response>
<disabled>no</disabled>
<command>remove-threat</command>
<location>local</location>
<rules_id>87105</rules_id>
</active-response>
</ossec_config>
La respuesta activa se desencadena por la regla 87105 que se dispara cuando VirusTotal identifica un archivo como malicioso.
Agregue las siguientes reglas personalizadas en /var/ossec/etc/rules/local_rules.xml
.
<group name="virustotal,">
<rule id="100092" level="12">
<if_sid>657</if_sid>
<match>Successfully removed threat</match>
<description>$(parameters.program) removed threat located at $(parameters.alert.data.virustotal.source.file)</description>
</rule>
<rule id="100093" level="12">
<if_sid>657</if_sid>
<match>Error removing threat</match>
<description>Error removing threat located at $(parameters.alert.data.virustotal.source.file)</description>
</rule>
</group>
Estas reglas se activan cuando se elimina un archivo malicioso mediante una respuesta activa o si se produce un error al eliminar el archivo.
Reinicie el administrador de Wazuh para aplicar los cambios de configuración.
systemctl restart wazuh-manager
Configuración del agente Wazuh para VirusTotal
Cambie la configuración de monitoreo de integridad de archivos en /var/ossec/etc/ossec.conf
para monitorear /root
en tiempo real.
<syscheck>
<directories whodata="yes">/root</directories>
</syscheck>
Agregue el siguiente script de respuesta activa en /var/ossec/active-response/bin/remove-threat.sh
.
#!/bin/bash
LOCAL=`dirname $0`;
cd $LOCAL
cd ../
PWD=`pwd`
read INPUT_JSON
FILENAME=$(echo $INPUT_JSON | jq -r .parameters.alert.data.virustotal.source.file)
COMMAND=$(echo $INPUT_JSON | jq -r .command)
LOG_FILE="${PWD}/../logs/active-responses.log"
#------------------------ Analyze command -------------------------#
if [ ${COMMAND} = "add" ]
then
# Send control message to execd
printf '{"version":1,"origin":{"name":"remove-threat","module":"active-response"},"command":"check_keys", "parameters":{"keys":[]}}\n'
read RESPONSE
COMMAND2=$(echo $RESPONSE | jq -r .command)
if [ ${COMMAND2} != "continue" ]
then
echo "`date '+%Y/%m/%d %H:%M:%S'` $0: $INPUT_JSON Remove threat active response aborted" >> ${LOG_FILE}
exit 0;
fi
fi
# Removing file
rm -f $FILENAME
if [ $? -eq 0 ]; then
echo "`date '+%Y/%m/%d %H:%M:%S'` $0: $INPUT_JSON Successfully removed threat" >> ${LOG_FILE}
else
echo "`date '+%Y/%m/%d %H:%M:%S'` $0: $INPUT_JSON Error removing threat" >> ${LOG_FILE}
fi
exit 0;
Este script recibe la información del archivo malicioso de la alerta generada por VirusTotal (87105), elimina el archivo y escribe el registro de respuestas activas.
Cambie /var/ossec/active-response/bin/remove-threat.sh
propietario y permisos.
chmod 750 /var/ossec/active-response/bin/remove-threat.sh
chown root:ossec /var/ossec/active-response/bin/remove-threat.sh
Reinicie el agente de Wazuh para aplicar los cambios de configuración.
systemctl restart wazuh-agent
Generar una alerta
Cuando se modifica un archivo en el directorio supervisado /root
, desencadena un análisis de VirusTotal y genera una alerta si se detecta como malicioso. La respuesta activa está configurada para eliminar la amenaza automáticamente.
Para comprobar que todo funciona correctamente, genera una alerta mediante el test EICAR. El resultado esperado es que el archivo se detecte como malicioso y se elimine automáticamente mediante una respuesta activa
cd /root
curl -LO http://www.eicar.org/download/eicar.com