
SMBeagle - инструмент аудита файловых ресурсов.
[](https://GitHub.com/punk-security/pwnspoof/graphs/commit-activity)
[](https://www.punksecurity.co.uk)
[](https://hub.docker.com/r/punksecurity/smbeagle)
[](https://sonarcloud.io/summary/new_code?id=punk-security_smbeagle)
[](https://sonarcloud.io/summary/new_code?id=punk-security_smbeagle)
[](https://sonarcloud.io/summary/new_code?id=punk-security_smbeagle)
```
____ __ _____ _ __
/ __ \__ ______ / /__/ ___/___ _______ _______(_) /___ __
/ /_/ / / / / __ \/ //_/\__ \/ _ \/ ___/ / / / ___/ / __/ / / /
/ ____/ /_/ / / / / ,< ___/ / __/ /__/ /_/ / / / / /_/ /_/ /
/_/ \__,_/_/ /_/_/|_|/____/\___/\___/\__,_/_/ /_/\__/\__, /
PRESENTS /____/
```
# SMBeagle
SMBeagle — это кроссплатформенное средство аудита файловых ресурсов SMB, которое находит все файлы, доступные в сети, и сообщает, можно ли их прочитать и/или записать. Все результаты передаются либо в CSV-файл, либо на узел Elasticsearch, либо сразу в оба! 🚀
При запуске в Windows без указания учётных данных SMBeagle использует Win32 API для максимальной скорости и встроенную аутентификацию.
При запуске в Linux или при указании учётных данных используется кроссплатформенное сканирование через [SMBLibrary](https://github.com/TalAloni/SMBLibrary).
## Больше никакой цифровой подписи
SMBeagle до версии v3 был цифровым подписью, но v4 добавляет более атакующие функции. А именно, теперь он ищет и извлекает подозрительные файлы. Отлично подходит для пентестов, но мы не хотим подписывать такие функции цифровой подписью!
Если вам нужна оригинальная версия без функций захвата файлов, используйте v3, которая подписана.
У него два отличных сценария использования:
### Пролить свет на слабые разрешения общих папок
Компании любого размера часто имеют файловые ресурсы с ужасными правами доступа.
Крупные предприятия имеют обширные общие папки на файловых серверах, и нередко в них обнаруживаются конфиденциальные данные с неправильно настроенными разрешениями.
Малые предприятия часто имеют небольшой NAS в углу офиса вообще без ограничений!
SMBeagle обходит эти общие папки и перечисляет все файлы, которые может прочитать и записать. Если он может их прочитать, то и программы-вымогатели тоже смогут.
### Боковое перемещение и повышение привилегий
SMBeagle может предоставить пентестерам менее очевидные пути для повышения привилегий и бокового перемещения.
Выводя результаты напрямую в Elasticsearch, тестеры могут быстро найти читаемые скрипты и записываемые исполняемые файлы.
Находить атаки типа «водопой» и незащищённые пароли ещё никогда не было так просто! 🐱👤
**Чтобы упростить задачу, мы добавили флаг `-g`, который теперь будет извлекать файлы, если они выглядят интересно!**
Что выглядит интересно? По умолчанию мы ищем скрипты и имена файлов, содержащие такие слова, как password.
... Вы можете задать собственные регулярные выражения с помощью флага `--file-pattern`.
## Панель управления Kibana
Подробные инструкции по установке и использованию панелей Kibana, которые предоставляют управленческую визуализацию и облегчают анализ данных, см. в [документации Kibana](https://github.com/punk-security/smbeagle/blob/main/Kibana/README.md).
## Установка
### Docker
* `docker pull punksecurity/smbeagle`
### Linux
* Перейдите к последнему релизу: https://github.com/punk-security/smbeagle/releases/latest
* Скачайте linux_amd64.zip или linux_arm64.zip
* Распакуйте архив и запустите smbeagle из терминала
### Windows
* Перейдите к последнему релизу: https://github.com/punk-security/smbeagle/releases/latest
* Скачайте win_x64.zip (в настоящее время поддерживается только 64-битная версия)
* Распакуйте архив и запустите SMBeagle.exe из командной строки или PowerShell
## Использование
Единственный обязательный параметр — указать выходной поток: либо IP-адрес узла Elasticsearch, либо CSV-файл.
Хорошей отправной точкой является включение быстрого режима и вывод в CSV, но этот CSV может стать огромным в зависимости от количества найденных файлов.
```
./SMBeagle.exe -c out.csv -f
```
### Сканирование публичных IP-адресов
Сканирование обнаруженных публичных хостов и сетей отключено по умолчанию, так как SMBeagle обнаруживает сети из netstat, который включает все текущие подключения, например, сеансы браузера.
Чтобы просканировать публичную сеть, укажите её вручную, например: `-n 1.0.0.1/32` или `-n 1.0.0.0/24`.
### Использование Docker
Punk security предоставляет образ Docker для Linux с SMBeagle.
Чтобы получить результаты, вам нужно примонтировать папку в контейнер и указать SMBeagle сохранять вывод в эту папку (или использовать Elasticsearch).
Хороший начальный пример:
`docker run -v "$(pwd)/output:/tmp/output" punksecurity/smbeagle -c /tmp/output/results.csv -n 10.10.10.0/24`
Обратите внимание, что обнаружение сети отключено при запуске в Docker, поэтому обязательно передавайте диапазоны, которые вы хотите сканировать, с помощью ключа командной строки `-n`, или хосты с ключом `-h`.
### Полное использование
```
USAGE:
Output to a CSV file:
SMBeagle -c out.csv
Output to elasticsearch (Preferred):
SMBeagle -e 127.0.0.1
Output to elasticsearch and CSV:
SMBeagle -c out.csv -e 127.0.0.1
Disable network discovery and provide manual networks:
SMBeagle -D -e 127.0.0.1 -n 192.168.12.0./23 192.168.15.0/24
Do not enumerate ACLs (FASTER):
SMBeagle -A -e 127.0.0.1
-c, --csv-file (Group: output) Output results to a CSV
file by providing filepath
-e, --elasticsearch-host (Group: output) Output results to
elasticsearch by providing elasticsearch
hostname (default port is 9200 , but can be
overridden)
-a, --aggression (Default: 6) Vary scanning speed in a range
between 1 and 10. 10 being fastest [No
decimals]
--elasticsearch-port (Default: 9200) Define the elasticsearch
custom port if required
-f, --fast Enumerate only one files permissions per
directory
-l, --scan-local-shares Scan the local shares on this machine
-D, --disable-network-discovery Disable network discovery
-n, --network Manually add network to scan (multiple
accepted)
-N, --exclude-network Exclude a network from scanning (multiple
accepted)
-h, --host Manually add host to scan
-H, --exclude-host Exclude a host from scanning
-q, --quiet Disable unneccessary output
-S, --exclude-share Do not scan shares with this name (multiple
accepted)
-s, --share Only scan shares with this name (multiple
accepted)
--file-pattern Only fetch files matching these regexes
patterns
-g, --grab-files Grab files and store them locally
--loot (Default: loot) Path to store grabbed files
-E, --exclude-hidden-shares Exclude shares ending in $
-v, --verbose Give more output
-m, --max-network-cidr-size (Default: 20) Maximum network size to scan
for SMB Hosts
-A, --dont-enumerate-acls (Default: false) Skip enumeration of file
ACLs
-d, --domain (Default: ) Domain for connecting to SMB
-u, --username Username for connecting to SMB - mandatory
on linux
-p, --password Password for connecting to SMB - mandatory
on linux
--help Display this help screen.
--version Display version information.
```
## Архитектура
SMBeagle выполняет много работы, которая разбита на слабо связанные модули, передающие данные друг другу.
Это сохраняет простоту дизайна и позволяет легко расширять каждый модуль.
Вкратце:
* Просматривает локальную машину на предмет сетевых подключений и адаптеров.
* На основе всех частных адаптеров и подключений строит список кандидатов частных сетей.
* Сканирует эти сети на наличие TCP-порта 445.
* Сканирует все обнаруженные SMB-серверы на доступные общие папки.
* Инвентаризирует все общие папки на предмет файлов и проверяет разрешения на чтение, запись, удаление.
