معلومات النظام¶
ما هو¶
تخبر خلايا الجهاز الأربع للنظام بما يحتاجه المحلل قبل قراءة جدوله الزمني:
- أسماؤه (NetBIOS، واسم مضيف DNS، ومجال DNS) والمجال أو مجموعة العمل التي ينتمي إليها؛
- إصدار Windows، والبنية (build) ومراجعة التحديث، ووقت تثبيت Windows أو آخر ترقية له؛
- منطقته الزمنية، التي تخبرك بالأوقات المحلية التي احتفظ بها النظام؛
- وقت آخر إيقاف تشغيل سليم له؛
- بنية المعالج وصفحات الترميز؛
- آخر مستخدم سجّل الدخول، وملفات تعريف كل مستخدم سجّل الدخول؛
- معرّفات SID الخاصة به: معرّف الحاسوب (الحسابات المحلية هي هذا المعرّف مضافًا إليه RID) ومعرّف مجاله؛
- إصدارات Windows التي رُقّي منها.
يكتب parse-registry system-info سجلًا واحدًا لكل نظام يتضمن كل ذلك.
أفضل استنتاج: التكوين كما كان عند جمع الخلايا (أو عند آخر كتابة لها). وتوضح أوقات المفاتيح متى تغيرت أجزاء منه آخر مرة.
الموقع¶
C:\Windows\System32\config\SYSTEM (the control set Windows used last: Select\Current)
ControlSet00N\Control\ComputerName\ComputerName ComputerName
ControlSet00N\Services\Tcpip\Parameters Hostname, Domain
ControlSet00N\Control\TimeZoneInformation TimeZoneKeyName, Bias, ActiveTimeBias, …
ControlSet00N\Control\Windows ShutdownTime
ControlSet00N\Control\Session Manager\Environment PROCESSOR_ARCHITECTURE
ControlSet00N\Control\Nls\CodePage ACP, OEMCP
Setup\Source OS (Updated on M/D/YYYY HH:MM:SS) the version before each upgrade
C:\Windows\System32\config\SOFTWARE
Microsoft\Windows NT\CurrentVersion ProductName, EditionID, DisplayVersion,
CurrentBuild, UBR, InstallDate, InstallTime, …
Microsoft\Windows NT\CurrentVersion\ProfileList one key per profile (SID)
Microsoft\Windows\CurrentVersion\Authentication\LogonUI LastLoggedOnUser, …
C:\Windows\System32\config\SAM
SAM\Domains\Account V: the computer's SID at its end
C:\Windows\System32\config\SECURITY
Policy\PolAcDmN, PolAcDmS the computer's name and SID
Policy\PolPrDmN, PolPrDmS its domain (or workgroup) and the domain's SID
Policy\PolDnDDN, PolDnTrN, PolDnDmG the domain's and forest's DNS names, GUID
Policy\PolMachineAccountS the computer account's SID in the domain
اجمع الخلايا الأربع مع سجلات المعاملات الخاصة بها. وتعطي أي خلية منها وحدها ما تحتويه.
تحذيرات للمحلل¶
- أوقات سجل Windows بتوقيت UTC؛ والمنطقة الزمنية لكل ما عدا ذلك. أوقات المفاتيح وقيم FILETIME ومعظم
أوقات الأحداث بتوقيت UTC. أما السجلات النصية، وبعض سجلات التطبيقات، والتواريخ المكتوبة في الأسماء أو السلاسل النصية
(مثل
Source OS (Updated on …)) فقد تكون محلية. وBiasهو عدد الدقائق من التوقيت القياسي المحلي إلى UTC (UTC = local + Bias). ويعطيUtcOffsetوDaylightUtcOffsetالإزاحتين، ويوضحTimeZoneDescriptionمتى يبدأ التوقيت الصيفي وينتهي. - قد تتغير المنطقة الزمنية.
TimeZoneLastWrittenUTCهو آخر كتابة للمفتاح. ويعيد Windows أيضًا كتابة المفتاح من تلقاء نفسه عندما يحدّثActiveTimeBias(الإزاحة السارية حينها)، لذا فإن الوقت الحديث لا يثبت أن أحدًا غيّر المنطقة. قارن بسجلات الأحداث: الحدث Security 4616 (تغيّر وقت النظام) وأحداثMicrosoft-Windows-Kernel-Generalفي سجل System. -
StandardStartوDaylightStartهما بنيتاTIME_FIELDSالخاصتان بالنواة، لاSYSTEMTIME. فيوم الأسبوع هو حقلهما الأخير، لا الثالث (كما في قيمةTZIللمنطقة فيSOFTWARE). وفي مناطق الولايات المتحدة تُقرأ البنيتان بالطريقة نفسها، لأن يوم الأسبوع هو الأحد (0). ويفك Juntei ترميزهما بوصفهماTIME_FIELDS: ويُظهر نظام عام من جزيرة إيستر (أول سبت عند 22:00) الفرق. ويعني الشهر 0 عدم وجود توقيت صيفي. - Windows 11 يقول "Windows 10". يحتفظ
ProductNameبالقيمةWindows 10 …على Windows 11. والبنى 22000 وما بعدها هي Windows 11، ويذكر الملخص ذلك. وتكونCurrentVersionهي6.3على Windows 8.1 و10 و11؛ ويستخدمVersionالقيمةCurrentMajorVersionNumber(10) عند وجودها. - يتحرك
InstallDateمع ترقيات الميزات. تعيد الترقية في المكان إلى إصدار جديد (من 1809 إلى 21H2، مثلًا) ضبطه. ويوجد الإصدار الذي استبدلته كل ترقية، معInstallDateالخاص به، فيPreviousVersions(Setup\Source OS). وأقدمInstallDateبينها هو الأقرب إلى التثبيت الأصلي. ولا يوضح التاريخ الموجود في اسم مفتاحSource OSمنطقته الزمنية. -
ShutdownTimeهو آخر إيقاف تشغيل سليم. لا يحدّثه الانهيار أو انقطاع الطاقة. قارنه بسجلات الأحداث (6006، 6008، 1074) وبأوقات آخر كتابات للخلايا. -
LastLoggedOnUserهو آخر مستخدم في شاشة تسجيل الدخول، لا كل عمليات تسجيل الدخول. فسطح المكتب البعيد، وrunas، والخدمات، والمهام المجدولة لا تضبطه كلها. وLogonUiLastWrittenUTCيقارب وقت آخر ضبط له. - ملفات التعريف: يسرد
ProfileListكل مستخدم (وخدمة) كان له ملف تعريف على النظام، بما في ذلك الحسابات المحذوفة إلى أن يُزال ملف تعريفها. ويكتب Windows 10 والإصدارات الأحدثLocalProfileLoadTimeوLocalProfileUnloadTime: وهما يقاربان آخر تسجيل دخول وآخر تسجيل خروج. - معرّفات SID: الحسابات المحلية هي
MachineSid-<RID>، وحسابات المجالDomainSid-<RID>. ويأتيMachineSidمنSAM(وإلا فمنPolAcDmSفيSECURITY). وينبغي أن يتطابق الاثنان؛ وعندما لا يتطابقان، يذكرProblemsذلك، كما يحدث مع خلايا من أنظمة مختلفة. ويكونDomainSidفارغًا في مجموعة العمل. - مجلد واحد، نظام واحد. مع
-d، تُعد الخلايا الموجودة في مجلد واحد خلايا نظام واحد. ونسخRegBackوالخلية الثانية من النوع نفسه (SYSTEM.old) سجلات مستقلة. ومع-f، تُعد الخلايا المعطاة خلايا نظام واحد، ويُبحث عن الخلايا الأخرى بجانبها. - مجموعات التحكم: لا تُقرأ إلا مجموعة التحكم التي استخدمها Windows آخر مرة. ويُظهر
parse-registry readالمجموعات الأخرى.
التحليل باستخدام Juntei¶
Usage: juntei parse-registry system-info <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find SYSTEM, SOFTWARE, SAM and SECURITY hives
-f, --file <FILE> A hive of one system; repeat for each
--no-logs Do not replay logs
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-registry system-info -d collection/ -o system-info.csv
juntei parse-registry system-info -f SYSTEM -f SOFTWARE -t jsonl \
| jq '{Host, TimeZoneDescription, ProductName, Build, LastShutdown}'
يعطي الملخص لكل نظام: إصدار Windows، ووقت تثبيته، ومنطقته الزمنية بالكلمات،
والإزاحة السارية عند آخر كتابة للمفتاح، وآخر إيقاف تشغيل له، ومجاله أو مجموعة
عمله، وآخر مستخدم سجّل الدخول، ومعرّف SID الخاص به، وعدد ملفات التعريف لديه، والإصدارات التي
رُقّي منها. ويطبع auto-parse أيضًا المنطقة الزمنية لكل نظام عندما يسرد الأنظمة التي
عثر عليها.
حقول الإخراج¶
| الحقل | التفسير |
|---|---|
Host، SourcePath، SoftwarePath، SamPath، SecurityPath |
المضيف، والخلايا المقروءة (SourcePath هو خلية SYSTEM، وإلا فأول خلية قُرئت). |
CompName، Hostname، Domain |
اسم NetBIOS (SYSTEM، وإلا فـ PolAcDmN في SECURITY)، واسم مضيف DNS ومجال DNS (Tcpip\Parameters). |
PrimaryDomain، DNS-Domain |
المجال الذي انضم إليه الحاسوب، أو مجموعة عمله (PolPrDmN)، واسم DNS للمجال (PolDnDDN). |
ProductName، Edition، DisplayVersion، Version، Build، Ubr، ServicePack، InstallationType |
من CurrentVersion: اسم المنتج كما كُتب، وEditionID، وDisplayVersion (وإلا فـ ReleaseId)، والإصدار الرئيسي والفرعي (وإلا فـ CurrentVersion)، والبنية، ومراجعة بنية التحديث، وCSDVersion، وClient أو Server أو Server Core. |
InstallDateUTC، InstallTimeUTC |
InstallDate (حتى الثانية) وInstallTime (حتى 100 نانوثانية، Windows 10 والإصدارات الأحدث): التثبيت أو آخر ترقية ميزات. |
RegisteredOwner، RegisteredOrganization، SystemRoot |
كما كُتبت. |
TimeZone، TimeZoneDescription |
TimeZoneKeyName (وإلا فـ StandardName)، والمنطقة بالكلمات مع إزاحاتها وتواريخ التوقيت الصيفي. |
UTC-Offset، DaylightUTC-Offset |
إزاحة التوقيت القياسي المحلي عن UTC، وإزاحة التوقيت الصيفي (فارغة دون توقيت صيفي). |
BiasMinutes، ActiveBiasMinutes، StandardBiasMinutes، DaylightBiasMinutes |
Bias، وActiveTimeBias (الساري عند كتابة المفتاح)، وStandardBias، وDaylightBias. |
StandardName، DaylightName |
كما كُتبا، وغالبًا مرجع لمورد (@tzres.dll,-112). |
StandardStart، DaylightStart |
متى يبدأ التوقيت القياسي والصيفي، بالكلمات (first Sunday of November, 02:00). |
DynamicDaylightTimeDisabled، RealTimeIsUniversal |
تعطيل التوقيت الصيفي الديناميكي؛ وساعة العتاد تحتفظ بتوقيت UTC. |
TimeZoneLastWrittenUTC |
آخر كتابة لمفتاح المنطقة الزمنية. |
LastShutdownUTC |
ShutdownTime: آخر إيقاف تشغيل سليم. |
CurrentControlSet، ProcessorArchitecture، AnsiCodePage، OemCodePage |
مجموعة التحكم المقروءة، وPROCESSOR_ARCHITECTURE، وACP وOEMCP. |
LastLoggedOnUser، LastLoggedOnSamUser، LastLoggedOnUserSID، LastLoggedOnDisplayName، LogonUiLastWrittenUTC |
آخر مستخدم في شاشة تسجيل الدخول، وآخر كتابة لمفتاحه. |
MachineSID، DomainSID، MachineAccountSID |
معرّف SID للحاسوب، ومعرّف SID لمجاله (PolPrDmS) ومعرّف SID لحساب الحاسوب في المجال (PolMachineAccountS). |
CompNameLastWrittenUTC، PrimaryDomainLastWrittenUTC، VersionLastWrittenUTC |
تقريب لآخر وقت سُمّي فيه الحاسوب، وآخر انضمام لمجال أو مجموعة عمل، وآخر تحديث (مفتاح CurrentVersion). |
PreviousVersions |
كل مفتاح Source OS: الإصدار، وتاريخ تثبيته، والتاريخ الموجود في اسم المفتاح (JSON: كائن لكل منها). |
Profiles |
كل ملف تعريف: SID، والمجلد، ووقت المفتاح، وآخر تحميل وإلغاء تحميل (JSON: كائن لكل منها). |
TransactionLogStatus، LogsApplied |
سياق استعادة سجل Windows، عبر الخلايا الأربع كلها. |
Problems |
قيم من نوع أو حجم خاطئ (مع الاحتفاظ ببايتاتها)، وSAM وSECURITY يختلف فيهما معرّف SID للحاسوب. |
استراتيجية التحقيق¶
- اقرأ المنطقة الزمنية أولًا: دوّن
UtcOffset، وتواريخ التوقيت الصيفي، وما إذا كانت المنطقة قد تغيرت مؤخرًا. وحوّل بها السجلات ذات التوقيت المحلي. - دوّن الإصدار والبنية وتاريخ التثبيت. وافحص
PreviousVersionsبحثًا عن الترقيات، وقارن تاريخ التثبيت بأقدم أوقات نظام الملفات وسجلات الأحداث. - دوّن
LastShutdownUTC: فوجود نشاط بعده دون وقت إيقاف تشغيل جديد يشير إلى انهيار، أو انقطاع للطاقة، أو جمع حي. - استخدم
MachineSidوDomainSidللتمييز بين الحسابات المحلية وحسابات المجال في معرّفات SID في أماكن أخرى (BAM، وProfileList، وسجلات الأحداث)، وأوقات تحميل ملفات التعريف وإلغاء تحميلها لآخر عمليات تسجيل الدخول. - اربط أسماء الحاسوب والمجال بسجلات الأحداث، وبـ
CompNameLastWrittenUTCوPrimaryDomainLastWrittenUTCلمعرفة عمليات إعادة التسمية والانضمام إلى المجالات.