# Okta Security

{{#include ../../banners/hacktricks-training.md}}

## 基本情報

[Okta, Inc.](https://www.okta.com/)は、クラウドベースのソフトウェアソリューションでアイデンティティおよびアクセス管理分野で認識されています。これらのソリューションは、さまざまな現代アプリケーションにおけるユーザー認証を簡素化し、安全にすることを目的としています。これらは、機密データを保護しようとする企業だけでなく、アプリケーション、ウェブサービス、デバイスにアイデンティティ管理を統合したい開発者にも対応しています。

Oktaの主力製品は**Okta Identity Cloud**です。このプラットフォームは、以下を含む製品群を網羅していますが、これに限定されません：

- **シングルサインオン (SSO)**: 複数のアプリケーションで1セットのログイン資格情報を使用してユーザーアクセスを簡素化します。
- **多要素認証 (MFA)**: 複数の確認手段を要求することでセキュリティを強化します。
- **ライフサイクル管理**: ユーザーアカウントの作成、更新、無効化プロセスを自動化します。
- **ユニバーサルディレクトリ**: ユーザー、グループ、デバイスの集中管理を可能にします。
- **APIアクセス管理**: APIへのアクセスを保護し、管理します。

これらのサービスは、データ保護を強化し、ユーザーアクセスを簡素化することを目的としており、セキュリティと利便性の両方を向上させます。Oktaのソリューションの多様性は、さまざまな業界で人気の選択肢となっており、大企業、小規模企業、個々の開発者にとっても有益です。2021年9月の最新情報では、Oktaはアイデンティティおよびアクセス管理 (IAM) 分野で著名な存在として認識されています。

> [!CAUTION]
> Oktaの主な目的は、外部アプリケーションへの異なるユーザーおよびグループへのアクセスを構成することです。もしあなたが**Okta環境で管理者権限を侵害することができれば、会社が使用している他のすべてのプラットフォームを**侵害することが非常に可能性が高いです。

> [!TIP]
> Okta環境のセキュリティレビューを実施するには、**管理者の読み取り専用アクセス**を要求するべきです。

### 概要

**ユーザー**（これは**Oktaに保存される**、構成された**アイデンティティプロバイダー**からログインする、または**Active Directory**やLDAPを介して認証されることができます）。\
これらのユーザーは**グループ**内に存在することがあります。\
また、**認証者**も存在します：パスワードやWebAuthn、メール、電話、Okta Verifyなどのさまざまな2FAのオプション（有効または無効にできる）...

次に、Oktaと同期された**アプリケーション**があります。各アプリケーションは、情報（メールアドレス、名前など）を共有するために**Oktaとのマッピング**を持っています。さらに、各アプリケーションは**認証ポリシー**内に存在し、ユーザーがアプリケーションに**アクセス**するために必要な**認証者**を示します。

> [!CAUTION]
> 最も強力な役割は**スーパ管理者**です。
>
> 攻撃者が管理者アクセスでOktaを侵害した場合、すべての**Oktaを信頼するアプリ**は非常に可能性が高く**侵害される**でしょう。

## 攻撃

### Oktaポータルの特定

通常、企業のポータルは**companyname.okta.com**にあります。そうでない場合は、**companyname.**の単純な**バリエーション**を試してください。見つからない場合、組織が**CNAME**レコードを持っている可能性もあります。例えば、**`okta.companyname.com`**が**Oktaポータル**を指している場合です。

### Kerberosを介したOktaへのログイン

もし**`companyname.kerberos.okta.com`**がアクティブであれば、**KerberosがOktaアクセスに使用され**、通常は**Windows**ユーザーのために**MFA**をバイパスします。AD内でKerberos認証されたOktaユーザーを見つけるには、**`getST.py`**を**適切なパラメータ**で実行します。**ADユーザーのチケット**を取得したら、RubeusやMimikatzなどのツールを使用して制御されたホストに**注入**し、**`clientname.kerberos.okta.com`がインターネットオプションの「イントラネット」ゾーンにあることを確認します**。特定のURLにアクセスすると、JSONの「OK」レスポンスが返され、Kerberosチケットの受け入れが示され、Oktaダッシュボードへのアクセスが許可されます。

**Oktaサービスアカウントを委任SPNで侵害することで、シルバーチケット攻撃が可能になります。**ただし、Oktaのチケット暗号化に**AES**を使用しているため、AESキーまたは平文パスワードを持っている必要があります。**`ticketer.py`を使用して被害者ユーザーのチケットを生成し**、ブラウザを介してOktaに認証するために配信します。

**攻撃の詳細は** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**で確認してください。**

### Okta ADエージェントのハイジャック

この技術は、**ユーザーを同期し、認証を処理するサーバー上のOkta ADエージェントにアクセスする**ことを含みます。**`OktaAgentService.exe.config`**内の設定を調査し、特に**DPAPI**を使用してAgentTokenを復号化することで、攻撃者は**認証データを傍受および操作する**可能性があります。これにより、Okta認証プロセス中にユーザー資格情報を平文で**監視**および**キャプチャ**するだけでなく、**認証試行に応答する**ことができ、無許可のアクセスを可能にしたり、Oktaを介してユニバーサル認証を提供したりすることができます（「スケルトンキー」のように）。

**攻撃の詳細は** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**で確認してください。**

### 管理者としてのADのハイジャック

この技術は、最初にOAuthコードを取得し、その後APIトークンを要求することでOkta ADエージェントをハイジャックすることを含みます。トークンはADドメインに関連付けられ、**コネクタが偽のADエージェントを確立するために名前付けされます**。初期化により、エージェントは**認証試行を処理し**、Okta APIを介して資格情報をキャプチャします。このプロセスを簡素化するための自動化ツールが利用可能で、Okta環境内で認証データを傍受および処理するシームレスな方法を提供します。

**攻撃の詳細は** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**で確認してください。**

### Oktaの偽SAMLプロバイダー

**攻撃の詳細は** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**で確認してください。**

この技術は、**偽のSAMLプロバイダーを展開する**ことを含みます。特権アカウントを使用してOktaのフレームワーク内に外部アイデンティティプロバイダー（IdP）を統合することで、攻撃者は**IdPを制御し、任意の認証要求を承認することができます**。このプロセスには、Okta内にSAML 2.0 IdPを設定し、ローカルホストファイルを介してリダイレクトするためにIdPシングルサインオンURLを操作し、自己署名証明書を生成し、ユーザー名またはメールに対してOkta設定を一致させることが含まれます。これらの手順を成功裏に実行することで、個々のユーザー資格情報を必要とせずに任意のOktaユーザーとして認証でき、アクセス制御を大幅に高めることができます。

### Evilgnixを使用したOktaポータルのフィッシング

[**このブログ記事**](https://medium.com/nickvangilder/okta-for-red-teamers-perimeter-edition-c60cb8d53f23)では、Oktaポータルに対するフィッシングキャンペーンの準備方法が説明されています。

### 同僚のなりすまし攻撃

各ユーザーが持ち、変更できる**属性**（メールや名前など）は、Oktaで構成できます。もし**アプリケーション**が、ユーザーが**変更できる**属性をIDとして**信頼している**場合、そのプラットフォーム内で他のユーザーを**なりすます**ことができます。

したがって、アプリが**`userName`**フィールドを信頼している場合、通常はそのフィールドを変更できない（通常はそのフィールドを変更できないため）ですが、例えば**`primaryEmail`**を信頼している場合、同僚のメールアドレスに**変更することができる**かもしれません（メールにアクセスし、変更を承認する必要があります）。

このなりすましは、各アプリケーションがどのように構成されているかに依存することに注意してください。変更したフィールドを信頼し、更新を受け入れるアプリケーションのみが侵害されます。\
したがって、アプリはこのフィールドが存在する場合に有効にする必要があります：

<figure><img src="../../images/image (175).png" alt=""><figcaption></figcaption></figure>

他のアプリケーションが脆弱であったが、Okta設定にそのフィールドがなかったのを見たこともあります（最終的に異なるアプリは異なるように構成されています）。

各アプリで誰かをなりすますことができるかどうかを確認する最良の方法は、試してみることです！

## 行動検出ポリシーの回避 <a href="#id-9fde" id="id-9fde"></a>

Oktaの行動検出ポリシーは遭遇するまで不明な場合がありますが、**それらを回避する**には、**Oktaアプリケーションに直接ターゲットを絞る**ことで、主要なOktaダッシュボードを避けることができます。**Oktaアクセストークン**を使用して、主要なログインページの代わりに**アプリケーション固有のOkta URL**でトークンを再生します。

主な推奨事項は以下の通りです：

- **人気のある匿名プロキシやVPNサービスを使用しない**で、キャプチャしたアクセストークンを再生します。
- クライアントと再生されたアクセストークンの間で**一貫したユーザーエージェント文字列**を確保します。
- **異なるユーザーのトークンを同じIPアドレスから再生しない**でください。
- Oktaダッシュボードに対してトークンを再生する際は注意してください。
- 被害者企業のIPアドレスを知っている場合は、**そのIPまたはその範囲にトラフィックを制限し**、他のすべてのトラフィックをブロックします。

## Oktaの強化

Oktaには多くの可能な構成があり、このページではそれらをできるだけ安全にするためのレビュー方法を見つけることができます：

{{#ref}}
okta-hardening.md
{{#endref}}

## 参考文献

- [https://trustedsec.com/blog/okta-for-red-teamers](https://trustedsec.com/blog/okta-for-red-teamers)
- [https://medium.com/nickvangilder/okta-for-red-teamers-perimeter-edition-c60cb8d53f23](https://medium.com/nickvangilder/okta-for-red-teamers-perimeter-edition-c60cb8d53f23)

{{#include ../../banners/hacktricks-training.md}}
