
外部および内部ネットワークの攻撃面を発見するツール
ASFは、攻撃対象領域の監視役として組織を保護することを目的としており、「オブジェクト」(ドメイン、IPアドレス、CIDR(内部または外部)など)が提供されると、ASFは資産/サブドメインを発見し、ポートとサービスを列挙し、差分を追跡し、公開されているPoCを活用してゼロデイ脆弱性に対する追加のサポート層を提供する継続的かつ柔軟な攻撃および警告フレームワークとして機能します。
動的な資産とそれに関連する脆弱性を、単一の画面で継続的なスキャンや悪用を通じて自動的に発見するためのサポートと柔軟性の欠如が、ASF作成の原動力でした。現在のソリューションは、それらが構築された技術やプログラムによって制限されており、私たちはスケーラブルでありながら、人気のあるオープンソースセキュリティツールを活用して脆弱性ライフサイクル全体を処理できるソリューションを望んでいました。
ASFは、GUIの上に単一画面で強力なツール群をまとめたオープンソースプロジェクトの一種です。ASFのアーキテクチャ図を以下に示します:

最新バージョンのKali Linux(64ビットでテスト済み) - https://kali.org/get-kali/
少なくとも16GBのRAM
1TBのHDD - XFSファイルシステム推奨
Attack Surface Frameworkをインストールして実行するには、rootユーザーとして以下の手順を実行します。
リポジトリのクローン
/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環境の場合:Webブラウザでhttp://127.0.0.1:2021にアクセスしてASFにアクセスします。
ASFは公開されることを意図していません。クラウドプロバイダーやローカルインスタンスにインストールする場合でも、SSH経由のポートフォワーディングを使用してアクセスすることを推奨します。以下は例です:
ssh -i "key.pem" -L 2021:127.0.0.1:2021 user@yourhost - ASF GUI用
次にブラウザを開いて以下のURLにアクセスします:
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=
Red TeamモジュールでWordpressスキャンを使用するには、redteam/wpscan/wpscan.shの7行目にWPScan APIトークンを挿入します。
ASFには2つのスコープがあります:
A) 外部:公開された資産用。
B) 内部:企業ネットワーク内の資産。
外部スコープの場合、フローは4つの基本的なステップを経ます:
A.1 ターゲット - ここでターゲットを入力します

A.2 ディスカバリ - Amassプロセスを実行して公開された資産を発見するモジュールです。APIキーを設定するための設定ファイルを自由に作成してください https://github.com/OWASP/Amass/blob/master/examples/config.ini

A.3 列挙 - NMAPプロセスを実行してポート/サービスを列挙し、Red Teamモジュール用のフィルターを作成するモジュールです。デフォルト設定は--top-ports 200を検索しますが、/opt/asf/tools/nmap/*.shでニーズに合わせて変更できます。

A.4 Red Team - "/opt/asf/redteam"にあるサブモジュールを実行するモジュールです。

注意:内部スコープの場合、フローはA.1(ターゲット)、A.3(列挙)、A.4(Red Team)を経ます。
attack-surface-frameworkプロジェクトチームは、コミュニティからの貢献を歓迎します。attack-surface-frameworkの作業を開始する前に、開発者原産地証明書をお読みください。このリポジトリへのすべての貢献は、そのページに記載されているように署名する必要があります。あなたの署名は、あなたがパッチを作成したこと、またはオープンソースパッチとして渡す権利があることを証明します。詳細については、CONTRIBUTING.mdを参照してください。
Attack Surface Framework Copyright 2021 VMware, Inc.
The BSD-2 license (the "License") set forth below applies to all parts of the Attack Surface Framework project. You may not use this file except in compliance with the License.
BSD-2 License
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
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
.env.prodを次の詳細で更新します:MONGO_USER=admin
MONGO_PASSWORD=
MONGO_URL=
MONGO_PORT=27017