
محرك فرز البرمجيات الخبيثة الساكن بلغة Go: يحسب تجزئات الملفات، ويستخرج السلاسل النصية ومؤشرات الاختراق، ويحلل صيغ PE/ELF/Mach-O/APK، ويقيّم القدرات، ويُصدر تقارير بصيغ JSON وYARA وSigma وSTIX وPDF.
محرك تحليل برمجيات خبيثة ساكن — بلا أي اعتماديات خارجية، بدون cgo، مرتبط ساكنًا
المستودع: https://github.com/Masriyan/FlatScan
FlatScan هو محرك تحليل برمجيات خبيثة ساكن وإعداد تقارير بمستوى إنتاجي مكتوب بلغة Go الصرفة. صُمم للمحللين الذين يحتاجون إلى فرز سريع، واستخراج مؤشرات الاختراق (IOCs)، واكتشاف القدرات المشبوهة، وإعداد تقارير تنفيذية، وتسليم قواعد الصيد — كل ذلك دون تنفيذ العينة.
يقرأ FlatScan الملف، ويحسب تجزئته، ويحدد صيغته، ويستخرج السلاسل النصية، ويفكّ ترميز البيانات المشفرة المشبوهة، ويستخرج مؤشرات الاختراق ويفرزها، ويفحص البيانات الوصفية للملفات التنفيذية والحاويات، ويقيّم النتائج، ويثريها في ملف تعريف للبرمجية الخبيثة، وينتج مخرجات نصية وJSON وPDF وHTML ومؤشرات اختراق وYARA وSigma وSTIX 2.1 وقاعدة بيانات الحالات وحزم تقارير.
غالبًا ما يكون لفرز البرمجيات الخبيثة جمهوران:
| الجمهور | الاحتياجات |
|---|---|
| محللو الأمن | الأدلة التقنية: التجزئات، والسلاسل النصية، والاستيرادات، ومؤشرات الاختراق، والإنتروبيا، والأقسام، والبيانات المفكوكة، وتكتيكات وأساليب وإجراءات المهاجم (TTPs)، وقواعد الصيد |
| مسؤول أمن المعلومات / الإدارة | سياق المخاطر: ما يُرجَّح أنه، ولماذا يهم، والأثر على الأعمال، والإجراءات الموصى بها |
يخدم FlatScan كليهما. فهو يجري التحليل الساكن من أجل السلامة والسرعة، ثم يحوّل النتيجة إلى مخرجات قابلة للقراءة آليًا وتقارير جاهزة للإدارة في آنٍ واحد.
graph LR
A[Malware Sample] --> B[FlatScan Engine]
B --> C[Analyst Reports]
B --> D[Executive Reports]
B --> E[Machine-Readable]
B --> F[Hunting Rules]
C -->|HTML, Full Text| G[SOC Team]
D -->|PDF, Executive MD| H[CISO / Board]
E -->|JSON, STIX 2.1| I[SIEM / SOAR]
F -->|YARA, Sigma| J[EDR / Hunt Team]
صُمم FlatScan كخط أنابيب تحليل متعدد المراحل يعتمد على التنفيذ المتوازي، ونظام إضافات، ودون أي اعتماديات خارجية — فملف go.mod لا يتطلب شيئًا، ومحرك التفكيك المكتوب بلغة Go الخالصة مضمّن داخل الشجرة باسم internal/x86asm (نسخة غير معدّلة من golang.org/x/arch/x86/x86asm، بترخيص BSD-3-Clause). لا وجود لـ cgo، ولا اعتماديات وقت تشغيل أو اعتماديات على النظام، ولا حاجة إلى شبكة للبناء.
graph TB
subgraph "Input Layer"
CLI[CLI Parser] --> CFG[Config]
INT[Interactive Mode] --> CFG
SHL[Shell Mode] --> CFG
WCH[Watch Mode] --> CFG
end
subgraph "I/O Layer"
CFG --> MMP{File > 100MB?}
MMP -->|Yes| MMAP[Memory-Mapped I/O]
MMP -->|No| BUF[Buffered Read]
MMAP --> DATA[Raw Bytes + Hashes]
BUF --> DATA
end
subgraph "Analysis Pipeline"
DATA --> DET[File Type Detection]
DET --> ENT[Entropy Analysis]
ENT --> STR[String Extraction]
STR --> IOC[IOC Extraction]
IOC --> DEC[Decoder Pass]
DEC --> CRP[Corpus Build]
CRP --> PAT[Pattern Matching]
PAT --> PG["Parallel Group"]
subgraph PG["⚡ Parallel Stages"]
FMT[Format Analysis]
CRV[Safe Carving]
CRY[Crypto/Config]
SIM[Similarity Hash]
end
PG --> SEQ[Sequential Stages]
SEQ --> PLG[Plugin Engine]
PLG --> SCR[Risk Scoring]
end
subgraph "Output Layer"
SCR --> TXT[Text Report]
SCR --> JSN[JSON]
SCR --> PDF[PDF Report]
SCR --> HTM[HTML Report]
SCR --> YAR[YARA Rule]
SCR --> SIG[Sigma Rule]
SCR --> STX[STIX 2.1]
SCR --> RPK[Report Pack]
end
style PG fill:#1a1a2e,stroke:#e94560,stroke-width:2px
style SCR fill:#0f3460,stroke:#e94560,stroke-width:2px
| المبدأ | التنفيذ |
|---|---|
| صفر تبعيات خارجية | لا يتطلب go.mod أي شيء ولا يوجد go.sum. مكتبة Go القياسية بالإضافة إلى حزمة واحدة مُضمَّنة غير معدَّلة — internal/x86asm، نسخة من golang.org/x/arch/x86/x86asm (BSD-3-Clause، محرك التفكيك) محفوظة داخل الشجرة بحيث لا يحتاج البناء إلى تنزيل ولا إلى شبكة. لا cgo، ولا مكتبات أصلية، ولا تبعيات وقت التشغيل |
| ثابت فقط | لا ينفّذ العينة أبدًا — يقرأ البايتات والبيانات الوصفية |
| آمن للخيوط | parallelRun() مع نتائج محمية بـ mutex، ومُتحقَّق منها بكاشف التسابق. تستعيد مراحل التحليل حالات panic بشكل فردي، بحيث لا يمكن لعينة مشوّهة واحدة أن تُجهض دفعة كاملة |
| محمول عبر المنصات | يُبنى لـ Linux وmacOS وWindows؛ mmap على Linux مع تراجع شفاف |
| قابل للتوسيع | واجهة إضافة + بيانات وصفية JSON لاكتشافات مخصصة دون إعادة ترجمة |
| الفحص | النتيجة |
|---|---|
go build / go vet / gofmt -l | نظيف |
go test ./... | 189 اختبارًا (344 حالة بما في ذلك الاختبارات الفرعية)، جميعها ناجحة |
go test -race ./... | نظيف |
go test -cover ./... | 50.6% من العبارات |
golangci-lint run | 0 مشكلات (errcheck، govet، staticcheck، gosec، errorlint، ineffassign، unused، bodyclose، nilerr، misspell، unconvert، wastedassign) |
govulncheck ./... | لم يتم العثور على ثغرات |
بيئة الاختبار. تم التحقق على Fedora Linux 44 (x86_64، kernel 7.1.7) مع Go 1.26.5. الحد الأدنى في
go.mod هو Go 1.25. تشغّل CI أيضًا نفس المجموعة على ubuntu-latest.
Linux هي المنصة الوحيدة التي تُقاس عليها هذه النتائج: macOS وWindows
أهداف مدعومة ويُترجم الكود ترجمة متقاطعة إليهما، لكن الأرقام أعلاه
غير مُعاد إنتاجها بشكل مستقل هناك، وmmap_linux.go خاص بـ Linux
بحكم التصميم (تأخذ المنصات الأخرى مسار القراءة المخزّنة المؤقتة الاحتياطي).
يعالج المحرك الملفات عبر 18 مرحلة مع تنفيذ متوازٍ للعمليات المستقلة: