
Go में स्टैटिक मैलवेयर ट्राइएज इंजन: फ़ाइलों का हैश बनाता है, स्ट्रिंग्स और IOC निकालता है, PE/ELF/Mach-O/APK पार्स करता है, क्षमताओं को स्कोर करता है, और JSON, YARA, Sigma, STIX तथा PDF रिपोर्ट उत्पन्न करता है।
स्टैटिक मैलवेयर विश्लेषण इंजन — शून्य बाहरी निर्भरताएँ, cgo-मुक्त, स्टैटिक रूप से लिंक्ड
रिपॉज़िटरी: https://github.com/Masriyan/FlatScan
FlatScan एक प्रोडक्शन-ग्रेड स्टैटिक मैलवेयर विश्लेषण और रिपोर्टिंग इंजन है जो शुद्ध Go में लिखा गया है। यह उन विश्लेषकों के लिए डिज़ाइन किया गया है जिन्हें तेज़ ट्रायाज, IOC निष्कर्षण, संदिग्ध क्षमता पहचान, कार्यकारी रिपोर्टिंग, और हंटिंग-रूल हैंडऑफ़ की आवश्यकता होती है — और यह सब सैंपल को निष्पादित किए बिना।
FlatScan एक फ़ाइल पढ़ता है, उसका हैश बनाता है, फ़ॉर्मेट की पहचान करता है, स्ट्रिंग्स निकालता है, संदिग्ध एन्कोडेड डेटा को डिकोड करता है, IOC निकालता है और उनका ट्रायाज करता है, एक्ज़ीक्यूटेबल/कंटेनर मेटाडेटा का निरीक्षण करता है, निष्कर्षों को स्कोर करता है, उन्हें एक मैलवेयर प्रोफ़ाइल में समृद्ध करता है, और टेक्स्ट, JSON, PDF, HTML, IOC, YARA, Sigma, STIX 2.1, केस डेटाबेस, और रिपोर्ट-पैक आउटपुट उत्पन्न करता है।
मैलवेयर ट्रायाज के अक्सर दो दर्शक होते हैं:
| दर्शक | आवश्यकताएँ |
|---|---|
| सुरक्षा विश्लेषक | तकनीकी साक्ष्य: हैश, स्ट्रिंग्स, इम्पोर्ट्स, IOC, एन्ट्रॉपी, सेक्शन, डिकोडेड डेटा, TTP, हंटिंग रूल्स |
| CISO / प्रबंधन | जोखिम संदर्भ: यह संभवतः क्या है, यह क्यों मायने रखता है, व्यावसायिक प्रभाव, अनुशंसित कार्रवाइयाँ |
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() म्यूटेक्स-संरक्षित निष्कर्षों के साथ, रेस-डिटेक्टर द्वारा सत्यापित। विश्लेषण चरण पैनिक्स को व्यक्तिगत रूप से रिकवर करते हैं, इसलिए एक विकृत सैंपल किसी बैच को निरस्त नहीं कर सकता |
| प्लेटफ़ॉर्म पोर्टेबल | Linux, macOS, Windows के लिए बिल्ड होता है; Linux पर mmap के साथ पारदर्शी फ़ॉलबैक |
| विस्तारणीय | कस्टम डिटेक्शन के लिए प्लगइन इंटरफ़ेस + 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 चरणों के माध्यम से फ़ाइलों को संसाधित करता है: