BAM / DAM¶
BAM और DAM क्या हैं¶
Background Activity Moderator (BAM) और Desktop Activity Moderator (DAM) Windows
सेवाएँ हैं (Windows 10 1709 और बाद के versions) जो यह नियंत्रित करती हैं कि ऐप्लिकेशन background में क्या कर सकते हैं।
ये SYSTEM hive में, प्रति उपयोगकर्ता, हर प्रोग्राम के अंतिम बार चलने का समय रखती हैं:
- प्रति उपयोगकर्ता एक key, जिसका नाम उपयोगकर्ता के SID पर होता है;
- प्रति प्रोग्राम एक value: उसका नाम उसके device पर प्रोग्राम का path होता है
(
\Device\HarddiskVolume3\Windows\System32\cmd.exe) या किसी packaged app का ID (Microsoft.WindowsCalculator_8wekyb3d8bbwe); - Value के data के पहले 8 bytes वह समय हैं जब यह अंतिम बार चला (FILETIME)।
BAM उपयोगकर्ता के अपने hive के बिना किसी प्रोग्राम को किसी उपयोगकर्ता और समय से जोड़ता है, और यह removable और network devices से चलाए गए प्रोग्राम भी सूचीबद्ध करता है।
सर्वोत्तम निष्कर्ष: इस प्रोग्राम का एक process इस उपयोगकर्ता के session में चला; यह अंतिम बार इस समय चला। BAM runs की गिनती नहीं करता, और प्रोग्राम के हटाए जाने के बाद भी entry बनी रह सकती है।
स्थान¶
C:\Windows\System32\config\SYSTEM
ControlSet00N\Services\bam\State\UserSettings\<SID> Windows 10 1809 and later
ControlSet00N\Services\bam\UserSettings\<SID> Windows 10 1709 to 1803
ControlSet00N\Services\dam\State\UserSettings\<SID>
ControlSet00N\Services\dam\UserSettings\<SID>
हर उपयोगकर्ता की key में Version और SequenceNumber values भी होती हैं; ये प्रोग्राम नहीं हैं और
छोड़ दी जाती हैं। 1709 या 1803 से upgrade किए गए सिस्टम में दोनों layouts हो सकते हैं।
SYSTEM को उसके transaction logs के साथ एकत्र करें, और सिस्टम के SAM और SOFTWARE भी: ये
उपयोगकर्ताओं के नाम बताते हैं।
विश्लेषक के लिए सावधानियाँ¶
- प्रति प्रोग्राम और उपयोगकर्ता एक समय। केवल सबसे हाल का run रखा जाता है। Prefetch, Amcache और event logs पहले के runs देते हैं।
- हाल की गतिविधि। बताया गया है कि जो प्रोग्राम कुछ समय से नहीं चले, उनकी entries Windows शुरू होने पर हटा दी जाती हैं, इसलिए BAM ज़्यादातर हाल की गतिविधि दिखाता है: इसमें न दिखने वाला प्रोग्राम बहुत पहले चला हो सकता है।
- Device paths, drive letters नहीं।
\Device\HarddiskVolume3वह तीसरा volume है जिसे Windows ने क्रमांकित किया,C:नहीं।DevicePathऔरPathdevice को उस पर के path से अलग करते हैं; drive letter लिखने से पहले volume का मिलानMountedDevices,$MFTया अन्य आर्टिफ़ैक्ट से करें। - हर प्रोग्राम नहीं। BAM और DAM उपयोगकर्ताओं के sessions में प्रोग्राम track करते हैं; सेवाएँ ज़्यादातर
नहीं दिखतीं।
S-1-5-18entries आमतौर पर setup और sign-in screen के processes होती हैं (FirstLogonAnim.exe), औरS-1-5-90-0-<n>वाली Desktop Window Manager (DWM-<n>) की। - Control sets। Default रूप से वह control set पढ़ा जाता है जिसे Windows ने अंतिम बार उपयोग किया।
--all-control-setsहर एक को पढ़ता है: कोई पुराना control set ऐसी entry रख सकता है जो वर्तमान में अब नहीं है। - उपयोगकर्ता नाम। Local account का नाम
SAMसे आता है (computer का SID और account का RID); domain account का नामProfileListमें उसके profile फ़ोल्डर से।UserSourceबताता है कि कौन-सा (sam,profile_list,well_known)। इनके बिना केवल SID दिया जाता है। ऐसा RID जो अबSAMमें नहीं है (हटाया गया account) बिना नाम के रहता है।
Juntei से parse करें¶
Usage: juntei parse-registry bam <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find SYSTEM hives
-f, --file <FILE> Parse one SYSTEM hive
--log1/--log2 Supply transaction logs explicitly
--no-logs Do not replay logs
Filtering:
--all-control-sets Every control set, not only the one in use
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-registry bam -d evidence/ -o bam.csv
juntei parse-registry bam -f SYSTEM -t jsonl \
| jq 'select(.Path? // "" | test("\\\\(Users|ProgramData|Temp)\\\\"; "i"))'
Summary हर उपयोगकर्ता को उसके SID, नाम और entries की संख्या के साथ सूचीबद्ध करता है, और अंतिम बार चलाए गए प्रोग्राम (सबसे नए पहले)।
आउटपुट fields¶
| Field | व्याख्या |
|---|---|
Host, SourcePath |
Host, और SYSTEM hive। |
ControlSet, IsCurrentControlSet |
वह control set जिसमें entry है, और क्या यह वही है जिसे Windows ने अंतिम बार उपयोग किया। |
Moderator |
bam या dam। |
UserSID, User, UserSource |
वह SID जिस पर key का नाम है, उपयोगकर्ता का नाम, और वह कहाँ से आता है (sam, profile_list, well_known)। |
Program |
Value का नाम जैसा Windows ने लिखा: device path या packaged app का ID। |
DevicePath, Path |
Device path के लिए, device (\Device\HarddiskVolume3) और उस पर का path (\Windows\System32\cmd.exe); packaged app के लिए खाली। |
LastRunUTC |
प्रोग्राम अंतिम बार कब चला (100 ns तक)। |
KeyPath, KeyLastWrittenUTC |
उपयोगकर्ता की key और उसका last write: उसकी किसी भी entry का सबसे हाल का update। |
DataRaw |
Value के bytes (hex), जब उनमें समय न हो: REG_BINARY नहीं, या 8 bytes से कम। |
TransactionLogStatus, LogsApplied |
Registry recovery का context। |
Problems |
ऐसा data जिसमें समय नहीं है, और ऐसी values जिन्हें पढ़ा नहीं जा सकता। |
जाँच की रणनीति¶
LastRunUTCके अनुसार sort करें और उपयोगकर्ता द्वारा लिखने योग्य स्थानों (\Users\,Downloads,Temp,ProgramData) में, system volume के अलावा अन्य devices पर, और administration तथा remote access टूल वाले प्रोग्राम देखें।- जाँचें कि उन्हें किस उपयोगकर्ता ने चलाया, और ऐसे accounts जो किसी वर्तमान profile से मेल नहीं खाते।
- Prefetch (run counts और पहले के runs), UserAssist (Explorer से शुरुआत), Amcache
और ShimCache (उपस्थिति),
$MFT(प्रोग्राम की फ़ाइल) और event logs से correlate करें। - हटाई गई BAM values के लिए
--all-control-setsऔरparse-registry read --recover-deletedका उपयोग करें।
अधिक जानकारी¶
- libyal winreg-kb: Background activity moderator (BAM)
- Microsoft: Security identifiers (well-known SIDs)
- ys-registry-parser
सीमा से बाहर के last-run FILETIMEs LastRunUTC को खाली छोड़ते हैं और मूल value को DataRaw में सुरक्षित रखते हैं, साथ में Problems में स्पष्टीकरण होता है। Recent-activity summary हर host की पहचान करता है और अलग-अलग hive/उपयोगकर्ता अवलोकनों को अलग रखता है।