Glossaire
Enregistrement EXECVE
L’enregistrement audit.log des arguments d’un programme exécuté, argc et a0..aN, en hexadécimal s’ils contiennent des espaces ou caractères spéciaux.
Un enregistrement EXECVE est l’enregistrement d’audit.log qui contient la liste des arguments d’un programme exécuté. Quand une règle auditd audite l’appel système execve, chaque exécution produit plusieurs enregistrements partageant le même tampon msg=audit(sec.msec:serial) : SYSCALL (qui l’a lancé, avec auid, uid, ses et exe), EXECVE (argc et un champ a0, a1… par argument), CWD (le répertoire de travail), un ou plusieurs PATH et PROCTITLE, terminés par EOE.
Les valeurs des arguments prennent trois formes. Entre guillemets doubles, c’est du texte brut. Sans guillemets, la valeur est encodée en hexadécimal parce que l’argument contient un espace, un guillemet double, un caractère de contrôle ou des octets non ASCII. Les arguments longs sont découpés en aN_len= suivi de morceaux aN[0]=, aN[1]=…, et une très longue ligne de commande peut s’étendre sur plusieurs enregistrements EXECVE du même événement.
Pourquoi c’est important en investigation
L’enregistrement EXECVE est la preuve de ligne de commande la plus précise sur un hôte Linux. Il capture les commandes tapées dans un shell root, qu’auth.log ne voit jamais, et il lève les ambiguïtés : la ligne sudo d’auth.log affiche /srv/finance/Q3 close sans dire s’il s’agit d’un argument ou de deux, alors que l’encodage hexadécimal d’EXECVE tranche la question. PROCTITLE contient aussi la ligne de commande, mais le noyau la tronque quand elle est longue : préférez EXECVE lorsque les deux existent.
Exemple
type=EXECVE msg=audit(1789381120.086:181322): argc=4 a0="tar" a1="czf" a2="/tmp/.f.tgz" a3=2F7372762F66696E616E63652F513320636C6F7365
a3 se décode en /srv/finance/Q3 close, un seul argument contenant un espace. Regroupez les enregistrements par tampon complet, pas par le seul numéro de série, qui repart de zéro à chaque démarrage.
Termes associés
- auid : l’utilisateur connecté, dans l’enregistrement SYSCALL correspondant.
- auditd : le démon et ses règles.
Linux Log Parser réassemble automatiquement les arguments hexadécimaux et découpés. Plus de détails dans l’analyse forensique des EXECVE auditd.