Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
TotalRecall — Cet outil extrait et affiche les données de la fonctionnalité Recall de Windows 11, offrant un moyen facile d'accéder aux informations sur les instantanés d'activité de votre PC. | Kitploit
Outils/GitHubGitHub/xaitax/totalrecall
Escalade de PrivilègesReconnaissanceExploitationExfiltration de DonnéesCollecte d'InformationsPost-ExploitationTests d'IntrusionRed Teaming
GitHubxaitax/totalrecall

TotalRecall

Cet outil extrait et affiche les données de la fonctionnalité Recall de Windows 11, offrant un moyen facile d'accéder aux informations sur les instantanés d'activité de votre PC.

1641211il y a 5 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt

TotalRecall Reloaded

Briser Windows Recall. Encore.

image

Lorsque Microsoft a repensé Recall avec des enclaves VBS, le chiffrement AES-256-GCM, l'authentification Windows Hello et un hôte Protected Process Light, le message était clair : les données sont verrouillées dans un coffre-fort.

Le coffre-fort est solide. Le camion de livraison ne l'est pas.

AIXHost.exe, le processus qui rend la timeline Recall, n'a pas de PPL, ni d'AppContainer, ni de vérification de l'intégrité du code. Tout processus s'exécutant sous l'utilisateur connecté peut y injecter du code et appeler les mêmes API COM que l'interface légitime. Une fois que l'utilisateur s'authentifie avec Windows Hello, les captures d'écran déchiffrées, le texte OCR et les métadonnées circulent dans AIXHost.exe sous forme d'objets COM vivants. TotalRecall Reloaded se place dans ce processus et extrait tout.

Aucun administrateur requis. Utilisateur standard. Pas d'exploit noyau. Pas de contournement crypto. Juste des appels COM.


Comment ça fonctionne

L'injection

TotalRecall Reloaded se compose de deux fichiers : un injecteur (totalrecall.exe) et une DLL de charge utile (totalrecall_payload.dll).

L'injecteur trouve AIXHost.exe via CreateToolhelp32Snapshot, alloue de la mémoire dans la cible avec VirtualAllocEx, écrit le chemin de la DLL avec WriteProcessMemory, et crée un thread distant pointant vers LoadLibraryW. Injection DLL classique. Rien de sophistiqué, car rien de sophistiqué n'est nécessaire. AIXHost.exe n'a aucune protection contre cela.

Cela fonctionne avec un privilège d'utilisateur standard. Pas d'élévation, pas de SeDebugPrivilege. La DACL Windows par défaut permet aux processus du même utilisateur un accès complet entre eux. Vérifié : le jeton s'exécute au niveau obligatoire Medium avec BUILTIN\Administrators configuré en refus seul.

Authentification

L'enclave VBS ne déchiffrera rien sans Windows Hello. L'outil ne contourne pas cela. Il oblige l'utilisateur à le faire, suit silencieusement lorsque l'utilisateur le fait, ou attend que l'utilisateur le fasse.

--launch simule Win+J via keybd_event, le raccourci clavier qui ouvre la timeline Recall. L'utilisateur voit une invite Hello (visage, empreinte digitale ou code PIN), s'authentifie, et l'enclave commence à servir les données déchiffrées. Du point de vue de l'utilisateur, Recall s'est ouvert normalement. Du nôtre, la charge utile est déjà à l'intérieur, en attente.

--stealth est le mode entièrement silencieux. Il fonctionne comme suit :

  1. Injecte dans AIXHost.exe (toujours en cours d'exécution) et patche DiscardDataAccess en un no-op
  2. Attend silencieusement que l'utilisateur ouvre Recall et s'authentifie normalement
  3. Lorsque l'utilisateur ferme Recall, Baker.dll tente de révoquer l'autorisation d'accès aux données, mais le patch la bloque
  4. AIXHost.exe se termine et redémarre. L'outil détecte le redémarrage et réinjecte dans le nouveau processus
  5. L'autorisation d'authentification persiste dans aihost.exe (la révocation a été bloquée). L'extraction commence immédiatement
  6. Pas de Win+J, pas d'invite Hello, pas d'interface visible. Jusqu'à 5 tentatives de réinjection.

--wait est la contrepartie passive de --launch. Au lieu de simuler Win+J, l'outil reste inactif pendant que l'utilisateur ouvre Recall lui-même — depuis la barre des tâches, un raccourci ou tout autre chemin. Lorsque AIXHost.exe apparaît et que l'utilisateur termine Hello naturellement, la charge utile est injectée et l'extraction commence. Utile sur une machine observée, ou lorsque la session Recall doit sembler entièrement initiée par l'utilisateur sans aucune saisie clavier synthétique.

La chaîne d'extraction

Une fois à l'intérieur de AIXHost.exe, la charge utile initialise un appartement COM avec CoInitializeEx(COINIT_APARTMENTTHREADED) et configure le transfert d'identité proxy avec CoSetProxyBlanket(EOAC_DYNAMIC_CLOAKING). C'est critique. Sans le masquage dynamique, le proxy COM ne transporte pas l'identité authentifiée vers le serveur.

L'extraction suit le même chemin que l'interface Recall légitime :

  1. Initialisation de l'enclave : DataManager.Load() déclenche le chargement de la clé de l'enclave. DataStoreManager.DecryptDatabase() (slot 37) prépare les vues déchiffrées. La charge utile interroge DataManager.DataStatus jusqu'à ce qu'il retourne 3 (déverrouillé).

  2. Énumération des entités : MemoryEntityStatics.GetLightMemoryItemsBefore() (slot 9) retourne un vecteur de références d'entités légères. Chacune porte un ID de contexte à l'offset +8. Sur une machine typique, cela retourne des centaines d'entités couvrant des jours ou des semaines d'activité.

  3. Extraction par entité : Pour chaque ID de contexte, la charge utile charge l'entité complète via ContextEngine2.TryGetEntityForId() (slot 6), la déballage via IEntityWrapper (slot 6), et QueryInterface vers IMemoryEntity. De là :

    • Métadonnées (synchrone) : titre (slot 8), ID du modèle d'application (slot 9), nom de l'application (slot 10), chemin du processus (slot 11), URL (slot 12), domaine (slot 13), URI de fichier (slot 15), horodatage (slot 7), limites de la fenêtre (slot 16). Via QI vers IMemoryEntity2/3 : capacité de restauration, temps de séjour dans l'application, temps de séjour sur le Web
    • Capture d'écran (asynchrone) : TryGetBitmapCaptureAsync() (slot 19) retourne un SoftwareBitmap. QueryInterface vers ISoftwareBitmapNative, appelle GetData(IID_IWICBitmap) pour obtenir un bitmap WIC, encoder en PNG via IWICBitmapEncoder
    • OCR + NER + IA (asynchrone) : ContextEngine2.TryGetMemoryEntityDetailsForIdAsync() (slot 8) retourne les détails de l'entité. QI vers IMemoryEntityDetails pour OcrLines (slot 7), IMemoryEntityDetails2 pour les entités textuelles NER (personnes, emails, adresses), et IMemoryEntityDetails4 pour les descriptions d'activité IA
  4. Tours de reprise : Baker.dll (la bibliothèque d'interface Recall) remplit le cache ContextEngine de manière asynchrone. Après le passage initial, la charge utile pompe les messages Windows pendant 3 secondes (boucle PeekMessage/DispatchMessage) et réessaie toute entité qui n'était pas disponible. Chaque tour donne généralement ~12 entités supplémentaires. Jusqu'à 10 tours de reprise.

Chaque appel est encapsulé dans __try/__except car une seule violation d'accès sur un appel de proxy COM tue définitivement le canal RPC vers aihost.exe. Il n'y a pas de récupération. Vous devriez redémarrer AIXHost.exe. Les wrappers SEH attrapent les plantages dus à des types de paramètres incorrects et maintiennent la session en vie.

Capacités avant authentification

Plusieurs opérations fonctionnent sans aucune authentification Hello :

Extraction de capture d'écran : RecallPrivacyIndicatorSettings (CLSID {42C63551-...}) expose GetRecentCaptureThumbnail(width, height) au slot 13. Le nom de la méthode dit "thumbnail" mais le serveur n'impose pas de limite de résolution. Passer 3840x3840 retourne la capture Recall la plus récente en pleine résolution. Le résultat IRandomAccessStream est converti en IStream via CreateStreamOverRandomAccessStream (shcore.dll) et sauvegardé en BMP.

Destruction de données : IDataStoreManager::DeleteEvents() (slot 12) efface tout l'historique des captures. Aucun paramètre, aucune authentification. L'analyse Ghidra a confirmé : le gestionnaire de suppression à FUN_1802ddd10 ne contient aucun appel à la fonction de porte d'autorisation. La vérification d'authentification n'a jamais été câblée.

Télécharger l’outil