
Echtzeit-, containerbasiertes Dateiscanning im Unternehmensmaßstab.
<h1 align="center">
<img src="https://assets.kitploit.com/production/public/readmes/2436/2065ad071dd20cf7e35ddddfba0598d78452e4670e89342eed6f7a190a0a1fcb.png" alt="Strelka-Banner" />
</h1>
<div align="center">
[Veröffentlichungen][release] | [Dokumentation][wiki] | [Pull-Requests][pr] | [Probleme][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 ist ein Echtzeit-, containerbasiertes Datei-Scansystem, das für die Bedrohungsjagd, Bedrohungserkennung und Vorfallreaktion verwendet wird. Ursprünglich basierend auf dem Design von Lockheed Martin's [Laika BOSS](https://github.com/lmco/laikaboss) und ähnlichen Projekten (siehe: [verwandte Projekte](#verwandte-projekte)), besteht der Zweck von Strelka darin, Dateiextraktion und Metadatensammlung im Enterprise-Maßstab durchzuführen.
Strelka unterscheidet sich in einigen wesentlichen Punkten von seinen Schwesterprojekten:
* Der Kern-Codebase besteht aus Go und Python 3.10+
* Serverkomponenten laufen in Containern für eine einfache und flexible Bereitstellung
* Betriebssystemnative Clientanwendungen für Windows, Mac und Linux
* Erstellt mit [Bibliotheken und Formaten](#architektur), die plattform- und sprachübergreifende Unterstützung ermöglichen
## Funktionen
Strelka ist eine modulare Daten-Scanning-Plattform, die es Benutzern oder Systemen ermöglicht, Dateien zur Analyse, Extraktion und Berichterstattung von Dateiinhalten und Metadaten einzureichen. In Verbindung mit einem [SIEM](https://de.wikipedia.org/wiki/Sicherheitsinformations-_und_ereignismanagement) ist Strelka in der Lage, zu aggregieren, zu warnen und Analysten die Möglichkeit zu geben, ihre Umgebung besser zu verstehen, ohne direkte Datensammlung oder zeitaufwändige Dateianalysen durchführen zu müssen.

## Schnellstart
Das Ausführen einer Datei durch Strelka ist einfach. In diesem Abschnitt werden die Fähigkeiten von Strelka zur Extraktion und Analyse für eine einmalige Analyse demonstriert.
*Bitte lesen Sie die [Dokumentation](https://target.github.io/strelka/) für Details, wie Strelka in einer Unternehmensumgebung korrekt erstellt und bereitgestellt wird.*
#### Schritt 1: Voraussetzungen installieren
```bash
# Ubuntu 23.04
sudo apt install -y wget git docker docker-compose golang jq && \
sudo usermod -aG docker $USER && \
newgrp docker
````
#### Schritt 2: Strelka herunterladen
```bash
git clone https://github.com/target/strelka.git && \
cd strelka
```
#### Schritt 3: Gewünschte Yara-Regeln herunterladen und installieren (optional)
```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
```
#### Schritt 4a: Vorkompilierte Images pullen und Strelka starten
**Hinweis**: Sie können den `go build`-Prozess überspringen und die `Strelka UI` unter `http://0.0.0.0:9980` zur Dateianalyse verwenden.
```bash
docker compose -f build/docker-compose-no-build.yaml up -d && \
go build github.com/target/strelka/src/go/cmd/strelka-oneshot
```
#### Schritt 4b: Strelka erstellen und starten
**Hinweis**: Sie können den `go build`-Prozess überspringen und die `Strelka UI` unter `http://0.0.0.0:9980` zur Dateianalyse verwenden.
```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
```
#### Schritt 5: Eine zu analysierende Datei vorbereiten
Verwenden Sie eine beliebige Malware-Probe oder eine andere Datei, die Strelka analysieren soll.
```bash
wget https://github.com/ytisf/theZoo/raw/master/malware/Binaries/Win32.Emotet/Win32.Emotet.zip -P samples/
```
#### Schritt 6: Analysieren Sie die Datei mit Strelka mithilfe des dockerisierten Oneshot
```bash
./strelka-oneshot -f samples/Win32.Emotet.zip -l - | jq
```
#### Was passiert hier?
1. Strelka hat festgestellt, dass die übermittelte Datei ein verschlüsseltes ZIP war (Siehe: [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) hat ein Wörterbuch verwendet, um das ZIP-Passwort zu knacken und die komprimierte Datei zu extrahieren
3. Die extrahierte Datei wurde vom Scanner zurück in die Strelka-Pipeline gesendet, und Strelka hat festgestellt, dass es sich um eine EXE-Datei handelt
4. [ScanPe](https://github.com/target/strelka/blob/master/src/python/strelka/scanners/scan_pe.py) hat die EXE-Datei zerlegt und nützliche Metadaten zur Ausgabe hinzugefügt
5. [ScanYara](https://github.com/target/strelka/blob/master/src/python/strelka/scanners/scan_yara.py) hat die EXE-Datei mit den bereitgestellten Regeln analysiert und zahlreiche Übereinstimmungen zur Ausgabe hinzugefügt, von denen einige darauf hindeuten, dass die Datei bösartig sein könnte
*Die folgende Ausgabe wurde aus Gründen der Kürze bearbeitet.*
```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"
]
}
}
}
```
#### Was kommt als Nächstes?
Wenn Strelka in Ihrer Umgebung bereitgestellt wird und Dateien aufnimmt, sammeln Sie diese Ereignisse möglicherweise in Ihrem SIEM. Mit dieser Analyse könnten Sie eine Regel schreiben, die nach Ereignissen sucht, die den verdächtigen Yara-Tags entsprechen, und Sie so auf eine potenziell bösartige Datei aufmerksam machen.
```
scan.yara.tags:("Technique_AntiDebugging" && "SubTechnique_SEH")
```
## Fileshot UI
Die [Strelka-Benutzeroberfläche](https://github.com/target/strelka-ui) ist verfügbar, wenn Sie die bereitgestellten Container erstellen. Diese Weboberfläche ermöglicht es Ihnen, Dateien in Strelka hochzuladen und die Ereignisse zu erfassen, die lokal gespeichert werden.
Navigieren Sie zu http://localhost:9980/ und verwenden Sie den Login strelka/strelka.

## Mögliche Anwendungen
Mit über 50 Datei-Scannern für die häufigsten Dateitypen (z. B. exe, docx, js, zip) bietet Strelka Benutzern die Möglichkeit, neue Einblicke in Dateien auf ihrem Host, Netzwerk oder Unternehmen zu gewinnen. Obwohl Strelka selbst *keine* Erkennungs-Engine ist (obwohl es [YARA](https://virustotal.github.io/yara/) nutzt), kann es genügend Metadaten liefern, um verdächtige oder bösartige Dateien zu identifizieren. Einige mögliche Anwendungen von Strelka sind:

## Zusätzliche Dokumentation
Weitere Dokumentation zu Strelka finden Sie im [README](https://target.github.io/strelka/), einschließlich:
- [Installation](https://target.github.io/strelka/#/?id=installation)
- [Bereitstellung](https://target.github.io/strelka/#/?id=deployment)
- [Design](https://target.github.io/strelka/#/?id=design)
- [Architektur](https://target.github.io/strelka/#/?id=architecture)
- [FAQ](https://target.github.io/strelka/#/?id=frequently-asked-questions)
## Mitwirken
Richtlinien für die Mitwirkung finden Sie [hier](https://github.com/target/strelka/blob/master/CONTRIBUTING.md).
## Bekannte Probleme
### Probleme beim Laden von YARA-Regeln
Benutzern wird empfohlen, ihre YARA-Regeln vorzukompilieren, um eine optimale Leistung zu erzielen und mögliche Probleme während der Laufzeit zu vermeiden.
Die Verwendung vorkompilierter YARA-Dateien trägt dazu bei, die Ladezeit und Ressourcennutzung zu reduzieren, insbesondere in Umgebungen mit einer großen
Anzahl von Regeln. Stellen Sie sicher, dass Sie die [kompilierte Option in der Strelka-Konfiguration](https://github.com/target/strelka/blob/master/configs/python/backend/backend.yaml)
verwenden, um auf die vorkompilierte Regeldatei zu verweisen.
### Sonstige Probleme
Siehe [mit `bug` gekennzeichnete Probleme](https://github.com/target/strelka/issues?q=is%3Aissue+is%3Aopen+label%3Abug) im Tracker für weitere Probleme.
## Verwandte Projekte
* [Laika BOSS](https://github.com/lmco/laikaboss)
* [File Scanning Framework](https://github.com/EmersonElectricCo/fsf)
* [Assemblyline](https://cybercentrecanada.github.io/assemblyline4_docs/)
## Lizenzierung
Strelka und der zugehörige Code werden unter den Bedingungen der [Apache 2.0 Lizenz](https://github.com/target/strelka/blob/master/LICENSE) veröffentlicht.
<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 Aktuellste Version ➶"
[issues]:https://github.com/target/strelka/issues "Strelka Probleme ➶"
[pull-requests]:https://github.com/target/strelka/pulls "Strelka Pull-Requests ➶"
[wiki]:https://target.github.io/strelka/#/ "Strelka Dokumentation ➶"
[repo]:https://github.com/target/strelka "Strelka Repository ➶"
[slack]:https://join.slack.com/t/cfc-open-source/shared_invite/zt-e54crchh-a6x4iDy18D5lVwFKQoEeEQ "Slack (externer 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 Lizenzdatei ➶"
[docker]:https://www.docker.com/ "Docker (externer 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