
Инструмент для обнаружения внешней и внутренней поверхности сетевых атак
ASF предназначена для защиты организаций, выступая в роли наблюдателя за поверхностью атаки. Получив "Объект", который может быть: доменом, IP-адресом или CIDR (внутренним или внешним), ASF обнаружит активы/поддомены, перечислит их порты и службы, отследит изменения и будет служить непрерывной и гибкой средой для атак и оповещений, использующей дополнительный уровень защиты от уязвимостей нулевого дня с общедоступными PoC.
Отсутствие поддержки и гибкости для автоматизации обнаружения динамических активов и связанных с ними уязвимостей с помощью непрерывного сканирования или эксплуатации в едином окне было движущей силой создания ASF. Существующие решения ограничены технологией или программой, для которой они созданы. Мы хотели получить масштабируемое решение, которое также использует популярные инструменты безопасности с открытым исходным кодом для управления полным жизненным циклом уязвимостей.
ASF — это проект с открытым исходным кодом, использующий мощный арсенал инструментов, объединённых в единое окно поверх графического интерфейса. Архитектурная диаграмма ASF представлена ниже:

Последняя версия Kali Linux (протестировано на 64 бит) - https://kali.org/get-kali/
Не менее 16 ГБ ОЗУ
1 ТБ HDD - рекомендуется файловая система XFS
Выполните следующие шаги от пользователя root для установки и запуска Attack Surface Framework.
Клонирование репозитория
/opt/.git clone https://github.com/vmware-labs/attack-surface-framework.git /opt/asf
Перейдите в каталог /opt/asf/
Настройка файла окружения
Создайте файл .env.prod в каталоге проекта. Это критически важно для корректной работы setup.sh.
Примечание: Вы можете сгенерировать файл .env.prod или скопировать из backup.env.prod, внеся необходимые изменения для адаптации к вашему окружению.
Пример структуры .env.prod:
# Django settings, don't enable debug on production!
DEBUG=True
DJANGO_ADMIN_ENABLED=True
#LOGIN CONFIGURATIONS
LOGIN_FORM=True
SOCIAL_AUTH_GOOGLE_ENABLED=False
SOCIAL_AUTH_GITHUB_ENABLED=False
DJANGO_SAML2_ENABLED=False #Enable Social Authenticatio with Google.
SAML2_SSO_URL=https://saml2.local
SAML2_ASF_URL=https://atttacksurfaceframework.local
ALLOWED_HOSTS=*,localhost, config('SERVER', default='127.0.0.1')
MONGO_USER=admin
MONGO_PASSWORD=
MONGO_URL=
MONGO_PORT=27017
JIRA_ENABLED=False
JIRA_TOKEN=
JIRA_URL=
JIRA_USER=
JIRA_SEVERITY={"info":"Lowest","low":"Low","medium":"Medium","high":"High","critical":"Highest"}
JIRA_PROJECT=""
WPScan_Default_Severity=medium
Для локального окружения Kali Linux: Перейдите по адресу http://127.0.0.1:2021 в веб-браузере для доступа к ASF
ASF не предназначена для публичного доступа. Предполагая, что вы устанавливаете её у облачного провайдера или на локальном экземпляре, мы рекомендуем использовать перенаправление портов через SSH. Вот пример:
ssh -i "key.pem" -L 2021:127.0.0.1:2021 user@yourhost — для GUI ASF
Затем откройте браузер и перейдите по адресу:
http://127.0.0.1:2021 — для ASF, пользователь: youruser, пароль: yourpass (предоставлено при начальной настройке)
Совет по безопасности: Убедитесь, что каждый компонент, включая MongoDB, настроен безопасно, и что доступ к ASF осуществляется безопасно, даже внутри сети. Соблюдение лучших практик безопасности крайне важно при внедрении ASF в вашу стратегию безопасности.
Дополнительно вы можете настроить социальный вход, включив соответствующую функцию в .env.prod:
#LOGIN CONFIGURATIONS
LOGIN_FORM=True
SOCIAL_AUTH_GOOGLE_ENABLED=True (False)
SOCIAL_AUTH_GITHUB_ENABLED=True (False)
DJANGO_SAML2_ENABLED=True (False)
Перейдите в панель администратора http://127.0.0.1:2021/admin, чтобы добавить социальное приложение.
Обратите внимание, что если социальный вход включён и не настроен в панели администратора, ASF не отобразит страницу входа. Чтобы отменить это, просто отключите социальный вход в .env.prod
Для включения интеграции с Jira и создания тикетов ASF поддерживает установку следующих значений в файле .env.prod:
JIRA_ENABLED=True
JIRA_TOKEN=
JIRA_URL=
JIRA_USER=
JIRA_SEVERITY={"info":"Lowest","low":"Low","medium":"Medium","high":"High","critical":"Highest"}
JIRA_PROJECT=
Для использования Wordpress Scan в модулях Red Team вставьте API-токен WPScan в строку #7 файла redteam/wpscan/wpscan.sh
ASF имеет две области действия:
A) Внешняя: для ваших публично доступных активов.
B) Внутренняя: активы в вашей корпоративной сети.
Для внешней области поток проходит через четыре основных этапа:
A.1 Цели (Targets) — здесь вы вводите свои цели

A.2 Обнаружение (Discovery) — модуль, запускающий процесс Amass для обнаружения публично доступных активов. Не стесняйтесь создавать свой конфигурационный файл для настройки API-ключей https://github.com/OWASP/Amass/blob/master/examples/config.ini

A.3 Перечисление (Enumeration) — модуль, запускающий процесс NMAP для перечисления портов/служб и создания фильтров для модуля Red Team. По умолчанию настроен поиск --top-ports 200, но вы можете адаптировать его под свои нужды в /opt/asf/tools/nmap/*.sh

A.4 Redteam — модуль, запускающий подмодули, расположенные в "/opt/asf/redteam"

Примечание: Для внутренней области поток проходит через A.1 (Цели), A.3 (Перечисление) и A.4 (Redteam).
Команда проекта attack-surface-framework приветствует вклад сообщества. Прежде чем начать работу с attack-surface-framework, пожалуйста, прочитайте наш Сертификат происхождения разработчика. Все вклады в этот репозиторий должны быть подписаны, как описано на этой странице. Ваша подпись подтверждает, что вы написали патч или имеете право передать его как патч с открытым исходным кодом. Для получения более подробной информации обратитесь к CONTRIBUTING.md.
Attack Surface Framework Copyright 2021 VMware, Inc.
Лицензия BSD-2 ("Лицензия"), изложенная ниже, применяется ко всем частям проекта Attack Surface Framework. Вы не можете использовать этот файл иначе, как в соответствии с Лицензией.
Лицензия BSD-2
Распространение и использование в исходных и бинарных формах, с изменениями или без, разрешены при условии соблюдения следующих условий:
При распространении исходного кода должно сохраняться указанное выше уведомление об авторских правах, этот список условий и следующий отказ от ответственности.
При распространении в бинарной форме должно воспроизводиться указанное выше уведомление об авторских правах, этот список условий и следующий отказ от ответственности в документации и/или других материалах, предоставляемых вместе с распространением.
ЭТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ ПРАВООБЛАДАТЕЛЯМИ И АВТОРАМИ "КАК ЕСТЬ" И ЛЮБЫЕ ЯВНЫЕ ИЛИ ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ПОДРАЗУМЕВАЕМЫМИ ГАРАНТИЯМИ КОММЕРЧЕСКОЙ ПРИГОДНОСТИ И ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ, ОТКАЗЫВАЮТСЯ. НИ В КОЕМ СЛУЧАЕ ПРАВООБЛАДАТЕЛЬ ИЛИ АВТОРЫ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЯМЫЕ, КОСВЕННЫЕ, СЛУЧАЙНЫЕ, ОСОБЫЕ, ШТРАФНЫЕ ИЛИ ПОСЛЕДУЮЩИЕ УБЫТКИ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ПРИОБРЕТЕНИЕМ ЗАМЕНЯЮЩИХ ТОВАРОВ ИЛИ УСЛУГ; ПОТЕРЕЙ ИСПОЛЬЗОВАНИЯ, ДАННЫХ ИЛИ ПРИБЫЛИ; ИЛИ ПРЕРЫВАНИЕМ ДЕЯТЕЛЬНОСТИ) КАК ПО ПРИЧИНЕ ДОГОВОРА, СТРОГОЙ ОТВЕТСТВЕННОСТИ ИЛИ ГРАЖДАНСКОГО ПРАВОНАРУШЕНИЯ (ВКЛЮЧАЯ НЕБРЕЖНОСТЬ ИЛИ ИНОЕ), ВОЗНИКШИЕ ЛЮБЫМ ОБРАЗОМ ИЗ-ЗА ИСПОЛЬЗОВАНИЯ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ДАЖЕ ЕСЛИ БЫЛО СООБЩЕНО О ВОЗМОЖНОСТИ ТАКОГО УЩЕРБА.
Attack Surface Framework Copyright 2021 VMware, Inc.
Этот продукт лицензирован вам в соответствии с лицензией BSD-2 ("Лицензия"). Вы не можете использовать этот продукт иначе, как в соответствии с лицензией BSD-2.
Этот продукт может включать ряд подкомпонентов с отдельными уведомлениями об авторских правах и условиями лицензий. Ваше использование этих подкомпонентов регулируется условиями лицензии соответствующего подкомпонента, указанными в файле LICENSE.
https://www.djangoproject.com/
https://github.com/creativetimofficial/material-dashboard-django
https://github.com/OWASP/Amass
https://github.com/lanjelot/patator
https://github.com/FortyNorthSecurity/EyeWitness
https://github.com/projectdiscovery/nuclei
https://www.graylog.org/products/open-source
https://github.com/wpscanteam/wpscan
https://github.com/vanhauser-thc/thc-hydra
https://nxlog.co/products/nxlog-community-edition
Примечание: MongoDB необходима для функций оповещения или отчётов ASF.
docker run -dp 27017:27017 -v local-mongo:/data/db --name local-mongo --restart=always -e MONGO_INITDB_ROOT_USERNAME=<<>> -e MONGO_INITDB_ROOT_PASSWORD=<<>> mongo
.env.prod следующими данными:MONGO_USER=admin
MONGO_PASSWORD=
MONGO_URL=
MONGO_PORT=27017
Запустите ./setup.sh