Quarantaine Microsoft Defender¶
Contenu de la quarantaine¶
La quarantaine de Microsoft Defender conserve des métadonnées sur une détection ainsi que le contenu chiffré des
ressources mises en quarantaine. Juntei associe les enregistrements Entries, ResourceData et Resources pour indiquer
le libellé de la menace, l'heure de mise en quarantaine, les chemins logique et physique d'origine, les métadonnées du fichier, le propriétaire,
le Zone.Identifier d'origine du téléchargement, les empreintes et les problèmes d'intégrité.
Cet artefact peut survivre aux journaux d'événements qui avaient initialement enregistré la détection/la correction. Il peut également conserver les octets suspects exacts en vue d'une rétro-ingénierie dans un environnement isolé.
Meilleure conclusion : Defender a créé l'enregistrement de quarantaine pour la menace/ressource nommée à l'heure enregistrée. Le libellé du produit n'est pas une preuve indépendante de la présence d'un logiciel malveillant, et la mise en quarantaine seule ne prouve pas une exécution antérieure.
Emplacement et collecte¶
C:\ProgramData\Microsoft\Windows Defender\Quarantine\
Entries\{GUID}
ResourceData\<prefix>\<SHA-1>
Resources\<prefix>\<SHA-1>
Collectez l'intégralité du répertoire Quarantine. Une entrée sans fichiers de contenu/d'enregistrement correspondants reste
une métadonnée utile, mais ne permet pas d'obtenir les octets du fichier ni les empreintes calculées.
Sécurité et précautions d'analyse¶
- Le contenu extrait est probablement malveillant. Utilisez un système d'analyse isolé et ne l'exécutez jamais.
ThreatNameest la signature/classification de Defender à ce moment-là. Des faux positifs et une reclassification ultérieure sont possibles.- L'heure de mise en quarantaine est l'heure de correction/de mise en quarantaine, pas nécessairement celle du téléchargement, de la création ou de l'exécution.
- Un fichier mis en quarantaine peut avoir été détecté avant son exécution ou après celle-ci.
- Le chemin d'origine et le Zone.Identifier sont précieux, mais peuvent être absents ou contrôlés par l'attaquant.
- Des enregistrements orphelins peuvent résulter de la rétention/du nettoyage, d'une collecte incomplète ou d'une corruption.
- Juntei vérifie les tailles, les CRC, les identifiants et les empreintes ; examinez
Problemsavant de vous fier aux octets récupérés.
Analyser avec Juntei¶
Usage: juntei parse-file defender-quarantine <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find quarantine folders
-f, --file <FILE> Parse one Entries\{GUID} file
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
--extract <DIR> Extract dangerous content with a .quarantined extension
-C, --clobber Overwrite confirmed output targets
juntei parse-file defender-quarantine -d evidence/ -o quarantine.csv
juntei parse-file defender-quarantine -d evidence/ -t jsonl \
| jq '{QuarantineTime, ThreatName, Path, SHA256: .Content.SHA256, Problems}'
# Only in an isolated malware-analysis environment
juntei parse-file defender-quarantine -d evidence/ -o quarantine.csv --extract extracted/
Par exemple, tool.exe devient tool.exe.quarantined. Les flux auxiliaires incluent leur type dans
le nom, par exemple tool.exe.Zone.Identifier.quarantined. Juntei supprime également l'autorisation d'exécution.
L'extension et les autorisations réduisent le risque d'exécution accidentelle, mais les octets récupérés doivent tout de même être
traités comme un logiciel malveillant.
Champs de sortie¶
| Champ | Interprétation |
|---|---|
Record |
resource, entrée sans ressources, orphan-content ou orphan-record. Les orphelins révèlent une liaison/collecte incomplète. |
QuarantineTime |
Heure de mise en quarantaine/de correction par Defender en UTC, et non heure d'exécution. |
ThreatName, ThreatID |
Classification de Defender et identifiant numérique. À traiter comme un verdict/contexte du fournisseur. |
ResourceType |
Fichier, clé de Registre, service, élément de démarrage, tâche planifiée ou autre catégorie de ressource. |
Path, PhysicalPath |
Emplacement logique/physique d'origine. Pivot de corrélation principal ; conservez l'orthographe exacte. |
FileSize |
Taille enregistrée par les métadonnées de la ressource. À comparer avec ContentSize et la MFT. |
CreationTime, LastAccessTime, LastWriteTime |
Métadonnées capturées pour la ressource mise en quarantaine ; distinctes de l'heure de mise en quarantaine et vulnérables au timestomping. |
Attr |
Attributs de fichier enregistrés. Le statut masqué/système peut constituer un contexte utile. |
Owner |
SID issu du descripteur de sécurité récupéré ; le propriétaire n'est pas nécessairement l'utilisateur ayant exécuté le fichier. |
ZoneID, ReferrerURL, HostURL |
Zone de téléchargement et valeurs d'URL issues de Zone.Identifier. Pistes solides sur l'origine lorsqu'elles sont présentes ; l'ADS peut être absent/supprimé. |
ContentSize |
Taille réelle du contenu principal récupéré. À comparer avec la valeur enregistrée FileSize. |
MD5, SHA1, SHA256 |
Calculés à partir des octets récupérés. Utilisez SHA-256 pour l'identification moderne du contenu ; conservez-les tous pour l'interopérabilité. |
Streams |
Types/noms/tailles des flux récupérés ; peuvent inclure des ADS, des données de sécurité ou une ruche du Registre. |
ResourceID |
Identifiant reliant les enregistrements de métadonnées et de contenu de la ressource. |
EntryID |
GUID de l'entrée de quarantaine ; permet aussi de faire le lien avec l'historique Defender et les événements. |
ScanID |
Identifiant d'analyse Defender permettant de regrouper les ressources/actions. |
QuarantineFolder |
Dossier source racine/distinction entre hôtes. |
EntryFile, ContentFile, ResourceRecordFile |
Fichiers source exacts utilisés pour construire la ligne. Essentiels pour la validation. |
ExtractedFile |
Fichier principal mis en quarantaine écrit par --extract ; vide lorsqu'aucune extraction principale n'a eu lieu. Les flux auxiliaires sont écrits à côté. auto-parse -x l'indique à partir de son répertoire de sortie (./HOST1/SecurityProducts/DefenderQuarantined/…). |
Problems |
Incohérence d'intégrité, contenu manquant, désaccord d'identifiants, dommages ou contexte orphelin. Ne les masquez pas. |
JSON/JSONL conserve la ressource structurée, la liste des flux, les entrées d'enregistrement et tous les détails des relations, au lieu du texte concaténé du CSV.
Comportement de l'extraction¶
Juntei utilise le nom de fichier d'origine suivi d'une extension finale .quarantined lorsque l'entrée de quarantaine
en enregistre un. Il utilise l'identifiant du contenu pour les ressources orphelines ou autres que des fichiers, et ajoute
l'identifiant pour résoudre les collisions de noms de fichiers. Les caractères non valides dans les noms de fichiers Windows sont remplacés. Les flux
de sécurité et les flux alternatifs sont écrits à côté du fichier principal. Chaque flux de sécurité donne également lieu à un rapport
texte lisible. Juntei supprime l'autorisation d'exécution ;
un contenu existant différent n'est pas écrasé sans -C. Ces mesures réduisent les accidents, mais ne
rendent pas les octets sûrs.
Lecture du descripteur de sécurité récupéré¶
Un fichier .security.quarantined contient des métadonnées de sécurité Windows binaires ; il n'est donc pas lisible dans un
éditeur de texte. Il s'agit d'un flux de sauvegarde distinct, et non d'une autre copie de l'exécutable. Juntei le
décode automatiquement lors de l'extraction, avec parse-file defender-quarantine --extract comme avec auto-parse -x :
tool.exe.quarantined Original file content; treat as malware
tool.exe.security.quarantined Original binary security descriptor, preserved unchanged
tool.exe.security_descriptor.txt Readable ownership and permission report
Le nom du fichier texte suit le nom réel du fichier binaire, y compris un éventuel identifiant de collision. Le texte généré est de l'UTF-8 ordinaire et bénéficie des mêmes protections contre l'écrasement que les autres fichiers extraits. Il indique le nom du fichier binaire, son nombre d'octets et son SHA-256, afin que le rapport puisse être rapproché de sa source.
| Champ du rapport | Interprétation |
|---|---|
| Propriétaire et groupe principal | SID enregistrés dans le descripteur. Les SID connus reçoivent des noms tels que BUILTIN\Administrators ou NT AUTHORITY\SYSTEM. Les autres SID restent non résolus ; un RID familier ne suffit pas à nommer un compte local/de domaine. Le propriétaire ne prouve pas qui a créé ou exécuté un fichier. |
| Indicateurs de contrôle | Indicateurs numériques d'origine et leurs noms, y compris la présence d'ACL, l'héritage et la protection. |
| DACL | Entrées de contrôle d'accès (ACE) ordonnées : type autorisation/refus, SID du compte, masque d'autorisations, droits et indicateurs d'héritage. Il s'agit d'entrées enregistrées, et non d'un calcul de l'accès effectif pour le jeton d'un utilisateur. |
| SACL | Entrées d'audit ou d'intégrité obligatoire enregistrées. Les indicateurs d'audit des réussites/échecs décrivent une configuration, et non un historique des accès. L'absence de SACL n'établit pas que tout audit était désactivé. |
| GUID d'objet | GUID facultatifs pour les ACE propres à un objet ; les droits propres à l'objet sont conservés sous forme numérique plutôt que d'être présentés à tort comme des droits sur les fichiers. |
| SDDL | Représentation en Security Descriptor Definition Language du propriétaire, du groupe et des entrées d'ACL prises en charge. Consultez séparément les indicateurs de contrôle. Juntei n'émet pas de chaîne SDDL partielle si un composant est endommagé ou non pris en charge. |
| État du décodage et problèmes | complete ou incomplete, avec les raisons. Les ACE non prises en charge conservent leur forme hexadécimale brute dans le rapport. Le binaire d'origine est toujours conservé lorsque l'extraction réussit. Les problèmes de décodage apparaissent également dans le champ Problems de l'enregistrement de quarantaine. |
Une DACL absente, une DACL NULL et une DACL vide sont signalées séparément. Une DACL absente ou NULL n'impose aucune restriction d'accès discrétionnaire ; une DACL vide ne contient aucune ACE accordant l'accès. Les autres vérifications d'accès et privilèges de Windows restent pertinents. Les ACE héritées et « inherit-only » restent explicitement signalées.
Par exemple, une entrée accordant un contrôle total hérité aux Administrateurs peut apparaître ainsi :
Entry 1: ALLOW (type 0x00)
Flags: 0x10 (INHERITED_ACE)
Account: S-1-5-32-544 (BUILTIN\Administrators)
Access mask: 0x001F01FF
Rights: Full control (FILE_ALL_ACCESS)
Le décodeur fonctionne hors ligne sous Windows, macOS et Linux, sans API Windows, Python ni résolution de comptes. Il décode les ACE de base d'autorisation/refus/audit/alarme, les ACE d'objet et les étiquettes d'intégrité obligatoire. Les ACE conditionnelles, de rappel (callback), d'attribut de ressource et les autres ACE non prises en charge sont explicitement identifiées et conservées sous forme brute ; leurs conditions d'accès ne sont pas évaluées. Un descripteur endommagé n'interrompt pas l'extraction des autres flux.
Stratégie d'investigation¶
- Partez de
ThreatName,Path,QuarantineTime,EntryIdet des empreintes. - Validez
Problemset comparez la taille enregistrée avec le contenu récupéré. - Pivotez sur le SHA-256 vers d'autres hôtes, l'EDR, les sandbox et les données de renseignement sur les menaces.
- Corrélez le chemin/l'heure d'origine avec
$MFT, le journal USN, Prefetch, Amcache et les journaux d'événements. - Utilisez les champs URL/zone pour enquêter sur l'accès initial, mais validez avec les preuves du navigateur, du proxy et du DNS.