
Сканирование файлов в реальном времени на основе контейнеров в масштабе предприятия.
<h1 align="center">
<img src="https://assets.kitploit.com/production/public/readmes/2436/2065ad071dd20cf7e35ddddfba0598d78452e4670e89342eed6f7a190a0a1fcb.png" alt="Баннер Strelka" />
</h1>
<div align="center">
[Релизы][release] | [Документация][wiki] | [Запросы на слияние][pr] | [Проблемы][issues]
[![Релиз GitHub][img-version-badge]][repo] [![Статус сборки][img-actions-badge]][actions-ci] [![Запросы на слияние][img-pr-badge]][pr] [![Slack][img-slack-badge]][slack] [![Лицензия][img-license-badge]][license]
</div>
Strelka — это система сканирования файлов в реальном времени на основе контейнеров, используемая для поиска угроз, обнаружения угроз и реагирования на инциденты. Изначально основанная на дизайне, предложенном Lockheed Martin [Laika BOSS](https://github.com/lmco/laikaboss), и аналогичных проектах (см.: [связанные проекты](#связанные-проекты)), цель Strelka — выполнять извлечение файлов и сбор метаданных в масштабах предприятия.
Strelka отличается от своих родственных проектов несколькими важными особенностями:
* Основной код написан на Go и Python3.10+
* Компоненты сервера запускаются в контейнерах для упрощения и гибкости развертывания
* Нативные клиентские приложения для Windows, Mac и Linux
* Создан с использованием [библиотек и форматов](#архитектура), обеспечивающих кроссплатформенную и межъязыковую поддержку
## Возможности
Strelka представляет собой модульную платформу для сканирования данных, позволяющую пользователям или системам отправлять файлы с целью анализа, извлечения и создания отчетов о содержимом файлов и метаданных. В сочетании с [SIEM](https://ru.wikipedia.org/wiki/SIEM) 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
```
#### Шаг 4a: Загрузите предварительно собранные образы и запустите Strelka
**Примечание**: Вы можете пропустить процесс `go build` и использовать `Strelka UI` по адресу `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
```
#### Шаг 4b: Соберите и запустите Strelka
**Примечание**: Вы можете пропустить процесс `go build` и использовать `Strelka UI` по адресу `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, используя докеризированный oneshot
```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
[Пользовательский интерфейс 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 помогает сократить время загрузки и использование ресурсов, особенно в средах с большим
набором правил. Убедитесь, что вы используете [параметр компиляции в конфигурации 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)
* [Фреймворк сканирования файлов](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" />
</div>
<!--
Ссылки
-->
[release]:https://github.com/target/strelka/releases/latest "Последний релиз Strelka ➶"
[issues]:https://github.com/target/strelka/issues "Проблемы Strelka ➶"
[pull-requests]:https://github.com/target/strelka/pulls "Запросы на слияние Strelka ➶"
[wiki]:https://target.github.io/strelka/#/ "Документация Strelka ➶"
[repo]:https://github.com/target/strelka "Репозиторий Strelka ➶"
[slack]:https://join.slack.com/t/cfc-open-source/shared_invite/zt-e54crchh-a6x4iDy18D5lVwFKQoEeEQ "Slack (внешняя ссылка) ➶"
[actions-ci]:https://github.com/target/strelka/actions/workflows/build_strelka_nightly.yml "Github Actions ➶"
[pr]:https://github.com/target/strelka/pulls "Запросы на слияние Strelka ➶"
[license]:https://raw.githubusercontent.com/target/strelka/master/LICENSE "Файл лицензии Strelka ➶"
[docker]:https://www.docker.com/ "Docker (внешняя ссылка) ➶"
<!--
Значки
-->
[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