Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
OffsetInspect — مجموعة أدوات PowerShell لتحليل حدود الكشف في AMSI/Defender والفرز الثابت للبرمجيات الخبيثة؛ تربط إزاحات البايت بمشغلات الكشف، بالإضافة إلى تحليل YARA والإنتروبيا والسلاسل النصية وPE/imphash. أداة مصاحبة لـ OffsetScan. | Kitploit
أدوات/GitHubGitHub/warpedatom/offsetinspect
أدوات دفاعيةالتحليل الثابتتحليل الثغرات الأمنيةالاستغلالالهندسة العكسيةالتحقيق الجنائي الرقميتحليل البرمجيات الخبيثةاختبار الاختراقتحليل الملفات الثنائيةالفريق الأحمرالاستجابة للحوادث
821037منذ 3 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
GitHub
warpedatom/offsetinspect

OffsetInspect

مجموعة أدوات PowerShell لتحليل حدود الكشف في AMSI/Defender والفرز الثابت للبرمجيات الخبيثة؛ تربط إزاحات البايت بمشغلات الكشف، بالإضافة إلى تحليل YARA والإنتروبيا والسلاسل النصية وPE/imphash. أداة مصاحبة لـ OffsetScan.

عرض المستودع
مشاركة
<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/9991/ec3b617ff761b38a1eb9296df3d62b7435bcf1684421cce77108da0b7ac12e92.png" alt="Dread Host Research" width="800">
</p>

<p align="center">
  <a href="https://github.com/warpedatom/OffsetInspect/releases"><img src="https://img.shields.io/github/v/release/warpedatom/OffsetInspect" alt="Release"></a>
  <a href="https://github.com/warpedatom/offsetinspect/blob/main/LICENSE"><img src="https://img.shields.io/github/license/warpedatom/OffsetInspect" alt="License"></a>
  <img src="https://img.shields.io/badge/PowerShell-5.1%20%7C%207.x-5391FE" alt="PowerShell 5.1 and 7.x">
  <img src="https://img.shields.io/badge/Core-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey" alt="Cross-platform core">
  <img src="https://img.shields.io/badge/Threat%20Providers-Windows-0078D4" alt="Windows threat providers">
  <img src="https://img.shields.io/github/actions/workflow/status/warpedatom/OffsetInspect/ci.yml?branch=main&amp;label=CI" alt="CI">
  <a href="https://github.com/warpedatom/offsetinspect/blob/main/SECURITY.md"><img src="https://img.shields.io/badge/Security-Policy-green" alt="Security policy"></a>
  <a href="https://x.com/warped_atom"><img src="https://img.shields.io/badge/X-@warped__atom-000000?logo=x&amp;logoColor=white" alt="X (Twitter): @warped_atom"></a>
</p>

# OffsetInspect

**أداة PowerShell بذاكرة محدودة لفحص إزاحات البايت، وربط المصادر، ومقارنة الثنائيات، وتحليل حدود الكشف الدفاعي.**

تجيب OffsetInspect عن سؤال محلل عملي:

> ما المحتوى الموجود عند إزاحة البايت هذه، وما سياق المصدر أو الثنائي المحيط به؟

كما توفر سير عمل أصليًا لحدود الكشف مستوحىً من نفس مشكلة المحلل التي يعالجها ThreatCheck، دون تضمين مصدره أو ملفاته الثنائية: فهي تحدد أقرب بادئة محتوى لا يزال AMSI أو Microsoft Defender يكتشفها، وتتحقق من الحدود مرارًا، وتغذي الإزاحة الناتجة مباشرة إلى مفحص السياق. إضافة إلى ذلك النواة، تضيف مجموعة تحليل للفريق الأحمر وفرزًا ثابتًا - اكتشاف متعدد المناطق، ومسحًا لمجموعة الملفات، ومقارنة نتائج الكشف، وربط مشغلات الكشف، وتوثيق الانحراف، وتقارير المشاركة، وتحليل الإنتروبيا، واستخراج السلاسل النصية، وتحليل PE/imphash - وكلها للقراءة فقط، بالإضافة إلى مختبِر متانة التوقيع المخصص للاستخدام المصرّح به والذي يعدّل العينات في الذاكرة فقط، دون تعطيل أو إعادة تكوين حماية نقطة النهاية على الإطلاق.

## أداة مصاحبة

للفرز الثابت على نطاق مجموعات الملفات (تحليل PE، والإنتروبيا، والسلاسل النصية، ومؤشرات IOC) دون عبء PowerShell، راجع **[OffsetScan](https://github.com/warpedatom/OffsetScan)** - ملف ثنائي أصلي بلغة Rust يحمل نفس مخطط إخراج JSON. يستوعب OffsetInspect 3.1.0+ ملفات IOC JSON الصادرة عن OffsetScan مباشرة عبر `-IocJsonPath`.

---

## أبرز الميزات

- يفتح كل ملف فحص فريد من خلال مقبض قراءة ثابت ويعالج جميع الإزاحات المطلوبة معًا.
- يستخدم تمريرًا متدفقًا بذاكرة محدودة لرسم خريطة الأسطر بدلًا من إعادة قراءة الملف بالكامل لكل إزاحة.
- يقرأ فقط نوافذ البايت المطلوبة لإخراج السداسي العشري والمقارنة.
- يربط إزاحات البايت بترميز UTF-8 وUTF-16 بأسطر المصدر ومواضع الأحرف.
- ينفّذ سياق المصدر السابق والتالي عبر `-ContextLines`.
- يدعم عقود إخراج: بشري، وكائن، وJSON، وCSV، وملف CSV.
- يدعم خطط ملفات/إزاحات من واحد إلى متعدد، ومن متعدد إلى واحد، ومزدوجة.
- يقارن البايت الهدف بملف ثانٍ دون إعادة تحميل ذلك الملف مرارًا.
- يضيف طبقة مزودين منفذة بشكل مستقل لـ AMSI وMicrosoft Defender مع حالات صريحة للخطأ وانتهاء المهلة والحظر وعدم التحديد.
- يسجّل مسار تدقيق لكل فحص (`ProbeLog`/`ProbeCount`) لكل استدعاء مميز للمزود، ويُبث مباشرة إلى `-Verbose`، ليكون نصًا جاهزًا للتقرير عن التكلفة الحقيقية للمزود في الفحص.
- يكتشف مناطق متعددة قابلة للاكتشاف بشكل مستقل في ملف واحد عبر فحص AMSI داخل الذاكرة (لا يُكتب أي شيء تم اكتشافه على القرص) ويربط كل حدود بالإزاحة المطلقة.
- يمسح مجموعة ملفات في مصفوفة كشف مجمّعة، ويقارن نتائج الكشف بين فحصين، ويصدر تقارير مشاركة Markdown/HTML (يُغذّى اختياريًا بـ JSON محرك OffsetScan الأصلي للوحات IOC على نطاق مجموعات الملفات).
- يربط حد الكشف بالمحتوى الذي أنتجه - قسم PE، والإنتروبيا للمدى حتى الحدود، والسلاسل النصية المنتهية عندها/المتجاوزة لها كمحتوى مرشح للتوقيع.
- يوثّق الكشف على مدار الوقت (تجزئة الملف **و** إصدار توقيع Defender المحلي) بحيث يمكن عزو تغيّر قابلية الاكتشاف إلى الملف أو إلى تحديث قاعدة التوقيعات أو إلى نتيجة مزود غير حتمية.
- يختبر متانة التوقيع للمشاركات المصرّح بها عن طريق تعديل عينة تم اكتشافها **في الذاكرة** (الحالة، التسلسل، التعليق، المسافات البيضاء) والإبلاغ عن فئات التحويل التي تفلت من الكشف - دون كتابة أي متغير على القرص.
- يربط الفحص بالقياسات عن بُعد الخاصة ببيئة Windows التي يولّدها (`-CaptureTelemetry`): ما إذا تم إطلاق تنبيه Microsoft Defender، وبأي سياق، وما مصادر القياس عن بُعد التي كانت عمياء - مما يطبّق مبدأ "افترض الرؤية، ثم تحقق منها". للقراءة فقط، وبدون صلاحيات المسؤول، وخاص بنظام Windows.
- يضيف أدوات فرز ثابت للبرمجيات الخبيثة: إنتروبيا لكل نافذة (المناطق المضغوطة/المشفرة)، واستخراج سلاسل ASCII/UTF-16LE مع إزاحاتها، وتحليل رؤوس PE وأقسامه واستيراداته مع كشف imphash والمنطقة الزائدة (overlay).
- يتحقق من مصدر Authenticode (`Get-OffsetSignature`): باستخدام تحقق الثقة الحقيقي للمنصة، يبلّغ ما إذا كان الملف موقّعًا وموثوقًا به بشكل صحيح، ومن وقّعه، وما إذا كان موقّعًا بشكل مضمّن أو عبر كتالوج - إشارة موقّع تكمل imphash وبصمة سلسلة أدوات البناء (الاستيرادات مقابل سلسلة الأدوات مقابل الموقّع). خاص بنظام Windows.
- لا يغيّر أبدًا استثناءات Defender أو الحماية في الوقت الفعلي أو إعدادات أمان النظام.
- يُوزَّع كحزمة PowerShell Gallery قائمة بذاتها بدون تبعيات خارجية لوقت التشغيل؛ فحص YARA وClamAV هما الاستثناءان الاختياريان الوحيدان، ويتطلب كل منهما محركه الخارجي الخاص.

## الأوامر

| Command | الغرض | المنصة |
|---|---|---|
| `Invoke-OffsetInspect` | تعيين إزاحات البايت إلى سياق المصدر/الثنائي، والسداسي العشري، والمقارنة | متعدد المنصات |
| `Invoke-OffsetThreatScan` | البحث عن حدود الكشف عبر AMSI/Defender لملف واحد | ويندوز |
| `Invoke-OffsetThreatScanBatch` | فحص مجموعة ملفات؛ `-Summary` يُرجع مصفوفة كشف | ويندوز |
| `Invoke-OffsetThreatScanRegion` | اكتشاف متعدد المناطق عبر فحص AMSI داخل الذاكرة (بدون كتابة على القرص) | ويندوز |
| `Invoke-OffsetMutationTest` | اختبار متانة التوقيع: تعديل عينة تم اكتشافها في الذاكرة، وتحديد التحويلات التي تفلت من الكشف (للاستخدام المصرّح به فقط) | ويندوز |
| `Compare-OffsetThreatResult` | مقارنة نتيجتي فحص (مثلًا عبر تحديثات تعريفات التوقيع) | متعدد المنصات |
| `Get-OffsetDetectionTrigger` | ربط حد الكشف بالمحتوى الأكثر ترجيحًا الذي أثار الكشف | متعدد المنصات |
| `Add-OffsetDriftEntry` | تسجيل لقطة كشف (تجزئة الملف + إصدار توقيع Defender) في سجل | متعدد المنصات² |
| `Get-OffsetDrift` | شرح كيفية تغيّر قابلية اكتشاف الملف: تغيّر الملف مقابل تحديث التوقيع مقابل عدم الحتمية | متعدد المنصات |
| `Export-OffsetThreatReport` | عرض نتائج الفحص في تقرير مشاركة Markdown/HTML | متعدد المنصات |
| `Invoke-OffsetYaraScan` | مطابقة ملف مع قواعد YARA؛ إرجاع الإصابات مع إزاحات البايت | متعدد المنصات¹ |
| `Invoke-OffsetClamScan` | فحص ملف بمحرك ClamAV؛ نتيجة كشف موحّدة | متعدد المنصات¹ |
| `Get-OffsetEntropy` | إنتروبيا شانون لكل نافذة لتحديد المناطق المضغوطة/المشفرة | متعدد المنصات |
| `Get-OffsetString` | استخراج سلاسل ASCII/UTF-16LE مع إزاحات البايت | متعدد المنصات |
| `Get-OffsetPEInfo` | رؤوس PE، والأقسام، والاستيرادات/imphash، وoverlay، والإزاحة→القسم | متعدد المنصات |
| `Get-OffsetIOC` | لوحة مؤشرات موحّدة: التجزئات، والإنتروبيا، وPE/imphash، والسلاسل | متعدد المنصات |
| `Get-OffsetSignature` | توقيع Authenticode: هل الملف موقّع وموثوق به بشكل صحيح، ومن وقّعه، مضمّن أم عبر كتالوج | ويندوز |

¹ هذان الأمران لهما تبعيات خارجية اختيارية: يحتاج `Invoke-OffsetYaraScan` إلى محرك YARA (`winget install VirusTotal.YARA`)، ويحتاج `Invoke-OffsetClamScan` إلى ClamAV مع قواعد بيانات التوقيعات (`winget install Cisco.ClamAV`، ثم `freshclam`). كل أمر آخر قائم بذاته. ClamAV هنا كاشف ملف واحد، وليس محرك بحث عن الحدود - `clamscan` يحمّل قاعدة بياناته الكاملة في كل استدعاء، لذا فإن الانقسام الثنائي يتطلب خدمة `clamd`.

² `Add-OffsetDriftEntry` يوثّق على جميع المنصات، لكن حقول إصدار محرك/توقيع Defender تُملأ فقط على ويندوز (عبر `Get-MpComputerStatus`)؛ وفي الأماكن الأخرى تُسجَّل على أنها فارغة ويستمر كتابة بقية اللقطة.

نواة فحص الإزاحات وجميع أدوات الفرز الثابت متعددة المنصات (ويندوز، لينكس، macOS)؛ بينما مزودا تهديدات AMSI/Defender خاصان بنظام ويندوز.

## التثبيت

### معرض PowerShell```powershell
Install-Module OffsetInspect -Scope CurrentUser
Import-Module OffsetInspect
```
### التحقق من المستودع```powershell
git clone https://github.com/warpedatom/OffsetInspect.git
cd OffsetInspect
Import-Module ./module/OffsetInspect/OffsetInspect.psd1 -Force
```
يتضمن المستودع أيضًا أغلفة CLI رفيعة:```powershell
./OffsetInspect.ps1 <file> <offset>
./OffsetThreatScan.ps1 <file> -Engine AMSI
```
## فحص الإزاحة

### المخرجات القابلة للقراءة```powershell
Invoke-OffsetInspect ./sample.bin 0x200
```
- [aws-event](https://pkg.go.dev/github.com/hofstadter-io/hof/lib/on/aws-event@${HOF_TAG}) - معالجة أحداث AWS باستخدام CUE
- [slack](https://pkg.go.dev/github.com/hofstadter-io/hof/lib/on/slack@${HOF_TAG}) - كتابة روبوت Slack باستخدام CUE```powershell
$inspectParameters = @{
    FilePaths    = './script.ps1'
    OffsetInputs = 128, 256, 512
    ByteWindow   = 64
    ContextLines = 4
}
Invoke-OffsetInspect @inspectParameters
```
### الكائنات المهيكلة```powershell
$inspectParameters = @{
    FilePaths    = './script.ps1'
    OffsetInputs = 0x80, 0x100
    PassThru     = $true
}
$results = Invoke-OffsetInspect @inspectParameters

$results | Where-Object BytesDiffer
```
### JSON و CSV```powershell
Invoke-OffsetInspect ./sample.bin 0x200 -Json
Invoke-OffsetInspect ./sample.bin 0x200 -Csv
Invoke-OffsetInspect ./sample.bin 0x200 -CsvPath ./artifacts/offsets.csv
```
يُصدر وضع JSON دائمًا مصفوفة، حتى بالنسبة لنتيجة واحدة.

### المقارنة الثنائية```powershell
$compareParameters = @{
    FilePaths    = './before.bin'
    OffsetInputs = 0x200
    CompareFile  = './after.bin'
    PassThru     = $true
}
Invoke-OffsetInspect @compareParameters
```
### صيغ الإزاحة

| الإدخال | التفسير |
|---|---:|
| `512` | عدد عشري 512 |
| `0x200` أو `0X200` | سداسي عشري 0x200 |
| `200h` | سداسي عشري 0x200 |
| `E1AB1` | سداسي عشري بدون بادئة لأنه يحتوي على A-F |

القيم الرقمية فقط بدون بادئة أو لاحقة تُعامل عمدًا كقيم عشرية.

### أنماط الترميز

| النمط | السلوك |
|---|---|
| `Auto` | يكتشف تواقيع BOM لـ UTF-8/UTF-16؛ وإلا يستخدم UTF-8 |
| `Default` | يستخدم الترميز الافتراضي لنظام التشغيل المضيف |
| `UTF8` | تخطيط مصدر UTF-8 |
| `UTF16LE` | تخطيط مصدر UTF-16 بنمط little-endian |
| `UTF16BE` | تخطيط مصدر UTF-16 بنمط big-endian |
| `ASCII` | تخطيط مصدر ASCII |

يُبلغ الإخراج عن كل من `BytePositionInLine` و `CharacterPosition`. هذا التمييز مهم عندما يحتوي الملف المصدر على أحرف متعددة البايت.

## تحليل حدود التهديدات

تحليل مزوّد التهديدات مخصص لنظام Windows فقط. أمر فحص الإزاحة العادي يظل متعدد المنصات.

### فحص نص AMSI```powershell
$scanParameters = @{
    FilePath    = './script.ps1'
    Engine      = 'AMSI'
    ScanMode    = 'Text'
    RepeatCount = 3
    PassThru    = $true
}
$result = Invoke-OffsetThreatScan @scanParameters
```
يستخدم الوضع النصي `AmsiScanString`، ويبحث عن بادئات Unicode-scalar دون تقسيم الأزواج البديلة (surrogate pairs)، ويعيّن البادئة المكتشفة عبر ترميز المصدر المُتحقَّق منه، ويعيد فهارس Unicode-scalar ووحدات كود UTF-16 وفهارس البايت في الملف المصدر. تُرفض أحرف NUL المضمّنة في الوضع النصي؛ استخدم وضع البايت الخام (raw-byte) لتلك الملفات.

### فحص AMSI بالبايت الخام```powershell
Invoke-OffsetThreatScan ./content.bin -Engine AMSI -ScanMode RawBytes
```
### فحص Microsoft Defender```powershell
$scanParameters = @{
    FilePath       = './sample.bin'
    Engine         = 'Defender'
    RepeatCount    = 3
    TimeoutSeconds = 45
}
Invoke-OffsetThreatScan @scanParameters
```
مزوّد Defender:

- يحدد مسار منصة `MpCmdRun.exe` الأحدث تثبيتًا.
- يكتب البادئات إلى دليل مؤقت فريد للمستخدم.
- يستخدم فحصًا مخصصًا مع `-DisableRemediation`.
- يعامل حالات انتهاء المهلة، وأخطاء المزوّد، والمخرجات المترجمة/غير المعروفة، والعلامات الغامضة على أنها غير حاسمة.
- يحذف مساحة العمل المؤقتة عند اكتمال الفحص.

### دلالات الحدود

نتيجة مثل `DetectionPrefixLength = 841` تعني:

- طول البادئة 840 صُنّف على أنه نظيف/غير مكتشف.
- طول البادئة 841 صُنّف على أنه مكتشف/محظور.
- تتحقق الفحوصات المتكررة من استقرار هذا الانتقال.

هذا **لا** يثبت أن البايت 840 هو التوقيع الكامل، أو البايت الوحيد المساهم، أو النطاق الخبيث بأكمله. قد تعتمد قرارات برامج مكافحة الفيروسات على الترميز tokenization، والسياق المحيط، ونوع الملف، وحالة المزوّد، وتحديثات التوقيعات.

### مثال عملي: محركان، ملف واحد

فحص نفس العينة (PowerUp.ps1، وهو سكربت عام لفريق red-team، بحجم 445,954 بايتًا) باستخدام كلا المزوّدين يُظهر ما هي الحدود وإلى أي مدى يمكن الوثوق بمحركين في الاتفاق. AMSI في وضع النص:```text
Threat boundary scan: C:\Ops\Samples\PowerUp.ps1
SHA-256:              7abc87d9620aef493617a4fc1f823850f32fb26ca9ae0f3befeadb04971e0246
Engine:               AMSI
Scan mode:            Text
Initial status:       Detected
Scans performed:      25
Provider probes:      25 (see -Verbose or the ProbeLog property for the full audit trail)
Duration:             22771.419 ms
Known clean prefix:   445953
Detected prefix:      445954
Boundary offset:      445953 (0x6CE01)
Unicode scalar index: 445953
UTF-16 code-unit idx: 445953
Stable:               True
Confidence:           High

Line number:          4586
Byte in line:         46
Target byte:          0A (10)

--- Source Context ---
   4585 | Set-Alias Get-CurrentUserTokenGroupSid Get-ProcessTokenGroup
   4586 | Set-Alias Invoke-AllChecks Invoke-PrivescAudit
                                                       ^
```
Microsoft Defender في وضع البايت الخام، نفس الملف:```text
Engine:               Defender
Scan mode:            RawBytes
Initial status:       Detected
Scans performed:      25
Duration:             15370.562 ms
Known clean prefix:   445951
Detected prefix:      445952
Boundary offset:      445951 (0x6CDFF)
Stable:               True
Confidence:           High
Signature:            Trojan:Win32/Kepavll!rfn

Line number:          4586
Byte in line:         44
Target byte:          69 (105)

--- Hex Dump ---
0006CDBF  74 2D 50 72 6F 63 65 73 73 54 6F 6B 65 6E 47 72   t-ProcessTokenGr
0006CDCF  6F 75 70 0A 53 65 74 2D 41 6C 69 61 73 20 49 6E   oup.Set-Alias In
0006CDDF  76 6F 6B 65 2D 41 6C 6C 43 68 65 63 6B 73 20 49   voke-AllChecks I
0006CDEF  6E 76 6F 6B 65 2D 50 72 69 76 65 73 63 41 75 64   nvoke-PrivescAud
0006CDFF  69 74 0A                                          it.
```
يتقارب المحركان عند **السطر 4586** - تقع حدود Defender داخل `it` الختامي من `Invoke-PrivescAudit`، بينما تقع حدود AMSI على حرف السطر الجديد الذي يختم السطر نفسه، بعد ذلك ببايتين. ولا تمثل أيٌّ من الإزاحتين "التوقيع": فهما أدنى بادئة لا يزال كل مزود يعلّمها، والخلاف البالغ بايتين هو بالضبط تأثير الترميز/السياق الموصوف أعلاه. ويسمّي Defender أيضًا ما طابقه (`Trojan:Win32/Kepavll!rfn`)؛ بينما لا يُبلغ AMSI عن اسم توقيع، ولهذا السبب وُجدت `Invoke-OffsetThreatScanRegion` و`Get-OffsetDetectionTrigger` لتوصيف إصابة AMSI.

بلغت تكلفة الفحصين 25 استطلاعًا للمزوّدين لملف بحجم ~436 KiB - فالتنصيف لوغاريتمي بالنسبة لحجم الملف، ويُسجَّل كل استطلاع في `ProbeLog`.

انظر [تصميم فحص التهديدات](https://github.com/warpedatom/offsetinspect/blob/main/docs/THREAT-SCANNING.md) لعقد المزود وإرشادات التفسير، و[واجهة المزود](https://github.com/warpedatom/offsetinspect/blob/main/docs/PROVIDER-INTERFACE.md) لعقد الماسح الضوئي وكيفية إضافة مزود دون لمس نواة البحث، و[مصدر فحص التهديدات](https://github.com/warpedatom/offsetinspect/blob/main/docs/PROVENANCE.md) لحدود التنفيذ والإسناد، و[مخطط الإخراج](https://github.com/warpedatom/offsetinspect/blob/main/docs/OUTPUT-SCHEMA.md) لعقد الكائن المزوّد بنسخة.

### تقارير حدود الاكتشاف

يحوّل `Export-OffsetThreatReport` نتيجة فحص واحدة أو أكثر إلى تقرير Markdown أو HTML مكتفٍ بذاته - ملخص لكل ملف، وبيانات وصفية للمزود/التوقيع/المحرك، ومسار تدقيق `ProbeLog` الكامل، وتحذيرات - لإرفاقه بتقرير مهمة. يقرأ النتائج فقط ولا يعيد الفحص أبدًا، لذا يعمل عبر المنصات. أضف `-IncludeIoc` لدمج لوحة مؤشرات التجزئة/الإنتروبيا/PE (نفس بيانات `Get-OffsetIOC`) في كل إدخال في التقرير، و`-IncludeTrigger` لإضافة تحليل مُحفِّز الاكتشاف (انظر أدناه) لكل نتيجة لها حد.```powershell
Invoke-OffsetThreatScan ./sample.ps1 -Engine AMSI -ScanMode Text -PassThru |
    Export-OffsetThreatReport -Path ./report.html -Format Html

# Aggregate many scans into one report, with an indicators panel and trigger analysis per file:
$results | Export-OffsetThreatReport -Path ./engagement.md -IncludeIoc -IncludeTrigger
```
لتقارير على نطاق مجموعة الملفات الكاملة، يعيد `-IncludeIoc` فحص كل ملف في PowerShell، وهذا بطيء. يُصدر المحرك الأصلي المصاحب [OffsetScan](https://github.com/warpedatom/OffsetScan) ملفات IOC JSON مطابقة للمخطط بسرعة أكبر بكثير؛ وجّه التقرير إليه باستخدام `-IocJsonPath` فيستمد كل لوحة من ذلك JSON (مع التراجع إلى `Get-OffsetIOC` المباشر فقط للملفات غير الموجودة فيه):```powershell
offsetscan ioc ./corpus --recurse > ./ioc.json
$results | Export-OffsetThreatReport -Path ./engagement.md -IocJsonPath ./ioc.json
```
### فحص الدُفعات / المجموعات النصية

يوسّع `Invoke-OffsetThreatScanBatch` الملفات والأدلة وأنماط البدل إلى قائمة ملفات، ويفحص كل ملف (متابعًا العمل حتى عند فشل ملف معيّن)، ويعيد نتيجة واحدة لكل ملف. يُرجع `-Summary` مصفوفة اكتشاف مُسطّحة؛ وتُمرَّر النتائج الكاملة مباشرة إلى مولّد التقارير. فحص المزوّد مقتصر على نظام Windows.```powershell
Invoke-OffsetThreatScanBatch ./payloads -Recurse -Engine AMSI |
    Export-OffsetThreatReport -Path ./engagement.html -Format Html

Invoke-OffsetThreatScanBatch ./samples -Summary |
    Format-Table File, DetectionPrefixLength, Confidence, ProbeCount
```
### تباين الكشف / الانحدار

تقوم `Compare-OffsetThreatResult` بمقارنة نتيجتي فحص - على سبيل المثال نفس الملف قبل وبعد تحديث تعريفات التوقيعات - وتصنّف التغيير (`NewlyDetected`, `NoLongerDetected`, `BoundaryEarlier`, `BoundaryLater`, `BoundaryUnchanged`, `BothClean`) مع فرق الحدود والحقول المتغيّرة.```powershell
$before = Invoke-OffsetThreatScan ./sample.ps1 -Engine Defender -PassThru
# ... update Defender signature definitions ...
$after  = Invoke-OffsetThreatScan ./sample.ps1 -Engine Defender -PassThru
Compare-OffsetThreatResult -Reference $before -Difference $after
```
### اكتشاف متعدد المناطق

يعثر بحث البادئة على *أول* حد اكتشاف. يعثر `Invoke-OffsetThreatScanRegion` على *مناطق* متعددة قابلة للاكتشاف بشكل مستقل عن طريق تقسيم الملف إلى مقاطع وفحص كل مقطع بمعزل عن الآخرين عبر AMSI **بالكامل في الذاكرة** - لا تتم كتابة أي شيء يتم اكتشافه على القرص، لذا لا يتم أبدًا تشغيل الحماية في الوقت الفعلي لـ Defender أو إعادة تكوينها. يتم تنصيف كل اكتشاف داخل المقطع الخاص به لتعيين الحدود المسببة للإطلاق بدقة إلى إزاحة ملف مطلقة.```powershell
Invoke-OffsetThreatScanRegion ./payload.bin -SegmentCount 16 |
    Select-Object -ExpandProperty DetectedRegions |
    Format-Table SegmentIndex, StartOffset, EndOffset, AbsoluteBoundaryOffset, SignatureName
```
يُبلغ هذا عن المناطق التي تُفعَّل من تلقاء نفسها؛ وقد يفوت توقيعات لا تعمل إلا في سياق الملف الكامل أو تلك التي تمتد عبر حد مقطع، لذا تعامل مع المناطق كمؤشرات أولية لتأكيدها باستخدام `Invoke-OffsetThreatScan` والتحقق اليدوي. AMSI (في الذاكرة) هو المحرك الوحيد المدعوم هنا - فحص ملفات Defender يتطلب كتابة المحتوى المكتشف إلى القرص.

### ربط مشغّل الكشف

يحدد الحدّ *أين* ينقلب الكشف؛ ويخبرك `Get-OffsetDetectionTrigger` *بماذا* يوجد هناك. وبما أن حد البادئة هو آخر بايت في أقدم بادئة مكتشفة، فإن المحتوى المشغِّل هو سلسلة تنتهي عند ذلك الإزاحة. يبلغ الأمر عن قسم PE الذي يقع فيه الحد، والإنتروبيا للسلسلة حتى ذلك الموضع (نص صريح مقابل مضغوط/مشفر)، والسلاسل المستخرجة التي تنتهي عنده أو تمتد عبره، مرتبة حسب القرب - محتوى التوقيع المرشح - مع تفسير من سطر واحد. يقرأ البايتات فقط ولا يعيد الفحص أبدًا، لذا فهو يعمل عبر المنصات على النتائج المحفوظة.```powershell
Invoke-OffsetThreatScan ./flagged.ps1 -Engine AMSI -PassThru | Get-OffsetDetectionTrigger

# Or point it at a file and a known boundary directly:
Get-OffsetDetectionTrigger -FilePath ./sample.bin -BoundaryOffset 0x4A1 |
    Select-Object Interpretation, Section, PreBoundaryEntropy -ExpandProperty CandidateStrings
```
### سجل انحراف الاكتشاف

«كان يُكتشف سابقًا ولم يعد كذلك الآن» له ثلاثة أسباب مختلفة جذريًا: تغيّر الملف، أو تغيّرت التواقيع، أو أن المزوّد غير حتمي. يسجّل `Add-OffsetDriftEntry` لقطات NDJSON للإلحاق فقط - SHA-256 للملف، والحالة، والحدود، واسم التوقيع، وإصدارات توقيع/محرك Defender المحلية - ويقرأ `Get-OffsetDrift` هذا السجلّ وينسب كل تغيير إلى سببه الصحيح.```powershell
# Record a snapshot over time (from a scan result, or directly):
Invoke-OffsetThreatScan ./sample.ps1 -Engine AMSI -PassThru | Add-OffsetDriftEntry
Add-OffsetDriftEntry -FilePath ./sample.ps1 -Status Detected -Engine AMSI -SignatureName 'Trojan:PowerShell/X'

# Later, explain what changed:
Get-OffsetDrift -FilePath ./sample.ps1 | Select-Object -ExpandProperty Transitions
```
كل انتقال مُوسوم: تغيّر SHA-256 يُقرأ على أنه **تعديل ملف**؛ تغيّر الحالة مع بقاء الملف دون تغيير ولكن انتقال إصدار توقيع Defender يُقرأ على أنه **انجراف التوقيع**؛ تغيّر الحالة دون أيٍّ منهما يُقرأ على أنه **نتيجة غير حتمية** من المزوّد. يقع ملف اليوميات افتراضيًا في `%LOCALAPPDATA%\OffsetInspect\drift.ndjson`؛ ويمكنك تجاوزه باستخدام `-JournalPath`.

### اختبار متانة التوقيع (للاستخدام المصرّح به فقط)

يُجيب `Invoke-OffsetMutationTest` عن سؤال في هندسة الكشف: هل التوقيع مطابقة حرفية هشّة، أم أنه متين أمام أساليب الإخفاء الشائعة؟ بالنظر إلى عيّنة يكتشفها AMSI حاليًا، يطبّق تحويرات قياسية - عكس حالة الأحرف، دمج السلاسل النصية الحرفية، إدراج التعليقات، حقن المسافات البيضاء - ويعيد فحص كل متغيّر ليرصد أيّ الفئات تُبطل الكشف. **كل شيء يتم في الذاكرة** عبر واجهة AMSI داخل العملية؛ لا يُكتب أي متغيّر إلى القرص، وبالتالي لا يتم إنتاج أي آثار مراوغة ولا يتم إشراك الحماية الفورية من Defender. يرفض الأمر التنفيذ بدون `-AuthorizedEngagement`، وهو مخصّص فقط للعينات التي لديك إذن باختبارها.```powershell
Invoke-OffsetMutationTest -FilePath ./flagged.ps1 -AuthorizedEngagement |
    Select-Object RobustnessSummary -ExpandProperty Results
```
على سبيل المثال، نتيجة مثل "brittle: neutralized by StringConcatenation, CommentInsertion" تخبر المدافع أن التوقيع يعتمد على نص حرفي متصل ويجب توسيعه؛ وتخبر المشغِّل المصرح له الأمر نفسه بشأن تغطية عنصر التحكم.

### ترابط القياس عن بعد

يكشف لك اكتشاف الحدود ما يراه *المحرك*؛ بينما يخبرك `-CaptureTelemetry` بما يراه *المدافع*. فهو يلتقط علامة الحد الأقصى لكل سجل قياس عن بعد يمكن الوصول إليه في Windows قبل الفحص، ثم يبلّغ ما إذا كان الإجراء قد أثار تنبيهًا، وبأي سياق، وأي المصادر كانت عمياء - سؤال "افترض الرؤية، ثم تحقق منها" مجابٌ عليه بالأدلة.```powershell
$r = Invoke-OffsetThreatScan ./flagged.ps1 -Engine AMSI -CaptureTelemetry -PassThru
$r.Telemetry | Format-List AlertGenerated, CorrelationConfidence, Findings
$r.Telemetry.Alert | Format-List ThreatName, SeverityName, SourceName, ProcessName, DetectionUser
```
الخاصية `Telemetry` (`OffsetInspect.TelemetryCorrelation`) تُبلِغ عن التالي:

- `AlertGenerated` / `Alert` - ما إذا كان اكتشاف من Microsoft Defender (الحدث 1116/1117) قد سُجِّل للفحص، وسياقه (اسم التهديد، الخطورة، مصدر الاكتشاف، العملية، المستخدم).

---

[Read more](https://github.com/warpedatom/offsetinspect)
تنزيل الأداة