Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
TotalRecall — यह उपकरण Windows 11 में Recall feature से डेटा निकालता और प्रदर्शित करता है, जो आपके PC की गतिविधि स्नैपशॉट्स के बारे में जानकारी तक पहुँचने का आसान तरीका प्रदान करता है। | Kitploit
उपकरण/GitHubGitHub/xaitax/totalrecall
विशेषाधिकार वृद्धिटोहीशोषणडेटा निष्कासनजानकारी एकत्र करनापोस्ट-शोषणपेनिट्रेशन टेस्टिंगरेड टीमिंग
GitHubxaitax/totalrecall

TotalRecall

यह उपकरण Windows 11 में Recall feature से डेटा निकालता और प्रदर्शित करता है, जो आपके PC की गतिविधि स्नैपशॉट्स के बारे में जानकारी तक पहुँचने का आसान तरीका प्रदान करता है।

रिपॉजिटरी देखें
164124 महीने पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

TotalRecall Reloaded

विंडोज रिकॉल को फिर से तोड़ना।

image

जब माइक्रोसॉफ्ट ने VBS एन्क्लेव, AES-256-GCM एन्क्रिप्शन, विंडोज हैलो ऑथेंटिकेशन और प्रोटेक्टेड प्रोसेस लाइट होस्ट के साथ रिकॉल को फिर से डिज़ाइन किया, तो संदेश स्पष्ट था: डेटा एक तिजोरी में बंद है।

तिजोरी ठोस है। डिलीवरी ट्रक नहीं है।

AIXHost.exe, वह प्रक्रिया जो रिकॉल टाइमलाइन प्रस्तुत करती है, में PPL, AppContainer, या कोड इंटीग्रिटी प्रवर्तन नहीं है। लॉग-इन उपयोगकर्ता के रूप में चलने वाली कोई भी प्रक्रिया इसमें कोड इंजेक्ट कर सकती है और वही COM API कॉल कर सकती है जो वैध UI उपयोग करता है। एक बार जब उपयोगकर्ता विंडोज हैलो के साथ प्रमाणित हो जाता है, तो डिक्रिप्टेड स्क्रीनशॉट, OCR टेक्स्ट और मेटाडेटा AIXHost.exe के माध्यम से लाइव COM ऑब्जेक्ट के रूप में प्रवाहित होते हैं। टोटलरिकॉल रीलोडेड उस प्रक्रिया के अंदर बैठता है और सब कुछ निकालता है।

कोई एडमिन आवश्यक नहीं। मानक उपयोगकर्ता। कोई कर्नेल शोषण नहीं। कोई क्रिप्टो बाईपास नहीं। सिर्फ COM कॉल।


यह कैसे काम करता है

इंजेक्शन

टोटलरिकॉल रीलोडेड दो फाइलें हैं: एक इंजेक्टर (totalrecall.exe) और एक पेलोड DLL (totalrecall_payload.dll)।

इंजेक्टर CreateToolhelp32Snapshot के माध्यम से AIXHost.exe ढूंढता है, VirtualAllocEx के साथ लक्ष्य में मेमोरी आवंटित करता है, WriteProcessMemory के साथ DLL पथ लिखता है, और LoadLibraryW पर इंगित एक रिमोट थ्रेड उत्पन्न करता है। क्लासिक DLL इंजेक्शन। कुछ फैंसी नहीं, क्योंकि कुछ फैंसी की आवश्यकता नहीं है। AIXHost.exe के पास इसके खिलाफ शून्य सुरक्षा है।

यह मानक उपयोगकर्ता विशेषाधिकार से काम करता है। कोई एलिवेशन नहीं, कोई SeDebugPrivilege नहीं। डिफ़ॉल्ट विंडोज DACL एक ही उपयोगकर्ता की प्रक्रियाओं को एक-दूसरे तक पूर्ण पहुंच की अनुमति देता है। सत्यापित: टोकन मीडियम अनिवार्य स्तर पर चलता है जिसमें BUILTIN\Administrators केवल-अस्वीकार पर सेट है।

प्रमाणीकरण

VBS एन्क्लेव विंडोज हैलो के बिना कुछ भी डिक्रिप्ट नहीं करेगा। उपकरण उसे बायपास नहीं करता। यह उपयोगकर्ता को ऐसा करने के लिए मजबूर करता है, जब उपयोगकर्ता ऐसा करता है तो चुपचाप साथ चलता है, या उपयोगकर्ता के ऐसा करने की प्रतीक्षा करता है।

--launch keybd_event के माध्यम से Win+J का अनुकरण करता है, वह कीबोर्ड शॉर्टकट जो रिकॉल टाइमलाइन खोलता है। उपयोगकर्ता एक हैलो प्रॉम्प्ट (चेहरा, फिंगरप्रिंट या PIN) देखता है, प्रमाणित करता है, और एन्क्लेव डिक्रिप्टेड डेटा परोसना शुरू कर देता है। उपयोगकर्ता के दृष्टिकोण से, रिकॉल सामान्य रूप से खुला। हमारे दृष्टिकोण से, पेलोड पहले से अंदर है, प्रतीक्षा कर रहा है।

--stealth पूरी तरह से मूक मोड है। यह इस प्रकार काम करता है:

  1. AIXHost.exe (हमेशा चल रहा) में इंजेक्ट करता है और DiscardDataAccess को नो-ऑप में पैच करता है
  2. उपयोगकर्ता द्वारा सामान्य रूप से रिकॉल खोलने और प्रमाणित करने के लिए चुपचाप प्रतीक्षा करता है
  3. जब उपयोगकर्ता रिकॉल बंद करता है, तो Baker.dll डेटा एक्सेस अनुदान को रद्द करने का प्रयास करता है, लेकिन पैच इसे अवरुद्ध करता है
  4. AIXHost.exe बंद हो जाता है और पुनः शुरू होता है। उपकरण पुनःआरंभ का पता लगाता है और नई प्रक्रिया में पुनः इंजेक्ट करता है
  5. प्रमाणीकरण अनुदान aihost.exe में बना रहता है (रद्दीकरण अवरुद्ध हो गया था)। निष्कर्षण तुरंत शुरू होता है
  6. कोई Win+J नहीं, कोई हैलो प्रॉम्प्ट नहीं, कोई दृश्य UI नहीं। 5 पुनः इंजेक्शन प्रयासों तक।

--wait --launch का निष्क्रिय समकक्ष है। Win+J का अनुकरण करने के बजाय, उपकरण निष्क्रिय बैठता है जबकि उपयोगकर्ता स्वयं रिकॉल खोलता है — टास्कबार से, शॉर्टकट से, या किसी अन्य पथ से। जब AIXHost.exe प्रकट होता है और उपयोगकर्ता स्वाभाविक रूप से हैलो पूरा करता है, तो पेलोड इंजेक्ट किया जाता है और निष्कर्षण शुरू होता है। निगरानी में रखे जा रहे मशीन पर उपयोगी, या जब रिकॉल सत्र को पूरी तरह से उपयोगकर्ता द्वारा शुरू किया गया दिखने की आवश्यकता होती है, बिना किसी सिंथेटिक कीबोर्ड इनपुट के।

निष्कर्षण श्रृंखला

एक बार AIXHost.exe के अंदर, पेलोड CoInitializeEx(COINIT_APARTMENTTHREADED) के साथ एक COM अपार्टमेंट प्रारंभ करता है और CoSetProxyBlanket(EOAC_DYNAMIC_CLOAKING) के साथ प्रॉक्सी पहचान अग्रेषण सेट करता है। यह महत्वपूर्ण है। गतिशील क्लोकिंग के बिना, COM प्रॉक्सी सर्वर तक प्रमाणित पहचान नहीं ले जाता है।

निष्कर्षण उसी पथ का अनुसरण करता है जो वैध रिकॉल UI उपयोग करता है:

  1. एन्क्लेव प्रारंभ: DataManager.Load() एन्क्लेव कुंजी लोडिंग को ट्रिगर करता है। DataStoreManager.DecryptDatabase() (स्लॉट 37) डिक्रिप्टेड व्यू तैयार करता है। पेलोड DataManager.DataStatus को तब तक पोल करता है जब तक यह 3 (अनलॉक) न लौटाए।
  2. एंटिटी गणना: MemoryEntityStatics.GetLightMemoryItemsBefore() (स्लॉट 9) हल्के एंटिटी संदर्भों का एक वेक्टर लौटाता है। प्रत्येक में ऑफसेट +8 पर एक संदर्भ ID होती है। एक सामान्य मशीन पर, यह गतिविधि के दिनों या हफ्तों तक फैली सैकड़ों एंटिटी लौटाता है।
  3. प्रति-एंटिटी निष्कर्षण: प्रत्येक संदर्भ ID के लिए, पेलोड ContextEngine2.TryGetEntityForId() (स्लॉट 6) के माध्यम से पूर्ण एंटिटी लोड करता है, IEntityWrapper (स्लॉट 6) के माध्यम से इसे अनरैप करता है, और IMemoryEntity के लिए QueryInterface करता है। वहां से:
    • मेटाडेटा (समकालिक): शीर्षक (स्लॉट 8), ऐप मॉडल ID (स्लॉट 9), ऐप नाम (स्लॉट 10), प्रक्रिया पथ (स्लॉट 11), URL (स्लॉट 12), डोमेन (स्लॉट 13), फ़ाइल URI (स्लॉट 15), टाइमस्टैम्प (स्लॉट 7), विंडो सीमाएँ (स्लॉट 16)। IMemoryEntity2/3 पर QI के माध्यम से: पुनर्स्थापना क्षमता, ऐप निवास समय, वेब निवास समय
    • स्क्रीनशॉट (अतुल्यकालिक): TryGetBitmapCaptureAsync() (स्लॉट 19) एक लौटाता है। पर , WIC बिटमैप प्राप्त करने के लिए कॉल करें, के माध्यम से PNG के रूप में एनकोड करें

प्रत्येक कॉल __try/__except में लपेटा जाता है क्योंकि COM प्रॉक्सी कॉल पर एक भी एक्सेस उल्लंघन aihost.exe के लिए RPC चैनल को स्थायी रूप से मार देता है। कोई पुनर्प्राप्ति नहीं है। आपको AIXHost.exe को पुनरारंभ करना होगा। SEH रैपर गलत पैरामीटर प्रकारों से क्रैश को पकड़ते हैं और सत्र को जीवित रखते हैं।

प्री-ऑथ क्षमताएँ

कई ऑपरेशन बिना किसी हैलो प्रमाणीकरण के काम करते हैं:

स्क्रीनशॉट निष्कर्षण: RecallPrivacyIndicatorSettings (CLSID {42C63551-...}) स्लॉट 13 पर GetRecentCaptureThumbnail(width, height) को उजागर करता है। विधि का नाम "thumbnail" कहता है लेकिन सर्वर रिज़ॉल्यूशन कैप लागू नहीं करता है। 3840x3840 पास करने से पूर्ण रिज़ॉल्यूशन पर सबसे हालिया रिकॉल कैप्चर लौटता है। IRandomAccessStream परिणाम को CreateStreamOverRandomAccessStream (shcore.dll) के माध्यम से IStream में बदला जाता है और BMP के रूप में डंप किया जाता है।

डेटा विनाश: IDataStoreManager::DeleteEvents() (स्लॉट 12) संपूर्ण कैप्चर इतिहास को मिटा देता है। कोई पैरामीटर नहीं, कोई प्रमाणीकरण नहीं। Ghidra विश्लेषण ने पुष्टि की: FUN_1802ddd10 पर डिलीट हैंडलर में प्राधिकरण गेट फ़ंक्शन के लिए शून्य कॉल हैं। प्रमाणीकरण जांच कभी वायर्ड नहीं की गई थी।

मेटाडेटा प्रकटीकरण: स्टोरेज पथ (उपयोगकर्ता-विशिष्ट UKP GUID सहित), डेटाबेस आकार, प्रतिधारण नीति, कैप्चर स्थिति, और सबसे हालिया कैप्चर संदर्भ ID सभी IDataStoreManagerStatics और RecallPrivacyIndicatorSettings के माध्यम से बिना प्रमाणीकरण के पढ़ने योग्य हैं।


उपयोग

image``` totalrecall.exe --launch Open Recall, trigger Hello, extract everything totalrecall.exe --stealth Silent extraction (patches auth revocation, waits) totalrecall.exe --wait Wait for user to manually open Recall totalrecall.exe --preauth Grab latest screenshot + settings (no Hello) totalrecall.exe --search "password" Search OCR text in latest extraction totalrecall.exe --destroy Wipe all Recall data (confirmation required, no Hello)

root@kitploit:~
| मोड | प्रमाणीकरण आवश्यक | यह क्या करता है |
|------|:---:|-------------|
| `--launch` | नमस्ते | Win+J का अनुकरण करें, उपयोगकर्ता प्रमाणित करता है, पूर्ण निष्कर्षण |
| `--stealth` | निष्क्रिय | प्रमाणीकरण निरस्तीकरण को पैच करता है, Recall को प्रमाणित करने के लिए उपयोगकर्ता की प्रतीक्षा करता है, चुपचाप निकालता है |
| `--wait` | नमस्ते | उपयोगकर्ता के स्वाभाविक रूप से Recall खोलने की प्रतीक्षा करें, फिर निकालें |
| `--preauth` | **नहीं** | नवीनतम स्क्रीनशॉट + सभी सेटिंग्स |
| `--search` | नहीं | नवीनतम निष्कर्षण में केस-असंवेदनशील OCR टेक्स्ट खोज |
| `--destroy` | **नहीं** | `DeleteEvents()`, अपरिवर्तनीय, पुष्टि करने के लिए DESTROY टाइप करना आवश्यक है |

### उदाहरण आउटपुट

**`--stealth` (पहला रन, उपयोगकर्ता की प्रतीक्षा):**```
[+] Target: AIXHost.exe  PID 8648 (stealth mode)
[*] Patching auth revocation...
[+] Waiting for Recall session...
[+] Recall session detected
[*] Waiting for user to close Recall...
[*] Recall closed, waiting for AIXHost to respawn...
[+] Extracting from AIXHost PID 26208
[+] Payload active
[*] Extracting
[##############################] 384/384 entities

EXTRACTION COMPLETE  6 min 51 sec
Screenshots       192   328.8 MB
OCR Text          184   535.2 KB
Metadata (CSV)    384    97.4 KB

--stealth (बाद का रन, कैश्ड सत्र):``` [+] Target: AIXHost.exe PID 27532 (stealth mode) [] Patching auth revocation... [+] Waiting for Recall session... [+] Cached session found, extracting... [] Extracting [##############################] 398/398 entities

root@kitploit:~
**`--launch`:**```
[+] Target: AIXHost.exe  PID 14636  Memory 60 MB
[*] Triggering Recall via Win+J...
[*] Waiting for Hello authentication authenticating
[+] Recall ready  PID 14636  Memory 242 MB
[*] Extracting
[##############################] 212/212 entities

EXTRACTION COMPLETE  3 min 59 sec
Screenshots       104   184.0 MB

--preauth (कोई Hello आवश्यक नहीं):``` [+] Target: AIXHost.exe PID 27532 (pre-auth mode) [*] Injecting payload (pre-auth only)... [+] Payload active

PRE-AUTH EXTRACTION COMPLETE 0 min 1 sec

Screenshot 4K (3840x2464) 36.1 MB

Settings Storage Path C:\Users<user>\AppData\Local\CoreAIPlatform.00\UKP{...} Storage Size 178.3 MB Capture Count 0 Retention Days 90

root@kitploit:~
**`--search`:**```
Searching for: "password"
In: extraction_20260406_152736

[1] === [12] ctxId=90443 Settings | Chrome ===
     Saved passwords and passkeys
[2] === [47] ctxId=91201 inbox | Thunderbird ===
     Your temporary password has been reset

आउटपुट निर्देशिका```

extraction_20260404_143052/ screenshots/ Full-resolution decrypted PNGs screenshots/*.txt Per-image OCR text thumbnails/ Thumbnail PNGs (fallback when full screenshot unavailable) ocr_text.txt Combined OCR text for all captures recall_data.csv Structured metadata settings.txt Storage path, size, retention, capture state latest_capture_4k.bmp Pre-auth screenshot of most recent capture extraction.log Detailed extraction log with timing

root@kitploit:~
## निर्माण

**आवश्यकताएँ:** Visual Studio with ARM64 C++ tools, Windows 11 ARM64 with Recall enabled.```
make.bat

उत्पन्न करता है totalrecall.exe और totalrecall_payload.dll। दोनों को चलाते समय एक ही निर्देशिका में होना चाहिए।


रिकॉल का विश्वास मॉडल```

VTL1 (Secure World) +--------------------------------------------------+ | VBS Enclave: AES-256-GCM, sealed keys | | snapshot_support.dll / storage_support.dll | | Keys never leave here. Crypto is sound. | +--------------------------------------------------+ ^ CallEnclave | VTL0 (Normal World) +--------------------------------------------------+ | aihost.exe (PPL, Signer=5) | | +-- Microsoft.Windows.AI.Platform.dll (6.9 MB) | | 44 methods on IDataStoreManager alone | | Enclave bridge. Protected. Can't touch it. | | | | AIXHost.exe (NO PROTECTION) | | +-- Baker.dll: OCR, NER, AI classification | | +-- Receives decrypted data for rendering | | +-- CreateRemoteThread = game over | +--------------------------------------------------+

root@kitploit:~
The key hierarchy: Hello -> NGC ECDH P-384 (TPM-backed) -> VTL1 mutual auth -> enclave-sealed key material -> per-page AES-256-GCM with random nonces and page-number AAD. Six layers of key derivation. The cryptography is genuinely solid.

The problem is what happens after decryption. The plaintext crosses into `AIXHost.exe`, an unprotected, injectable, same-user process. The enclave doesn't distinguish between `Baker.dll` and injected code. It can't.

---

## Key Findings

### The Trust Boundary Ends Too Early

Microsoft's [architecture blog](https://blogs.windows.com/windowsexperience/2024/09/27/update-on-recall-security-and-privacy-architecture/) states that "VBS एन्क्लेव के बाहर की प्रक्रियाएं स्नैपशॉट या एन्क्रिप्शन कुंजियों तक कभी सीधे एक्सेस नहीं पाती हैं" और यह डिज़ाइन "लैटेंट मैलवेयर द्वारा उपयोगकर्ता प्रमाणीकरण के साथ चुपके से डेटा चुराने के प्रयासों को प्रतिबंधित करता है।"

In practice, `AIXHost.exe` receives every decrypted screenshot and OCR result as a live COM object. There's no per-caller verification inside the process. No "are you Baker.dll?" check. If you're in the process, you're trusted. The security boundary is the VBS enclave and the PPL, not the rendering process. Decrypted data is one `CreateRemoteThread` away from any same-user application.

### The IResponse4 Access Control Bypass

A direct authorization gap.

When you call `ContextDataSource.Search()` and get back an `IResponse`, the natural path is `IResponse.get_Items()` (slot 9) to get the results. On a fresh session, this returns `0x80005473`, a custom Recall-specific error code. The server is deliberately rejecting the call. `IResponse2.ItemsAfterIndex()` returns the same error. Access control is working.

But the `IResponse` object implements four interface versions. `IResponse4.get_UnfilledItems()` (slot 9 on a different IID) returns the same underlying data collection with no access check at all.```
IResponse.get_Items()           -> 0x80005473 (ACCESS DENIED)
IResponse2.ItemsAfterIndex()    -> 0x80005473 (ACCESS DENIED)
IResponse4.get_UnfilledItems()  -> S_OK (all entities returned)

Same data. Different interface version. No authorization. The method was intended for internal lazy-loading in the search pipeline. The security review caught get_Items and ItemsAfterIndex, but missed get_UnfilledItems. This is the pattern that makes security engineering hard: the check exists on one code path (which means someone decided it was needed), and is missing on another.

उन वस्तुओं से, प्रत्येक इकाई का संदर्भ ID ContextEngine2.TryGetEntityForId() की ओर ले जाता है, जो स्क्रीनशॉट, OCR और मेटाडेटा सहित पूर्ण इकाई को लोड करता है। एन्क्लेव अनुरोध पर सब कुछ डिक्रिप्ट करता है।

The DiscardDataAccess Bypass

जब उपयोगकर्ता Recall विंडो बंद करता है, तब Baker.dll IDataProtectionManager3::DiscardDataAccess() को कॉल करता है ताकि aihost.exe में डेटा एक्सेस अनुदान को स्पष्ट रूप से रद्द किया जा सके। इसीलिए प्रमाणीकरण उपयोगकर्ता के सामान्य Recall सत्र के बाद बना नहीं रहता: Baker.dll स्वयं के बाद सफाई करता है।

बाईपास: AIXHost.exe के अंदर इंजेक्ट किया गया कोड COM प्रॉक्सी vtable को पैच कर सकता है ताकि DiscardDataAccess (स्लॉट 8) को एक no-op फ़ंक्शन से बदल दिया जाए। एक VirtualProtect कॉल, एक पॉइंटर लेखन। जब उपयोगकर्ता Recall बंद करता है, Baker.dll पैच किए गए स्लॉट को कॉल करता है, कुछ नहीं होता है, और अनुदान aihost.exe में सक्रिय रहता है। कोई भी बाद का AIXHost.exe इंस्टेंस चुपचाप कैश किए गए अनुदान को प्राप्त कर लेता है।

व्यवहार में, --stealth AIXHost.exe (जो हमेशा चल रहा होता है) में पैच तैनात करता है और प्रतीक्षा करता है। अगली बार जब उपयोगकर्ता सामान्य रूप से Recall खोलता और बंद करता है, तो सफाई दबा दी जाती है और डेटा एक्सेस अनुदान बना रहता है। उपकरण एक्सेस का पता लगाता है, स्वचालित पुनः-इंजेक्शन (प्रत्येक नए इंस्टेंस को फिर से पैच करना) के माध्यम से AIXHost प्रक्रिया पुनर्प्रारंभ को संभालता है, और चुपचाप सब कुछ निकाल लेता है। पैच प्रति-प्रक्रिया और प्रति-रन है: यह वर्तमान निष्कर्षण सत्र की रक्षा करता है। उपकरण से बाहर निकलने के बाद बाद में Recall का उपयोग सामान्य व्यवहार पर लौट आता है।

DeleteEvents: बिना प्रमाणीकरण के विनाश

IDataStoreManager::DeleteEvents() बिना Windows Hello के पूरे कैप्चर इतिहास को मिटा देता है। Ghidra ने पुष्टि की: डिलीट हैंडलर में प्राधिकरण गेट फ़ंक्शन के लिए शून्य कॉल हैं। प्रमाणीकरण जांच को कभी भी डिलीट पथ में तार नहीं किया गया था। एक हमलावर जो डेटा नहीं पढ़ सकता, वह फिर भी उसे नष्ट कर सकता है। मानक उपयोगकर्ता से एंटी-फोरेंसिक्स।

प्री-ऑथ स्क्रीनशॉट निष्कर्षण

RecallPrivacyIndicatorSettings.GetRecentCaptureThumbnail आपके अनुरोधित रिज़ॉल्यूशन पर सबसे हालिया Recall स्क्रीनशॉट लौटाता है। यह विधि टास्कबार में छोटे प्राइवेसी इंडिकेटर के लिए अभिप्रेत है। किसी ने भी रिज़ॉल्यूशन को सीमित नहीं किया। कोई भी समान-उपयोगकर्ता प्रक्रिया चुपचाप वह ले सकती है जो अंतिम बार स्क्रीन पर था, बिना Hello की आवश्यकता के।

GetSecureStorageInfo के माध्यम से प्री-ऑथ कैप्चर गणना

GetWindowCaptureCount (स्लॉट 26) Hello के बिना E_ACCESSDENIED लौटाता है। लेकिन GetSecureStorageInfo (स्लॉट 27) एक StorageInfo संरचना लौटाता है जिसमें बिल्कुल वही डेटा होता है, बिना प्रमाणीकरण की आवश्यकता के। संरचना में NumberOfItems (कैप्चर गणना) और Size (एन्क्रिप्टेड स्टोरेज का कुल बाइट्स) शामिल हैं। एक हमलावर बिना किसी प्रमाणीकरण के वास्तविक समय में Recall गतिविधि को ट्रैक करने के लिए इसकी निगरानी कर सकता है।

प्रमाणीकरण स्थिति दृढ़ता

एक बार Hello पूरा हो जाने के बाद, प्रमाणीकरण स्थिति पूरे Windows सत्र के लिए aihost.exe (PPL) में कैश हो जाती है। AIXHost.exe को मारने और पुनरारंभ करने से यह साफ़ नहीं होता है। एक हमलावर उपयोगकर्ता के स्वाभाविक रूप से Recall खोलने की प्रतीक्षा कर सकता है, फिर घंटों बाद चुपचाप डेटा निकाल सकता है। कोई अतिरिक्त संकेत नहीं, कोई दृश्य विंडो नहीं, कोई उपयोगकर्ता जागरूकता नहीं के साथ असीमित पुनः-निष्कर्षण।


Recall क्या कैप्चर करता है (और क्या निकाला जाता है)

Recall सिर्फ स्क्रीनशॉट नहीं लेता। यह आपके कंप्यूटर पर आपके द्वारा किए जाने वाले हर काम का एक व्यापक व्यवहार प्रोफ़ाइल बनाता है। हर कुछ सेकंड, यह एक स्क्रीनशॉट लेता है, उस पर OCR और (माना जाता है) AI वर्गीकरण चलाता है, और परिणाम को एन्क्रिप्टेड SQLite डेटाबेस में संग्रहीत करता है।

नीचे की सभी चीज़ें दो स्वतंत्र स्रोतों से पुष्टि की गई हैं: निजी WinRT मेटाडेटा (Microsoft.Windows.AI.Platform.winmd, cppwinrt.exe के माध्यम से पार्स किया गया) और VBS एन्क्लेव बाइनरी (storage_support.dll, जिसमें पूरा डेटाबेस स्कीमा सादे टेक्स्ट स्ट्रिंग्स में है)।

प्रति-कैप्चर डेटा

नोट: नीचे दिए गए फ़ील्ड नाम WinRT मेटाडेटा और एन्क्लेव बाइनरी स्ट्रिंग्स से पुष्टि किए गए हैं। प्रत्येक फ़ील्ड में क्या है इसका विवरण API नामों और प्रकारों से अनुमानित किया गया है, और रनटाइम पर सभी की गतिशील रूप से पुष्टि नहीं की गई है।

AI-प्रोसेस्ड मेटाडेटा

नोट: उपरोक्त के समान चेतावनी। क्लास और एनम नाम WinRT मेटाडेटा और एन्क्लेव DLL स्ट्रिंग्स से गणना किए गए हैं; प्रत्येक का प्रतिनिधित्व करने वाले विवरण नामों और संदर्भ से अनुमानित किए गए हैं और प्रत्येक प्रविष्टि के लिए गतिशील रूप से सत्यापित नहीं किए गए हैं।

कच्चे कैप्चर के शीर्ष पर, Recall AI वर्गीकरण चलाता है जो उत्पन्न करता है:

  • नामित एंटिटी पहचान (10 प्रकार): PersonName, Organization, Product, Address, Location, DateTime, Event, Duration, WebUrl, EmailAddress। प्रत्येक स्रोत स्थिति के साथ OCR टेक्स्ट से निकाला गया।
  • विषय वर्गीकरण (23 श्रेणियाँ): Topic, Person, Emoji, App, FileKind, , , , , , , , , , , , , , , , , , । प्रत्येक में आत्मविश्वास स्कोर और वैकल्पिक बाउंडिंग बॉक्स।

कैप्चर पाइपलाइन

हर कुछ सेकंड, Recall की कैप्चर सेवा स्क्रीनशॉट लेने से पहले 12 नीतियों का मूल्यांकन करती है:

GameModeActive, BatterySaverActive, UserActivityIdle, UserPresenceIdle, StorageLow, PrivateWindow, BlockedByContentProtection, BlockedAppId, BlockedExecutable, BlockedURL, BlockedContentFilePath, BitLockerDisabled

यदि इनमें से कोई भी ट्रिगर नहीं होता है, तो यह कैप्चर करता है। प्रति-कैप्चर इनपुट संरचना (WinRT मेटाडेटा से):``` WindowData { WindowId, Foreground, Title, Bounds, Minimized, PrivateState, InputScopePrivacy AppData { AppUserModelId, ProcessPath, IconUri, AppName, TileId RemoteClient, IsBrowserWindow } RestoreData { WebUrl, FilePath, ActivationUri, ActivityId, WebIconUri FileObjectId, VolumeId // NTFS persistent file identifiers SensitivityLabelData { State, Labels } } }

root@kitploit:~
### The Database

The main database (`ukg.db`) uses SQLite SEE with AES-256-GCM encryption. Schema confirmed from `storage_support.dll` (the VBS enclave binary that contains the CREATE TABLE statements in plaintext):

**Core tables (17):**```
WindowCapture              Id, Name, ImageToken, IsForeground, WindowId, WindowBounds,
                           WindowTitle, Properties, IsProcessed, Retry, ActivationUri,
                           ActivityId, FallbackUri, TimeStamp, DwellTime
WindowCaptureAppRelation   WindowCaptureId, AppId, IsBackground
WindowCaptureWebRelation   WindowCaptureId, WebId, IsBackground
WindowCaptureFileRelation  WindowCaptureId, FileId
WindowCaptureTopicRelation WindowCaptureId, TopicId, Score (float)
WindowCaptureTextIndex     FTS5 virtual table (WindowCaptureId, WindowTitle, OcrText)
App                        Id, WindowsAppId, IconUri, Name, Path, TileId, Properties
Web                        Id, Domain, Uri, IconUri, Properties
File                       Id, Path, Name, Extension, Kind, Type, ObjectId, VolumeId
Topic                      Id, Title, Properties
ScreenRegion               Id, WindowCaptureId, RegionKind, OcrText, Bounds
AppDwellTime               Id, WindowsAppId, HourOfDay, DayOfWeek, HourStartTimestamp, DwellTime
WebDomainDwellTime         Domain, HourOfDay, DayOfWeek, HourStartTimestamp, DwellTime
SearchHistory              SessionId, CorrelationId, TimeStamp, Kind, Text, Language
SearchFeedback             SessionId, CorrelationId, TimeStamp, Kind, Text, Language,
                           ItemChosenEventId, FeedbackType
IdTable                    NextId
_MigrationMetadata         Id, Version

सिमैंटिक खोज सूचकांक (SemanticTextStore.sidb / SemanticImageStore.sidb):``` si_items Core embedding storage si_embedding_metadata Embedding type and source mapping si_diskann_graph DiskANN approximate nearest neighbor graph si_diskann_references Graph edge references si_diskann_config Index configuration si_diskann_info Index statistics si_application_values Application-level settings

root@kitploit:~
एक सामान्य कार्यदिवस में, सैकड़ों कैप्चर जमा होते हैं। डिफ़ॉल्ट प्रतिधारण 90 दिन है जिसमें 75 GB स्टोरेज सीमा है। हर खोला गया ईमेल, हर संपादित दस्तावेज़, हर देखी गई वेबसाइट, स्क्रीन पर हर टर्मिनल कमांड, हर दिखाई देने वाली संदेश वार्तालाप। सभी OCR-प्रसंस्कृत, इकाई-निकाले गए, विषय-वर्गीकृत, और अर्थगत रूप से अनुक्रमित।

आपका संपूर्ण डिजिटल जीवन, अनुक्रमित और खोजने योग्य। जैसा इरादा था।

---

## माइक्रोसॉफ्ट को क्या सही लगा

VBS enclave बिल्कुल मजबूत है। की सामग्री कभी VTL1 नहीं छोड़ती। प्रति-पृष्ठ AES-256-GCM यादृच्छिक nonces के साथ पाठ्यपुस्तक के अनुसार सही है। `aihost.exe` PPL सुरक्षा प्रभावी है, कर्नेल इंजेक्शन को रोकता है। CFG ARM64 पर व्यापक है। SQL क्वेरी पूरी तरह से पैरामीटराइज़्ड हैं (दस इंजेक्शन पेलोड, शून्य दुष्प्रभाव)। प्रमाणीकरण मॉडल स्टेटलेस और रेस-फ्री है (हजारों प्रोब, शून्य बाईपास)।

मूलभूत समस्या क्रिप्टो, enclave, प्रमाणीकरण, या PPL नहीं है। यह डिक्रिप्टेड सामग्री को रेंडरिंग के लिए एक असुरक्षित प्रक्रिया में भेजना है। तिजोरी का दरवाजा टाइटेनियम है। इसके बगल की दीवार ड्रायवॉल है।

---

## जिम्मेदार प्रकटीकरण

यह शोध Microsoft Security Response Center (MSRC) को जिम्मेदारी से प्रकट किया गया था।

### समयरेखा

| दिनांक | घटना |
|------|-------|
| 2024-06-07 | मूल [TotalRecall](https://github.com/xaitax/TotalRecall) जारी (पूर्व-एन्क्रिप्शन Recall) |
| 2024-06-13 | माइक्रोसॉफ्ट ने Recall लॉन्च में देरी की, VBS enclaves के साथ पुनर्डिज़ाइन की घोषणा की |
| 2025-04 | Recall VBS enclaves, एन्क्रिप्शन, Hello प्रमाणीकरण के साथ फिर से लॉन्च हुआ |
| 2026-03-06 | MSRC रिपोर्ट प्रस्तुत: पूरा लेख, स्रोत कोड, बिल्ड निर्देश |
| 2026-03-09 | MSRC ने केस 109586 खोला, स्थिति: समीक्षा / पुनरुत्पादन |
| 2026-03-27 | MSRC: 'इंजीनियरिंग टीम वर्तमान में जांच के अंतिम चरण में है' |
| 2026-04-03 | MSRC ने केस को **कोई भेद्यता नहीं** के रूप में बंद किया: 'वर्तमान दस्तावेजीकृत सुरक्षा डिज़ाइन के भीतर संचालित होता है' |
| 2026-04-09 | TotalRecall Reloaded सार्वजनिक रिलीज़ |

### माइक्रोसॉफ्ट का रुख

अपनी इंजीनियरिंग टीमों के साथ समीक्षा के बाद, MSRC ने निर्धारित किया कि 'देखा गया व्यवहार Recall के वर्तमान, दस्तावेजीकृत सुरक्षा डिज़ाइन के भीतर संचालित होता है' और 'प्रदर्शित एक्सेस पैटर्न इच्छित सुरक्षाओं और मौजूदा नियंत्रणों के अनुरूप हैं।' उन्होंने अपने [आर्किटेक्चर ब्लॉग](https://blogs.windows.com/windowsexperience/2024/09/27/update-on-recall-security-and-privacy-architecture/) का हवाला दिया, विशेष रूप से कि प्राधिकरण 'डेटा चुराने के लिए उपयोगकर्ता प्रमाणीकरण के साथ सवारी करने की कोशिश कर रहे गुप्त मैलवेयर के प्रयासों को प्रतिबंधित करता है' और 'VBS Enclaves के बाहर की प्रक्रियाएं कभी भी सीधे स्नैपशॉट या एन्क्रिप्शन कुंजियों तक पहुंच प्राप्त नहीं करती हैं और प्राधिकरण के बाद केवल enclave से लौटाए गए डेटा को प्राप्त करती हैं।'

मामले को कोई भेद्यता नहीं के रूप में बंद कर दिया गया।

यहां दर्ज प्री-ऑथ निष्कर्ष (अप्रमाणित डेटा विनाश, स्क्रीनशॉट निष्कर्षण) केस बंद होने के बाद अनुवर्ती शोध के दौरान खोजे गए थे।

---

## परीक्षण किया गया वातावरण

| | विवरण |
|---|---|
| **OS** | Windows 11 25H2 (Build 26300.8155) |
| **आर्किटेक्चर** | ARM64 |
| **AIXHost.exe** | v2126.7602.0.0 |
| **विशेषाधिकार** | मानक उपयोगकर्ता (मध्यम अखंडता, कोई एलिवेशन नहीं) |

---

## पिछला कार्य

- [TotalRecall](https://github.com/xaitax/TotalRecall) (जून 2024), पूर्व-एन्क्रिप्शन Recall के लिए मूल Python टूल
- [केइविन ब्यूमोंट का विश्लेषण](https://doublepulsar.com/recall-stealing-everything-youve-ever-typed-or-viewed-on-your-own-windows-pc-is-now-possible-da3e12e9465e), वह शोध जिसने यह सब शुरू किया

## आभार

परीक्षण और सत्यापन के लिए [Jeff McJunkin](https://x.com/jeffmcjunkin) और [Kevin Beaumont](https://cyberplace.social/@GossiTheDog) का धन्यवाद।

---

**Alexander Hagenah ([@xaitax](https://x.com/xaitax))**
टूल डाउनलोड करें
SoftwareBitmap
ISoftwareBitmapNative
QueryInterface
GetData(IID_IWICBitmap)
IWICBitmapEncoder
  • OCR + NER + AI (अतुल्यकालिक): ContextEngine2.TryGetMemoryEntityDetailsForIdAsync() (स्लॉट 8) एंटिटी विवरण लौटाता है। IMemoryEntityDetails पर QI OcrLines (स्लॉट 7) के लिए, IMemoryEntityDetails2 NER टेक्स्ट एंटिटी (लोग, ईमेल, पते) के लिए, और IMemoryEntityDetails4 AI गतिविधि विवरण के लिए
  • पुनर्प्रयास दौर: Baker.dll (रिकॉल UI लाइब्रेरी) अतुल्यकालिक रूप से ContextEngine कैश को भरता है। प्रारंभिक पास के बाद, पेलोड 3 सेकंड के लिए विंडोज संदेश पंप करता है (PeekMessage/DispatchMessage लूप) और किसी भी एंटिटी का पुनर्प्रयास करता है जो उपलब्ध नहीं थी। प्रत्येक दौर में आमतौर पर ~12 अतिरिक्त एंटिटी मिलती हैं। 10 पुनर्प्रयास दौर तक।
  • डेटास्रोतइसमें क्या है
    स्क्रीनशॉटTryGetBitmapCaptureAsyncआपकी पूरी स्क्रीन का पूर्ण-रिज़ॉल्यूशन PNG
    आकार बदला गया स्क्रीनशॉटTryGetBitmapCaptureAsync(Size, Mode)कॉन्फ़िगर करने योग्य इंटरपोलेशन के साथ किसी भी अनुरोधित रिज़ॉल्यूशन पर स्क्रीनशॉट
    थंबनेलTryGetBitmapCaptureThumbnailAsyncकम-रिज़ॉल्यूशन पूर्वावलोकन छवि
    OCR टेक्स्टOcrText (Details3)स्क्रीन पर दिखाई देने वाली हर चीज़ का पूर्ण संयोजित OCR
    OCR पंक्तियाँOcrLines (Details1)अलग-अलग स्ट्रिंग के रूप में व्यक्तिगत OCR पंक्तियाँ
    OCR शब्दOcrWord structपिक्सेल-सटीक बाउंडिंग बॉक्स (RectInt32) के साथ हर एक शब्द
    विंडो शीर्षकget_Titleसक्रिय विंडो का शीर्षक बार टेक्स्ट
    एप्लिकेशनget_AppDisplayNameकौन सा ऐप फोकस में था (Chrome, Outlook, Terminal, ...)
    ऐप मॉडल IDget_AppUserModelIdUWP/Win32 एप्लिकेशन पहचान स्ट्रिंग
    प्रक्रिया पथget_ProcessPathपूर्ण निष्पादन योग्य पथ (C:\Program Files\...\chrome.exe)
    ऐप आइकनIMemoryEntity2.IconUriएप्लिकेशन के आइकन का पथ
    URLget_WebUrlब्राउज़र एड्रेस बार में पूरा URL
    डोमेनget_WebDomainवेबसाइट डोमेन
    फ़ेविकॉनget_WebIconUriसक्रिय वेबसाइट के लिए फ़ेविकॉन URL
    फ़ाइल पथget_FileUriसक्रिय दस्तावेज़ या फ़ाइल पथ
    विंडो स्थितिget_WindowBoundsपिक्सेल-सटीक स्क्रीन निर्देशांक: X, Y, चौड़ाई, ऊँचाई
    टाइमस्टैंपget_Timestampसटीक कैप्चर समय (100-नैनोसेकंड सटीकता)
    ऐप निवास समयIMemoryEntity3आपने प्रत्येक एप्लिकेशन में कितना समय बिताया (मिलीसेकंड)
    वेब निवास समयIMemoryEntity3आपने प्रत्येक वेबसाइट पर कितना समय बिताया (मिलीसेकंड)
    संवेदनशीलता लेबलIMemoryEntity5Microsoft Purview/DLP वर्गीकरण: नाम, रंग, टूलटिप
    उपयोगकर्ता गतिविधि IDIMemoryEntity6Windows टाइमलाइन गतिविधि सहसंबंध ID
    पुनर्स्थापना क्षमताIMemoryEntity2बिटमास्क: ऐप को पुनः लॉन्च कर सकता है (0x1), URL (0x2), फ़ाइल (0x4), URI (0x8), टाइमलाइन (0x10)
    संदर्भ पुनर्स्थापनाTryRestoreContextAsyncकिसी भी कैप्चर से सटीक ऐप, पेज या दस्तावेज़ को पुनः खोलें
    Domain
    UserTag
    Organization
    Product
    Address
    Location
    DateTime
    Event
    Duration
    MemoryDsc
    SensitivityLabel
    WebVideo
    Meeting
    Chat
    MailingPackage
    TextRatio
    SkipTopics
    Any
  • स्क्रीन क्षेत्र (10 प्रकार): Text, Image, Table, Container, Menu, ToolBar, AddressBar, Toolpane, TabBar, TitleBar। प्रत्येक में पिक्सेल-सटीक बाउंडिंग बॉक्स और एम्बेडेड OCR टेक्स्ट।
  • गतिविधि विवरण: L1Description (AI-जनित गद्य सारांश कि आप क्या कर रहे थे), L1Activity (वर्गीकृत: ब्राउज़िंग, कोडिंग, लेखन, ईमेल पढ़ना), L1Application (AI-वर्गीकृत एप्लिकेशन संदर्भ)।
  • मेमोरी नोड्स (4 प्रकार): Meeting (कॉन्फ्रेंस कॉल), Chat (मैसेजिंग), WebVideo (वीडियो प्लेबैक), MailingPackage (ईमेल/न्यूज़लेटर्स)। कई कैप्चर को तार्किक गतिविधि सत्रों में समूहित करता है।
  • संदर्भ वर्गीकरण (7 प्रकार): UserActivity, KMeansCluster, LobeTopicCluster, ApplicationDwellTime, WebsiteDwellTime, ClipboardImageCopied, Topic।
  • संवेदनशील सामग्री फ़िल्टरिंग (186 नियम, टॉगल करने योग्य): प्लेटफ़ॉर्म DLL Microsoft की Content Exposure Prevention (CEP) नियम सेट को XML के रूप में एम्बेड करता है, जिसका उपयोग कैप्चर से संवेदनशील सामग्री को फ़िल्टर करने के लिए किया जाता है। नियम 30+ देशों में क्रेडिट कार्ड नंबर, सोशल सिक्योरिटी नंबर, बैंक रूटिंग नंबर, ड्राइवर लाइसेंस, पासपोर्ट और टैक्स आईडी को कवर करते हैं, साथ ही क्लाउड क्रेडेंशियल्स: Azure Storage कुंजियाँ, AWS S3 गुप्त कुंजियाँ, Azure DevOps PATs, Azure AD क्लाइंट टोकन, X.509 निजी कुंजियाँ, API कुंजियाँ, सामान्य पासवर्ड और लॉगिन क्रेडेंशियल्स। फ़िल्टरिंग IAutomatedCaptureController6 इंटरफ़ेस पर IsContentFilteringEnabled के माध्यम से नियंत्रित की जाती है।
  • संवेदनशीलता लेबल: प्रति कैप्चर और प्रति एंटिटी विवरण Microsoft Purview/DLP वर्गीकरण, नाम, रंग और टूलटिप के साथ।
  • सिमेंटिक एम्बेडिंग्स (8 वेरिएंट): 4 इमेज एम्बेडिंग्स (मूल, सबसे बड़ा क्षेत्र, दूसरा सबसे बड़ा, कम्पोजिट) और 4 टेक्स्ट एम्बेडिंग्स (पूर्ण OCR, क्षेत्र-फ़िल्टर्ड, प्रति-क्षेत्र, विंडो शीर्षक)। आपके पूरे इतिहास में समानता खोज के लिए DiskANN वेक्टर इंडेक्स में संग्रहीत।