
secator - швейцарский нож пентестера
<h1 align="center">
<img src="https://assets.kitploit.com/production/public/readmes/6300/dc9ae605fb3dd81cb606836bd853e391122c4acde19b8554c2db00fcaa28a6e5.png" width="400">
</h1>
<h4 align="center">Швейцарский нож пентестера.</h4>
<p align="center">
<!-- <a href="https://goreportcard.com/report/github.com/freelabz/secator"><img src="https://goreportcard.com/badge/github.com/freelabz/secator"></a> -->
<img src="https://img.shields.io/badge/python-3.6-blue.svg">
<a href="https://github.com/freelabz/secator/releases"><img src="https://img.shields.io/github/release/freelabz/secator"></a>
<a href="https://github.com/freelabz/secator/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-BSL%201.1-brightgreen.svg"></a>
<a href="https://pypi.org/project/secator/"><img src="https://img.shields.io/pypi/dm/secator"></a>
<a href="https://twitter.com/freelabz"><img src="https://img.shields.io/twitter/follow/freelabz.svg?logo=twitter"></a>
<a href="https://youtube.com/@FreeLabz"><img src="https://img.shields.io/youtube/channel/subscribers/UCu-F6SpU0h2NP18zBBP04cw?style=social&label=Subscribe%20@FreeLabz"></a>
<a href="https://discord.gg/nyHjC2aTrq"><img src="https://img.shields.io/discord/695645237418131507.svg?logo=discord"></a>
</p>
<p align="center">
<a href="#features">Возможности</a> •
<a href="#supported-commands">Поддерживаемые команды</a> •
<a href="#install-secator">Установка</a> •
<a href="#usage">Использование</a> •
<a href="https://docs.freelabz.com">Документация</a> •
<a href="https://discord.gg/nyHjC2aTrq">Присоединяйтесь к нам в Discord!</a>
</p>
`secator` — это исполнитель задач и рабочих процессов, используемый для оценки безопасности. Он поддерживает десятки известных инструментов безопасности и предназначен для повышения продуктивности пентестеров и исследователей безопасности.
# Возможности

* **Курируемый список команд**
* **Унифицированные параметры ввода**
* **Унифицированная схема вывода**
* **Использование через CLI и в виде библиотеки**
* **Распределённые возможности с Celery**
* **Сложность: от простых задач до комплексных рабочих процессов**
* **Настраиваемость**
## Поддерживаемые инструменты
`secator` интегрирует следующие инструменты:
<!-- START_TOOLS_TABLE -->
| Имя | Описание | Категория |
|-----------------------------------------------------------------|----------------------------------------------------------------------------------|-------------------|
| [arjun](https://github.com/s0md3v/Arjun) | Набор для поиска HTTP-параметров. | `url/fuzz/params` |
| arp | Отобразить системный ARP-кэш. | `ip/recon` |
| [arpscan](https://github.com/royhills/arp-scan) | Сканирование CIDR-диапазона на живые хосты с помощью ARP. | `ip/recon` |
| [bbot](https://github.com/blacklanternsecurity/bbot) | Многоцелевой сканер. | `vuln/scan` |
| [bup](https://github.com/laluka/bypass-url-parser) | Обходчик 40X. | `url/bypass` |
| [cariddi](https://github.com/edoardottt/cariddi) | Сканер конечных точек, секретов, ключей API, расширений, токенов... | `url/crawl` |
| [dalfox](https://github.com/hahwul/dalfox) | Мощный инструмент с открытым исходным кодом для сканирования XSS. | `url/fuzz` |
| [dirsearch](https://github.com/maurosoria/dirsearch) | Продвинутый брутфорсер веб-путей. | `url/fuzz` |
| [dnsx](https://github.com/projectdiscovery/dnsx) | dnsx — быстрый и многоцелевой DNS-инструментарий, разработанный для работы с библиотекой retryabledns. | `dns/fuzz` |
| [feroxbuster](https://github.com/epi052/feroxbuster) | Простой, быстрый, рекурсивный инструмент для поиска контента, написанный на Rust | `url/fuzz` |
| [ffuf](https://github.com/ffuf/ffuf) | Быстрый веб-фаззер, написанный на Go. | `url/fuzz` |
| [fping](https://github.com/schweikert/fping) | Отправка ICMP-эхо-запросов сетевым хостам, похоже на ping, но гораздо лучше. | `ip/recon` |
| [gau](https://github.com/lc/gau) | Получение известных URL из AlienVault Open Threat Exchange, Wayback Machine, Common Crawl и URLScan. | `pattern/scan` |
| [getasn](https://github.com/Vulnpire/getasn) | Получение информации об ASN по IP-адресу. | `ip/probe` |
| [gf](https://github.com/tomnomnom/gf) | Обёртка над grep для упрощения поиска определённых вещей. | `pattern/scan` |
| [gitleaks](https://github.com/gitleaks/gitleaks) | Инструмент для обнаружения секретов (паролей, ключей API, токенов) в git-репозиториях, файлах и stdin. | `secret/scan` |
| [gospider](https://github.com/jaeles-project/gospider) | Быстрый веб-паук, написанный на Go. | `url/crawl` |
| [grype](https://github.com/anchore/grype) | Сканер уязвимостей для контейнерных образов и файловых систем. | `vuln/scan` |
| [h8mail](https://github.com/khast3x/h8mail) | Инструмент для поиска информации об email и паролях. | `user/recon/email` |
| [httpx](https://github.com/projectdiscovery/httpx) | Быстрый и многоцелевой HTTP-инструментарий. | `url/probe` |
| [jswhois](https://github.com/jschauma/jswhois) | WHOIS в формате JSON | `domain/info` |
| [katana](https://github.com/projectdiscovery/katana) | Следующее поколение фреймворков для сканирования и обхода сайтов. | `url/crawl` |
| [maigret](https://github.com/soxoj/maigret) | Сбор досье на человека по имени пользователя. | `user/recon/username` |
| [mapcidr](https://github.com/projectdiscovery/mapcidr) | Утилита для выполнения нескольких операций над заданными подсетями/CIDR-диапазонами. | `ip/recon` |
| [msfconsole](https://docs.rapid7.com/metasploit/msf-overview/) | CLI для доступа и работы с Metasploit Framework. | `exploit/attack` |
| [naabu](https://github.com/projectdiscovery/naabu) | Инструмент сканирования портов, написанный на Go. | `port/scan` |
| [nmap](https://github.com/nmap/nmap) | Network Mapper — бесплатная утилита с открытым исходным кодом для обнаружения сети и аудита безопасности. | `port/scan` |
| [nuclei](https://github.com/projectdiscovery/nuclei) | Быстрый и настраиваемый сканер уязвимостей на основе простого YAML-DSL. | `vuln/scan` |
| [search_vulns](https://github.com/ra1nb0rn/search_vulns) | Поиск известных уязвимостей в программном обеспечении по имени продукта или CPE. | `vuln/recon` |
| [searchsploit](https://gitlab.com/exploit-database/exploitdb) | Поиск эксплойтов на основе ExploitDB. | `exploit/recon` |
| [sshaudit](https://github.com/jtesta/ssh-audit) | Аудит безопасности SSH-сервера и клиента (баннер, обмен ключами, шифрование, MAC, сжатие и т.д.). | `ssh/audit/security` |
| [subfinder](https://github.com/projectdiscovery/subfinder) | Быстрый инструмент для пассивного перечисления поддоменов. | `dns/recon` |
| [testssl](https://github.com/testssl/testssl.sh) | Сканер безопасности SSL/TLS, включая шифры, протоколы и криптографические недостатки. | `dns/recon/tls` |
| [trivy](https://github.com/aquasecurity/trivy) | Комплексный и универсальный сканер безопасности. | `vuln/scan` |
| [trufflehog](https://github.com/trufflesecurity/trufflehog) | Инструмент для поиска секретов в git-репозиториях и файловых системах с использованием TruffleHog. | `secret/scan` |
| [urlfinder](https://github.com/projectdiscovery/urlfinder) | Поиск URL в тексте. | `pattern/scan` |
| [wafw00f](https://github.com/EnableSecurity/wafw00f) | Инструмент для определения Web Application Firewall. | `waf/scan` |
| [whois](https://github.com/mboot-github/WhoisDomain) | Инструмент whois получает регистрационную информацию о доменных именах и IP-адресах. | |
| [wpprobe](https://github.com/Chocapikk/wpprobe) | Быстрый инструмент для перечисления плагинов WordPress. | `vuln/scan/wordpress` |
| [wpscan](https://github.com/wpscanteam/wpscan) | Сканер безопасности WordPress. | `vuln/scan/wordpress` |
| [x8](https://github.com/Sh1Yo/x8) | Набор для поиска скрытых параметров, написанный на Rust. | `url/fuzz/params` |
| [xurlfind3r](https://github.com/hueristiq/xurlfind3r) | Обнаружение URL для заданного домена простым, пассивным и эффективным способом. | `url/recon` |
<!-- END_TOOLS_TABLE -->
Не стесняйтесь запрашивать добавление новых инструментов, открыв issue, но перед этим проверьте, соответствует ли инструмент нашим критериям отбора. Если нет, но вы всё равно хотите интегрировать его в `secator`, вы можете подключить его самостоятельно (см. [руководство разработчика](https://docs.freelabz.com/for-developers/writing-custom-tasks)).
## Установка secator
<details>
<summary>Bash</summary>
```sh
bash -c "$(curl -fsSL https://raw.githubusercontent.com/freelabz/secator/main/scripts/install_universal.sh)"
```
***Примечание:** Поддерживает опциональные флаги `--version`, `--templates`, `--addons` и `--tools` — запустите скрипт с `--help` для подробностей.*
</details>
<details>
<summary>Pipx</summary>
```sh
pipx install secator
```
***Примечание:** Убедитесь, что у вас установлен [pipx](https://pipx.pypa.io/stable/installation/).*
</details>
<details>
<summary>Pip</summary>
```sh
pip install secator
```
</details>
<details>
<summary>Docker</summary>
```sh
docker run -it --rm --net=host -v ~/.secator:/root/.secator freelabz/secator --help
```
Монтирование тома -v необходимо для сохранения всех отчётов secator на вашем хосте, а --net=host рекомендуется для предоставления полного доступа к сети хоста.
Вы можете создать алиас для этой команды, чтобы упростить запуск:
```sh
alias secator="docker run -it --rm --net=host -v ~/.secator:/root/.secator freelabz/secator"
```
Теперь вы можете запускать secator так, как если бы он был установлен напрямую:
```
secator --help
```
</details>
<details>
<summary>Docker Compose</summary>
```sh
git clone https://github.com/freelabz/secator
cd secator
docker-compose up -d
docker-compose exec secator-client secator --help
```
</details>
***Примечание:*** Если вы выбрали установку через Docker или Docker Compose, можете пропустить следующие разделы и перейти сразу к [Использованию](#usage).
## Использование
```sh
secator --help
```
### Примеры использования
Чтобы получить полную шпаргалку по возможностям `secator`, прочитайте вывод:
```sh
secator cheatsheet
```
Запуск задачи фаззинга (`ffuf`):
```sh
secator x ffuf http://testphp.vulnweb.com/FUZZ
```
Запуск рабочего процесса обхода URL:
```sh
secator w url_crawl http://testphp.vulnweb.com
```
Запуск сканирования хоста:
```sh
secator s host mydomain.com
```
Чтобы вывести список всех доступных задач / рабочих процессов / сканирований:
```sh
secator x --help
secator w --help
secator s --help
```
Чтобы узнать, какие языки или инструменты установлены в вашей системе (вместе с их версиями):
```sh
secator health
```
### Запросы
`secator` позволяет запрашивать все предыдущие отчёты с помощью команды `secator query` (или `secator q`) и повторно использовать запросы.
`secator q <arg>` разрешает свой аргумент в три этапа:
1. **Имя сохранённого запроса** — если `<arg>` совпадает с сохранённым запросом, используется его выражение.
2. **Выражение фильтра** — если `<arg>` выглядит как фильтр (содержит `==`, `<`, `~=`, `&&`, …), он передаётся напрямую.
3. **Естественный язык** — в противном случае он отправляется в AI-чат (`secator x ai --mode chat`).
```sh
# Выполнение выражений напрямую
secator q "vulnerability.tags ~= 'kev' && vulnerability.confidence == 'high'" # уязвимости KEV + высокая уверенность
secator q "vulnerability.severity == 'critical' && vulnerability.tags ~= 'exploitable' && vulnerability.confidence == 'high'" # уязвимости critical + exploitable + высокая уверенность
secator q "vulnerability.severity_nb < 2 && vulnerability.confidence == 'high'" # уязвимости severity > high + высокая уверенность
secator q "exploit.cves ~= 'CVE-2021-44521'" # найденные эксплойты для уязвимости CVE-2021-44521
secator q "port" -f "{host} {port} {service_name}" | cut -d " " -f2 | sort | uniq -c | sort -nr | head -n 15 # топ-15 портов
secator q "port" -f "{host} {port} {service_name}" | cut -d " " -f3,4,5,6 | awk 'NF > 0' | sort | uniq -c | sort -nr | head -n 15 # топ-15 сервисов
secator q "technology" -f "{product}/{version}" | sort | uniq -c | sort -nr | head -n 15 # топ-15 технологий
secator q "port.state == 'open'" -rf scans/23,tasks/10 # только результаты из сканирования 23 и задачи 10
# Сохранение запроса и его выполнение
secator c set queries.critical_vulns "vulnerability.severity_nb < 2" # сохранить запрос
secator c get queries # список сохранённых запросов
secator q critical_vulns -f "{vulnerability.matched_at}" -ws secator.cloud # выполнить сохранённый запрос в рабочем пространстве + извлечь цели
# Задать вопрос на естественном языке (запускает задачу AI-чата)
secator q "Analyze my workspace data"
```
`secator q` принимает те же опции, что и `secator r show` (`-o/--output`,
`-d/--time-delta`, `-f/--format`, `-w/-ws/--workspace`, `--driver`, `--dedupe`),
плюс `-rf/--report-filter` для ограничения запроса конкретными путями runner'ов (аналог аргумента `REPORT_QUERY` для `r show`). В режиме AI-чата используются только рабочее пространство и запрос.
### Автодополнение в shell
`secator` поддерживает автодополнение в shell для bash, zsh и fish. Оно предоставляет автодополнение для:
- Имён задач (например, `nmap`, `httpx`, `nuclei`)
- Имён рабочих процессов (например, `url_crawl`, `subdomain_recon`)
- Имён сканирований (например, `host`, `domain`, `network`)
- Опций CLI, таких как `--profiles`, `--workspace`, `--driver`, `--output`
Для установки автодополнения:
**Bash:**
```sh
secator util completion --shell bash --install
source ~/.bashrc
```
**Zsh:**
```sh
secator util completion --shell zsh --install
source ~/.zshrc
```
**Fish:**
```sh
secator util completion --shell fish --install
```
После установки вы можете использовать автодополнение по Tab:
```sh
secator x n<TAB> # дополняет до nmap, naabu, nuclei и т.д.
secator w url_<TAB> # дополняет до url_crawl, url_fuzz, url_dirsearch и т.д.
secator x nmap --profiles ag<TAB> # дополняет до aggressive
```
## Установка инструментов
`secator` автоматически устанавливает инструменты при первом использовании.
Вы можете отключить это поведение, установив `security.autoinstall_commands` в `false` с помощью `secator config set security.autoinstall_commands false` или `SECATOR_SECURITY_AUTOINSTALL_COMMANDS=0`.
Чтобы установить все инструменты, выполните:
```sh
secator install tools
```
## Установка дополнений (addons)
Для `secator` доступны дополнения. Подробности смотрите в [нашей документации](https://docs.freelabz.com/getting-started/installation#installing-addons-optional).
Например, дополнение `mongodb` позволяет отправлять результаты runner'ов в MongoDB.
## Узнать больше
Чтобы глубже изучить `secator`, посмотрите:
* Нашу полную [документацию](https://docs.freelabz.com)
* Наше вводное [видеоурок](https://youtu.be/-JmUTNWQDTQ?si=qpAClDWMXo2zwUK7)
* Нашу [статью на Medium](https://medium.com/p/09333f3d3682)
* Следите за нами в социальных сетях: [@freelabz](https://twitter.com/freelabz) в Twitter и [@FreeLabz](https://youtube.com/@FreeLabz) на YouTube
## Статистика
<a href="https://star-history.com/#freelabz/secator&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=freelabz/secator&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=freelabz/secator&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=freelabz/secator&type=Date" />
</picture>
</a>