Qu'est-ce que LinkDate dans Amcache ? (glossaire)

LinkDate est le PE TimeDateStamp. Le linker l'écrit dans le binaire au moment du build. Amcache le relit à partir de l'en-tête PE au moment de l'inventaire. C'est toute l'histoire.

Ce n'est pas un horodatage côté hôte. L'hôte n'a rien à voir avec cette valeur. Elle voyage avec le binaire. Un attaquant peut la mettre à ce qu'il veut, la laisser à zéro, ou choisir une date en 2007 pour donner au fichier l'air d'un vieux logiciel établi. Beaucoup le font.

Le contraste avec KeyLastWriteTimestamp#

KeyLastWriteTimestamp LinkDate
Source Métadonnées de registre, écrites par l'appraiser En-tête PE, écrit par le linker
L'attaquant le contrôle ? Non Oui
Répond à Quand Amcache a-t-il enregistré ceci ? Quand le binaire a-t-il été construit ?
Bon pour Approximation de la première apparition côté hôte Regroupement de campagnes de build
Résolution Secondes Secondes

Confondre ces deux valeurs est la seule erreur la plus courante avec Amcache. Le correctif est de ne jamais, jamais utiliser LinkDate pour argumenter sur le moment où un binaire est apparu sur un hôte. Voir Horodatages Amcache expliqués pour la version longue.

À quoi cela sert vraiment#

Regroupement de builds#

Triez les PE non signés par LinkDate. Cherchez 3 à 10 binaires estampillés dans la même journée ou la même heure. C'est un attaquant qui compile son kit en une seule séance et le dépose sur un ou plusieurs hôtes. Signal fort de campagne.

Import-Csv .\HOST_amcache_UnassociatedFileEntries.csv |
  Where-Object { $_.IsPeFile -eq 'True' -and -not $_.Publisher } |
  Sort-Object LinkDate |
  Select LinkDate, Hash, FullPath

Détection BYOVD#

Les pilotes dans DriverBinaries.csv avec un DriverTimeStamp d'il y a des années mais un KeyLastWriteTimestamp de cette semaine ont la signature BYOVD classique. Voir le glossaire BYOVD.

Dérive du processus de build#

« Notre CI fait toujours ses builds le lundi à 03:00. Celui-ci est mardi à 14:00. » Utile pour repérer quand un pipeline de build interne a été déplacé ou compromis.

À quoi cela ne sert pas#

  • Temps de première apparition sur l'hôte. Utilisez KeyLastWriteTimestamp.
  • Ordre d'arrivée. Deux binaires avec le même LinkDate peuvent être arrivés à des mois d'écart.
  • Identité cryptographique. Beaucoup de binaires sans rapport partagent des valeurs LinkDate, surtout zéro.

Termes liés#

Articles liés

Retour à tous les articles