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 :
- Le FIM détecte la modification ou l'ajout d'un fichier sur un répertoire surveillé,
- L'intégration extrait le hash du fichier,
- L'intégration réalise une requête API avec le hash du fichier pour le comparer à la base VirusTotal,
- 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
- Créer un compte sur VirusTotal.
- OS: Ubuntu 22.04
- Récupérer la clef API générée :
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"
}
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 :
L'interface web nous informe sur l'usage des appels API :