
مسح الملفات في الوقت الفعلي، القائم على الحاويات، على نطاق المؤسسات
<h1 align="center">
<img src="https://assets.kitploit.com/production/public/readmes/2436/2065ad071dd20cf7e35ddddfba0598d78452e4670e89342eed6f7a190a0a1fcb.png" alt="Strelka Banner" />
</h1>
<div align="center">
[الإصدارات][release] | [التوثيق][wiki] | [طلبات السحب][pr] | [المشكلات][issues]
[![GitHub release][img-version-badge]][repo] [![Build Status][img-actions-badge]][actions-ci] [![Pull Requests][img-pr-badge]][pr] [![Slack][img-slack-badge]][slack] [![License][img-license-badge]][license]
</div>
Strelka هو نظام فحص ملفات في الوقت الفعلي يعتمد على الحاويات، يُستخدم في البحث عن التهديدات واكتشافها والاستجابة للحوادث. يعتمد التصميم الأصلي على ما أسسته شركة Lockheed Martin في مشروع [Laika BOSS](https://github.com/lmco/laikaboss) ومشاريع مشابهة (انظر: [المشاريع ذات الصلة](#related-projects)). الهدف من Strelka هو استخراج الملفات وجمع البيانات الوصفية على نطاق المؤسسات.
يختلف Strelka عن المشاريع الشقيقة بعدة طرق مهمة:
* قاعدة الكود الأساسية هي Go وPython3.10+
* تعمل مكونات الخادم داخل حاويات لسهولة ومرونة النشر
* تطبيقات عميل أصلية لأنظمة Windows وMac وLinux
* مبني على [مكتبات وصيغ](#architecture) تدعم عبر المنصات واللغات
## الميزات
Strelka هو منصة مسح بيانات معيارية، تتيح للمستخدمين أو الأنظمة إرسال الملفات بغرض تحليلها واستخراج محتواها وبياناتها الوصفية والإبلاغ عنها. عند إقرانه بنظام [SIEM](https://en.wikipedia.org/wiki/Security_information_and_event_management)، يصبح Strelka قادرًا على التجميع والتنبيه وتزويد المحللين بالقدرة على فهم بيئتهم بشكل أفضل دون الحاجة إلى جمع البيانات يدويًا أو تحليل الملفات المستغرق للوقت.

## بداية سريعة
تشغيل ملف عبر Strelka أمر بسيط. في هذا القسم، سيتم عرض إمكانيات الاستخراج والتحليل في Strelka لتحليل لمرة واحدة.
*يُرجى مراجعة [التوثيق](https://target.github.io/strelka/) للحصول على تفاصيل حول كيفية بناء ونشر Strelka بشكل صحيح في بيئة مؤسسية.*
#### الخطوة 1: تثبيت المتطلبات الأساسية
```bash
# Ubuntu 23.04
sudo apt install -y wget git docker docker-compose golang jq && \
sudo usermod -aG docker $USER && \
newgrp docker
````
#### الخطوة 2: تنزيل Strelka
```bash
git clone https://github.com/target/strelka.git && \
cd strelka
```
#### الخطوة 3: تنزيل وتثبيت قواعد yara المفضلة (اختياري)
```bash
rm configs/python/backend/yara/rules.yara && \
git clone https://github.com/Yara-Rules/rules.git configs/python/backend/yara/rules/ && \
echo 'include "./rules/index.yar"' > configs/python/backend/yara/rules.yara
```
#### الخطوة 4أ: سحب الصور المجمعة مسبقًا وبدء Strelka
**ملاحظة**: يمكنك تخطي عملية `go build` واستخدام `واجهة Strelka` على `http://0.0.0.0:9980` لتحليل الملفات.
```bash
docker compose -f build/docker-compose-no-build.yaml up -d && \
go build github.com/target/strelka/src/go/cmd/strelka-oneshot
```
#### الخطوة 4ب: بناء وبدء Strelka
**ملاحظة**: يمكنك تخطي عملية `go build` واستخدام `واجهة Strelka` على `http://0.0.0.0:9980` لتحليل الملفات.
```bash
docker compose -f build/docker-compose.yaml build && \
docker compose -f build/docker-compose.yaml up -d && \
go build github.com/target/strelka/src/go/cmd/strelka-oneshot
```
#### الخطوة 5: تحضير ملف للتحليل
استخدم أي عينة برمجيات ضارة أو أي ملف آخر تريد تحليله بواسطة Strelka.
```bash
wget https://github.com/ytisf/theZoo/raw/master/malware/Binaries/Win32.Emotet/Win32.Emotet.zip -P samples/
```
#### الخطوة 6: تحليل الملف باستخدام Strelka من خلال الأداة الأحادية في الحاوية
```bash
./strelka-oneshot -f samples/Win32.Emotet.zip -l - | jq
```
#### ماذا يحدث هنا؟
1. يحدد Strelka أن الملف المرسل هو ملف ZIP مشفر (انظر: [taste.yara](https://github.com/target/strelka/blob/master/configs/python/backend/taste/taste.yara) و[backend.yaml](https://github.com/target/strelka/blob/master/configs/python/backend/backend.yaml))
2. يستخدم [ScanEncryptedZip](https://github.com/target/strelka/blob/master/src/python/strelka/scanners/scan_encrypted_zip.py) قاموسًا لفك تشفير كلمة مرور ملف ZIP واستخراج الملف المضغوط
3. يتم إعادة الملف المستخرج إلى مسار معالجة Strelka بواسطة الماسح الضوئي، ويحدد Strelka أن الملف المستخرج هو ملف EXE
4. يقوم [ScanPe](https://github.com/target/strelka/blob/master/src/python/strelka/scanners/scan_pe.py) بتفكيك ملف EXE وإضافة بيانات وصفية مفيدة إلى المخرجات
5. يقوم [ScanYara](https://github.com/target/strelka/blob/master/src/python/strelka/scanners/scan_yara.py) بتحليل ملف EXE باستخدام القواعد المقدمة، ويضيف العديد من التطابقات إلى المخرجات، بعضها يشير إلى أن الملف قد يكون ضارًا
*تم تعديل المخرجات التالية للاختصار.*
```json
{
"file": {
"depth": 0,
"flavors": {
"mime": ["application/zip"],
"yara": ["encrypted_zip", "zip_file"]
},
"scanners": [
"ScanEncryptedZip",
"ScanEntropy",
"ScanFooter",
"ScanHash",
"ScanHeader",
"ScanYara",
"ScanZip"
]
},
"scan": {
"encrypted_zip": {
"cracked_password": "infected",
"elapsed": 0.114269,
"total": {"extracted": 1, "files": 1}
}
}
}
```
```json
{
"file": {
"depth": 1,
"flavors": {
"mime": ["application/x-dosexec"],
"yara": ["mz_file"]
},
"name": "29D6161522C7F7F21B35401907C702BDDB05ED47.bin",
"scanners": [
"ScanEntropy",
"ScanFooter",
"ScanHash",
"ScanHeader",
"ScanPe",
"ScanYara"
]
},
"scan": {
"pe": {
"address_of_entry_point": 5168,
"base_of_code": 4096,
"base_of_data": 32768,
"checksum": 47465,
"compile_time": "2015-03-31T08:53:51",
"elapsed": 0.013076,
"file_alignment": 4096,
"file_info": {
"company_name": "In CSS3",
"file_description": "Note: In CSS3, the text-decoration property is a shorthand property for text-decoration-line, text-decoration-color, and text-decoration-style, but this is currently.",
"file_version": "1.00.0065",
"fixed": {"operating_systems": ["WINDOWS32"]},
"internal_name": "Callstb",
"original_filename": "NOFAstb.exe",
"product_name": "Goodreads",
"product_version": "1.00.0065",
"var": {"character_set": "Unicode", "language": "U.S. English"}
}
},
"yara": {
"elapsed": 0.068918,
"matches": [
"SEH__vba",
"SEH_Init",
"Big_Numbers1",
"IsPE32",
"IsWindowsGUI",
"HasOverlay",
"HasRichSignature",
"Microsoft_Visual_Basic_v50v60",
"Microsoft_Visual_Basic_v50",
"Microsoft_Visual_Basic_v50_v60",
"Microsoft_Visual_Basic_v50_additional",
"Microsoft_Visual_Basic_v50v60_additional"
],
"tags": [
"AntiDebug",
"SEH",
"Tactic_DefensiveEvasion",
"Technique_AntiDebugging",
"SubTechnique_SEH",
"PECheck",
"PEiD"
]
}
}
}
```
#### ما التالي؟
إذا تم نشر Strelka وكان يبتلع الملفات في بيئتك، فقد تجمع هذه الأحداث في نظام SIEM الخاص بك. باستخدام هذا التحليل، يمكنك كتابة قاعدة تبحث عن الأحداث التي تطابق علامات yara المشبوهة، لتنبيهك إلى وجود ملف قد يكون ضارًا.
```
scan.yara.tags:("Technique_AntiDebugging" && "SubTechnique_SEH")
```
## واجهة Fileshot UI
[واجهة Strelka](https://github.com/target/strelka-ui) متاحة عند بناء الحاويات المقدمة. تتيح لك هذه الواجهة الويب رفع الملفات إلى Strelka والتقاط الأحداث، والتي يتم تخزينها محليًا.
انتقل إلى http://localhost:9980/ واستخدم بيانات الدخول strelka/strelka.

## الاستخدامات المحتملة
مع أكثر من 50 ماسحًا ضوئيًا لأكثر أنواع الملفات شيوعًا (مثل: exe, docx, js, zip)، يوفر Strelka للمستخدمين القدرة على اكتساب رؤى جديدة حول الملفات الموجودة على مضيفهم أو شبكتهم أو مؤسستهم. على الرغم من أن Strelka *ليس* محرك كشف بحد ذاته (على الرغم من أنه يستخدم [YARA](https://virustotal.github.io/yara/))، إلا أنه يمكنه توفير بيانات وصفية كافية لتحديد الملفات المشبوهة أو الضارة. بعض الاستخدامات المحتملة لـ Strelka تشمل:

## توثيق إضافي
يمكن العثور على المزيد من التوثيق حول Strelka في [README](https://target.github.io/strelka/)، بما في ذلك:
- [التثبيت](https://target.github.io/strelka/#/?id=installation)
- [النشر](https://target.github.io/strelka/#/?id=deployment)
- [التصميم](https://target.github.io/strelka/#/?id=design)
- [الهندسة المعمارية](https://target.github.io/strelka/#/?id=architecture)
- [الأسئلة الشائعة](https://target.github.io/strelka/#/?id=frequently-asked-questions)
## المساهمة
يمكن العثور على إرشادات المساهمة [هنا](https://github.com/target/strelka/blob/master/CONTRIBUTING.md).
## المشكلات المعروفة
### مشكلات تحميل قواعد YARA
يُنصح المستخدمون بتجميع قواعد YARA مسبقًا لتحقيق الأداء الأمثل وتجنب المشكلات المحتملة أثناء وقت التشغيل.
يساعد استخدام ملفات YARA المُجمّعة مسبقًا في تقليل وقت التحميل واستخدام الموارد، خاصة في البيئات التي تحتوي على مجموعة
كبيرة من القواعد. تأكد من استخدام [خيار compiled في إعدادات Strelka](https://github.com/target/strelka/blob/master/configs/python/backend/backend.yaml)
للإشارة إلى ملف القواعد المُجمّع مسبقًا.
### مشكلات أخرى
انظر إلى [المشكلات الموسومة بـ`bug`](https://github.com/target/strelka/issues?q=is%3Aissue+is%3Aopen+label%3Abug) في المتتبع لأي مشكلات إضافية.
## المشاريع ذات الصلة
* [Laika BOSS](https://github.com/lmco/laikaboss)
* [File Scanning Framework](https://github.com/EmersonElectricCo/fsf)
* [Assemblyline](https://cybercentrecanada.github.io/assemblyline4_docs/)
## الترخيص
Strelka ورمزها المرتبط به يتم إصدارهما بموجب شروط [رخصة Apache 2.0](https://github.com/target/strelka/blob/master/LICENSE).
<div align="center">
<img src="https://assets.kitploit.com/production/public/readmes/2436/1bbf5d22a15b9058f400fdd15b49dc4bbca672a6e4ad5bd4773998390025305b.png" alt="Target Banner" />
</div>
<!--
Links
-->
[release]:https://github.com/target/strelka/releases/latest "Strelka Latest Release ➶"
[issues]:https://github.com/target/strelka/issues "Strelka Issues ➶"
[pull-requests]:https://github.com/target/strelka/pulls "Strelka Pull Requests ➶"
[wiki]:https://target.github.io/strelka/#/ "Strelka Documentation ➶"
[repo]:https://github.com/target/strelka "Strelka Repository ➶"
[slack]:https://join.slack.com/t/cfc-open-source/shared_invite/zt-e54crchh-a6x4iDy18D5lVwFKQoEeEQ "Slack (external link) ➶"
[actions-ci]:https://github.com/target/strelka/actions/workflows/build_strelka_nightly.yml "Github Actions ➶"
[pr]:https://github.com/target/strelka/pulls "Strelka Pull Requests ➶"
[license]:https://raw.githubusercontent.com/target/strelka/master/LICENSE "Strelka License File ➶"
[docker]:https://www.docker.com/ "Docker (external link) ➶"
<!--
Badges
-->
[img-version-badge]:https://img.shields.io/github/release/target/strelka.svg?style=for-the-badge
[img-slack-badge]:https://img.shields.io/badge/slack-join-red.svg?style=for-the-badge&logo=slack
[img-actions-badge]:https://img.shields.io/github/actions/workflow/status/target/strelka/build_strelka_nightly.yml?branch=master&style=for-the-badge
[img-pr-badge]:https://img.shields.io/badge/PRs-welcome-orange.svg?style=for-the-badge&logo=data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJzdmcyIiB3aWR0aD0iNjQ1IiBoZWlnaHQ9IjU4NSIgdmVyc2lvbj0iMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPiA8ZyBpZD0ibGF5ZXIxIj4gIDxwYXRoIGlkPSJwYXRoMjQxNyIgZD0ibTI5Ny4zIDU1MC44N2MtMTMuNzc1LTE1LjQzNi00OC4xNzEtNDUuNTMtNzYuNDM1LTY2Ljg3NC04My43NDQtNjMuMjQyLTk1LjE0Mi03Mi4zOTQtMTI5LjE0LTEwMy43LTYyLjY4NS01Ny43Mi04OS4zMDYtMTE1LjcxLTg5LjIxNC0xOTQuMzQgMC4wNDQ1MTItMzguMzg0IDIuNjYwOC01My4xNzIgMTMuNDEtNzUuNzk3IDE4LjIzNy0zOC4zODYgNDUuMS02Ni45MDkgNzkuNDQ1LTg0LjM1NSAyNC4zMjUtMTIuMzU2IDM2LjMyMy0xNy44NDUgNzYuOTQ0LTE4LjA3IDQyLjQ5My0wLjIzNDgzIDUxLjQzOSA0LjcxOTcgNzYuNDM1IDE4LjQ1MiAzMC40MjUgMTYuNzE0IDYxLjc0IDUyLjQzNiA2OC4yMTMgNzcuODExbDMuOTk4MSAxNS42NzIgOS44NTk2LTIxLjU4NWM1NS43MTYtMTIxLjk3IDIzMy42LTEyMC4xNSAyOTUuNSAzLjAzMTYgMTkuNjM4IDM5LjA3NiAyMS43OTQgMTIyLjUxIDQuMzgwMSAxNjkuNTEtMjIuNzE1IDYxLjMwOS02NS4zOCAxMDguMDUtMTY0LjAxIDE3OS42OC02NC42ODEgNDYuOTc0LTEzNy44OCAxMTguMDUtMTQyLjk4IDEyOC4wMy01LjkxNTUgMTEuNTg4LTAuMjgyMTYgMS44MTU5LTI2LjQwOC0yNy40NjF6IiBmaWxsPSIjZGQ1MDRmIi8+IDwvZz48L3N2Zz4=
[img-license-badge]:https://img.shields.io/badge/license-apache-ff69b4.svg?style=for-the-badge&logo=apache
[img-docker-badge]:https://img.shields.io/badge/Supports-Docker-yellow.svg?style=for-the-badge&logo=docker