Aller au contenu

Wazuh - Détection de malwares / VirusTotal

VirusTotal est un service en ligne qui permet d'analyser des fichiers et des URL pour détecter des virus, des logiciels malveillants, des vers et toutes sortes de menaces informatiques.

Il utilise plusieurs moteurs antivirus et outils de détection de menaces pour effectuer les analyses. Les utilisateurs peuvent envoyer un fichier ou une URL sur le site web de VirusTotal, qui sera alors analysé par différents antivirus. Les résultats de l'analyse donnent une indication de la sécurité du fichier ou de l'URL en question. Ce service est largement utilisé pour la vérification rapide de potentielles menaces en ligne.

Comme le précise wikipedia, VirusTotal existe depuis 2004 et a été racheté par Google en 2012.

Wazuh

Wazuh utilise différentes techniques pour détecter les fichiers malveillants. Cependant et pour plus de résultats, il est primordial de passer par plusieurs bases qui réfèrencent les fichiers malveillants.

L'intégration VirusTotal intervient dans un second temps :

  1. Le FIM détecte la modification ou l'ajout d'un fichier sur un répertoire surveillé,
  2. L'intégration extrait le hash du fichier,
  3. L'intégration réalise une requête API avec le hash du fichier pour le comparer à la base VirusTotal,
  4. L'API répond négativement ou positivement.

Nous abordons ici :

  • La création d'un compte VirtualTotal pour la clef API
  • La création d'un fichier malveillant
  • La remontée de l'alerte sur le dashboard

Pré-requis

Configuration wazuh-server

Il faut ajouter l'intégration sur le wazuh server:

<integration>
  <name>virustotal</name>
  <api_key>XXXXXXXXX</api_key>
  <group>syscheck</group>
  <alert_format>json</alert_format>
</integration>

Vous devez remplacer XXXXXXXXX par la clef API générée précèdemment.

systemctl restart wazuh-manager

Sur le wazuh agent de la machine cible, nous surveillons le répertoire /root.

Créer un fichier malveillant

Créer un fichier malveillant sur la machine cible :

echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > /root/TestEICAR.txt

Puis pour forçer la surveillance du FIM :

systemctl restart wazuh-agent

Logs du wazuh-server

root@wazuh:/# tail -f /var/ossec/logs/integrations.log
/tmp/virustotal-1704885543-337662649.alert db236d1d2a103d6d96b8b41a08ff39c7365a59b7775cb8feb1e05f62354f5bda

root@wazuh:/# cat /var/ossec/logs/alerts/alerts.json  | jq
{
  "timestamp": "2024-01-10T12:52:04.611+0000",
  "rule": {
    "level": 5,
    "description": "File added to the system.",
    "id": "554",
    "firedtimes": 2,
    "mail": false,
    "groups": [
      "ossec",
      "syscheck",
      "syscheck_entry_added",
      "syscheck_file"
    ],
    "pci_dss": [
      "11.5"
    ],
    "gpg13": [
      "4.11"
    ],
    "gdpr": [
      "II_5.1.f"
    ],
    "hipaa": [
      "164.312.c.1",
      "164.312.c.2"
    ],
    "nist_800_53": [
      "SI.7"
    ],
    "tsc": [
      "PI1.4",
      "PI1.5",
      "CC6.1",
      "CC6.8",
      "CC7.2",
      "CC7.3"
    ]
  },
  "agent": {
    "id": "001",
    "name": "ubuntu-jammy",
    "ip": "192.168.56.30"
  },
  "manager": {
    "name": "wazuh.manager"
  },
  "id": "1704891124.664495",
  "full_log": "File '/root/TestEICAR.txt' added\nMode: realtime\n",
  "syscheck": {
    "path": "/root/TestEICAR.txt",
    "mode": "realtime",
    "size_after": "69",
    "perm_after": "rw-r--r--",
    "uid_after": "0",
    "gid_after": "0",
    "md5_after": "69630e4574ec6798239b091cda43dca0",
    "sha1_after": "cf8bd9dfddff007f75adf4c2be48005cea317c62",
    "sha256_after": "131f95c51cc819465fa1797f6ccacf9d494aaaff46fa3eac73ae63ffbdfd8267",
    "uname_after": "root",
    "gname_after": "root",
    "mtime_after": "2024-01-10T12:52:04",
    "inode_after": 21388,
    "event": "added"
  },
  "decoder": {
    "name": "syscheck_new_entry"
  },
  "location": "syscheck"
}
{
  "timestamp": "2024-01-10T12:52:07.966+0000",
  "rule": {
    "level": 12,
    "description": "VirusTotal: Alert - /root/TestEICAR.txt - 57 engines detected this file",
    "id": "87105",
    "mitre": {
      "id": [
        "T1203"
      ],
      "tactic": [
        "Execution"
      ],
      "technique": [
        "Exploitation for Client Execution"
      ]
    },
    "firedtimes": 4,
    "mail": true,
    "groups": [
      "virustotal"
    ],
    "pci_dss": [
      "10.6.1",
      "11.4"
    ],
    "gdpr": [
      "IV_35.7.d"
    ]
  },
  "agent": {
    "id": "001",
    "name": "ubuntu-jammy",
    "ip": "192.168.56.30"
  },
  "manager": {
    "name": "wazuh.manager"
  },
  "id": "1704891127.665182",
  "decoder": {
    "name": "json"
  },
  "data": {
    "virustotal": {
      "found": "1",
      "malicious": "1",
      "source": {
        "alert_id": "1704891124.664495",
        "file": "/root/TestEICAR.txt",
        "md5": "69630e4574ec6798239b091cda43dca0",
        "sha1": "cf8bd9dfddff007f75adf4c2be48005cea317c62"
      },
      "sha1": "cf8bd9dfddff007f75adf4c2be48005cea317c62",
      "scan_date": "2024-01-10 12:30:37",
      "positives": "57",
      "total": "62",
      "permalink": "https://www.virustotal.com/gui/file/131f95c51cc819465fa1797f6ccacf9d494aaaff46fa3eac73ae63ffbdfd8267/detection/f-131f95c51cc819465fa1797f6ccacf9d494aaaff46fa3eac73ae63ffbdfd8267-1704889837"
    },
    "integration": "virustotal"
  },
  "location": "virustotal"
}

Et sur le dashboard : type:video

Le lien fourni dans l'alerte met à disposition les détails.

Aller plus loin...

L'intégration VirusTotal par Wazuh n'est pas un antivirus mais une solution complémentaire à la détection de fichiers malveillants.

Par conséquent, il est impossible de détecter un fichier malveillant dans un répertoire qui n'est pas surveillés par le FIM.

VirusTotal

La version gratuite de VirusTotal impose des quotas pour son API :

wazuh_totalvirus_quotas

L'interface web nous informe sur l'usage des appels API :

wazuh_totalvirus_usage