发现外部与内部网络攻击面的工具
ASF 旨在保护组织,充当攻击面监控者。给定一个“对象”,可以是:域名、IP 地址或 CIDR(内部或外部),ASF 将发现资产/子域名,枚举其端口和服务,跟踪变化,并作为一个持续且灵活的攻防与告警框架,借助公开可用的 POC 提供针对 0 day 漏洞的额外防御层。
在单一界面中通过持续扫描或利用来自动发现动态资产及其相关漏洞方面缺乏支持和灵活性,是创建 ASF 的主要动力。当前的解决方案受限于其构建所针对的技术或项目,我们希望得到一个既可扩展,又能利用流行的开源安全工具处理完整漏洞生命周期的解决方案。
ASF 是一种开源项目,在 GUI 之上将一系列强大的工具整合在单一界面中。ASF 架构图如下所示:

最新版本的 Kali Linux(已在 64 位系统上测试)- https://kali.org/get-kali/
至少 16 GB 内存
1 TB 硬盘 - 推荐使用 XFS 文件系统
以 root 用户身份执行以下步骤来安装和运行 Attack Surface Framework。
克隆仓库
/opt/ 目录。git clone https://github.com/vmware-labs/attack-surface-framework.git /opt/asf
cd /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
注意: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
运行 ./setup.sh
对于本地 Kali Linux 环境:在浏览器中访问 http://127.0.0.1:2021 以访问 ASF
ASF 不应当公开暴露。假设你将其安装在云提供商甚至本地实例上,我们建议通过 SSH 使用端口转发来访问它,示例如下:
ssh -i "key.pem" -L 2021:127.0.0.1:2021 user@yourhost - 用于 ASF GUI
然后在浏览器中打开:
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 扫描,请在 redteam/wpscan/wpscan.sh 的第 7 行插入 WPScan API 令牌。
ASF 有两个范围:
A) 外部:针对你公开暴露的资产。
B) 内部:你公司网络中的资产。
对于外部范围,流程包含四个基本步骤:
A.1 目标 - 在此输入你的目标

A.2 发现 - 运行 Amass 流程以发现公开暴露资产的模块,可以自由创建配置文件来设置你的 API 密钥 https://github.com/OWASP/Amass/blob/master/examples/config.ini

A.3 枚举 - 运行 NMAP 流程以枚举端口/服务并为红队模块创建过滤器的模块。默认设置为查找 --top-ports 200,但你可以根据需要在 /opt/asf/tools/nmap/*.sh 中进行调整。

A.4 红队 - 运行位于 "/opt/asf/redteam" 的子模块的模块

注意:对于内部范围,流程包括 A.1(目标)、A.3(枚举)和 A.4(红队)。
attack-surface-framework 项目团队欢迎社区贡献。在开始使用 attack-surface-framework 之前,请阅读我们的 开发者原创证明。所有对此仓库的贡献必须按照该页面所述进行签名。你的签名证明你编写了补丁或有权将其作为开源补丁传递。更多详细信息,请参阅 CONTRIBUTING.md。
Attack Surface Framework 版权 2021 VMware, Inc.
以下 BSD-2 许可证("许可证")适用于 Attack Surface Framework 项目的所有部分。除非遵守许可证,否则不得使用此文件。
BSD-2 许可证
允许以源代码和二进制形式重新分发和使用,无论是否修改,但必须满足以下条件:
源代码的重新分发必须保留上述版权声明、此条件列表和以下免责声明。
二进制形式的重新分发必须在随分发提供的文档和/或其他材料中复制上述版权声明、此条件列表和以下免责声明。
本软件按“原样”提供,版权持有人和贡献者不提供任何明示或暗示的保证,包括但不限于适销性和针对特定用途的适用性的暗示保证。在任何情况下,版权持有人或贡献者均不对任何直接、间接、附带、特殊、惩罚性或后果性损害(包括但不限于替代商品或服务的采购;使用、数据或利润的损失;或业务中断)承担责任,无论这些损害如何产生,也不论是基于合同、严格责任或侵权(包括疏忽或其他)的任何责任理论,即使已被告知此类损害的可能性。
Attack Surface Framework 版权 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
.env.prod:MONGO_USER=admin
MONGO_PASSWORD=
MONGO_URL=
MONGO_PORT=27017